12cf2e8247
Add IsEvadedOffense to EFPenalty Fix remote log reading in not Windows
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
import sys
|
|
import itertools
|
|
import functools
|
|
import inspect
|
|
|
|
PY2 = int(sys.version_info[0]) == 2
|
|
|
|
if PY2:
|
|
import urlparse
|
|
urlparse = urlparse
|
|
text_type = unicode
|
|
binary_type = str
|
|
string_types = (str, unicode)
|
|
unicode = unicode
|
|
basestring = basestring
|
|
iterkeys = lambda d: d.iterkeys()
|
|
itervalues = lambda d: d.itervalues()
|
|
iteritems = lambda d: d.iteritems()
|
|
zip_longest = itertools.izip_longest
|
|
else:
|
|
import urllib.parse
|
|
urlparse = urllib.parse
|
|
text_type = str
|
|
binary_type = bytes
|
|
string_types = (str,)
|
|
unicode = str
|
|
basestring = (str, bytes)
|
|
iterkeys = lambda d: d.keys()
|
|
itervalues = lambda d: d.values()
|
|
iteritems = lambda d: d.items()
|
|
zip_longest = itertools.zip_longest
|
|
|
|
# From six
|
|
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): # noqa
|
|
|
|
def __new__(cls, name, this_bases, d):
|
|
return meta(name, bases, d)
|
|
return type.__new__(metaclass, 'temporary_class', (), {})
|