File: C:/Users/fred/anaconda3/Lib/site-packages/anaconda_project/internal/py2_compat.py
# -*- coding: utf-8 -*-
# -----------------------------------------------------------------------------
# Copyright (c) 2016, Anaconda, Inc. All rights reserved.
#
# Licensed under the terms of the BSD 3-Clause License.
# The full license is in the file LICENSE.txt, distributed with this software.
# -----------------------------------------------------------------------------
from __future__ import absolute_import, print_function
import platform
import sys
try: # pragma: no cover
from collections.abc import Mapping, Sequence
except ImportError:
from collections import Mapping, Sequence
_PY2 = sys.version_info[0] == 2
def is_unicode(s):
if _PY2: # pragma: no cover (py2/py3)
return isinstance(s, unicode) # pragma: no cover (py2/py3) # noqa
else: # pragma: no cover (py2/py3)
return isinstance(s, str) # pragma: no cover (py2/py3)
def is_string(s):
if _PY2: # pragma: no cover (py2/py3)
return isinstance(s, basestring) # pragma: no cover (py2/py3) # noqa
else: # pragma: no cover (py2/py3)
return isinstance(s, str) # pragma: no cover (py2/py3)
def is_list(v):
return isinstance(v, Sequence) and not is_string(v)
def is_dict(v):
return isinstance(v, Mapping)
def env_without_unicode(environ):
# On Windows / Python 2.7, Popen explodes if given unicode strings in the environment.
if _PY2 and platform.system() == 'Windows': # pragma: no cover (py2/py3)
environ_copy = dict()
for key, value in environ.items():
if isinstance(key, unicode): # noqa
key = key.encode()
if isinstance(value, unicode): # noqa
value = value.encode()
assert isinstance(key, str)
assert isinstance(value, str)
environ_copy[key] = value
return environ_copy
else: # pragma: no cover (py2/py3)
return environ