/
usr
/
lib64
/
python3.9
/
encodings
/
/usr/lib64/python3.9/encodings
mkdir
upload
Name
Size
Mode
Actions
__pycache__/
-
0755
rm
aliases.py
15677
0644
edit
dl
rm
ascii.py
1248
0644
edit
dl
rm
base64_codec.py
1533
0644
edit
dl
rm
big5.py
1019
0644
edit
dl
rm
big5hkscs.py
1039
0644
edit
dl
rm
bz2_codec.py
2249
0644
edit
dl
rm
charmap.py
2084
0644
edit
dl
rm
cp037.pyc
2424
0644
edit
dl
rm
cp273.pyc
2410
0644
edit
dl
rm
cp424.pyc
2454
0644
edit
dl
rm
cp437.pyc
7848
0644
edit
dl
rm
cp500.pyc
2424
0644
edit
dl
rm
cp720.py
13686
0644
edit
dl
rm
cp737.pyc
8170
0644
edit
dl
rm
cp775.pyc
7878
0644
edit
dl
rm
cp850.pyc
7509
0644
edit
dl
rm
cp852.pyc
7886
0644
edit
dl
rm
cp855.pyc
8139
0644
edit
dl
rm
cp856.pyc
2486
0644
edit
dl
rm
cp857.pyc
7489
0644
edit
dl
rm
cp858.py
34015
0644
edit
dl
rm
cp860.pyc
7827
0644
edit
dl
rm
cp861.pyc
7842
0644
edit
dl
rm
cp862.pyc
8031
0644
edit
dl
rm
cp863.pyc
7842
0644
edit
dl
rm
cp864.pyc
7986
0644
edit
dl
rm
cp865.pyc
7842
0644
edit
dl
rm
cp866.pyc
8175
0644
edit
dl
rm
cp869.pyc
7866
0644
edit
dl
rm
cp874.pyc
2552
0644
edit
dl
rm
cp875.pyc
2421
0644
edit
dl
rm
cp932.py
1023
0644
edit
dl
rm
cp949.py
1023
0644
edit
dl
rm
cp950.py
1023
0644
edit
dl
rm
cp1006.pyc
2500
0644
edit
dl
rm
cp1026.pyc
2428
0644
edit
dl
rm
cp1125.py
34597
0644
edit
dl
rm
cp1140.pyc
2414
0644
edit
dl
rm
cp1250.pyc
2451
0644
edit
dl
rm
cp1251.pyc
2448
0644
edit
dl
rm
cp1252.pyc
2451
0644
edit
dl
rm
cp1253.pyc
2464
0644
edit
dl
rm
cp1254.pyc
2453
0644
edit
dl
rm
cp1255.pyc
2472
0644
edit
dl
rm
cp1256.pyc
2450
0644
edit
dl
rm
cp1257.pyc
2458
0644
edit
dl
rm
cp1258.pyc
2456
0644
edit
dl
rm
euc_jisx0213.py
1051
0644
edit
dl
rm
euc_jis_2004.py
1051
0644
edit
dl
rm
euc_jp.py
1027
0644
edit
dl
rm
euc_kr.py
1027
0644
edit
dl
rm
gb2312.py
1027
0644
edit
dl
rm
gb18030.py
1031
0644
edit
dl
rm
gbk.py
1015
0644
edit
dl
rm
hex_codec.py
1508
0644
edit
dl
rm
hp_roman8.pyc
2625
0644
edit
dl
rm
hz.py
1011
0644
edit
dl
rm
idna.py
9098
0644
edit
dl
rm
iso2022_jp.py
1053
0644
edit
dl
rm
iso2022_jp_1.py
1061
0644
edit
dl
rm
iso2022_jp_2.py
1061
0644
edit
dl
rm
iso2022_jp_3.py
1061
0644
edit
dl
rm
iso2022_jp_2004.py
1073
0644
edit
dl
rm
iso2022_jp_ext.py
1069
0644
edit
dl
rm
iso2022_kr.py
1053
0644
edit
dl
rm
iso8859_1.pyc
2423
0644
edit
dl
rm
iso8859_2.pyc
2423
0644
edit
dl
rm
iso8859_3.pyc
2430
0644
edit
dl
rm
iso8859_4.pyc
2423
0644
edit
dl
rm
iso8859_5.pyc
2424
0644
edit
dl
rm
iso8859_6.pyc
2468
0644
edit
dl
rm
iso8859_7.pyc
2431
0644
edit
dl
rm
iso8859_8.pyc
2462
0644
edit
dl
rm
iso8859_9.pyc
2423
0644
edit
dl
rm
iso8859_10.pyc
2428
0644
edit
dl
rm
iso8859_11.pyc
2522
0644
edit
dl
rm
iso8859_13.pyc
2431
0644
edit
dl
rm
iso8859_14.pyc
2449
0644
edit
dl
rm
iso8859_15.pyc
2428
0644
edit
dl
rm
iso8859_16.pyc
2430
0644
edit
dl
rm
johab.py
1023
0644
edit
dl
rm
koi8_r.pyc
2475
0644
edit
dl
rm
koi8_t.py
13193
0644
edit
dl
rm
koi8_u.pyc
2461
0644
edit
dl
rm
kz1048.pyc
2438
0644
edit
dl
rm
latin_1.py
1264
0644
edit
dl
rm
mac_arabic.pyc
7742
0644
edit
dl
rm
mac_croatian.pyc
2470
0644
edit
dl
rm
mac_cyrillic.pyc
2460
0644
edit
dl
rm
mac_farsi.pyc
2404
0644
edit
dl
rm
mac_greek.pyc
2444
0644
edit
dl
rm
mac_iceland.pyc
2463
0644
edit
dl
rm
mac_latin2.pyc
2604
0644
edit
dl
rm
mac_roman.pyc
2461
0644
edit
dl
rm
mac_romanian.pyc
2471
0644
edit
dl
rm
mac_turkish.pyc
2464
0644
edit
dl
rm
mbcs.py
1211
0644
edit
dl
rm
oem.py
1019
0644
edit
dl
rm
palmos.py
13519
0644
edit
dl
rm
ptcp154.pyc
2545
0644
edit
dl
rm
punycode.py
6883
0644
edit
dl
rm
quopri_codec.py
1525
0644
edit
dl
rm
raw_unicode_escape.py
1332
0644
edit
dl
rm
rot_13.py
2448
0755
edit
dl
rm
shift_jis.py
1039
0644
edit
dl
rm
shift_jisx0213.py
1059
0644
edit
dl
rm
shift_jis_2004.py
1059
0644
edit
dl
rm
tis_620.pyc
2513
0644
edit
dl
rm
undefined.py
1299
0644
edit
dl
rm
unicode_escape.py
1304
0644
edit
dl
rm
utf_7.py
946
0644
edit
dl
rm
utf_8.py
1005
0644
edit
dl
rm
utf_8_sig.py
4133
0644
edit
dl
rm
utf_16.py
5236
0644
edit
dl
rm
utf_16_be.py
1037
0644
edit
dl
rm
utf_16_le.py
1037
0644
edit
dl
rm
utf_32.py
5129
0644
edit
dl
rm
utf_32_be.py
930
0644
edit
dl
rm
utf_32_le.py
930
0644
edit
dl
rm
uu_codec.py
2851
0644
edit
dl
rm
zlib_codec.py
2204
0644
edit
dl
rm
__init__.py
5588
0644
edit
dl
rm
Edit:
/usr/lib64/python3.9/encodings/idna.py
(9098B)
# This module implements the RFCs 3490 (IDNA) and 3491 (Nameprep) import stringprep, re, codecs from unicodedata import ucd_3_2_0 as unicodedata # IDNA section 3.1 dots = re.compile("[\u002E\u3002\uFF0E\uFF61]") # IDNA section 5 ace_prefix = b"xn--" sace_prefix = "xn--" # This assumes query strings, so AllowUnassigned is true def nameprep(label): # Map newlabel = [] for c in label: if stringprep.in_table_b1(c): # Map to nothing continue newlabel.append(stringprep.map_table_b2(c)) label = "".join(newlabel) # Normalize label = unicodedata.normalize("NFKC", label) # Prohibit for c in label: if stringprep.in_table_c12(c) or \ stringprep.in_table_c22(c) or \ stringprep.in_table_c3(c) or \ stringprep.in_table_c4(c) or \ stringprep.in_table_c5(c) or \ stringprep.in_table_c6(c) or \ stringprep.in_table_c7(c) or \ stringprep.in_table_c8(c) or \ stringprep.in_table_c9(c): raise UnicodeError("Invalid character %r" % c) # Check bidi RandAL = [stringprep.in_table_d1(x) for x in label] if any(RandAL): # There is a RandAL char in the string. Must perform further # tests: # 1) The characters in section 5.8 MUST be prohibited. # This is table C.8, which was already checked # 2) If a string contains any RandALCat character, the string # MUST NOT contain any LCat character. if any(stringprep.in_table_d2(x) for x in label): raise UnicodeError("Violation of BIDI requirement 2") # 3) If a string contains any RandALCat character, a # RandALCat character MUST be the first character of the # string, and a RandALCat character MUST be the last # character of the string. if not RandAL[0] or not RandAL[-1]: raise UnicodeError("Violation of BIDI requirement 3") return label def ToASCII(label): try: # Step 1: try ASCII label = label.encode("ascii") except UnicodeError: pass else: # Skip to step 3: UseSTD3ASCIIRules is false, so # Skip to step 8. if 0 < len(label) < 64: return label raise UnicodeError("label empty or too long") # Step 2: nameprep label = nameprep(label) # Step 3: UseSTD3ASCIIRules is false # Step 4: try ASCII try: label = label.encode("ascii") except UnicodeError: pass else: # Skip to step 8. if 0 < len(label) < 64: return label raise UnicodeError("label empty or too long") # Step 5: Check ACE prefix if label.startswith(sace_prefix): raise UnicodeError("Label starts with ACE prefix") # Step 6: Encode with PUNYCODE label = label.encode("punycode") # Step 7: Prepend ACE prefix label = ace_prefix + label # Step 8: Check size if 0 < len(label) < 64: return label raise UnicodeError("label empty or too long") def ToUnicode(label): # Step 1: Check for ASCII if isinstance(label, bytes): pure_ascii = True else: try: label = label.encode("ascii") pure_ascii = True except UnicodeError: pure_ascii = False if not pure_ascii: # Step 2: Perform nameprep label = nameprep(label) # It doesn't say this, but apparently, it should be ASCII now try: label = label.encode("ascii") except UnicodeError: raise UnicodeError("Invalid character in IDN label") # Step 3: Check for ACE prefix if not label.startswith(ace_prefix): return str(label, "ascii") # Step 4: Remove ACE prefix label1 = label[len(ace_prefix):] # Step 5: Decode using PUNYCODE result = label1.decode("punycode") # Step 6: Apply ToASCII label2 = ToASCII(result) # Step 7: Compare the result of step 6 with the one of step 3 # label2 will already be in lower case. if str(label, "ascii").lower() != str(label2, "ascii"): raise UnicodeError("IDNA does not round-trip", label, label2) # Step 8: return the result of step 5 return result ### Codec APIs class Codec(codecs.Codec): def encode(self, input, errors='strict'): if errors != 'strict': # IDNA is quite clear that implementations must be strict raise UnicodeError("unsupported error handling "+errors) if not input: return b'', 0 try: result = input.encode('ascii') except UnicodeEncodeError: pass else: # ASCII name: fast path labels = result.split(b'.') for label in labels[:-1]: if not (0 < len(label) < 64): raise UnicodeError("label empty or too long") if len(labels[-1]) >= 64: raise UnicodeError("label too long") return result, len(input) result = bytearray() labels = dots.split(input) if labels and not labels[-1]: trailing_dot = b'.' del labels[-1] else: trailing_dot = b'' for label in labels: if result: # Join with U+002E result.extend(b'.') result.extend(ToASCII(label)) return bytes(result+trailing_dot), len(input) def decode(self, input, errors='strict'): if errors != 'strict': raise UnicodeError("Unsupported error handling "+errors) if not input: return "", 0 # IDNA allows decoding to operate on Unicode strings, too. if not isinstance(input, bytes): # XXX obviously wrong, see #3232 input = bytes(input) if ace_prefix not in input: # Fast path try: return input.decode('ascii'), len(input) except UnicodeDecodeError: pass labels = input.split(b".") if labels and len(labels[-1]) == 0: trailing_dot = '.' del labels[-1] else: trailing_dot = '' result = [] for label in labels: result.append(ToUnicode(label)) return ".".join(result)+trailing_dot, len(input) class IncrementalEncoder(codecs.BufferedIncrementalEncoder): def _buffer_encode(self, input, errors, final): if errors != 'strict': # IDNA is quite clear that implementations must be strict raise UnicodeError("unsupported error handling "+errors) if not input: return (b'', 0) labels = dots.split(input) trailing_dot = b'' if labels: if not labels[-1]: trailing_dot = b'.' del labels[-1] elif not final: # Keep potentially unfinished label until the next call del labels[-1] if labels: trailing_dot = b'.' result = bytearray() size = 0 for label in labels: if size: # Join with U+002E result.extend(b'.') size += 1 result.extend(ToASCII(label)) size += len(label) result += trailing_dot size += len(trailing_dot) return (bytes(result), size) class IncrementalDecoder(codecs.BufferedIncrementalDecoder): def _buffer_decode(self, input, errors, final): if errors != 'strict': raise UnicodeError("Unsupported error handling "+errors) if not input: return ("", 0) # IDNA allows decoding to operate on Unicode strings, too. if isinstance(input, str): labels = dots.split(input) else: # Must be ASCII string input = str(input, "ascii") labels = input.split(".") trailing_dot = '' if labels: if not labels[-1]: trailing_dot = '.' del labels[-1] elif not final: # Keep potentially unfinished label until the next call del labels[-1] if labels: trailing_dot = '.' result = [] size = 0 for label in labels: result.append(ToUnicode(label)) if size: size += 1 size += len(label) result = ".".join(result) + trailing_dot size += len(trailing_dot) return (result, size) class StreamWriter(Codec,codecs.StreamWriter): pass class StreamReader(Codec,codecs.StreamReader): pass ### encodings module API def getregentry(): return codecs.CodecInfo( name='idna', encode=Codec().encode, decode=Codec().decode, incrementalencoder=IncrementalEncoder, incrementaldecoder=IncrementalDecoder, streamwriter=StreamWriter, streamreader=StreamReader, )
Save
cmd:
run