You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
964 B
50 lines
964 B
1 year ago
|
import sys
|
||
|
|
||
|
PY2 = sys.version_info[0] == 2 # type: bool
|
||
|
|
||
|
if PY2:
|
||
|
from StringIO import StringIO # noqa
|
||
|
else:
|
||
|
from io import StringIO # noqa
|
||
|
|
||
|
|
||
|
def is_type_checking():
|
||
|
# type: () -> bool
|
||
|
try:
|
||
|
from typing import TYPE_CHECKING
|
||
|
except ImportError:
|
||
|
return False
|
||
|
return TYPE_CHECKING
|
||
|
|
||
|
|
||
|
IS_TYPE_CHECKING = is_type_checking()
|
||
|
|
||
|
|
||
|
if IS_TYPE_CHECKING:
|
||
|
from typing import Text
|
||
|
|
||
|
|
||
|
def to_env(text):
|
||
|
# type: (Text) -> str
|
||
|
"""
|
||
|
Encode a string the same way whether it comes from the environment or a `.env` file.
|
||
|
"""
|
||
|
if PY2:
|
||
|
return text.encode(sys.getfilesystemencoding() or "utf-8")
|
||
|
else:
|
||
|
return text
|
||
|
|
||
|
|
||
|
def to_text(string):
|
||
|
# type: (str) -> Text
|
||
|
"""
|
||
|
Make a string Unicode if it isn't already.
|
||
|
|
||
|
This is useful for defining raw unicode strings because `ur"foo"` isn't valid in
|
||
|
Python 3.
|
||
|
"""
|
||
|
if PY2:
|
||
|
return string.decode("utf-8")
|
||
|
else:
|
||
|
return string
|