/
usr
/
lib64
/
python3.6
/
encodings
/
/usr/lib64/python3.6/encodings
mkdir
upload
Name
Size
Mode
Actions
__pycache__/
-
0755
rm
aliases.py
15577
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.py
13121
0644
edit
dl
rm
cp273.py
14132
0644
edit
dl
rm
cp424.py
12055
0644
edit
dl
rm
cp437.py
34564
0644
edit
dl
rm
cp500.py
13121
0644
edit
dl
rm
cp720.py
13686
0644
edit
dl
rm
cp737.py
34681
0644
edit
dl
rm
cp775.py
34476
0644
edit
dl
rm
cp850.py
34105
0644
edit
dl
rm
cp852.py
35002
0644
edit
dl
rm
cp855.py
33850
0644
edit
dl
rm
cp856.py
12423
0644
edit
dl
rm
cp857.py
33908
0644
edit
dl
rm
cp858.py
34015
0644
edit
dl
rm
cp860.py
34681
0644
edit
dl
rm
cp861.py
34633
0644
edit
dl
rm
cp862.py
33370
0644
edit
dl
rm
cp863.py
34252
0644
edit
dl
rm
cp864.py
33663
0644
edit
dl
rm
cp865.py
34618
0644
edit
dl
rm
cp866.py
34396
0644
edit
dl
rm
cp869.py
32965
0644
edit
dl
rm
cp874.py
12595
0644
edit
dl
rm
cp875.py
12854
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.py
13568
0644
edit
dl
rm
cp1026.py
13113
0644
edit
dl
rm
cp1125.py
34597
0644
edit
dl
rm
cp1140.py
13105
0644
edit
dl
rm
cp1250.py
13686
0644
edit
dl
rm
cp1251.py
13361
0644
edit
dl
rm
cp1252.py
13511
0644
edit
dl
rm
cp1253.py
13094
0644
edit
dl
rm
cp1254.py
13502
0644
edit
dl
rm
cp1255.py
12466
0644
edit
dl
rm
cp1256.py
12814
0644
edit
dl
rm
cp1257.py
13374
0644
edit
dl
rm
cp1258.py
13364
0644
edit
dl
rm
cp65001.py
1106
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.py
13475
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.py
13176
0644
edit
dl
rm
iso8859_2.py
13404
0644
edit
dl
rm
iso8859_3.py
13089
0644
edit
dl
rm
iso8859_4.py
13376
0644
edit
dl
rm
iso8859_5.py
13015
0644
edit
dl
rm
iso8859_6.py
10833
0644
edit
dl
rm
iso8859_7.py
12844
0644
edit
dl
rm
iso8859_8.py
11036
0644
edit
dl
rm
iso8859_9.py
13156
0644
edit
dl
rm
iso8859_10.py
13589
0644
edit
dl
rm
iso8859_11.py
12335
0644
edit
dl
rm
iso8859_13.py
13271
0644
edit
dl
rm
iso8859_14.py
13652
0644
edit
dl
rm
iso8859_15.py
13212
0644
edit
dl
rm
iso8859_16.py
13557
0644
edit
dl
rm
johab.py
1023
0644
edit
dl
rm
koi8_r.py
13779
0644
edit
dl
rm
koi8_t.py
13193
0644
edit
dl
rm
koi8_u.py
13762
0644
edit
dl
rm
kz1048.py
13723
0644
edit
dl
rm
latin_1.py
1264
0644
edit
dl
rm
mac_arabic.py
36467
0644
edit
dl
rm
mac_centeuro.py
14102
0644
edit
dl
rm
mac_croatian.py
13633
0644
edit
dl
rm
mac_cyrillic.py
13454
0644
edit
dl
rm
mac_farsi.py
15170
0644
edit
dl
rm
mac_greek.py
13721
0644
edit
dl
rm
mac_iceland.py
13498
0644
edit
dl
rm
mac_latin2.py
14118
0644
edit
dl
rm
mac_roman.py
13480
0644
edit
dl
rm
mac_romanian.py
13661
0644
edit
dl
rm
mac_turkish.py
13513
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.py
14015
0644
edit
dl
rm
punycode.py
6881
0644
edit
dl
rm
quopri_codec.py
1525
0644
edit
dl
rm
raw_unicode_escape.py
1208
0644
edit
dl
rm
rot_13.py
2438
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.py
12300
0644
edit
dl
rm
undefined.py
1299
0644
edit
dl
rm
unicode_escape.py
1184
0644
edit
dl
rm
unicode_internal.py
1196
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
2721
0644
edit
dl
rm
zlib_codec.py
2204
0644
edit
dl
rm
__init__.py
5642
0644
edit
dl
rm
Edit:
/usr/lib64/python3.6/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