Mercurial > repos > shellac > guppy_basecaller
view env/lib/python3.7/site-packages/humanfriendly/compat.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
line wrap: on
line source
# Human friendly input/output in Python. # # Author: Peter Odding <peter@peterodding.com> # Last Change: March 1, 2020 # URL: https://humanfriendly.readthedocs.io """ Compatibility with Python 2 and 3. This module exposes aliases and functions that make it easier to write Python code that is compatible with Python 2 and Python 3. .. data:: basestring Alias for :func:`python2:basestring` (in Python 2) or :class:`python3:str` (in Python 3). See also :func:`is_string()`. .. data:: HTMLParser Alias for :class:`python2:HTMLParser.HTMLParser` (in Python 2) or :class:`python3:html.parser.HTMLParser` (in Python 3). .. data:: interactive_prompt Alias for :func:`python2:raw_input()` (in Python 2) or :func:`python3:input()` (in Python 3). .. data:: StringIO Alias for :class:`python2:StringIO.StringIO` (in Python 2) or :class:`python3:io.StringIO` (in Python 3). .. data:: unicode Alias for :func:`python2:unicode` (in Python 2) or :class:`python3:str` (in Python 3). See also :func:`coerce_string()`. .. data:: monotonic Alias for :func:`python3:time.monotonic()` (in Python 3.3 and higher) or `monotonic.monotonic()` (a `conditional dependency <https://pypi.org/project/monotonic/>`_ on older Python versions). """ __all__ = ( 'HTMLParser', 'StringIO', 'basestring', 'coerce_string', 'interactive_prompt', 'is_string', 'is_unicode', 'monotonic', 'name2codepoint', 'on_windows', 'unichr', 'unicode', # This export remains here so as not to break my dozen or so other Python # projects using 'from humanfriendly.compat import unittest' from good old # times (when Python 2.6 was still a thing). It will eventually be removed. 'unittest', 'which', ) # Standard library modules. import sys import unittest # Differences between Python 2 and 3. try: # Python 2. unicode = unicode unichr = unichr basestring = basestring interactive_prompt = raw_input from distutils.spawn import find_executable as which from HTMLParser import HTMLParser from StringIO import StringIO from htmlentitydefs import name2codepoint except (ImportError, NameError): # Python 3. unicode = str unichr = chr basestring = str interactive_prompt = input from shutil import which from html.parser import HTMLParser from io import StringIO from html.entities import name2codepoint try: # Python 3.3 and higher. from time import monotonic except ImportError: # A replacement for older Python versions: # https://pypi.org/project/monotonic/ try: from monotonic import monotonic except (ImportError, RuntimeError): # We fall back to the old behavior of using time.time() instead of # failing when {time,monotonic}.monotonic() are both missing. from time import time as monotonic def coerce_string(value): """ Coerce any value to a Unicode string (:func:`python2:unicode` in Python 2 and :class:`python3:str` in Python 3). :param value: The value to coerce. :returns: The value coerced to a Unicode string. """ return value if is_string(value) else unicode(value) def is_string(value): """ Check if a value is a :func:`python2:basestring` (in Python 2) or :class:`python3:str` (in Python 3) object. :param value: The value to check. :returns: :data:`True` if the value is a string, :data:`False` otherwise. """ return isinstance(value, basestring) def is_unicode(value): """ Check if a value is a :func:`python2:unicode` (in Python 2) or :class:`python2:str` (in Python 3) object. :param value: The value to check. :returns: :data:`True` if the value is a Unicode string, :data:`False` otherwise. """ return isinstance(value, unicode) def on_windows(): """ Check if we're running on the Microsoft Windows OS. :returns: :data:`True` if running Windows, :data:`False` otherwise. """ return sys.platform.startswith('win')