You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
938 B
Python
47 lines
938 B
Python
3 years ago
|
import base64
|
||
|
import io
|
||
|
import sys
|
||
|
|
||
|
|
||
|
if sys.version_info[0] < 3:
|
||
|
text_type = unicode # noqa: F821
|
||
|
|
||
|
StringIO = io.BytesIO
|
||
|
|
||
|
def native(s, encoding='utf-8'):
|
||
|
if isinstance(s, unicode): # noqa: F821
|
||
|
return s.encode(encoding)
|
||
|
return s
|
||
|
else:
|
||
|
text_type = str
|
||
|
|
||
|
StringIO = io.StringIO
|
||
|
|
||
|
def native(s, encoding='utf-8'):
|
||
|
if isinstance(s, bytes):
|
||
|
return s.decode(encoding)
|
||
|
return s
|
||
|
|
||
|
|
||
|
def urlsafe_b64encode(data):
|
||
|
"""urlsafe_b64encode without padding"""
|
||
|
return base64.urlsafe_b64encode(data).rstrip(b'=')
|
||
|
|
||
|
|
||
|
def urlsafe_b64decode(data):
|
||
|
"""urlsafe_b64decode without padding"""
|
||
|
pad = b'=' * (4 - (len(data) & 3))
|
||
|
return base64.urlsafe_b64decode(data + pad)
|
||
|
|
||
|
|
||
|
def as_unicode(s):
|
||
|
if isinstance(s, bytes):
|
||
|
return s.decode('utf-8')
|
||
|
return s
|
||
|
|
||
|
|
||
|
def as_bytes(s):
|
||
|
if isinstance(s, text_type):
|
||
|
return s.encode('utf-8')
|
||
|
return s
|