golden hour
/usr/lib/python3.8/encodings
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
5.46 KB
Del
OK
__pycache__
-
Del
OK
aliases.py
15.33 KB
Del
OK
ascii.py
1.22 KB
Del
OK
base64_codec.py
1.5 KB
Del
OK
big5.py
1019 B
Del
OK
big5hkscs.py
1.01 KB
Del
OK
bz2_codec.py
2.2 KB
Del
OK
charmap.py
2.04 KB
Del
OK
cp037.py
12.81 KB
Del
OK
cp1006.py
13.25 KB
Del
OK
cp1026.py
12.81 KB
Del
OK
cp1125.py
33.79 KB
Del
OK
cp1140.py
12.8 KB
Del
OK
cp1250.py
13.37 KB
Del
OK
cp1251.py
13.05 KB
Del
OK
cp1252.py
13.19 KB
Del
OK
cp1253.py
12.79 KB
Del
OK
cp1254.py
13.19 KB
Del
OK
cp1255.py
12.17 KB
Del
OK
cp1256.py
12.51 KB
Del
OK
cp1257.py
13.06 KB
Del
OK
cp1258.py
13.05 KB
Del
OK
cp273.py
13.8 KB
Del
OK
cp424.py
11.77 KB
Del
OK
cp437.py
33.75 KB
Del
OK
cp500.py
12.81 KB
Del
OK
cp720.py
13.37 KB
Del
OK
cp737.py
33.87 KB
Del
OK
cp775.py
33.67 KB
Del
OK
cp850.py
33.31 KB
Del
OK
cp852.py
34.18 KB
Del
OK
cp855.py
33.06 KB
Del
OK
cp856.py
12.13 KB
Del
OK
cp857.py
33.11 KB
Del
OK
cp858.py
33.22 KB
Del
OK
cp860.py
33.87 KB
Del
OK
cp861.py
33.82 KB
Del
OK
cp862.py
32.59 KB
Del
OK
cp863.py
33.45 KB
Del
OK
cp864.py
32.87 KB
Del
OK
cp865.py
33.81 KB
Del
OK
cp866.py
33.59 KB
Del
OK
cp869.py
32.19 KB
Del
OK
cp874.py
12.3 KB
Del
OK
cp875.py
12.55 KB
Del
OK
cp932.py
1023 B
Del
OK
cp949.py
1023 B
Del
OK
cp950.py
1023 B
Del
OK
euc_jis_2004.py
1.03 KB
Del
OK
euc_jisx0213.py
1.03 KB
Del
OK
euc_jp.py
1 KB
Del
OK
euc_kr.py
1 KB
Del
OK
gb18030.py
1.01 KB
Del
OK
gb2312.py
1 KB
Del
OK
gbk.py
1015 B
Del
OK
hex_codec.py
1.47 KB
Del
OK
hp_roman8.py
13.16 KB
Del
OK
hz.py
1011 B
Del
OK
idna.py
8.96 KB
Del
OK
iso2022_jp.py
1.03 KB
Del
OK
iso2022_jp_1.py
1.04 KB
Del
OK
iso2022_jp_2.py
1.04 KB
Del
OK
iso2022_jp_2004.py
1.05 KB
Del
OK
iso2022_jp_3.py
1.04 KB
Del
OK
iso2022_jp_ext.py
1.04 KB
Del
OK
iso2022_kr.py
1.03 KB
Del
OK
iso8859_1.py
12.87 KB
Del
OK
iso8859_10.py
13.27 KB
Del
OK
iso8859_11.py
12.05 KB
Del
OK
iso8859_13.py
12.96 KB
Del
OK
iso8859_14.py
13.33 KB
Del
OK
iso8859_15.py
12.9 KB
Del
OK
iso8859_16.py
13.24 KB
Del
OK
iso8859_2.py
13.09 KB
Del
OK
iso8859_3.py
12.78 KB
Del
OK
iso8859_4.py
13.06 KB
Del
OK
iso8859_5.py
12.71 KB
Del
OK
iso8859_6.py
10.58 KB
Del
OK
iso8859_7.py
12.54 KB
Del
OK
iso8859_8.py
10.78 KB
Del
OK
iso8859_9.py
12.85 KB
Del
OK
johab.py
1023 B
Del
OK
koi8_r.py
13.46 KB
Del
OK
koi8_t.py
12.88 KB
Del
OK
koi8_u.py
13.44 KB
Del
OK
kz1048.py
13.4 KB
Del
OK
latin_1.py
1.23 KB
Del
OK
mac_arabic.py
35.61 KB
Del
OK
mac_centeuro.py
13.77 KB
Del
OK
mac_croatian.py
13.31 KB
Del
OK
mac_cyrillic.py
13.14 KB
Del
OK
mac_farsi.py
14.81 KB
Del
OK
mac_greek.py
13.4 KB
Del
OK
mac_iceland.py
13.18 KB
Del
OK
mac_latin2.py
13.79 KB
Del
OK
mac_roman.py
13.16 KB
Del
OK
mac_romanian.py
13.34 KB
Del
OK
mac_turkish.py
13.2 KB
Del
OK
mbcs.py
1.18 KB
Del
OK
oem.py
1019 B
Del
OK
palmos.py
13.2 KB
Del
OK
ptcp154.py
13.69 KB
Del
OK
punycode.py
6.72 KB
Del
OK
quopri_codec.py
1.49 KB
Del
OK
raw_unicode_escape.py
1.18 KB
Del
OK
rot_13.py
2.39 KB
Del
OK
shift_jis.py
1.01 KB
Del
OK
shift_jis_2004.py
1.03 KB
Del
OK
shift_jisx0213.py
1.03 KB
Del
OK
tis_620.py
12.01 KB
Del
OK
undefined.py
1.27 KB
Del
OK
unicode_escape.py
1.16 KB
Del
OK
utf_16.py
5.11 KB
Del
OK
utf_16_be.py
1.01 KB
Del
OK
utf_16_le.py
1.01 KB
Del
OK
utf_32.py
5.01 KB
Del
OK
utf_32_be.py
930 B
Del
OK
utf_32_le.py
930 B
Del
OK
utf_7.py
946 B
Del
OK
utf_8.py
1005 B
Del
OK
utf_8_sig.py
4.04 KB
Del
OK
uu_codec.py
2.78 KB
Del
OK
zlib_codec.py
2.15 KB
Del
OK
Edit: punycode.py
""" Codec for the Punicode encoding, as specified in RFC 3492 Written by Martin v. Löwis. """ import codecs ##################### Encoding ##################################### def segregate(str): """3.1 Basic code point segregation""" base = bytearray() extended = set() for c in str: if ord(c) < 128: base.append(ord(c)) else: extended.add(c) extended = sorted(extended) return bytes(base), extended def selective_len(str, max): """Return the length of str, considering only characters below max.""" res = 0 for c in str: if ord(c) < max: res += 1 return res def selective_find(str, char, index, pos): """Return a pair (index, pos), indicating the next occurrence of char in str. index is the position of the character considering only ordinals up to and including char, and pos is the position in the full string. index/pos is the starting position in the full string.""" l = len(str) while 1: pos += 1 if pos == l: return (-1, -1) c = str[pos] if c == char: return index+1, pos elif c < char: index += 1 def insertion_unsort(str, extended): """3.2 Insertion unsort coding""" oldchar = 0x80 result = [] oldindex = -1 for c in extended: index = pos = -1 char = ord(c) curlen = selective_len(str, char) delta = (curlen+1) * (char - oldchar) while 1: index,pos = selective_find(str,c,index,pos) if index == -1: break delta += index - oldindex result.append(delta-1) oldindex = index delta = 0 oldchar = char return result def T(j, bias): # Punycode parameters: tmin = 1, tmax = 26, base = 36 res = 36 * (j + 1) - bias if res < 1: return 1 if res > 26: return 26 return res digits = b"abcdefghijklmnopqrstuvwxyz0123456789" def generate_generalized_integer(N, bias): """3.3 Generalized variable-length integers""" result = bytearray() j = 0 while 1: t = T(j, bias) if N < t: result.append(digits[N]) return bytes(result) result.append(digits[t + ((N - t) % (36 - t))]) N = (N - t) // (36 - t) j += 1 def adapt(delta, first, numchars): if first: delta //= 700 else: delta //= 2 delta += delta // numchars # ((base - tmin) * tmax) // 2 == 455 divisions = 0 while delta > 455: delta = delta // 35 # base - tmin divisions += 36 bias = divisions + (36 * delta // (delta + 38)) return bias def generate_integers(baselen, deltas): """3.4 Bias adaptation""" # Punycode parameters: initial bias = 72, damp = 700, skew = 38 result = bytearray() bias = 72 for points, delta in enumerate(deltas): s = generate_generalized_integer(delta, bias) result.extend(s) bias = adapt(delta, points==0, baselen+points+1) return bytes(result) def punycode_encode(text): base, extended = segregate(text) deltas = insertion_unsort(text, extended) extended = generate_integers(len(base), deltas) if base: return base + b"-" + extended return extended ##################### Decoding ##################################### def decode_generalized_number(extended, extpos, bias, errors): """3.3 Generalized variable-length integers""" result = 0 w = 1 j = 0 while 1: try: char = ord(extended[extpos]) except IndexError: if errors == "strict": raise UnicodeError("incomplete punicode string") return extpos + 1, None extpos += 1 if 0x41 <= char <= 0x5A: # A-Z digit = char - 0x41 elif 0x30 <= char <= 0x39: digit = char - 22 # 0x30-26 elif errors == "strict": raise UnicodeError("Invalid extended code point '%s'" % extended[extpos-1]) else: return extpos, None t = T(j, bias) result += digit * w if digit < t: return extpos, result w = w * (36 - t) j += 1 def insertion_sort(base, extended, errors): """3.2 Insertion unsort coding""" char = 0x80 pos = -1 bias = 72 extpos = 0 while extpos < len(extended): newpos, delta = decode_generalized_number(extended, extpos, bias, errors) if delta is None: # There was an error in decoding. We can't continue because # synchronization is lost. return base pos += delta+1 char += pos // (len(base) + 1) if char > 0x10FFFF: if errors == "strict": raise UnicodeError("Invalid character U+%x" % char) char = ord('?') pos = pos % (len(base) + 1) base = base[:pos] + chr(char) + base[pos:] bias = adapt(delta, (extpos == 0), len(base)) extpos = newpos return base def punycode_decode(text, errors): if isinstance(text, str): text = text.encode("ascii") if isinstance(text, memoryview): text = bytes(text) pos = text.rfind(b"-") if pos == -1: base = "" extended = str(text, "ascii").upper() else: base = str(text[:pos], "ascii", errors) extended = str(text[pos+1:], "ascii").upper() return insertion_sort(base, extended, errors) ### Codec APIs class Codec(codecs.Codec): def encode(self, input, errors='strict'): res = punycode_encode(input) return res, len(input) def decode(self, input, errors='strict'): if errors not in ('strict', 'replace', 'ignore'): raise UnicodeError("Unsupported error handling "+errors) res = punycode_decode(input, errors) return res, len(input) class IncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input, final=False): return punycode_encode(input) class IncrementalDecoder(codecs.IncrementalDecoder): def decode(self, input, final=False): if self.errors not in ('strict', 'replace', 'ignore'): raise UnicodeError("Unsupported error handling "+self.errors) return punycode_decode(input, self.errors) class StreamWriter(Codec,codecs.StreamWriter): pass class StreamReader(Codec,codecs.StreamReader): pass ### encodings module API def getregentry(): return codecs.CodecInfo( name='punycode', encode=Codec().encode, decode=Codec().decode, incrementalencoder=IncrementalEncoder, incrementaldecoder=IncrementalDecoder, streamwriter=StreamWriter, streamreader=StreamReader, )
Save