compat.py
70 lines
| 2.3 KiB
| text/x-python
|
PythonLexer
Zack Hricz
|
r30656 | # Copyright 2016-present Facebook, Inc. | ||
# All rights reserved. | ||||
# | ||||
# Redistribution and use in source and binary forms, with or without | ||||
# modification, are permitted provided that the following conditions are met: | ||||
# | ||||
# * Redistributions of source code must retain the above copyright notice, | ||||
# this list of conditions and the following disclaimer. | ||||
# | ||||
# * Redistributions in binary form must reproduce the above copyright notice, | ||||
# this list of conditions and the following disclaimer in the documentation | ||||
# and/or other materials provided with the distribution. | ||||
# | ||||
# * Neither the name Facebook nor the names of its contributors may be used to | ||||
# endorse or promote products derived from this software without specific | ||||
# prior written permission. | ||||
# | ||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
# no unicode literals | ||||
import sys | ||||
Gregory Szorc
|
r43703 | |||
"""Compatibility module across Python 2 and 3.""" | ||||
PYTHON2 = sys.version_info < (3, 0) | ||||
Zack Hricz
|
r30656 | PYTHON3 = sys.version_info >= (3, 0) | ||
# This is adapted from https://bitbucket.org/gutworth/six, and used under the | ||||
# MIT license. See LICENSE for a full copyright notice. | ||||
if PYTHON3: | ||||
Gregory Szorc
|
r43703 | |||
Zack Hricz
|
r30656 | def reraise(tp, value, tb=None): | ||
try: | ||||
if value is None: | ||||
value = tp() | ||||
if value.__traceback__ is not tb: | ||||
raise value.with_traceback(tb) | ||||
raise value | ||||
finally: | ||||
value = None | ||||
tb = None | ||||
Gregory Szorc
|
r43703 | |||
Zack Hricz
|
r30656 | else: | ||
Gregory Szorc
|
r43703 | exec( | ||
""" | ||||
Zack Hricz
|
r30656 | def reraise(tp, value, tb=None): | ||
try: | ||||
raise tp, value, tb | ||||
finally: | ||||
tb = None | ||||
Gregory Szorc
|
r43703 | """.strip() | ||
) | ||||
Zack Hricz
|
r30656 | |||
if PYTHON3: | ||||
UNICODE = str | ||||
else: | ||||
Gregory Szorc
|
r43703 | UNICODE = unicode # noqa: F821 We handled versioning above | ||