%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core22/current/lib/python3/dist-packages/urwid/__pycache__/
Upload File :
Create Path :
Current File : //snap/core22/current/lib/python3/dist-packages/urwid/__pycache__/numedit.cpython-310.pyc

o

��o_�*�@sTddlmZddlmZddlZGdd�de�ZGdd�de�ZGdd	�d	e�ZdS)
�)�Edit)�DecimalNcs6eZdZdZdZd
�fdd�	Zdd�Zdd	�Z�ZS)�NumEditaNumEdit - edit numerical types

    based on the characters in 'allowed' different numerical types
    can be edited:
      + regular int: 0123456789
      + regular float: 0123456789.
      + regular oct: 01234567
      + regular hex: 0123456789abcdef
    �$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZTcs"tt|��||�||_||_dS)N)�superr�__init__�_allowed�trimLeadingZeros)�self�allowed�caption�defaultr	��	__class__��//usr/lib/python3/dist-packages/urwid/numedit.pyr(s
zNumEdit.__init__cCst|�dko|��|jvS)z5
        Return true for allowed characters.
        �)�len�upperr)r
�chrrr�
valid_char-szNumEdit.valid_charcCs�|\}t�||f|�}|s>|jr>|jdkr>|jdd�dkr>|�|jd�|�|jdd��|jdkr>|jdd�dks|S)aC
        Handle editing keystrokes.  Remove leading zeros.

        >>> e, size = NumEdit("0123456789", u"", "5002"), (10,)
        >>> e.keypress(size, 'home')
        >>> e.keypress(size, 'delete')
        >>> assert e.edit_text == "002"
        >>> e.keypress(size, 'end')
        >>> assert e.edit_text == "2"
        >>> # binary only
        >>> e, size = NumEdit("01", u"", ""), (10,)
        >>> assert e.edit_text == ""
        >>> e.keypress(size, '1')
        >>> e.keypress(size, '0')
        >>> e.keypress(size, '1')
        >>> assert e.edit_text == "101"
        rNr�0)r�keypressr	�edit_pos�	edit_text�set_edit_pos�
set_edit_text)r
�size�key�maxcol�	unhandledrrrr3s�zNumEdit.keypress)T)	�__name__�
__module__�__qualname__�__doc__�ALLOWEDrrr�
__classcell__rrrrrs	rcs*eZdZdZd	�fdd�	Zdd�Z�ZS)
�IntegerEditzEdit widget for integer values�N�
cs�||_d}|jd|j�}|durSt|tttf�std��t|t�r>t|�r>d�|�}t	�
|t|�t	j�s=td�||���nt|t�rO|��ddkrOtd��t|�}t
t|�j||||jd	kd
�dS)a�
        caption -- caption markup
        default -- default edit value

        >>> IntegerEdit(u"", 42)
        <IntegerEdit selectable flow widget '42' edit_pos=2>
        >>> e, size = IntegerEdit(u"", "5002"), (10,)
        >>> e.keypress(size, 'home')
        >>> e.keypress(size, 'delete')
        >>> assert e.edit_text == "002"
        >>> e.keypress(size, 'end')
        >>> assert e.edit_text == "2"
        >>> e.keypress(size, '9')
        >>> e.keypress(size, '0')
        >>> assert e.edit_text == "290"
        >>> e, size = IntegerEdit("", ""), (10,)
        >>> assert e.value() is None
        >>> # binary
        >>> e, size = IntegerEdit(u"", "1010", base=2), (10,)
        >>> e.keypress(size, 'end')
        >>> e.keypress(size, '1')
        >>> assert e.edit_text == "10101"
        >>> assert e.value() == Decimal("21")
        >>> # HEX
        >>> e, size = IntegerEdit(u"", "10", base=16), (10,)
        >>> e.keypress(size, 'end')
        >>> e.keypress(size, 'F')
        >>> e.keypress(size, 'f')
        >>> assert e.edit_text == "10Ff"
        >>> assert e.keypress(size, 'G') == 'G'  # unhandled key
        >>> assert e.edit_text == "10Ff"
        >>> # keep leading 0's when not base 10
        >>> e, size = IntegerEdit(u"", "10FF", base=16), (10,)
        >>> assert e.edit_text == "10FF"
        >>> assert e.value() == Decimal("4351")
        >>> e.keypress(size, 'home')
        >>> e.keypress(size, 'delete')
        >>> e.keypress(size, '0')
        >>> assert e.edit_text == "00FF"
        >>> # test exception on incompatable value for base
        >>> e, size = IntegerEdit(u"", "10FG", base=16), (10,)
        Traceback (most recent call last):
            ...
        ValueError: invalid value: 10FG for base 16
        >>> # test exception on float init value
        >>> e, size = IntegerEdit(u"", 10.0), (10,)
        Traceback (most recent call last):
            ...
        ValueError: default: Only 'str', 'int', 'long' or Decimal input allowed
        >>> e, size = IntegerEdit(u"", Decimal("10.0")), (10,)
        Traceback (most recent call last):
            ...
        ValueError: not an 'integer Decimal' instance
        r(N�;default: Only 'str', 'int', 'long' or Decimal input allowedz^[{}]+$zinvalid value: {} for base {}�rz!not an 'integer Decimal' instancer))r	)�baser%�
