mirror of https://github.com/morpheus65535/bazarr
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import sys
|
|
import decimal
|
|
from decimal import Context
|
|
|
|
if sys.version_info > (3,):
|
|
long = int
|
|
xrange = range
|
|
else:
|
|
long = long # pylint: disable=long-builtin
|
|
xrange = xrange # pylint: disable=xrange-builtin
|
|
|
|
# unicode / binary types
|
|
if sys.version_info > (3,):
|
|
text_type = str
|
|
binary_type = bytes
|
|
string_types = (str,)
|
|
unichr = chr
|
|
def maybe_decode(x):
|
|
return x.decode()
|
|
def maybe_encode(x):
|
|
return x.encode()
|
|
else:
|
|
text_type = unicode # pylint: disable=unicode-builtin, undefined-variable
|
|
binary_type = str
|
|
string_types = (
|
|
basestring, # pylint: disable=basestring-builtin, undefined-variable
|
|
)
|
|
unichr = unichr # pylint: disable=unichr-builtin
|
|
def maybe_decode(x):
|
|
return x
|
|
def maybe_encode(x):
|
|
return x
|
|
|
|
|
|
def round_py2_compat(what):
|
|
"""
|
|
Python 2 and Python 3 use different rounding strategies in round(). This
|
|
function ensures that results are python2/3 compatible and backward
|
|
compatible with previous py2 releases
|
|
:param what: float
|
|
:return: rounded long
|
|
"""
|
|
d = Context(
|
|
prec=len(str(long(what))), # round to integer with max precision
|
|
rounding=decimal.ROUND_HALF_UP
|
|
).create_decimal(str(what)) # str(): python 2.6 compat
|
|
return long(d)
|