mirror of
https://github.com/kkroening/ffmpeg-python.git
synced 2025-04-06 04:15:44 +08:00
Replace past.builtins.basestring with a custom one to workaround bug in Ubuntu's Python3
This commit is contained in:
parent
497105f929
commit
df9bd7316f
@ -1,6 +1,6 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from past.builtins import basestring
|
from ._utils import basestring
|
||||||
|
|
||||||
from .nodes import (
|
from .nodes import (
|
||||||
filter_operator,
|
filter_operator,
|
||||||
|
@ -2,7 +2,7 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from .dag import get_outgoing_edges, topo_sort
|
from .dag import get_outgoing_edges, topo_sort
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from past.builtins import basestring
|
from ._utils import basestring
|
||||||
import copy
|
import copy
|
||||||
import operator
|
import operator
|
||||||
import subprocess as _subprocess
|
import subprocess as _subprocess
|
||||||
|
@ -1,8 +1,42 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from builtins import str
|
|
||||||
from past.builtins import basestring
|
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.version_info.major == 2:
|
||||||
|
# noinspection PyUnresolvedReferences,PyShadowingBuiltins
|
||||||
|
str = unicode
|
||||||
|
|
||||||
|
|
||||||
|
# `past.builtins.basestring` module can't be imported on Python3 in some environments (Ubuntu).
|
||||||
|
# This code is copy-pasted from it to avoid crashes.
|
||||||
|
class BaseBaseString(type):
|
||||||
|
def __instancecheck__(cls, instance):
|
||||||
|
return isinstance(instance, (bytes, str))
|
||||||
|
|
||||||
|
def __subclasshook__(cls, thing):
|
||||||
|
# TODO: What should go here?
|
||||||
|
raise NotImplemented
|
||||||
|
|
||||||
|
|
||||||
|
def with_metaclass(meta, *bases):
|
||||||
|
class metaclass(meta):
|
||||||
|
__call__ = type.__call__
|
||||||
|
__init__ = type.__init__
|
||||||
|
|
||||||
|
def __new__(cls, name, this_bases, d):
|
||||||
|
if this_bases is None:
|
||||||
|
return type.__new__(cls, name, (), d)
|
||||||
|
return meta(name, bases, d)
|
||||||
|
|
||||||
|
return metaclass('temporary_class', None, {})
|
||||||
|
|
||||||
|
|
||||||
|
if sys.version_info.major >= 3:
|
||||||
|
class basestring(with_metaclass(BaseBaseString)):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# noinspection PyUnresolvedReferences,PyCompatibility
|
||||||
|
from builtins import basestring
|
||||||
|
|
||||||
|
|
||||||
def _recursive_repr(item):
|
def _recursive_repr(item):
|
||||||
@ -27,6 +61,7 @@ def get_hash(item):
|
|||||||
repr_ = _recursive_repr(item).encode('utf-8')
|
repr_ = _recursive_repr(item).encode('utf-8')
|
||||||
return hashlib.md5(repr_).hexdigest()
|
return hashlib.md5(repr_).hexdigest()
|
||||||
|
|
||||||
|
|
||||||
def get_hash_int(item):
|
def get_hash_int(item):
|
||||||
return int(get_hash(item), base=16)
|
return int(get_hash(item), base=16)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user