grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a BjŒj•*ã@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 Z$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZTcs"tt|ƒ ||¡||_||_dS)N)ÚsuperrÚ__init__Ú_allowedÚtrimLeadingZeros)ÚselfÚallowedÚcaptionÚdefaultr©Ú __class__©ú3/usr/lib64/python3.9/site-packages/urwid/numedit.pyr(szNumEdit.__init__cCst|ƒdko| ¡|jvS)z5 Return true for allowed characters. é)ÚlenÚupperr)r ZchrrrÚ valid_char-szNumEdit.valid_charcCsf|\}t ||f|¡}|sb|jrb|jdkrb|jdd…dkrb| |jd¡| |jdd…¡q |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ÚkeypressrZedit_posÚ edit_textZ set_edit_posZ set_edit_text)r ÚsizeÚkeyZmaxcolZ unhandledrrrr3szNumEdit.keypress)T) Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚALLOWEDrrrÚ __classcell__rrr rrs  rcs*eZdZdZd ‡fdd„ Zdd„Z‡ZS) Ú IntegerEditzEdit widget for integer valuesÚNé csÈ||_d}|jd|j…}|dur¦t|tttfƒs:tdƒ‚t|tƒr|t|ƒr|d |¡}t   |t|ƒt j ¡sžtd ||¡ƒ‚n"t|tƒrž|  ¡ddkržtdƒ‚t|ƒ}t t|ƒj||||jd kd �dS) aŠ caption -- caption markup default -- default edit value >>> IntegerEdit(u"", 42) >>> 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%ÚvalZ allowed_charsZ validation_rer rrrUs&7 ÿ ÿzIntegerEdit.__init__cCs|jrtt|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"©rrrrrr0rrrr rr RsSr cs*eZdZdZd ‡fdd„ Zdd „Z‡ZS) Ú FloatEditzEdit widget for float values.r!NTÚ.cs´d|_||_|dvr"td |¡ƒ‚d}|durŽ|dkrŽt|tttfƒsNtdƒ‚t|tƒrpt|ƒrpt |ƒt|ƒ}|r†t |  ¡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") >>> 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)r3ú,zinvalid decimalSeparator: {}r!r#r$rr")Ú significanceÚ_decimalSeparatorr)r*r&r'r(rrÚfloatÚabsr.rr2rr)r r r ZpreserveSignificanceZdecimalSeparatorr/r rrrºs&4ÿÿzFloatEdit.__init__cCs¤|jr d}|jrdj|jd�}dd„|j |j¡Dƒdgdd…\}}|jrŠtt|ƒƒ|jkrŠt|ƒ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}})ZsigcSsg|]}|‘qSrr)Ú.0ÚvrrrÚ óz#FloatEdit.value..rr$r")ÚipÚfpN) rr5r*Úsplitr6rr(r7r'Úroundr)r Úfmtr=r>rrrr0s  ÿÿÿ zFloatEdit.value)r!NTr3r1rrr rr2·s ÿMr2)ZurwidrZdecimalrr+rr r2rrrrÚs  6e