isinstance�int�strr�
ValueErrorr�format�re�match�
IGNORECASE�as_tuplerr'r)r
rr
r,�val�
allowed_chars�
validation_rerrrrUs(7
��

�zIntegerEdit.__init__cCs|jrtt|j|j��SdS)z�
        Return the numeric value of self.edit_text.

        >>> e, size = IntegerEdit(), (10,)
        >>> e.keypress(size, '5')
        >>> e.keypress(size, '1')
        >>> assert e.value() == 51
        N)rrr.r,)r
rrr�value�s	zIntegerEdit.value)r(Nr)�r!r"r#r$rr9r&rrrrr'RsSr'cs.eZdZdZ		d
�fdd�	Zdd	�Z�ZS)�	FloatEditzEdit widget for float values.r(NT�.cs�d|_||_|dvrtd�|���d}|durG|dkrGt|tttf�s'td��t|t�r8t|�r8t	|�t|�}|rCt
|��d�|_t|�}tt
|��|jdd�|||�dS)	a
        caption -- caption markup
        default -- default edit value
        preserveSignificance -- return value has the same signif. as default
        decimalSeparator -- use '.' as separator by default, optionally a ','

        >>> FloatEdit(u"",  "1.065434")
        <FloatEdit selectable flow widget '1.065434' edit_pos=8>
        >>> e, size = FloatEdit(u"", "1.065434"), (10,)
        >>> e.keypress(size, 'home')
        >>> e.keypress(size, 'delete')
        >>> assert e.edit_text == ".065434"
        >>> e.keypress(size, 'end')
        >>> e.keypress(size, 'backspace')
        >>> assert e.edit_text == ".06543"
        >>> e, size = FloatEdit(), (10,)
        >>> e.keypress(size, '5')
        >>> e.keypress(size, '1')
        >>> e.keypress(size, '.')
        >>> e.keypress(size, '5')
        >>> e.keypress(size, '1')
        >>> assert e.value() == Decimal("51.51")
        >>> e, size = FloatEdit(decimalSeparator=":"), (10,)
        Traceback (most recent call last):
            ...
        ValueError: invalid decimalSeparator: :
        >>> e, size = FloatEdit(decimalSeparator=","), (10,)
        >>> e.keypress(size, '5')
        >>> e.keypress(size, '1')
        >>> e.keypress(size, ',')
        >>> e.keypress(size, '5')
        >>> e.keypress(size, '1')
        >>> assert e.edit_text == "51,51"
        >>> e, size = FloatEdit("", "3.1415", preserveSignificance=True), (10,)
        >>> e.keypress(size, 'end')
        >>> e.keypress(size, 'backspace')
        >>> e.keypress(size, 'backspace')
        >>> assert e.edit_text == "3.14"
        >>> assert e.value() == Decimal("3.1400")
        >>> e.keypress(size, '1')
        >>> e.keypress(size, '5')
        >>> e.keypress(size, '9')
        >>> assert e.value() == Decimal("3.1416")
        >>> e, size = FloatEdit("", ""), (10,)
        >>> assert e.value() is None
        >>> e, size = FloatEdit(u"", 10.0), (10,)
        Traceback (most recent call last):
            ...
        ValueError: default: Only 'str', 'int', 'long' or Decimal input allowed
        N)r<�,zinvalid decimalSeparator: {}r(r*r+rr))�significance�_decimalSeparatorr0r1r-r.r/rr�float�absr5rr;rr%)r
rr
�preserveSignificance�decimalSeparatorr6rrrr�s&4��zFloatEdit.__init__cCs�|jrPd}|jrdj|jd�}dd�|j�|j�D�dgdd�\}}|jrEtt|��|jkrEt|�dtt|��|j}tt	|��}t
|j|t|�d	��Sd
S)z=
        Return the numeric value of self.edit_text.
        z	{ip}.{fp}z{{ip}}.{{fp:<0{sig}d}})�sigcSsg|]}|�qSrr)�.0�vrrr�
<listcomp>sz#FloatEdit.value.<locals>.<listcomp>rr+r))�ip�fpN)rr>r1�splitr?rr/r@r.�roundr)r
�fmtrHrIrrrr9s ���zFloatEdit.value)r(NTr<r:rrrrr;�s�Mr;)�urwidr�decimalrr2rr'r;rrrr�<module>s6e

Zerion Mini Shell 1.0