%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core20/2582/lib/python3/dist-packages/urwid/__pycache__/
Upload File :
Create Path :
Current File : //snap/core20/2582/lib/python3/dist-packages/urwid/__pycache__/util.cpython-38.pyc

U

��dZ�3�@sdddlmZmZddlmZddlmZmZmZddl	Z	ej
Z
e
jZe
jZe
j
Z
e
jZe
jZe
jZdd�Zde�kr|e�Znds�td��dad	ad
d�Zdd
�Zdd�Zee�dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z dd�Z!d d!�Z"d"d#�Z#d$d%�Z$Gd&d'�d'e%�Z&d(d)�Z'd*d+�Z(d,d-�Z)d.d/�Z*Gd0d1�d1e+�Z,d2d3�Z-Gd4d5�d5e.�Z/dS)6�)�division�print_function)�escape)�bytes�	text_type�
text_typesNc
Cs�ddl}z<z|�|jd�Wn|jk
r2YnX|��dpBdWStk
r�}z&|jrv|jd�d�rvWY�
dS�W5d}~XYnXdS)Nr��zunknown locale)�locale�	setlocale�LC_ALL�ErrorZ	getlocale�
ValueError�args�
startswith)r
�e�r�,/usr/lib/python3/dist-packages/urwid/util.py�detect_encoding)s
r�detected_encodingz
It worked!TcCsz|��}|dkr t�d�dan&|dkr8t�d�dant�d�dadaz|r^d	�|�|aWntk
rtYnXd
S)z~
    Set the byte encoding to assume when processing strings and the
    encoding to use when converting unicode strings.
    )zutf-8�utf8�utfrF)zeuc-jpzeuc-krzeuc-cnzeuc-tw�gb2312�gbk�big5zcn-gb�uhc�eucjp�euckr�euccnZeuctwZcncbZwideTZnarrow�asciirN)�lower�str_utilZset_byte_encoding�_use_dec_special�_target_encoding�encode�LookupError)�encodingrrr�set_encodingBs 



r'cCst��S)z�
    Get the mode Urwid is using when processing text strings.
    Returns 'narrow' for 8-bit encodings, 'wide' for CJK encodings
    or 'utf8' for UTF-8 encodings.
    )r!Zget_byte_encodingrrrr�get_encoding_modedsr(c	Cs&trft|�tkrfz|�tj�}WnDtk
rdttjtj	�D] \}}|�
|tj|tj�}q>YnXt|�tkr�|�
tjtjd�}t
�|td�}t|t�s�t�tj�d�}tj�d�}|�|�}t|dt�s�t�|d�
|t��}g}g}|�r|�|�|�dt|�f�t|�dk�r(||fS|dd�D]�}	t|	t��sHt�t|t��sXt�|	�|d�}
t|
�dk�r�|
d}t|t��s�t�|�|�t|tj�d�t|�f��q4|
\}}|�
|t��}|�r�|�|�t|tjt|�f�|�r4|�|�t|dt|�f��q4t��|�}
|
|fS)z:
    Return (encoded byte string, character set rle).
    r�replacerrNr	)r"�typer�	translaterZDEC_SPECIAL_CHARMAP�NotImplementedError�zipZDEC_SPECIAL_CHARSZALT_DEC_SPECIAL_CHARSr)�SO�SI�codecsr$r#�
isinstancer�AssertionError�split�append�len�rle_append_modifyZDEC_TAG�join)�s�cZaltr.r/ZsisZsis0ZsoutZcoutZsnZslZsinZsonZoutstrrrr�apply_target_encodingmsX� 




r:cCsto
tdkS)zi
    Return True if python is able to convert non-ascii unicode strings
    to the current encoding.
    r)r#rrrr�supports_unicode�sr;cCs~|}d}}|dkrHt||||�\}}||krHd}t||||d�\}}|||}	t||||	�\}
}||	krrd}||
||fS)a	
    Calculate the result of trimming text.
    start_offs -- offset into text to treat as screen column 0
    end_offs -- offset into text to treat as the end of the line
    start_col -- screen column to trim at the left
    end_col -- screen column to trim at the right

    Returns (start, end, pad_left, pad_right), where:
    start -- resulting start offset
    end -- resulting end offset
    pad_left -- 0 for no pad or 1 for one space to be added
    pad_right -- 0 for no pad or 1 for one space to be added
    rr	)�
calc_text_pos)�textZ
start_offsZend_offs�	start_col�end_col�spos�pad_left�	pad_rightZsc�run�posrrr�calc_trim_text�s�rEcCs�t|dt|�||�\}}}}t|||�}	t|||�}
|r^t||d�}t|	|df�t|
d�|r�t||�}t|	|df�t|
d�t��|�|||�t��|�|	|
fS)z<
    Return ( trimmed text, trimmed attr, trimmed cs ).
    rr	)Nr	)rEr5�
rle_subseg�
rle_get_at�rle_append_beginning_modifyr6r�rjust)r=�attrZcsr>r?r@�eposrArBZattrtrZcstr�alrrr�trim_text_attr_cs�s.�



��rMcCs>d}|dkrdS|D]$\}}|||kr0|S||7}qdS)z-
    Return the attribute at offset pos.
    rNr)�rlerD�x�arCrrrrG�s
