Thanks to visit codestin.com
Credit goes to github.com

Skip to content

update py3compat from spyder to try fix PyQt5.5.0 compatibility #142

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 1, 2015
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 36 additions & 29 deletions winpython/py3compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
# (see spyderlib/__init__.py for details)

"""
winpython.py3compat (exact copy of spyderlib.py3compat)
-------------------------------------------------------
spyderlib.py3compat
-------------------

Transitional module providing compatibility functions intended to help
Transitional module providing compatibility functions intended to help
migrating from Python 2 to Python 3.

This module should be fully compatible with:
Expand All @@ -21,13 +21,13 @@
import sys
import os

PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
PY2 = sys.version[0] == '2'
PY3 = sys.version[0] == '3'


# =============================================================================
#==============================================================================
# Data types
# =============================================================================
#==============================================================================
if PY2:
# Python 2
TEXT_TYPES = (str, unicode)
Expand All @@ -39,9 +39,9 @@
NUMERIC_TYPES = tuple(list(INT_TYPES) + [float, complex])


# =============================================================================
#==============================================================================
# Renamed/Reorganized modules
# =============================================================================
#==============================================================================
if PY2:
# Python 2
import __builtin__ as builtins
Expand All @@ -60,6 +60,8 @@
except ImportError:
import pickle
from UserDict import DictMixin as MutableMapping
import thread as _thread
import repr as reprlib
else:
# Python 3
import builtins
Expand All @@ -72,11 +74,25 @@
import io
import pickle
from collections import MutableMapping
import _thread
import reprlib


# =============================================================================
#==============================================================================
# Strings
# =============================================================================
#==============================================================================
if PY2:
# Python 2
import codecs
def u(obj):
"""Make unicode object"""
return codecs.unicode_escape_decode(obj)[0]
else:
# Python 3
def u(obj):
"""Return string as it is"""
return obj

def is_text_string(obj):
"""Return True if `obj` is a text string, False if it is anything else,
like binary data (Python 3) or QString (Python 2, PyQt API #1)"""
Expand All @@ -87,7 +103,6 @@ def is_text_string(obj):
# Python 3
return isinstance(obj, str)


def is_binary_string(obj):
"""Return True if `obj` is a binary string, False if it is anything else"""
if PY2:
Expand All @@ -97,13 +112,11 @@ def is_binary_string(obj):
# Python 3
return isinstance(obj, bytes)


def is_string(obj):
"""Return True if `obj` is a text or binary Python string object,
False if it is anything else, like a QString (Python 2, PyQt API #1)"""
return is_text_string(obj) or is_binary_string(obj)


def is_unicode(obj):
"""Return True if `obj` is unicode"""
if PY2:
Expand All @@ -113,7 +126,6 @@ def is_unicode(obj):
# Python 3
return isinstance(obj, str)


def to_text_string(obj, encoding=None):
"""Convert `obj` to (unicode) text string"""
if PY2:
Expand All @@ -132,7 +144,6 @@ def to_text_string(obj, encoding=None):
else:
return str(obj, encoding)


def to_binary_string(obj, encoding=None):
"""Convert `obj` to binary string (bytes in Python 3, str in Python 2)"""
if PY2:
Expand All @@ -146,9 +157,9 @@ def to_binary_string(obj, encoding=None):
return bytes(obj, 'utf-8' if encoding is None else encoding)


# =============================================================================
#==============================================================================
# Function attributes
# =============================================================================
#==============================================================================
def get_func_code(func):
"""Return function code object"""
if PY2:
Expand All @@ -158,7 +169,6 @@ def get_func_code(func):
# Python 3
return func.__code__


def get_func_name(func):
"""Return function name"""
if PY2:
Expand All @@ -168,7 +178,6 @@ def get_func_name(func):
# Python 3
return func.__name__


def get_func_defaults(func):
"""Return function default argument values"""
if PY2:
Expand All @@ -179,9 +188,9 @@ def get_func_defaults(func):
return func.__defaults__


# =============================================================================
#==============================================================================
# Special method attributes
# =============================================================================
#==============================================================================
def get_meth_func(obj):
"""Return method function object"""
if PY2:
Expand All @@ -191,7 +200,6 @@ def get_meth_func(obj):
# Python 3
return obj.__func__


def get_meth_class_inst(obj):
"""Return method class instance"""
if PY2:
Expand All @@ -201,7 +209,6 @@ def get_meth_class_inst(obj):
# Python 3
return obj.__self__


def get_meth_class(obj):
"""Return method class"""
if PY2:
Expand All @@ -212,29 +219,29 @@ def get_meth_class(obj):
return obj.__self__.__class__


# =============================================================================
#==============================================================================
# Misc.
# =============================================================================
#==============================================================================
if PY2:
# Python 2
input = raw_input
getcwd = os.getcwdu
cmp = cmp
import string
str_lower = string.lower
from itertools import izip_longest as zip_longest
else:
# Python 3
input = input
getcwd = os.getcwd

def cmp(a, b):
return (a > b) - (a < b)
str_lower = str.lower

from itertools import zip_longest

def qbytearray_to_str(qba):
"""Convert QByteArray object to str in a way compatible with Python 2/3"""
return str(bytes(qba.toHex()).decode())
return str(bytes(qba.toHex().data()).decode())


if __name__ == '__main__':
Expand Down