forked from python-mode/python-mode
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update python3 support. Fix python-mode#437
- Loading branch information
Showing
7 changed files
with
105 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
""" Compatibility. | ||
Some py2/py3 compatibility support based on a stripped down | ||
version of six so we don't have to depend on a specific version | ||
of it. | ||
:copyright: (c) 2014 by Armin Ronacher. | ||
:license: BSD | ||
""" | ||
import sys | ||
|
||
PY2 = sys.version_info[0] == 2 | ||
_identity = lambda x: x | ||
|
||
|
||
if not PY2: | ||
text_type = str | ||
string_types = (str,) | ||
integer_types = (int, ) | ||
|
||
iterkeys = lambda d: iter(d.keys()) | ||
itervalues = lambda d: iter(d.values()) | ||
iteritems = lambda d: iter(d.items()) | ||
|
||
from io import StringIO | ||
from queue import Queue # noqa | ||
|
||
def reraise(tp, value, tb=None): | ||
if value.__traceback__ is not tb: | ||
raise value.with_traceback(tb) | ||
raise value | ||
|
||
implements_to_string = _identity | ||
|
||
else: | ||
text_type = unicode | ||
string_types = (str, unicode) | ||
integer_types = (int, long) | ||
|
||
iterkeys = lambda d: d.iterkeys() | ||
itervalues = lambda d: d.itervalues() | ||
iteritems = lambda d: d.iteritems() | ||
|
||
from cStringIO import StringIO | ||
from Queue import Queue | ||
|
||
exec('def reraise(tp, value, tb=None):\n raise tp, value, tb') | ||
|
||
def implements_to_string(cls): | ||
cls.__unicode__ = cls.__str__ | ||
cls.__str__ = lambda x: x.__unicode__().encode('utf-8') | ||
return cls | ||
|
||
|
||
def with_metaclass(meta, *bases): | ||
# 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. Because of internal type checks | ||
# we also need to make sure that we downgrade the custom metaclass | ||
# for one level to something closer to type (that's why __call__ and | ||
# __init__ comes back from type etc.). | ||
# | ||
# This has the advantage over six.with_metaclass in that it does not | ||
# introduce dummy classes into the final MRO. | ||
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, {}) | ||
|
||
|
||
# Certain versions of pypy have a bug where clearing the exception stack | ||
# breaks the __exit__ function in a very peculiar way. This is currently | ||
# true for pypy 2.2.1 for instance. The second level of exception blocks | ||
# is necessary because pypy seems to forget to check if an exception | ||
# happend until the next bytecode instruction? | ||
BROKEN_PYPY_CTXMGR_EXIT = False | ||
if hasattr(sys, 'pypy_version_info'): | ||
class _Mgr(object): | ||
def __enter__(self): | ||
return self | ||
def __exit__(self, *args): | ||
sys.exc_clear() | ||
try: | ||
try: | ||
with _Mgr(): | ||
raise AssertionError() | ||
except: | ||
raise | ||
except TypeError: | ||
BROKEN_PYPY_CTXMGR_EXIT = True | ||
except AssertionError: | ||
pass | ||
|
||
# pylama:skip=1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,6 @@ | ||
""" Python-mode async support. """ | ||
|
||
try: | ||
from Queue import Queue | ||
except ImportError: | ||
from queue import Queue # noqa | ||
from ._compat import Queue | ||
|
||
|
||
RESULTS = Queue() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters