diff options
| author | Sebastian Thiel <byronimo@gmail.com> | 2015-01-05 15:53:46 +0100 | 
|---|---|---|
| committer | Sebastian Thiel <byronimo@gmail.com> | 2015-01-05 15:53:46 +0100 | 
| commit | 04357d0d46fee938a618b64daed1716606e05ca5 (patch) | |
| tree | ab7f0a4ecc047f4710b7e5cf7182cc3e22e477fc /git/compat.py | |
| parent | bc8c91200a7fb2140aadd283c66b5ab82f9ad61e (diff) | |
| download | gitpython-04357d0d46fee938a618b64daed1716606e05ca5.tar.gz | |
Intermediate commit: test_config and test_actor works
Kind of tackling the tasks step by step, picking low-hanging fruit first,
or the ones that everyone depends on
Diffstat (limited to 'git/compat.py')
| -rw-r--r-- | git/compat.py | 32 | 
1 files changed, 31 insertions, 1 deletions
diff --git a/git/compat.py b/git/compat.py index a95c5667..4a892ad2 100644 --- a/git/compat.py +++ b/git/compat.py @@ -7,6 +7,8 @@  """utilities to help provide compatibility with python 3"""  # flake8: noqa +import sys +  from gitdb.utils.compat import (      PY3,      xrange, @@ -17,11 +19,39 @@ from gitdb.utils.compat import (  from gitdb.utils.encoding import (      string_types,      text_type, -    force_bytes +    force_bytes, +    force_text  ) +defenc = sys.getdefaultencoding()  if PY3:      import io      FileType = io.IOBase  else:      FileType = file +    # usually, this is just ascii, which might not enough for our encoding needs +    # Unless it's set specifically, we override it to be utf-8 +    if defenc == 'ascii': +        defenc = 'utf-8' + + +def with_metaclass(meta, *bases): +    """copied from https://github.com/Byron/bcore/blob/master/src/python/butility/future.py#L15""" +    class metaclass(meta): +        __call__ = type.__call__ +        __init__ = type.__init__ + +        def __new__(cls, name, nbases, d): +            if nbases is None: +                return type.__new__(cls, name, (), d) +            # There may be clients who rely on this attribute to be set to a reasonable value, which is why +            # we set the __metaclass__ attribute explicitly +            if not PY3 and '___metaclass__' not in d: +                d['__metaclass__'] = meta +            # end +            return meta(name, bases, d) +        # end +    # end metaclass +    return metaclass(meta.__name__ + 'Helper', None, {}) +    # end handle py2 +  | 