rGcCs�g}d}|D]p\}}|rF||kr2||8}||7}q||7}||8}d}||krRq~|||krf||}||7}|�||f�q|S)z$Return a sub segment of an rle list.r�r4)rN�start�end�lrOrPrCrrrrF�s$rFcCs:d}|D],}t|�tks$tt|���|\}}||7}q|S)z]
    Return the number of characters covered by a run length
    encoded attribute list.
    r)r*�tupler2�repr)rNrC�vrP�rrrr�rle_lens
rYcCs\|\}}|s ||fg|dd�<n8|d\}}||krF|||f|d<n||fg|dd�<dS)z�
    Append (a, r) (unpacked from *a_r*) to BEGINNING of rle.
    Merge with first run when possible

    MODIFIES rle parameter contents. Returns None.
    Nrr)rN�a_rrPrXrLrCrrrrHsrHcCsN|\}}|r|dd|kr.|�||f�dS|d\}}|||f|d<dS)z�
    Append (a, r) (unpacked from *a_r*) to the rle list rle.
    Merge with last run when possible.

    MODIFIES rle parameter contents. Returns None.
    ���rNrQ)rNrZrPrXZlaZlrrrrr60sr6cCs*|sdSt||d�||dd�7}dS)z�
    Append attribute list rle2 to rle.
    Merge last run of rle with first run of rle2 when possible.

    MODIFIES attr parameter contents. Returns None.
    Nrr	�r6)rN�rle2rrr�rle_join_modify>sr^c
Cs�d}}|r|sgS|d\}}|d\}}g}|r�|r�t||�}	t|||f|	f�||	8}|dkr�|t|�kr�||\}}|d7}||	8}|dkr0|t|�kr0||\}}|d7}q0|S)a
    Merge the runs of rle1 and rle2 like this:
    eg.
    rle1 = [ ("a", 10), ("b", 5) ]
    rle2 = [ ("Q", 5), ("P", 10) ]
    rle_product: [ (("a","Q"), 5), (("a","P"), 5), (("b","P"), 5) ]

    rle1 and rle2 are assumed to cover the same total run.
    r	r)�minr6r5)
�rle1r]Zi1Zi2�a1Zr1�a2Zr2rTrXrrr�rle_productJs$


rccCs>g}g}|D](\\}}}t|||f�t|||f�q||fS)z!
    Inverse of rle_product.
    r\)rNr`r]rarbrXrrr�
rle_factorhsrdc@seZdZdS)�TagMarkupExceptionN)�__name__�
__module__�__qualname__rrrrretsrecCsFt|d�\}}|ddd��|�}|r>|dddkr>|d=||fS)z:Return (text string, attribute list) for tagmarkup passed.Nrr[)�_tagmarkup_recurser7)�tm�tlrLr=rrr�decompose_tagmarkupvs
rlcCs�t|�tkr~g}g}|D]\}t||�\}}|rd|d\}}|d\}	}
||	krd|	||
f|d<|d=||7}||7}q||fSt|�tkr�t|�dkr�td|f��|\}}t||�St|ttf�s�td|��|g|t|�fgfS)zsReturn (text list, attribute list) for tagmarkup passed.

    tm -- tagmarkup
    attr -- current attribute or Noner[r�z5Tuples must be in the form (attribute, tagmarkup): %rzInvalid markup element: %r)	r*�listrirUr5rer1rr)rjrJZrtlZral�elementrkrLZ	last_attrZlast_runZtop_attrZtop_runrrrri�s,

ricCs*t|�tko(t|�dko(|d�d�dkS)N�rZmouse)r*rUr5�find�Zevrrr�is_mouse_event�srscCs|�d�dkS)NZpressr)rqrrrrr�is_mouse_press�srtcs eZdZdZ�fdd�Z�ZS)�	MetaSuperzadding .__supercsBtt|��|||�t|d|�r*td��t|d|t|��dS)Nz
_%s__superz/Class has same name as one of its super classes)�superru�__init__�hasattr�AttributeError�setattr)�cls�name�bases�d��	__class__rrrw�szMetaSuper.__init__)rfrgrh�__doc__rw�
__classcell__rrrrru�srucCs0t||dd|d�}|dd}||S)aW
    Scale val in the range [0, val_range-1] to an integer in the range
    [0, out_range-1].  This implementation uses the "round-half-up" rounding
    method.

    >>> "%x" % int_scale(0x7, 0x10, 0x10000)
    '7777'
    >>> "%x" % int_scale(0x5f, 0x100, 0x10)
    '6'
    >>> int_scale(2, 6, 101)
    40
    >>> int_scale(1, 3, 4)
    2
    r	rm)�int)�valZ	val_rangeZ	out_rangeZnumZdemrrr�	int_scale�sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�StoppingContextz�Context manager that calls ``stop`` on a given object on exit.  Used to
    make the ``start`` method on `MainLoop` and `BaseScreen` optionally act as
    context managers.
    cCs
||_dS�N)�_wrapped)�self�wrappedrrrrw�szStoppingContext.__init__cCs|Sr�r)r�rrr�	__enter__�szStoppingContext.__enter__cGs|j��dSr�)r��stop)r��exc_inforrr�__exit__�szStoppingContext.__exit__N)rfrgrhr�rwr�r�rrrrr��sr�)0Z
__future__rrZurwidrZurwid.compatrrrr0r!r<Z
calc_widthZis_wide_charZmove_next_charZmove_prev_charZwithin_double_byter�localsrr2r#r"r'r(r:r;rErMrGrFrYrHr6r^rcrd�	Exceptionrerlrirsrtr*rur��objectr�rrrr�<module>sN
"	=
'


Zerion Mini Shell 1.0