@@ -44,36 +44,22 @@ def parse(self, string: str, language: Language) -> T:
4444PADDING_SIZE = len (str (MAX_RAW_NUMBER )) - 1
4545
4646
47- class LiteralInt (LiteralFormat [int ]):
48- def _encode_underscores (
49- self , buffer : io .StringIO , value : int , language : Language
50- ) -> io .StringIO :
51- if value >= MAX_RAW_NUMBER :
52- mod = value % MAX_RAW_NUMBER
53- left_padding = PADDING_SIZE - len (str (mod ))
54- self ._encode_underscores (buffer , value // MAX_RAW_NUMBER , language )
55- buffer .write ("_" )
56- buffer .write ("0" * left_padding )
57- buffer .write (str (mod ))
58- return buffer
59- elif value < 0 :
60- buffer .write ("-" )
61- self ._encode_underscores (buffer , abs (value ), language )
62- return buffer
63- else :
64- buffer .write (str (value ))
65- return buffer
66-
67- def encode (
68- self ,
69- value : int ,
70- language : Language ,
71- encoding_policy : EscapeLeadingWhitespace , # noqa: ARG002
72- ) -> str :
73- return self ._encode_underscores (io .StringIO (), value , language ).getvalue ()
74-
75- def parse (self , string : str , language : Language ) -> int : # noqa: ARG002
76- return int (string .replace ("_" , "" ))
47+ def _encode_int_underscores (buffer : io .StringIO , value : int ) -> str :
48+ if value >= MAX_RAW_NUMBER :
49+ mod = value % MAX_RAW_NUMBER
50+ left_padding = PADDING_SIZE - len (str (mod ))
51+ _encode_int_underscores (buffer , value // MAX_RAW_NUMBER )
52+ buffer .write ("_" )
53+ buffer .write ("0" * left_padding )
54+ buffer .write (str (mod ))
55+ return buffer .getvalue ()
56+ elif value < 0 :
57+ buffer .write ("-" )
58+ _encode_int_underscores (buffer , abs (value ))
59+ return buffer .getvalue ()
60+ else :
61+ buffer .write (str (value ))
62+ return buffer .getvalue ()
7763
7864
7965TRIPLE_QUOTE = '"""'
@@ -252,10 +238,13 @@ def handle_escape_sequences(line: str) -> str:
252238
253239class LiteralRepr (LiteralFormat [Any ]):
254240 def encode (
255- self , value : Any , language : Language , encoding_policy : EscapeLeadingWhitespace
241+ self ,
242+ value : Any ,
243+ language : Language , # noqa: ARG002
244+ encoding_policy : EscapeLeadingWhitespace , # noqa: ARG002
256245 ) -> str :
257246 if isinstance (value , int ):
258- return LiteralInt (). encode ( value , language , encoding_policy )
247+ return _encode_int_underscores ( io . StringIO (), value )
259248 else :
260249 return repr (value )
261250
0 commit comments