|
|
- #!/usr/bin/python
- # -- Content-Encoding: UTF-8 --
- """
- Utility methods, for compatibility between Python version
-
- :author: Thomas Calmant
- :copyright: Copyright 2018, Thomas Calmant
- :license: Apache License 2.0
- :version: 0.3.2
-
- ..
-
- Copyright 2018 Thomas Calmant
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- """
-
- import sys
-
- # ------------------------------------------------------------------------------
-
- # Module version
- __version_info__ = (0, 3, 2)
- __version__ = ".".join(str(x) for x in __version_info__)
-
- # Documentation strings format
- __docformat__ = "restructuredtext en"
-
- # ------------------------------------------------------------------------------
-
- if sys.version_info[0] < 3:
- # Python 2
- # pylint: disable=E1101
- import types
- try:
- STRING_TYPES = (
- types.StringType,
- types.UnicodeType
- )
- except NameError:
- # Python built without unicode support
- STRING_TYPES = (types.StringType,)
-
- NUMERIC_TYPES = (
- types.IntType,
- types.LongType,
- types.FloatType
- )
-
- def to_bytes(string):
- """
- Converts the given string into bytes
- """
- # pylint: disable=E0602
- if type(string) is unicode:
- return str(string)
- return string
-
- def from_bytes(data):
- """
- Converts the given bytes into a string
- """
- if type(data) is str:
- return data
- return str(data)
- else:
- # Python 3
- # pylint: disable=E1101
- STRING_TYPES = (
- bytes,
- str
- )
-
- NUMERIC_TYPES = (
- int,
- float
- )
-
- def to_bytes(string):
- """
- Converts the given string into bytes
- """
- if type(string) is bytes:
- return string
- return bytes(string, "UTF-8")
-
- def from_bytes(data):
- """
- Converts the given bytes into a string
- """
- if type(data) is str:
- return data
- return str(data, "UTF-8")
-
- # ------------------------------------------------------------------------------
- # Enumerations
-
- try:
- import enum
-
- def is_enum(obj):
- """
- Checks if an object is from an enumeration class
-
- :param obj: Object to test
- :return: True if the object is an enumeration item
- """
- return isinstance(obj, enum.Enum)
- except ImportError:
- # Pre-Python 3.4
- def is_enum(_):
- """
- Before Python 3.4, enumerations didn't exist.
-
- :param _: Object to test
- :return: Always False
- """
- return False
-
- # ------------------------------------------------------------------------------
- # Common
-
- DictType = dict
-
- ListType = list
- TupleType = tuple
-
- ITERABLE_TYPES = (
- list,
- set, frozenset,
- tuple
- )
-
- VALUE_TYPES = (
- bool,
- type(None)
- )
-
- PRIMITIVE_TYPES = STRING_TYPES + NUMERIC_TYPES + VALUE_TYPES
|