AIM-PIbd-32-Kurbanova-A-A/aimenv/Lib/site-packages/statsmodels/compat/python.py
2024-10-02 22:15:59 +04:00

58 lines
1.2 KiB
Python

"""
Compatibility tools for differences between Python 2 and 3
"""
asunicode = lambda x, _: str(x) # noqa:E731
__all__ = [
"asunicode",
"asstr",
"asbytes",
"lmap",
"lzip",
"lrange",
"lfilter",
"with_metaclass",
]
def asbytes(s):
if isinstance(s, bytes):
return s
return s.encode("latin1")
def asstr(s):
if isinstance(s, str):
return s
return s.decode("latin1")
# list-producing versions of the major Python iterating functions
def lrange(*args, **kwargs):
return list(range(*args, **kwargs))
def lzip(*args, **kwargs):
return list(zip(*args, **kwargs))
def lmap(*args, **kwargs):
return list(map(*args, **kwargs))
def lfilter(*args, **kwargs):
return list(filter(*args, **kwargs))
def with_metaclass(meta, *bases):
"""Create a base class with a metaclass."""
# This requires a bit of explanation: the basic idea is to make a dummy
# metaclass for one level of class instantiation that replaces itself with
# the actual metaclass.
class metaclass(meta):
def __new__(cls, name, this_bases, d):
return meta(name, bases, d)
return type.__new__(metaclass, "temporary_class", (), {})