Blame dnf/pycomp.py

Packit Service 21c75c
# pycomp.py
Packit Service 21c75c
# Python 2 and Python 3 compatibility module
Packit Service 21c75c
#
Packit Service 21c75c
# Copyright (C) 2013-2016 Red Hat, Inc.
Packit Service 21c75c
#
Packit Service 21c75c
# This copyrighted material is made available to anyone wishing to use,
Packit Service 21c75c
# modify, copy, or redistribute it subject to the terms and conditions of
Packit Service 21c75c
# the GNU General Public License v.2, or (at your option) any later version.
Packit Service 21c75c
# This program is distributed in the hope that it will be useful, but WITHOUT
Packit Service 21c75c
# ANY WARRANTY expressed or implied, including the implied warranties of
Packit Service 21c75c
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
Packit Service 21c75c
# Public License for more details.  You should have received a copy of the
Packit Service 21c75c
# GNU General Public License along with this program; if not, write to the
Packit Service 21c75c
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
Packit Service 21c75c
# 02110-1301, USA.  Any Red Hat trademarks that are incorporated in the
Packit Service 21c75c
# source code or documentation are not subject to the GNU General Public
Packit Service 21c75c
# License and may only be used or replicated with the express permission of
Packit Service 21c75c
# Red Hat, Inc.
Packit Service 21c75c
#
Packit Service 21c75c
Packit Service 21c75c
from gettext import NullTranslations
Packit Service 21c75c
from sys import version_info
Packit Service 21c75c
import base64
Packit Service 21c75c
import email.mime.text
Packit Service 21c75c
import gettext
Packit Service 21c75c
import itertools
Packit Service 21c75c
import locale
Packit Service 21c75c
import sys
Packit Service 21c75c
import types
Packit Service 21c75c
Packit Service 21c75c
PY3 = version_info.major >= 3
Packit Service 21c75c
Packit Service 21c75c
if PY3:
Packit Service 21c75c
    from io import StringIO
Packit Service 21c75c
    from configparser import ConfigParser
Packit Service 21c75c
    import queue
Packit Service 21c75c
    import urllib.parse
Packit Service 21c75c
    import shlex
Packit Service 21c75c
Packit Service 21c75c
    # functions renamed in py3
Packit Service 21c75c
    Queue = queue.Queue
Packit Service 21c75c
    basestring = unicode = str
Packit Service 21c75c
    filterfalse = itertools.filterfalse
Packit Service 21c75c
    long = int
Packit Service 21c75c
    NullTranslations.ugettext = NullTranslations.gettext
Packit Service 21c75c
    NullTranslations.ungettext = NullTranslations.ngettext
Packit Service 21c75c
    xrange = range
Packit Service 21c75c
    raw_input = input
Packit Service 21c75c
    base64_decodebytes = base64.decodebytes
Packit Service 21c75c
    urlparse = urllib.parse
Packit Service 21c75c
    urllib_quote = urlparse.quote
Packit Service 21c75c
    shlex_quote = shlex.quote
Packit Service 21c75c
    sys_maxsize = sys.maxsize
Packit Service 21c75c
Packit Service 21c75c
Packit Service 21c75c
    def gettext_setup(t):
Packit Service 21c75c
        _ = t.gettext
Packit Service 21c75c
        P_ = t.ngettext
Packit Service 21c75c
        return (_, P_)
Packit Service 21c75c
Packit Service 21c75c
    # string helpers
Packit Service 21c75c
    def is_py2str_py3bytes(o):
Packit Service 21c75c
        return isinstance(o, bytes)
Packit Service 21c75c
    def is_py3bytes(o):
Packit Service 21c75c
        return isinstance(o, bytes)
Packit Service 21c75c
Packit Service 21c75c
    # functions that don't take unicode arguments in py2
Packit Service 21c75c
    ModuleType = lambda m: types.ModuleType(m)
Packit Service 21c75c
    format = locale.format_string
Packit Service 21c75c
    def setlocale(category, loc=None):
Packit Service 21c75c
        locale.setlocale(category, loc)
Packit Service 21c75c
    def write_to_file(f, content):
Packit Service 21c75c
        f.write(content)
Packit Service 21c75c
    def email_mime(body):
Packit Service 21c75c
        return email.mime.text.MIMEText(body)
Packit Service 21c75c
else:
Packit Service 21c75c
    # functions renamed in py3
Packit Service 21c75c
    from __builtin__ import unicode, basestring, long, xrange, raw_input
Packit Service 21c75c
    from StringIO import StringIO
Packit Service 21c75c
    from ConfigParser import ConfigParser
Packit Service 21c75c
    import Queue
Packit Service 21c75c
    import urllib
Packit Service 21c75c
    import urlparse
Packit Service 21c75c
    import pipes
Packit Service 21c75c
Packit Service 21c75c
    Queue = Queue.Queue
Packit Service 21c75c
    filterfalse = itertools.ifilterfalse
Packit Service 21c75c
    base64_decodebytes = base64.decodestring
Packit Service 21c75c
    urllib_quote = urllib.quote
Packit Service 21c75c
    shlex_quote = pipes.quote
Packit Service 21c75c
    sys_maxsize = sys.maxint
Packit Service 21c75c
Packit Service 21c75c
    def gettext_setup(t):
Packit Service 21c75c
        _ = t.ugettext
Packit Service 21c75c
        P_ = t.ungettext
Packit Service 21c75c
        return (_, P_)
Packit Service 21c75c
Packit Service 21c75c
    # string helpers
Packit Service 21c75c
    def is_py2str_py3bytes(o):
Packit Service 21c75c
        return isinstance(o, str)
Packit Service 21c75c
    def is_py3bytes(o):
Packit Service 21c75c
        return False
Packit Service 21c75c
Packit Service 21c75c
    # functions that don't take unicode arguments in py2
Packit Service 21c75c
    ModuleType = lambda m: types.ModuleType(m.encode('utf-8'))
Packit Service 21c75c
    def format(percent, *args, **kwargs):
Packit Service 21c75c
        return locale.format(percent.encode('utf-8'), *args, **kwargs)
Packit Service 21c75c
    def setlocale(category, loc=None):
Packit Service 21c75c
        locale.setlocale(category, loc.encode('utf-8'))
Packit Service 21c75c
    def write_to_file(f, content):
Packit Service 21c75c
        f.write(content.encode('utf-8'))
Packit Service 21c75c
    def email_mime(body):
Packit Service 21c75c
        return email.mime.text.MIMEText(body.encode('utf-8'))