# packages

pkgId: d966843f2ef46630a9db5cb85ab45891aec45ddfb81ee2b05160ca6471a3e7f7
name: rh-python36-service_identity
arch: noarch
version: 18.1.0
epoch: 0
release: 1
summary: Service identity verification for pyOpenSSL & cryptography.
url: https://service-identity.readthedocs.io/
rpm_license: MIT
rpm_vendor: Hynek Schlawack <hs@ox.cx>
rpm_group: Development/Libraries
rpm_buildhost: c46ab33fec784fd4a6451a9c063b2b3b
rpm_sourcerpm: rh-python36-service_identity-18.1.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00920169-rh-python36-service_identity/rh-python36-service_identity-18.1.0-1.noarch.rpm
checksum_type: sha256
description:
  =============================
  Service Identity Verification
  =============================

  .. image:: https://readthedocs.org/projects/service-identity/badge/?version=stable
     :target: https://service-identity.readthedocs.io/en/stable/?badge=stable
     :alt: Documentation Status

  .. image:: https://travis-ci.org/pyca/service_identity.svg?branch=master
     :target: https://travis-ci.org/pyca/service_identity
     :alt: CI status

  .. image:: https://codecov.io/github/pyca/service_identity/branch/master/graph/badge.svg
     :target: https://codecov.io/github/pyca/service_identity
     :alt: Test Coverage

  .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
     :target: https://github.com/ambv/black
     :alt: Code style: black

  .. image:: https://www.irccloud.com/invite-svg?channel=%23cryptography-dev&amp;hostname=irc.freenode.net&amp;port=6697&amp;ssl=1
      :target: https://www.irccloud.com/invite?channel=%23cryptography-dev&amp;hostname=irc.freenode.net&amp;port=6697&amp;ssl=1

  .. begin

  Use this package if:

  - you use pyOpenSSL_ and don’t want to be MITM_\ ed or
  - if you want to verify that a `PyCA cryptography`_ certificate is valid for a certain hostname or IP address.

  ``service_identity`` aspires to give you all the tools you need for verifying whether a certificate is valid for the intended purposes.

  In the simplest case, this means *host name verification*.
  However, ``service_identity`` implements `RFC 6125`_ fully and plans to add other relevant RFCs too.

  ``service_identity``\ ’s documentation lives at `Read the Docs <https://service-identity.readthedocs.io/>`_, the code on `GitHub <https://github.com/pyca/service_identity>`_.


  .. _Twisted: https://twistedmatrix.com/
  .. _pyOpenSSL: https://pypi.org/project/pyOpenSSL/
  .. _MITM: https://en.wikipedia.org/wiki/Man-in-the-middle_attack
  .. _RFC 6125: https://www.rfc-editor.org/info/rfc6125
  .. _PyCA cryptography: https://cryptography.io/


  Release Information
  ===================

  18.1.0 (2018-12-05)
  -------------------

  Changes:
  ^^^^^^^^

  - pyOpenSSL is optional now if you use ``service_identity.cryptography.*`` only.
  - Added support for ``iPAddress`` ``subjectAltName``\ s.
    You can now verify whether a connection or a certificate is valid for an IP address using ``service_identity.pyopenssl.verify_ip_address()`` and ``service_identity.cryptography.verify_certificate_ip_address()``.
    `#12 <https://github.com/pyca/service_identity/pull/12>`_

  `Full changelog <https://service-identity.readthedocs.io/en/stable/changelog.html>`_.

  Authors
  =======

  ``service_identity`` is written and maintained by `Hynek Schlawack <https://hynek.me/>`_.

  The development is kindly supported by `Variomedia AG <https://www.variomedia.de/>`_.

  Other contributors can be found in `GitHub's overview <https://github.com/pyca/service_identity/graphs/contributors>`_.


pkgId: 93638f11967cde5fa16c632a656335a2e06b61df1c5406dc5bfb725dbf6810a1
name: rh-python36-setuptools_scm
arch: noarch
version: 3.2.0
epoch: 0
release: 1
summary: the blessed package to manage your versions by scm tags
url: https://github.com/pypa/setuptools_scm/
rpm_license: MIT
rpm_vendor: Ronny Pfannschmidt <opensource@ronnypfannschmidt.de>
rpm_group: Development/Libraries
rpm_buildhost: 8dfe3d74b1a44c16998533e357f66d38
rpm_sourcerpm: rh-python36-setuptools_scm-3.2.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879133-rh-python36-setuptools_scm/rh-python36-setuptools_scm-3.2.0-1.noarch.rpm
checksum_type: sha256
description:
  setuptools_scm
  ===============

  ``setuptools_scm`` handles managing your Python package versions
  in SCM metadata instead of declaring them as the version argument
  or in a SCM managed file.

  It also handles file finders for the supported SCMs.

  .. image:: https://travis-ci.org/pypa/setuptools_scm.svg?branch=master
      :target: https://travis-ci.org/pypa/setuptools_scm

  ``setup.py`` usage
  ------------------

  To use ``setuptools_scm`` just modify your project's ``setup.py`` file
  like this:

  * Add ``setuptools_scm`` to the ``setup_requires`` parameter.
  * Add the ``use_scm_version`` parameter and set it to ``True``.

  For example:

  .. code:: python

      from setuptools import setup
      setup(
          ...,
          use_scm_version=True,
          setup_requires=['setuptools_scm'],
          ...,
      )

  Arguments to ``get_version()`` (see below) may be passed as a dictionary to
  ``use_scm_version``. For example:

  .. code:: python

      from setuptools import setup
      setup(
          ...,
          use_scm_version = {"root": "..", "relative_to": __file__},
          setup_requires=['setuptools_scm'],
          ...,
      )

  Once configured, you can access the version number in your package via
  ``pkg_resources`` (`PEP-0396 <https://www.python.org/dev/peps/pep-0396>`_). For
  example:

  .. code:: python

     from pkg_resources import get_distribution, DistributionNotFound
     try:
         __version__ = get_distribution(__name__).version
     except DistributionNotFound:
         
         pass

  You can also confirm the version number locally via ``setup.py``:

  .. code-block:: shell

      $ python setup.py --version

  .. note::

     If you see unusual version numbers for packages but ``python setup.py
     --version`` reports the expected version number, ensure ``[egg_info]`` is
     not defined in ``setup.cfg``.


  ``setup.cfg``
  -------------

  If using `setuptools 30.3.0
  <https://setuptools.readthedocs.io/en/latest/setuptools.html#configuring-setup-using-setup-cfg-files>`_
  or greater, you can store ``setup_requires`` configuration in ``setup.cfg``.
  However, ``use_scm_version`` must still be placed in ``setup.py``. For example:

  .. code:: python

      
      from setuptools import setup
      setup(
          use_scm_version=True,
      )

  .. code:: ini

      
      [metadata]
      ...

      [options]
      setup_requires =
        setuptools_scm
      ...

  .. important::

      Ensure neither the ``[metadata] version`` option nor the ``[egg_info]``
      section are not defined, as these will interfere with ``setuptools_scm``.

  You may also need to define a ``pyproject.toml`` file (`PEP-0518
  <https://www.python.org/dev/peps/pep-0518>`_) to ensure you have the required
  version of ``setuptools``:

  .. code:: ini

      
      [build-system]
      requires = ["setuptools>=30.3.0", "wheel", "setuptools_scm"]

  For more information, refer to the `setuptools issue #1002
  <https://github.com/pypa/setuptools/issues/1002>`_.


  Programmatic usage
  ------------------

  In order to use ``setuptools_scm`` from code that is one directory deeper
  than the project's root, you can use:

  .. code:: python

      from setuptools_scm import get_version
      version = get_version(root='..', relative_to=__file__)

  See `setup.py Usage`_ above for how to use this within ``setup.py``.


  Usage from Sphinx
  -----------------

  It is discouraged to use ``setuptools_scm`` from Sphinx itself,
  instead use ``pkg_resources`` after editable/real installation:

  .. code:: python

      
      from pkg_resources import get_distribution
      release = get_distribution('myproject').version
      
      version = '.'.join(release.split('.')[:2])

  The underlying reason is, that services like *Read the Docs* sometimes change
  the working directory for good reasons and using the installed metadata
  prevents using needless volatile data there.

  Notable Plugins
  ----------------

  `setuptools_scm_git_archive <https://pypi.python.org/pypi/setuptools_scm_git_archive>`_
      Provides partial support for obtaining versions from git archives that
      belong to tagged versions. The only reason for not including it in
      ``setuptools_scm`` itself is Git/GitHub not supporting sufficient metadata
      for untagged/followup commits, which is preventing a consistent UX.


  Default versioning scheme
  --------------------------

  In the standard configuration ``setuptools_scm`` takes a look at three things:

  1. latest tag (with a version number)
  2. the distance to this tag (e.g. number of revisions since latest tag)
  3. workdir state (e.g. uncommitted changes since latest tag)

  and uses roughly the following logic to render the version:

  no distance and clean:
      ``{tag}``
  distance and clean:
      ``{next_version}.dev{distance}+{scm letter}{revision hash}``
  no distance and not clean:
      ``{tag}+dYYYMMMDD``
  distance and not clean:
      ``{next_version}.dev{distance}+{scm letter}{revision hash}.dYYYMMMDD``

  The next version is calculated by adding ``1`` to the last numeric component of
  the tag.

  For Git projects, the version relies on `git describe <https://git-scm.com/docs/git-describe>`_,
  so you will see an additional ``g`` prepended to the ``{revision hash}``.

  Semantic Versioning (SemVer)
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Due to the default behavior it's necessary to always include a
  patch version (the ``3`` in ``1.2.3``), or else the automatic guessing
  will increment the wrong part of the SemVer (e.g. tag ``2.0`` results in
  ``2.1.devX`` instead of ``2.0.1.devX``). So please make sure to tag
  accordingly.

  .. note::

      Future versions of ``setuptools_scm`` will switch to `SemVer
      <http://semver.org/>`_ by default hiding the the old behavior as an
      configurable option.


  Builtin mechanisms for obtaining version numbers
  --------------------------------------------------

  1. the SCM itself (git/hg)
  2. ``.hg_archival`` files (mercurial archives)
  3. ``PKG-INFO``

  .. note::

      Git archives are not supported due to Git shortcomings


  Configuration parameters
  ------------------------

  In order to configure the way ``use_scm_version`` works you can provide
  a mapping with options instead of a boolean value.

  The currently supported configuration keys are:

  :root:
      Relative path to cwd, used for finding the SCM root; defaults to ``.``

  :version_scheme:
      Configures how the local version number is constructed; either an
      entrypoint name or a callable.

  :local_scheme:
      Configures how the local component of the version is constructed; either an
      entrypoint name or a callable.

  :write_to:
      A path to a file that gets replaced with a file containing the current
      version. It is ideal for creating a ``version.py`` file within the
      package, typically used to avoid using `pkg_resources.get_distribution`
      (which adds some overhead).

      .. warning::

        Only files with :code:`.py` and :code:`.txt` extensions have builtin
        templates, for other file types it is necessary to provide
        :code:`write_to_template`.

  :write_to_template:
      A newstyle format string that is given the current version as
      the ``version`` keyword argument for formatting.

  :relative_to:
      A file from which the root can be resolved.
      Typically called by a script or module that is not in the root of the
      repository to point ``setuptools_scm`` at the root of the repository by
      supplying ``__file__``.

  :parse:
      A function that will be used instead of the discovered SCM for parsing the
      version.
      Use with caution, this is a function for advanced use, and you should be
      familiar with the ``setuptools_scm`` internals to use it.

  :tag_regex:
      A Python regex string to extract the version part from any SCM tag.
      The regex needs to contain three named groups prefix, version and suffix,
      where ``version`` captures the actual version information.

      Defaults to the value of ``setuptools_scm.config.DEFAULT_TAG_REGEX``
      (see `config.py <src/setuptools_scm/config.py>`_).

  :git_describe_command:
      This command will be used instead the default ``git describe`` command.
      Use with caution, this is a function for advanced use, and you should be
      familiar with the ``setuptools_scm`` internals to use it.

      Defaults to the value set by ``setuptools_scm.git.DEFAULT_DESCRIBE``
      (see `git.py <src/setuptools_scm/git.py>`_).

  To use ``setuptools_scm`` in other Python code you can use the ``get_version``
  function:

  .. code:: python

      from setuptools_scm import get_version
      my_version = get_version()

  It optionally accepts the keys of the ``use_scm_version`` parameter as
  keyword arguments.

  Example configuration in ``setup.py`` format:

  .. code:: python

      from setuptools import setup

      setup(
          use_scm_version={
              'write_to': 'version.txt',
              'tag_regex': r'^(?P<prefix>v)?(?P<version>[^\+]+)(?P<suffix>.*)?$',
          }
      )

  Environment variables
  ---------------------

  :SETUPTOOLS_SCM_PRETEND_VERSION:
      when defined and not empty,
      its used as the primary source for the version number
      in which case it will be a unparsed string

  :SETUPTOOLS_SCM_DEBUG:
      when defined and not empty,
      a lot of debug information will be printed as part of ``setuptools_scm``
      operating

  Extending setuptools_scm
  ------------------------

  ``setuptools_scm`` ships with a few ``setuptools`` entrypoints based hooks to
  extend its default capabilities.

  Adding a new SCM
  ~~~~~~~~~~~~~~~~

  ``setuptools_scm`` provides two entrypoints for adding new SCMs:

  ``setuptools_scm.parse_scm``
      A function used to parse the metadata of the current workdir
      using the name of the control directory/file of your SCM as the
      entrypoint's name. E.g. for the built-in entrypoint for git the
      entrypoint is named ``.git`` and references ``setuptools_scm.git:parse``

    The return value MUST be a ``setuptools.version.ScmVersion`` instance
    created by the function ``setuptools_scm.version:meta``.

  ``setuptools_scm.files_command``
    Either a string containing a shell command that prints all SCM managed
    files in its current working directory or a callable, that given a
    pathname will return that list.

    Also use then name of your SCM control directory as name of the entrypoint.

  Version number construction
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~

  ``setuptools_scm.version_scheme``
      Configures how the version number is constructed given a
      ``setuptools.version.ScmVersion`` instance and should return a string
      representing the version.

      Available implementations:

      :guess-next-dev: automatically guesses the next development version (default)
      :post-release: generates post release versions (adds :code:`postN`)

  ``setuptools_scm.local_scheme``
      Configures how the local part of a version is rendered given a
      ``setuptools.version.ScmVersion`` instance and should return a string
      representing the local version.

      Available implementations:

      :node-and-date: adds the node on dev versions and the date on dirty
                      workdir (default)
      :node-and-timestamp: like ``node-and-date`` but with a timestamp of
                           the form ``{:%Y%m%d%H%M%SOURCE}`` instead
      :dirty-tag: adds ``+dirty`` if the current workdir has changes


  Importing in ``setup.py``
  ~~~~~~~~~~~~~~~~~~~~~~~~~

  To support usage in ``setup.py`` passing a callable into ``use_scm_version``
  is supported.

  Within that callable, ``setuptools_scm`` is available for import.
  The callable must return the configuration.


  .. code:: python

      
      import setuptools

      def myversion():
          from setuptools_scm.version import get_local_dirty_tag
          def clean_scheme(version):
              return get_local_dirty_tag(version) if version.dirty else '+clean'

          return {'local_scheme': clean_scheme}

      setup(
          ...,
          use_scm_version=myversion,
          ...
      )


  Note on testing non-installed versions
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  While the general advice is to test against a installed version,
  some environments require a test prior to install,

  .. code::

    $ python setup.py egg_info
    $ PYTHONPATH=$PWD:$PWD/src pytest



  Code of Conduct
  ---------------

  Everyone interacting in the ``setuptools_scm`` project's codebases, issue
  trackers, chat rooms, and mailing lists is expected to follow the
  `PyPA Code of Conduct`_.

  .. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/


pkgId: a0c6ba735d8efd4cdfb4faee5dd007574c56aac890fc74640caa5059df1d1913
name: rh-python36-shade
arch: noarch
version: 1.27.0
epoch: 0
release: 1
summary: Simple client library for interacting with OpenStack clouds
url: http://docs.openstack.org/shade/latest
rpm_license: UNKNOWN
rpm_vendor: OpenStack <openstack-dev@lists.openstack.org>
rpm_group: Development/Libraries
rpm_buildhost: 048adf169973493191cf7ec995474b0a
rpm_sourcerpm: rh-python36-shade-1.27.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879134-rh-python36-shade/rh-python36-shade-1.27.0-1.noarch.rpm
checksum_type: sha256
description:
  Introduction
  ============

  shade is a simple client library for interacting with OpenStack clouds. The
  key word here is *simple*. Clouds can do many many many things - but there are
  probably only about 10 of them that most people care about with any
  regularity. If you want to do complicated things, you should probably use
  the lower level client libraries - or even the REST API directly. However,
  if what you want is to be able to write an application that talks to clouds
  no matter what crazy choices the deployer has made in an attempt to be
  more hipster than their self-entitled narcissist peers, then shade is for you.

  shade started its life as some code inside of ansible. ansible has a bunch
  of different OpenStack related modules, and there was a ton of duplicated
  code. Eventually, between refactoring that duplication into an internal
  library, and adding logic and features that the OpenStack Infra team had
  developed to run client applications at scale, it turned out that we'd written
  nine-tenths of what we'd need to have a standalone library.

  .. _example:

  Example
  =======

  Sometimes an example is nice.



       clouds:
        mordred:
          region_name: RegionOne
          auth:
            username: 'mordred'
            password: XXXXXXX
            project_name: 'shade'
            auth_url: 'https://montytaylor-sjc.openstack.blueboxgrid.com:5001/v2.0'

     Please note: *os-client-config* will look for a file called ``clouds.yaml``
     in the following locations:

     * Current Directory
     * ``~/.config/openstack``
     * ``/etc/openstack``

     More information at https://pypi.python.org/pypi/os-client-config




      import shade

      
      shade.simple_logging(debug=True)

      
      
      cloud = shade.openstack_cloud(cloud='mordred')

      
      image = cloud.create_image(
          'ubuntu-trusty', filename='ubuntu-trusty.qcow2', wait=True)

      
      flavor = cloud.get_flavor_by_ram(512)

      
      
      cloud.create_server(
          'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)


  Links
  =====

  * `Issue Tracker <https://storyboard.openstack.org/#!/project/760>`_
  * `Code Review <https://review.openstack.org/#/q/status:open+project:openstack-infra/shade,n,z>`_
  * `Documentation <https://docs.openstack.org/shade/latest/>`_
  * `PyPI <https://pypi.python.org/pypi/shade/>`_
  * `Mailing list <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-infra>`_


pkgId: e4e23160b211881b50add0f0e38e916b82933d6dcbaa8aae57b826ffe58564c7
name: rh-python36-simplejson
arch: ppc64le
version: 3.16.0
epoch: 0
release: 1
summary: Simple, fast, extensible JSON encoder/decoder for Python
url: http://github.com/simplejson/simplejson
rpm_license: MIT License
rpm_vendor: Bob Ippolito <bob@redivi.com>
rpm_group: Development/Libraries
rpm_buildhost: 81ee5b8e083d4f1b88ab53cbe0b7d238
rpm_sourcerpm: rh-python36-simplejson-3.16.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01082862-rh-python36-simplejson/rh-python36-simplejson-3.16.0-1.ppc64le.rpm
checksum_type: sha256
description:
  simplejson
  ----------

  .. image:: https://travis-ci.org/simplejson/simplejson.svg?branch=master
      :target: https://travis-ci.org/simplejson/simplejson

  simplejson is a simple, fast, complete, correct and extensible
  JSON <http://json.org> encoder and decoder for Python 2.5+
  and Python 3.3+.  It is pure Python code with no dependencies,
  but includes an optional C extension for a serious speed boost.

  The latest documentation for simplejson can be read online here:
  https://simplejson.readthedocs.io/

  simplejson is the externally maintained development version of the
  json library included with Python 2.6 and Python 3.0, but maintains
  backwards compatibility with Python 2.5.

  The encoder can be specialized to provide serialization in any kind of
  situation, without any special support by the objects to be serialized
  (somewhat like pickle). This is best done with the ``default`` kwarg
  to dumps.

  The decoder can handle incoming JSON strings of any specified encoding
  (UTF-8 by default). It can also be specialized to post-process JSON
  objects with the ``object_hook`` or ``object_pairs_hook`` kwargs. This
  is particularly useful for implementing protocols such as JSON-RPC
  that have a richer type system than JSON itself.

  For those of you that have legacy systems to maintain, there is a
  very old fork of simplejson in the `python2.2`_ branch that supports
  Python 2.2. This is based off of a very old version of simplejson,
  is not maintained, and should only be used as a last resort.

  .. _python2.2: https://github.com/simplejson/simplejson/tree/python2.2


pkgId: c6207077b2ddaeeaf2cd63863f572fdf660984743c0e918befaa432aed86707b
name: rh-python36-simplejson-debuginfo
arch: ppc64le
version: 3.16.0
epoch: 0
release: 1
summary: Debug information for package rh-python36-simplejson
url: http://github.com/simplejson/simplejson
rpm_license: MIT License
rpm_vendor: Bob Ippolito <bob@redivi.com>
rpm_group: Development/Debug
rpm_buildhost: 81ee5b8e083d4f1b88ab53cbe0b7d238
rpm_sourcerpm: rh-python36-simplejson-3.16.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01082862-rh-python36-simplejson/rh-python36-simplejson-debuginfo-3.16.0-1.ppc64le.rpm
checksum_type: sha256
description:
  This package provides debug information for package rh-python36-simplejson.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 5ff6ab346e9508fd11c088d0906407560ed0aef2394f8a694931163f47281fb5
name: rh-python36-six
arch: noarch
version: 1.14.0
epoch: 0
release: 1
summary: Python 2 and 3 compatibility utilities
url: https://github.com/benjaminp/six
rpm_license: MIT
rpm_vendor: Benjamin Peterson <benjamin@python.org>
rpm_group: Development/Libraries
rpm_buildhost: 404cee0e672040b28c7bdbae8bb804e6
rpm_sourcerpm: rh-python36-six-1.14.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01148083-rh-python36-six/rh-python36-six-1.14.0-1.noarch.rpm
checksum_type: sha256
description:
  .. image:: https://img.shields.io/pypi/v/six.svg
     :target: https://pypi.org/project/six/
     :alt: six on PyPI

  .. image:: https://travis-ci.org/benjaminp/six.svg?branch=master
     :target: https://travis-ci.org/benjaminp/six
     :alt: six on TravisCI

  .. image:: https://readthedocs.org/projects/six/badge/?version=latest
     :target: https://six.readthedocs.io/
     :alt: six's documentation on Read the Docs

  .. image:: https://img.shields.io/badge/license-MIT-green.svg
     :target: https://github.com/benjaminp/six/blob/master/LICENSE
     :alt: MIT License badge

  Six is a Python 2 and 3 compatibility library.  It provides utility functions
  for smoothing over the differences between the Python versions with the goal of
  writing Python code that is compatible on both Python versions.  See the
  documentation for more information on what is provided.

  Six supports every Python version since 2.6.  It is contained in only one Python
  file, so it can be easily copied into your project. (The copyright and license
  notice must be retained.)

  Online documentation is at https://six.readthedocs.io/.

  Bugs can be reported to https://github.com/benjaminp/six.  The code can also
  be found there.

  For questions about six or porting in general, email the python-porting mailing
  list: https://mail.python.org/mailman/listinfo/python-porting


pkgId: d6935dac6b2e952c028735d15ea16ef2225191a4eabfb80776371a2a6fcd244a
name: rh-python36-slackclient
arch: noarch
version: 1.1.2
epoch: 0
release: 1
summary: Slack API clients for Web API and RTM API
url: https://github.com/slackapi/python-slackclient
rpm_license: MIT
rpm_vendor: Slack Technologies, Inc. <opensource@slack.com>
rpm_group: Development/Libraries
rpm_buildhost: 5125af637c024f1ea2e17df6646f49af
rpm_sourcerpm: rh-python36-slackclient-1.1.2-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879137-rh-python36-slackclient/rh-python36-slackclient-1.1.2-1.noarch.rpm
checksum_type: sha256
description:
  python-slackclient
  ===================

  A client for Slack, which supports the Slack Web API and Real Time Messaging (RTM) API.

  |build-status| |windows-build-status| |codecov| |doc-status| |pypi-version| |python-version|

  .. |build-status| image:: https://travis-ci.org/slackapi/python-slackclient.svg?branch=master
      :target: https://travis-ci.org/slackapi/python-slackclient
  .. |windows-build-status| image:: https://ci.appveyor.com/api/projects/status/rif04t60ptslj32x/branch/master?svg=true
      :target: https://ci.appveyor.com/project/slackapi/python-slackclient
  .. |codecov| image:: https://codecov.io/gh/slackapi/python-slackclient/branch/master/graph/badge.svg
      :target: https://codecov.io/gh/slackapi/python-slackclient
  .. |doc-status| image:: https://readthedocs.org/projects/python-slackclient/badge/?version=latest
      :target: http://python-slackclient.readthedocs.io/en/latest/?badge=latest
  .. |pypi-version| image:: https://badge.fury.io/py/slackclient.svg
      :target: https://pypi.python.org/pypi/slackclient
  .. |python-version| image:: https://img.shields.io/pypi/pyversions/slackclient.svg
      :target: https://pypi.python.org/pypi/slackclient

  Overview
  --------

  Whether you're building a custom app for your team, or integrating a third party
  service into your Slack workflows, Slack Developer Kit for Python allows you to leverage the flexibility
  of Python to get your project up and running as quickly as possible.


  Requirements and Installation
  ******************************

  We recommend using `PyPI <https://pypi.python.org/pypi>`_ to install Slack Developer Kit for Python

  .. code-block:: bash

  	pip install slackclient

  Of course, if you prefer doing things the hard way, you can always implement Slack Developer Kit for Python
  by pulling down the source code directly into your project:

  .. code-block:: bash

  	git clone https://github.com/slackapi/python-slackclient.git
  	pip install -r requirements.txt

  Documentation
  --------------

  For comprehensive method information and usage examples, see the `full documentation <http://slackapi.github.io/python-slackclient>`_.


  You may also review our `Development Roadmap <https://github.com/slackapi/python-slackclient/wiki/Slack-Python-SDK-Roadmap>`_ in the project wiki.

  Getting Help
  -------------

  If you get stuck, we’re here to help. The following are the best ways to get assistance working through your issue:

  - Use our `Github Issue Tracker <https://github.com/slackapi/python-slackclient/issues>`_ for reporting bugs or requesting features.
  - Visit the `dev4slack channel <http://dev4slack.xoxco.com>`_ for getting help using Slack Developer Kit for Python or just generally bond with your fellow Slack developers.

  Basic Usage
  ------------
  The Slack Web API allows you to build applications that interact with Slack in more complex ways than the integrations
  we provide out of the box.

  This package is a modular wrapper designed to make Slack `Web API <https://api.slack.com/web>`_ calls simpler and easier for your
  app. Provided below are examples of how to interact with commonly used API endpoints, but this is by no means
  a complete list. Review the full list of available methods `here <https://api.slack.com/methods>`_.

  See `Tokens & Authentication <http://slackapi.github.io/python-slackclient/auth.html#handling-tokens>` for API token handling best practices.

  Sending a message
  ********************
  The primary use of Slack is sending messages. Whether you're sending a message
  to a user or to a channel, this method handles both.

  To send a message to a channel, use the channel's ID. For IMs, use the user's ID.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "chat.postMessage",
      channel="#python",
      text="Hello from Python! :tada:"
    )

  There are some unique options specific to sending IMs, so be sure to read the **channels**
  section of the `chat.postMessage <https://api.slack.com/methods/chat.postMessage#channels>`_
  page for a full list of formatting and authorship options.

  Sending an ephemeral message, which is only visible to an assigned user in a specified channel, is nearly the same
  as sending a regular message, but with an additional ``user`` parameter.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "chat.postEphemeral",
      channel="#python",
      text="Hello from Python! :tada:",
      user="U0XXXXXXX"
    )

  See `chat.postEphemeral <https://api.slack.com/methods/chat.postEphemeral>`_ for more info.


  Replying to messages and creating threads
  *****************************************
  Threaded messages are just like regular messages, except thread replies are grouped together to provide greater context
  to the user. You can reply to a thread or start a new threaded conversation by simply passing the original message's ``ts``
  ID in the ``thread_ts`` attribute when posting a message. If you're replying to a threaded message, you'll pass the `thread_ts`
  ID of the message you're replying to.

  A channel or DM conversation is a nearly linear timeline of messages exchanged between people, bots, and apps.
  When one of these messages is replied to, it becomes the parent of a thread. By default, threaded replies do not
  appear directly in the channel, instead relegated to a kind of forked timeline descending from the parent message.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "chat.postMessage",
      channel="#python",
      text="Hello from Python! :tada:",
      thread_ts="1476746830.000003"
    )


  By default, ``reply_broadcast`` is set to ``False``. To indicate your reply is germane to all members of a channel,
  set the ``reply_broadcast`` boolean parameter to ``True``.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "chat.postMessage",
      channel="#python",
      text="Hello from Python! :tada:",
      thread_ts="1476746830.000003",
      reply_broadcast=True
    )


  **Note:** While threaded messages may contain attachments and message buttons, when your reply is broadcast to the
  channel, it'll actually be a reference to your reply, not the reply itself.
  So, when appearing in the channel, it won't contain any attachments or message buttons. Also note that updates and
  deletion of threaded replies works the same as regular messages.

  See the `Threading messages together <https://api.slack.com/docs/message-threading#forking_conversations>`_
  article for more information.


  Deleting a message
  ********************
  Sometimes you need to delete things.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "chat.delete",
      channel="C0XXXXXX",
      ts="1476745373.000002"
    )

  See `chat.delete <https://api.slack.com/methods/chat.delete>`_ for more info.

  Adding or removing an emoji reaction
  ****************************************
  You can quickly respond to any message on Slack with an emoji reaction. Reactions
  can be used for any purpose: voting, checking off to-do items, showing excitement — and just for fun.

  This method adds a reaction (emoji) to an item (``file``, ``file comment``, ``channel message``, ``group message``, or ``direct message``). One of file, file_comment, or the combination of channel and timestamp must be specified.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "reactions.add",
      channel="C0XXXXXXX",
      name="thumbsup",
      timestamp="1234567890.123456"
    )

  Removing an emoji reaction is basically the same format, but you'll use ``reactions.remove`` instead of ``reactions.add``

  .. code-block:: python

    sc.api_call(
      "reactions.remove",
      channel="C0XXXXXXX",
      name="thumbsup",
      timestamp="1234567890.123456"
    )


  See `reactions.add <https://api.slack.com/methods/reactions.add>`_ and `reactions.remove <https://api.slack.com/methods/reactions.remove>`_ for more info.

  Getting a list of channels
  ******************************
  At some point, you'll want to find out what channels are available to your app. This is how you get that list.

  **Note:** This call requires the ``channels:read`` scope.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call("channels.list")

  Archived channels are included by default. You can exclude them by passing ``exclude_archived=1`` to your request.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "channels.list",
      exclude_archived=1
    )

  See `channels.list <https://api.slack.com/methods/channels.list>`_ for more info.

  Getting a channel's info
  *************************
  Once you have the ID for a specific channel, you can fetch information about that channel.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "channels.info",
      channel="C0XXXXXXX"
    )

  See `channels.info <https://api.slack.com/methods/channels.info>`_ for more info.

  Joining a channel
  ********************
  Channels are the social hub of most Slack teams. Here's how you hop into one:

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "channels.join",
      channel="C0XXXXXXY"
    )

  If you are already in the channel, the response is slightly different.
  ``already_in_channel`` will be true, and a limited ``channel`` object will be returned. Bot users cannot join a channel on their own, they need to be invited by another user.

  See `channels.join <https://api.slack.com/methods/channels.join>`_ for more info.

  Leaving a channel
  ********************
  Maybe you've finished up all the business you had in a channel, or maybe you
  joined one by accident. This is how you leave a channel.

  .. code-block:: python

    from slackclient import SlackClient

    slack_token = os.environ["SLACK_API_TOKEN"]
    sc = SlackClient(slack_token)

    sc.api_call(
      "channels.leave",
      channel="C0XXXXXXX"
    )

  See `channels.leave <https://api.slack.com/methods/channels.leave>`_ for more info.

  Additional Information
  ********************************************************************************************
  For comprehensive method information and usage examples, see the `full documentation`_.


pkgId: 54a38f6f4288fedf0ad8e40920c689960e9416dbcaff74e7cbd529f2fa6195d5
name: rh-python36-smmap2
arch: noarch
version: 2.0.5
epoch: 0
release: 1
summary: A pure Python implementation of a sliding window memory map manager
url: https://github.com/gitpython-developers/smmap
rpm_license: BSD
rpm_vendor: Sebastian Thiel <byronimo@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: 5ea17355560241409fd7d1b08392006f
rpm_sourcerpm: rh-python36-smmap2-2.0.5-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01002179-rh-python36-smmap2/rh-python36-smmap2-2.0.5-1.noarch.rpm
checksum_type: sha256
description:
  When reading from many possibly large files in a fashion similar to random access, it is usually the fastest and most efficient to use memory maps.

  Although memory maps have many advantages, they represent a very limited system resource as every map uses one file descriptor, whose amount is limited per process. On 32 bit systems, the amount of memory you can have mapped at a time is naturally limited to theoretical 4GB of memory, which may not be enough for some applications.




  * **System resources (file-handles) are likely to be leaked!** This is due to the library authors reliance on a deterministic `__del__()` destructor.
  * The memory access is read-only by design.




  [![Build Status](https://travis-ci.org/gitpython-developers/smmap.svg?branch=master)](https://travis-ci.org/gitpython-developers/smmap)
  [![Build status](https://ci.appveyor.com/api/projects/status/kuws846av5lvmugo?svg=true&passingText=windows%20OK&failingText=windows%20failed)](https://ci.appveyor.com/project/Byron/smmap)
  [![Coverage Status](https://coveralls.io/repos/gitpython-developers/smmap/badge.png)](https://coveralls.io/r/gitpython-developers/smmap)
  [![Issue Stats](http://www.issuestats.com/github/gitpython-developers/smmap/badge/pr)](http://www.issuestats.com/github/gitpython-developers/smmap)
  [![Issue Stats](http://www.issuestats.com/github/gitpython-developers/smmap/badge/issue)](http://www.issuestats.com/github/gitpython-developers/smmap)

  Smmap wraps an interface around mmap and tracks the mapped files as well as the amount of clients who use it. If the system runs out of resources, or if a memory limit is reached, it will automatically unload unused maps to allow continued operation.

  To allow processing large files even on 32 bit systems, it allows only portions of the file to be mapped. Once the user reads beyond the mapped region, smmap will automatically map the next required region, unloading unused regions using a LRU algorithm.

  The interface also works around the missing offset parameter in python implementations up to python 2.5.

  Although the library can be used most efficiently with its native interface, a Buffer implementation is provided to hide these details behind a simple string-like interface.

  For performance critical 64 bit applications, a simplified version of memory mapping is provided which always maps the whole file, but still provides the benefit of unloading unused mappings on demand.





  * Python 2.7 or 3.4+
  * OSX, Windows or Linux

  The package was tested on all of the previously mentioned configurations.



  [![Documentation Status](https://readthedocs.org/projects/smmap/badge/?version=latest)](https://readthedocs.org/projects/smmap/?badge=latest)

  Its easiest to install smmap using the [pip](http://www.pip-installer.org/en/latest) program:

  ```bash
  $ pip install smmap
  ```

  As the command will install smmap in your respective python distribution, you will most likely need root permissions to authorize the required changes.

  If you have downloaded the source archive, the package can be installed by running the `setup.py` script:

  ```bash
  $ python setup.py install
  ```

  It is advised to have a look at the **Usage Guide** for a brief introduction on the different database implementations.





  The project is home on github at https://github.com/gitpython-developers/smmap .

  The latest source can be cloned from github as well:

  * git://github.com/gitpython-developers/smmap.git


  For support, please use the git-python mailing list:

  * http://groups.google.com/group/git-python


  Issues can be filed on github:

  * https://github.com/gitpython-developers/smmap/issues




  *smmap* is licensed under the New BSD License.


pkgId: 2c626a7f4e4fcfb5fac2c29a76874ae5e8710b4f5de0e9be2a11b29ccfd0fa2b
name: rh-python36-social-auth-app-django
arch: noarch
version: 3.1.0
epoch: 0
release: 1
summary: Python Social Authentication, Django integration.
url: https://github.com/python-social-auth/social-app-django
rpm_license: BSD
rpm_vendor: Matias Aguirre <matiasaguirre@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: e398ed23252f4e1f8f18df2195dc0bb4
rpm_sourcerpm: rh-python36-social-auth-app-django-3.1.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143849-rh-python36-social-auth-app-django/rh-python36-social-auth-app-django-3.1.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/python-social-auth/social-app-django.svg?branch=master)](https://travis-ci.org/python-social-auth/social-app-django)
  [![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)

  Python Social Auth is an easy to setup social authentication/registration
  mechanism with support for several frameworks and auth providers.



  This is the [Django](https://www.djangoproject.com/) component of the
  [python-social-auth ecosystem](https://github.com/python-social-auth/social-core),
  it implements the needed functionality to integrate
  [social-auth-core](https://github.com/python-social-auth/social-core)
  in a Django based project.



  This project will focus on the currently supported Django releases as
  stated on the [Django Project Supported Versions table](https://www.djangoproject.com/download/#supported-versions).

  Backward compatibility with unsupported versions won't be enforced.



  Project documentation is available at http://python-social-auth.readthedocs.org/.



  ```shell
  $ pip install social-auth-app-django
  ```



  See the [CONTRIBUTING.md](CONTRIBUTING.md) document for details.



  This project follows [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html).



  This project follows the BSD license. See the [LICENSE](LICENSE) for details.



  This project is maintened on my spare time, consider donating to keep
  it improving.

  [![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)


pkgId: e8db64ed2a11b72be00f8f1c701ea962556bc6fe04a75387ed43c78b568d7e8b
name: rh-python36-social-auth-core
arch: noarch
version: 3.2.0
epoch: 0
release: 1
summary: Python social authentication made simple.
url: https://github.com/python-social-auth/social-core
rpm_license: BSD
rpm_vendor: Matias Aguirre <matiasaguirre@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: 55a6931cce584d829576f89613c512c8
rpm_sourcerpm: rh-python36-social-auth-core-3.2.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143850-rh-python36-social-auth-core/rh-python36-social-auth-core-3.2.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/python-social-auth/social-core.svg?branch=master)](https://travis-ci.org/python-social-auth/social-core)
  [![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)

  Python Social Auth is an easy to setup social authentication/registration
  mechanism with support for several frameworks and auth providers.



  This is the core component of the python-social-auth ecosystem, it
  implements the common interface to define new authentication backends
  to third parties services, implement integrations with web frameworks
  and storage solutions.



  Project documentation is available at http://python-social-auth.readthedocs.org/.



  ```shell
  $ pip install social-auth-core
  ```



  See the [CONTRIBUTING.md](CONTRIBUTING.md) document for details.



  This project follows [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html).



  This project follows the BSD license. See the [LICENSE](LICENSE) for details.



  This project is maintened on my spare time, consider donating to keep
  it improving.

  [![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)


pkgId: 651edd3101cabab4c3cce04144f954c6076d926305471c7abb546e60c6c5a96a
name: rh-python36-sphinx_rtd_theme
arch: noarch
version: 0.4.2
epoch: 0
release: 1
summary: Read the Docs theme for Sphinx
url: https://github.com/rtfd/sphinx_rtd_theme/
rpm_license: MIT
rpm_vendor: Dave Snider, Read the Docs, Inc. & contributors <dev@readthedocs.org>
rpm_group: Development/Libraries
rpm_buildhost: 1f02d18bb0e24053993590acfbd1821c
rpm_sourcerpm: rh-python36-sphinx_rtd_theme-0.4.2-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879140-rh-python36-sphinx_rtd_theme/rh-python36-sphinx_rtd_theme-0.4.2-1.noarch.rpm
checksum_type: sha256
description:
  **************************
  Read the Docs Sphinx Theme
  **************************

  .. image:: https://img.shields.io/pypi/v/sphinx_rtd_theme.svg
     :target: https://pypi.python.org/pypi/sphinx_rtd_theme
     :alt: Pypi Version
  .. image:: https://travis-ci.org/rtfd/sphinx_rtd_theme.svg?branch=master
     :target: https://travis-ci.org/rtfd/sphinx_rtd_theme
     :alt: Build Status
  .. image:: https://img.shields.io/pypi/l/sphinx_rtd_theme.svg
     :target: https://pypi.python.org/pypi/sphinx_rtd_theme/
     :alt: License
  .. image:: https://readthedocs.org/projects/sphinx-rtd-theme/badge/?version=latest
    :target: http://sphinx-rtd-theme.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

  The ``sphinx_rtd_theme`` is a sphinx_ theme designed to look modern and be mobile-friendly.
  This theme is primarily focused to be used on readthedocs.org_ but can work with your
  own sphinx projects. To read more and see a working demo_ head over to readthedocs.org_.

  .. _sphinx: http://www.sphinx-doc.org
  .. _readthedocs.org: http://www.readthedocs.org
  .. _demo: https://sphinx-rtd-theme.readthedocs.io/en/latest/


  Installing
  ==========

  The theme is distributed on PyPI_ and can be installed with pip::

     pip install sphinx_rtd_theme

  For more information read the full installing docs
  `here <https://sphinx-rtd-theme.readthedocs.io/en/latest/installing.html>`__.

  .. _PyPI: https://pypi.python.org/pypi/sphinx_rtd_theme


  Configuration
  =============

  The ``sphinx_rtd_theme`` is highly customizable on both the page level and on a global level.
  To see all the possible configuration options read the configuring docs
  `here <https://sphinx-rtd-theme.readthedocs.io/en/latest/configuring.html>`__.


  Contributing
  ============

  If you would like to help improve the theme or have more control
  over the theme in case of a fork please read our contributing guide
  `here <https://sphinx-rtd-theme.readthedocs.io/en/latest/contributing.html>`__.


pkgId: 599f58272ad2f7dce69980669c9349ffa2f6bdcbd188abe6905827e414de2e3e
name: rh-python36-sqlparse
arch: noarch
version: 0.3.0
epoch: 0
release: 1
summary: Non-validating SQL parser
url: https://github.com/andialbrecht/sqlparse
rpm_license: BSD
rpm_vendor: Andi Albrecht <albrecht.andi@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: 8a66cd5f35f041ab868e6752fd284511
rpm_sourcerpm: rh-python36-sqlparse-0.3.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00972358-rh-python36-sqlparse/rh-python36-sqlparse-0.3.0-1.noarch.rpm
checksum_type: sha256
description:
  ``sqlparse`` is a non-validating SQL parser module.
  It provides support for parsing, splitting and formatting SQL statements.

  Visit the `project page <https://github.com/andialbrecht/sqlparse>`_ for
  additional information and documentation.

  **Example Usage**


  Splitting SQL statements::

     >>> import sqlparse
     >>> sqlparse.split('select * from foo; select * from bar;')
     [u'select * from foo; ', u'select * from bar;']


  Formatting statements::

     >>> sql = 'select * from foo where id in (select id from bar);'
     >>> print sqlparse.format(sql, reindent=True, keyword_case='upper')
     SELECT *
     FROM foo
     WHERE id IN
       (SELECT id
        FROM bar);


  Parsing::

     >>> sql = 'select * from someschema.mytable where id = 1'
     >>> res = sqlparse.parse(sql)
     >>> res
     (<Statement 'select...' at 0x9ad08ec>,)
     >>> stmt = res[0]
     >>> str(stmt)  # converting it back to unicode
     'select * from someschema.mytable where id = 1'
     >>> # This is how the internal representation looks like:
     >>> stmt.tokens
     (<DML 'select' at 0x9b63c34>,
      <Whitespace ' ' at 0x9b63e8c>,
      <Operator '*' at 0x9b63e64>,
      <Whitespace ' ' at 0x9b63c5c>,
      <Keyword 'from' at 0x9b63c84>,
      <Whitespace ' ' at 0x9b63cd4>,
      <Identifier 'somes...' at 0x9b5c62c>,
      <Whitespace ' ' at 0x9b63f04>,
      <Where 'where ...' at 0x9b5caac>)


pkgId: 02975288a0afc3c48d907e4a130c3274ece1794d604e2798041f1821bceddd47
name: rh-python36-stevedore
arch: noarch
version: 1.31.0
epoch: 0
release: 1
summary: Manage dynamic plugins for Python applications
url: https://docs.openstack.org/stevedore/latest/
rpm_license: UNKNOWN
rpm_vendor: OpenStack <openstack-dev@lists.openstack.org>
rpm_group: Development/Libraries
rpm_buildhost: 75506d24639d4e729b21064b758c5f3b
rpm_sourcerpm: rh-python36-stevedore-1.31.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143885-rh-python36-stevedore/rh-python36-stevedore-1.31.0-1.noarch.rpm
checksum_type: sha256
description:
  ===========================================================
  stevedore -- Manage dynamic plugins for Python applications
  ===========================================================

  .. image:: https://img.shields.io/pypi/v/stevedore.svg
      :target: https://pypi.python.org/pypi/stevedore/
      :alt: Latest Version

  .. image:: https://img.shields.io/pypi/dm/stevedore.svg
      :target: https://pypi.python.org/pypi/stevedore/
      :alt: Downloads

  .. image:: http://governance.openstack.org/badges/stevedore.svg
      :target: http://governance.openstack.org/reference/tags/index.html

  Python makes loading code dynamically easy, allowing you to configure
  and extend your application by discovering and loading extensions
  ("*plugins*") at runtime. Many applications implement their own
  library for doing this, using ``__import__`` or ``importlib``.
  stevedore avoids creating yet another extension
  mechanism by building on top of `setuptools entry points`_. The code
  for managing entry points tends to be repetitive, though, so stevedore
  provides manager classes for implementing common patterns for using
  dynamically loaded extensions.

  .. _setuptools entry points: http://setuptools.readthedocs.io/en/latest/pkg_resources.html?#entry-points

  * Free software: Apache license
  * Documentation: https://docs.openstack.org/stevedore/latest
  * Source: https://git.openstack.org/cgit/openstack/stevedore
  * Bugs: https://bugs.launchpad.net/python-stevedore


pkgId: e6624fc90d25f841798d9a5fa1a63ae2b526ab276ff2a41c248f8118b296ef14
name: rh-python36-tabulate
arch: noarch
version: 0.8.2
epoch: 0
release: 1
summary: Pretty-print tabular data
url: https://bitbucket.org/astanin/python-tabulate
rpm_license: GPL
rpm_vendor: Sergey Astanin <s.astanin@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: 9fc29e511f0d4d6790aeb8878409eea2
rpm_sourcerpm: rh-python36-tabulate-0.8.2-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00929396-rh-python36-tabulate/rh-python36-tabulate-0.8.2-1.noarch.rpm
checksum_type: sha256
description:
  ===============
  python-tabulate
  ===============

  Pretty-print tabular data in Python, a library and a command-line
  utility.

  The main use cases of the library are:

  * printing small tables without hassle: just one function call,
    formatting is guided by the data itself

  * authoring tabular data for lightweight plain-text markup: multiple
    output formats suitable for further editing or transformation

  * readable presentation of mixed textual and numeric data: smart
    column alignment, configurable number formatting, alignment by a
    decimal point


  Installation
  ------------

  To install the Python library and the command line utility, run::

      pip install tabulate

  The command line utility will be installed as ``tabulate`` to ``bin`` on Linux
  (e.g. ``/usr/bin``); or as ``tabulate.exe`` to ``Scripts`` in your Python
  installation on Windows (e.g. ``C:\Python27\Scripts\tabulate.exe``).

  You may consider installing the library only for the current user::

      pip install tabulate --user

  In this case the command line utility will be installed to ``~/.local/bin/tabulate``
  on Linux and to ``%APPDATA%\Python\Scripts\tabulate.exe`` on Windows.

  To install just the library on Unix-like operating systems::

      TABULATE_INSTALL=lib-only pip install tabulate

  On Windows::

      set TABULATE_INSTALL=lib-only
      pip install tabulate


  Library usage
  -------------

  The module provides just one function, ``tabulate``, which takes a
  list of lists or another tabular data type as the first argument,
  and outputs a nicely formatted plain-text table::

      >>> from tabulate import tabulate

      >>> table = [["Sun",696000,1989100000],["Earth",6371,5973.6],
      ...          ["Moon",1737,73.5],["Mars",3390,641.85]]
      >>> print tabulate(table)
      -----  ------  -------------
      Sun    696000     1.9891e+09
      Earth    6371  5973.6
      Moon     1737    73.5
      Mars     3390   641.85
      -----  ------  -------------

  The following tabular data types are supported:

  * list of lists or another iterable of iterables
  * list or another iterable of dicts (keys as columns)
  * dict of iterables (keys as columns)
  * two-dimensional NumPy array
  * NumPy record arrays (names as columns)
  * pandas.DataFrame

  Examples in this file use Python2. Tabulate supports Python3 too.


  Headers
  ~~~~~~~

  The second optional argument named ``headers`` defines a list of
  column headers to be used::

      >>> print tabulate(table, headers=["Planet","R (km)", "mass (x 10^29 kg)"])
      Planet      R (km)    mass (x 10^29 kg)
      --------  --------  -------------------
      Sun         696000           1.9891e+09
      Earth         6371        5973.6
      Moon          1737          73.5
      Mars          3390         641.85

  If ``headers="firstrow"``, then the first row of data is used::

      >>> print tabulate([["Name","Age"],["Alice",24],["Bob",19]],
      ...                headers="firstrow")
      Name      Age
      ------  -----
      Alice      24
      Bob        19


  If ``headers="keys"``, then the keys of a dictionary/dataframe, or
  column indices are used. It also works for NumPy record arrays and
  lists of dictionaries or named tuples::

      >>> print tabulate({"Name": ["Alice", "Bob"],
      ...                 "Age": [24, 19]}, headers="keys")
        Age  Name
      -----  ------
         24  Alice
         19  Bob


  Row Indices
  ~~~~~~~~~~~

  By default, only pandas.DataFrame tables have an additional column
  called row index. To add a similar column to any other type of table,
  pass ``showindex="always"`` or ``showindex=True`` argument to
  ``tabulate()``. To suppress row indices for all types of data, pass
  ``showindex="never"`` or ``showindex=False``.  To add a custom row
  index column, pass ``showindex=rowIDs``, where ``rowIDs`` is some
  iterable::

      >>> print(tabulate([["F",24],["M",19]], showindex="always"))
      -  -  --
      0  F  24
      1  M  19
      -  -  --


  Table format
  ~~~~~~~~~~~~

  There is more than one way to format a table in plain text.
  The third optional argument named ``tablefmt`` defines
  how the table is formatted.

  Supported table formats are:

  - "plain"
  - "simple"
  - "grid"
  - "fancy_grid"
  - "pipe"
  - "orgtbl"
  - "jira"
  - "psql"
  - "rst"
  - "mediawiki"
  - "moinmoin"
  - "html"
  - "latex"
  - "latex_booktabs"
  - "textile"

  ``plain`` tables do not use any pseudo-graphics to draw lines::

      >>> table = [["spam",42],["eggs",451],["bacon",0]]
      >>> headers = ["item", "qty"]
      >>> print tabulate(table, headers, tablefmt="plain")
      item      qty
      spam       42
      eggs      451
      bacon       0

  ``simple`` is the default format (the default may change in future
  versions).  It corresponds to ``simple_tables`` in `Pandoc Markdown
  extensions`::

      >>> print tabulate(table, headers, tablefmt="simple")
      item      qty
      ------  -----
      spam       42
      eggs      451
      bacon       0

  ``grid`` is like tables formatted by Emacs' `table.el`
  package.  It corresponds to ``grid_tables`` in Pandoc Markdown
  extensions::

      >>> print tabulate(table, headers, tablefmt="grid")
      +--------+-------+
      | item   |   qty |
      +========+=======+
      | spam   |    42 |
      +--------+-------+
      | eggs   |   451 |
      +--------+-------+
      | bacon  |     0 |
      +--------+-------+

  ``fancy_grid`` draws a grid using box-drawing characters::

      >>> print tabulate(table, headers, tablefmt="fancy_grid")
      ╒════════╤═══════╕
      │ item   │   qty │
      ╞════════╪═══════╡
      │ spam   │    42 │
      ├────────┼───────┤
      │ eggs   │   451 │
      ├────────┼───────┤
      │ bacon  │     0 │
      ╘════════╧═══════╛

  ``psql`` is like tables formatted by Postgres' psql cli::

      >>> print tabulate.tabulate()
      +--------+-------+
      | item   |   qty |
      |--------+-------|
      | spam   |    42 |
      | eggs   |   451 |
      | bacon  |     0 |
      +--------+-------+

  ``pipe`` follows the conventions of `PHP Markdown Extra` extension.  It
  corresponds to ``pipe_tables`` in Pandoc. This format uses colons to
  indicate column alignment::

      >>> print tabulate(table, headers, tablefmt="pipe")
      | item   |   qty |
      |:-------|------:|
      | spam   |    42 |
      | eggs   |   451 |
      | bacon  |     0 |

  ``orgtbl`` follows the conventions of Emacs `org-mode`, and is editable
  also in the minor `orgtbl-mode`. Hence its name::

      >>> print tabulate(table, headers, tablefmt="orgtbl")
      | item   |   qty |
      |--------+-------|
      | spam   |    42 |
      | eggs   |   451 |
      | bacon  |     0 |

  ``jira`` follows the conventions of Atlassian Jira markup language::

      >>> print tabulate(table, headers, tablefmt="jira")
      || item   ||   qty ||
      | spam   |    42 |
      | eggs   |   451 |
      | bacon  |     0 |

  ``rst`` formats data like a simple table of the `reStructuredText` format::

      >>> print tabulate(table, headers, tablefmt="rst")
      ======  =====
      item      qty
      ======  =====
      spam       42
      eggs      451
      bacon       0
      ======  =====

  ``mediawiki`` format produces a table markup used in `Wikipedia` and on
  other MediaWiki-based sites::

      >>> print tabulate(table, headers, tablefmt="mediawiki")
      {| class="wikitable" style="text-align: left;"
      |+ <!-- caption -->
      |-
      ! item   !! align="right"|   qty
      |-
      | spam   || align="right"|    42
      |-
      | eggs   || align="right"|   451
      |-
      | bacon  || align="right"|     0
      |}

  ``moinmoin`` format produces a table markup used in `MoinMoin`
  wikis::

      >>> print tabulate(d,headers,tablefmt="moinmoin")
      || ''' item   ''' || ''' quantity   ''' ||
      ||  spam    ||  41.999      ||
      ||  eggs    ||  451         ||
      ||  bacon   ||              ||

  ``textile`` format produces a table markup used in `Textile` format::

      >>> print tabulate(table, headers, tablefmt='textile')
      |_.  item   |_.   qty |
      |<. spam    |>.    42 |
      |<. eggs    |>.   451 |
      |<. bacon   |>.     0 |

  ``html`` produces standard HTML markup::

      >>> print tabulate(table, headers, tablefmt="html")
      <table>
      <tbody>
      <tr><th>item  </th><th style="text-align: right;">  qty</th></tr>
      <tr><td>spam  </td><td style="text-align: right;">   42</td></tr>
      <tr><td>eggs  </td><td style="text-align: right;">  451</td></tr>
      <tr><td>bacon </td><td style="text-align: right;">    0</td></tr>
      </tbody>
      </table>

  ``latex`` format creates a ``tabular`` environment for LaTeX markup::

      >>> print tabulate(table, headers, tablefmt="latex")
      \begin{tabular}{lr}
      \hline
       item   &   qty \\
      \hline
       spam   &    42 \\
       eggs   &   451 \\
       bacon  &     0 \\
      \hline
      \end{tabular}

  ``latex_booktabs`` creates a ``tabular`` environment for LaTeX markup
  using spacing and style from the ``booktabs`` package.


  .. _Pandoc Markdown extensions: http://johnmacfarlane.net/pandoc/README.html#tables
  .. _PHP Markdown Extra: http://michelf.ca/projects/php-markdown/extra/#table
  .. _table.el: http://table.sourceforge.net/
  .. _org-mode: http://orgmode.org/manual/Tables.html
  .. _reStructuredText: http://docutils.sourceforge.net/docs/user/rst/quickref.html#tables
  .. _Textile: http://redcloth.org/hobix.com/textile/
  .. _Wikipedia: http://www.mediawiki.org/wiki/Help:Tables


  Column alignment
  ~~~~~~~~~~~~~~~~

  ``tabulate`` is smart about column alignment. It detects columns which
  contain only numbers, and aligns them by a decimal point (or flushes
  them to the right if they appear to be integers). Text columns are
  flushed to the left.

  You can override the default alignment with ``numalign`` and
  ``stralign`` named arguments. Possible column alignments are:
  ``right``, ``center``, ``left``, ``decimal`` (only for numbers), and
  ``None`` (to disable alignment).

  Aligning by a decimal point works best when you need to compare
  numbers at a glance::

      >>> print tabulate([[1.2345],[123.45],[12.345],[12345],[1234.5]])
      ----------
          1.2345
        123.45
         12.345
      12345
       1234.5
      ----------

  Compare this with a more common right alignment::

      >>> print tabulate([[1.2345],[123.45],[12.345],[12345],[1234.5]], numalign="right")
      ------
      1.2345
      123.45
      12.345
       12345
      1234.5
      ------

  For ``tabulate``, anything which can be parsed as a number is a
  number. Even numbers represented as strings are aligned properly. This
  feature comes in handy when reading a mixed table of text and numbers
  from a file:

  ::

      >>> import csv ; from StringIO import StringIO
      >>> table = list(csv.reader(StringIO("spam, 42\neggs, 451\n")))
      >>> table
      [['spam', ' 42'], ['eggs', ' 451']]
      >>> print tabulate(table)
      ----  ----
      spam    42
      eggs   451
      ----  ----



  Number formatting
  ~~~~~~~~~~~~~~~~~

  ``tabulate`` allows to define custom number formatting applied to all
  columns of decimal numbers. Use ``floatfmt`` named argument::


      >>> print tabulate([["pi",3.141593],["e",2.718282]], floatfmt=".4f")
      --  ------
      pi  3.1416
      e   2.7183
      --  ------


  Wide (fullwidth CJK) symbols
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  To properly align tables which contain wide characters (typically fullwidth
  glyphs from Chinese, Japanese or Korean languages), the user should install
  ``wcwidth`` library. To install it together with ``tabulate``::

      pip install tabulate[widechars]

  Wide character support is enabled automatically if ``wcwidth`` library is
  already installed.  To disable wide characters support without uninstalling
  ``wcwidth``, set the global module-level flag ``WIDE_CHARS_MODE``::

      import tabulate
      tabulate.WIDE_CHARS_MODE = False


  Usage of the command line utility
  ---------------------------------

  ::

      Usage: tabulate [options] [FILE ...]

      FILE                      a filename of the file with tabular data;
                                if "-" or missing, read data from stdin.

      Options:

      -h, --help                show this message
      -1, --header              use the first row of data as a table header
      -o FILE, --output FILE    print table to FILE (default: stdout)
      -s REGEXP, --sep REGEXP   use a custom column separator (default: whitespace)
      -F FPFMT, --float FPFMT   floating point number format (default: g)
      -f FMT, --format FMT      set output table format; supported formats:
                                plain, simple, grid, fancy_grid, pipe, orgtbl,
                                rst, mediawiki, html, latex, latex_booktabs, tsv
                                (default: simple)


  Performance considerations
  --------------------------

  Such features as decimal point alignment and trying to parse everything
  as a number imply that ``tabulate``:

  * has to "guess" how to print a particular tabular data type
  * needs to keep the entire table in-memory
  * has to "transpose" the table twice
  * does much more work than it may appear

  It may not be suitable for serializing really big tables (but who's
  going to do that, anyway?) or printing tables in performance sensitive
  applications. ``tabulate`` is about two orders of magnitude slower
  than simply joining lists of values with a tab, coma or other
  separator.

  In the same time ``tabulate`` is comparable to other table
  pretty-printers. Given a 10x10 table (a list of lists) of mixed text
  and numeric data, ``tabulate`` appears to be slower than
  ``asciitable``, and faster than ``PrettyTable`` and ``texttable``

  ::

      =================================  ==========  ===========
      Table formatter                      time, μs    rel. time
      =================================  ==========  ===========
      csv to StringIO                          25.3          1.0
      join with tabs and newlines              33.6          1.3
      asciitable (0.8.0)                      590.0         23.4
      tabulate (0.7.7)                       1403.5         55.6
      tabulate (0.7.7, WIDE_CHARS_MODE)      2156.6         85.4
      PrettyTable (0.7.2)                    3377.0        133.7
      texttable (0.8.6)                      3986.3        157.8
      =================================  ==========  ===========


  Version history
  ---------------

  - 0.8: FUTURE RELEASE
  - 0.7.6: Bug fixes. New table formats (``psql``, ``jira``, ``moinmoin``, ``textile``).
    Wide character support. Printing from database cursors.
    Option to print row indices. Boolean columns. Ragged rows.
    Option to disable number parsing.
  - 0.7.5: Bug fixes. ``--float`` format option for the command line utility.
  - 0.7.4: Bug fixes. ``fancy_grid`` and ``html`` formats. Command line utility.
  - 0.7.3: Bug fixes. Python 3.4 support. Iterables of dicts. ``latex_booktabs`` format.
  - 0.7.2: Python 3.2 support.
  - 0.7.1: Bug fixes. ``tsv`` format. Column alignment can be disabled.
  - 0.7: ``latex`` tables. Printing lists of named tuples and NumPy
    record arrays. Fix printing date and time values. Python <= 2.6.4 is supported.
  - 0.6: ``mediawiki`` tables, bug fixes.
  - 0.5.1: Fix README.rst formatting. Optimize (performance similar to 0.4.4).
  - 0.5: ANSI color sequences. Printing dicts of iterables and Pandas' dataframes.
  - 0.4.4: Python 2.6 support.
  - 0.4.3: Bug fix, None as a missing value.
  - 0.4.2: Fix manifest file.
  - 0.4.1: Update license and documentation.
  - 0.4: Unicode support, Python3 support, ``rst`` tables.
  - 0.3: Initial PyPI release. Table formats: ``simple``, ``plain``,
    ``grid``, ``pipe``, and ``orgtbl``.


  How to contribute
  -----------------

  Contributions should include tests and an explanation for the changes they
  propose. Documentation (examples, docstrings, README.rst) should be updated
  accordingly.

  This project uses `nose` testing framework and `tox` to automate testing in
  different environments. Add tests to one of the files in the ``test/`` folder.

  To run tests on all supported Python versions, make sure all Python
  interpreters, ``nose`` and ``tox`` are installed, then run ``tox`` in
  the root of the project source tree.

  On Linux ``tox`` expects to find executables like ``python2.6``,
  ``python2.7``, ``python3.4`` etc. On Windows it looks for
  ``C:\Python26\python.exe``, ``C:\Python27\python.exe`` and
  ``C:\Python34\python.exe`` respectively.

  To test only some Python environements, use ``-e`` option. For
  example, to test only against Python 2.7 and Python 3.4, run::

      tox -e py27,py34

  in the root of the project source tree.

  To enable NumPy and Pandas tests, run::

      tox -e py27-extra,py34-extra

  (this may take a long time the first time, because NumPy and Pandas
  will have to be installed in the new virtual environments)

  See ``tox.ini`` file to learn how to use ``nosetests`` directly to
  test individual Python versions.

  .. _nose: https://nose.readthedocs.org/
  .. _tox: http://tox.testrun.org/


  Contributors
  ------------

  Sergey Astanin, Pau Tallada Crespí, Erwin Marsi, Mik Kocikowski, Bill Ryder,
  Zach Dwiel, Frederik Rietdijk, Philipp Bogensberger, Greg (anonymous),
  Stefan Tatschner, Emiel van Miltenburg, Brandon Bennett, Amjith Ramanujam,
  Jan Schulz, Simon Percivall, Javier Santacruz López-Cepero, Sam Denton,
  Alexey Ziyangirov, acaird, Cesar Sanchez, naught101, John Vandenberg,
  Zack Dever.


pkgId: 0afb60ad1636c835383ca0c1c22dc75101fdfba75a603cd88784da57b51ac7fd
name: rh-python36-tempora
arch: noarch
version: 1.14
epoch: 0
release: 1
summary: Objects and routines pertaining to date and time (tempora)
url: https://github.com/jaraco/tempora
rpm_license: UNKNOWN
rpm_vendor: Jason R. Coombs <jaraco@jaraco.com>
rpm_group: Development/Libraries
rpm_buildhost: 938609c44fa54f4d97d5824d8d3394ac
rpm_sourcerpm: rh-python36-tempora-1.14-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879144-rh-python36-tempora/rh-python36-tempora-1.14-1.noarch.rpm
checksum_type: sha256
description:
  .. image:: https://img.shields.io/pypi/v/tempora.svg
     :target: https://pypi.org/project/tempora

  .. image:: https://img.shields.io/pypi/pyversions/tempora.svg

  .. image:: https://img.shields.io/travis/jaraco/tempora/master.svg
     :target: http://travis-ci.org/jaraco/tempora

  Objects and routines pertaining to date and time (tempora).

  Modules include:

   - tempora (top level package module) contains miscellaneous
     utilities and constants.
   - timing contains routines for measuring and profiling.
   - schedule contains an event scheduler.


pkgId: f9c3ac6a24b8b602b79b2fae529d2c025238fad26987c5657925a3ead06c05da
name: rh-python36-testtools
arch: noarch
version: 2.3.0
epoch: 0
release: 1
summary: Extensions to the Python standard library unit testing framework
url: https://github.com/testing-cabal/testtools
rpm_license: UNKNOWN
rpm_vendor: Jonathan M. Lange <jml+testtools@mumak.net>
rpm_group: Development/Libraries
rpm_buildhost: 8c32cb13cb624dd18424a6cee5b51e6b
rpm_sourcerpm: rh-python36-testtools-2.3.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00887939-rh-python36-testtools/rh-python36-testtools-2.3.0-1.noarch.rpm
checksum_type: sha256
description:
  ======================================
  testtools: tasteful testing for Python
  ======================================

  testtools is a set of extensions to the Python standard library's unit testing
  framework. These extensions have been derived from many years of experience
  with unit testing in Python and come from many different sources.

  What better way to start than with a contrived code snippet?::

    from testtools import TestCase
    from testtools.content import Content
    from testtools.content_type import UTF8_TEXT
    from testtools.matchers import Equals

    from myproject import SillySquareServer

    class TestSillySquareServer(TestCase):

        def setUp(self):
            super(TestSillySquareServer, self).setUp()
            self.server = self.useFixture(SillySquareServer())
            self.addCleanup(self.attach_log_file)

        def attach_log_file(self):
            self.addDetail(
                'log-file',
                Content(UTF8_TEXT,
                        lambda: open(self.server.logfile, 'r').readlines()))

        def test_server_is_cool(self):
            self.assertThat(self.server.temperature, Equals("cool"))

        def test_square(self):
            self.assertThat(self.server.silly_square_of(7), Equals(49))


  Why use testtools?
  ==================

  Better assertion methods
  ------------------------

  The standard assertion methods that come with unittest aren't as helpful as
  they could be, and there aren't quite enough of them.  testtools adds
  ``assertIn``, ``assertIs``, ``assertIsInstance`` and their negatives.


  Matchers: better than assertion methods
  ---------------------------------------

  Of course, in any serious project you want to be able to have assertions that
  are specific to that project and the particular problem that it is addressing.
  Rather than forcing you to define your own assertion methods and maintain your
  own inheritance hierarchy of ``TestCase`` classes, testtools lets you write
  your own "matchers", custom predicates that can be plugged into a unit test::

    def test_response_has_bold(self):
       
       response = self.server.getResponse()
       self.assertThat(response, HTMLContains(Tag('bold', 'b')))


  More debugging info, when you need it
  --------------------------------------

  testtools makes it easy to add arbitrary data to your test result.  If you
  want to know what's in a log file when a test fails, or what the load was on
  the computer when a test started, or what files were open, you can add that
  information with ``TestCase.addDetail``, and it will appear in the test
  results if that test fails.


  Extend unittest, but stay compatible and re-usable
  --------------------------------------------------

  testtools goes to great lengths to allow serious test authors and test
  *framework* authors to do whatever they like with their tests and their
  extensions while staying compatible with the standard library's unittest.

  testtools has completely parametrized how exceptions raised in tests are
  mapped to ``TestResult`` methods and how tests are actually executed (ever
  wanted ``tearDown`` to be called regardless of whether ``setUp`` succeeds?)

  It also provides many simple but handy utilities, like the ability to clone a
  test, a ``MultiTestResult`` object that lets many result objects get the
  results from one test suite, adapters to bring legacy ``TestResult`` objects
  into our new golden age.


  Cross-Python compatibility
  --------------------------

  testtools gives you the very latest in unit testing technology in a way that
  will work with Python 2.7, 3.3, 3.4, 3.5, and pypy.

  If you wish to use testtools with Python 2.4 or 2.5, then please use testtools
  0.9.15.

  If you wish to use testtools with Python 2.6 or 3.2, then please use testtools
  1.9.0.


pkgId: 5b712dab56c55e38dfa179638521cb4068634ae06b6b564ee1b4b538ff7c53b8
name: rh-python36-traceback2
arch: noarch
version: 1.4.0
epoch: 0
release: 1
summary: Backports of the traceback module
url: https://github.com/testing-cabal/traceback2
rpm_license: UNKNOWN
rpm_vendor: Testing-cabal <testing-cabal@lists.launchpad.net>
rpm_group: Development/Libraries
rpm_buildhost: 4272453c22f0435da8746636d215c36c
rpm_sourcerpm: rh-python36-traceback2-1.4.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00887956-rh-python36-traceback2/rh-python36-traceback2-1.4.0-1.noarch.rpm
checksum_type: sha256
description:
  A backport of traceback to older supported Pythons.

   >>> import traceback2 as traceback

  Profit.

  Things to be aware of!

  In Python 2.x, unlike traceback, traceback2 creates unicode output (because it
  depends on the linecache2 module).

  Exception frame clearing silently does nothing if the interpreter in use does
  not support it.

  traceback2._some_str, which while not an official API is so old its likely in
  use behaves similarly to the Python3 version - objects where unicode(obj) fails
  but str(object) works will be shown as b'thestrvaluerepr'.


pkgId: 10d16b2207d1334e849d9611169ca9c6f8319effeb52ea60e191f806fc4a4679
name: rh-python36-twilio
arch: noarch
version: 6.35.1
epoch: 0
release: 1
summary: Twilio API client and TwiML generator
url: https://github.com/twilio/twilio-python/
rpm_license: UNKNOWN
rpm_vendor: Twilio <help@twilio.com>
rpm_group: Development/Libraries
rpm_buildhost: 2dcadf561fec49e1941605391ed66d59
rpm_sourcerpm: rh-python36-twilio-6.35.1-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143852-rh-python36-twilio/rh-python36-twilio-6.35.1-1.noarch.rpm
checksum_type: sha256
description:
      Python Twilio Helper Library
      ----------------------------

      DESCRIPTION
      The Twilio REST SDK simplifies the process of making calls using the Twilio REST API.
      The Twilio REST API lets to you initiate outgoing calls, list previous calls,
      and much more.  See https://www.github.com/twilio/twilio-python for more information.

       LICENSE The Twilio Python Helper Library is distributed under the MIT
      License


pkgId: 4cd830e30c16d64bf09ac6df50de3e3af675bf2c89820925f73897c4415a3ce0
name: rh-python36-txaio
arch: noarch
version: 2.9.0
epoch: 0
release: 1
summary: Compatibility API between asyncio/Twisted/Trollius
url: https://github.com/crossbario/txaio
rpm_license: MIT License
rpm_vendor: Crossbar.io Technologies GmbH <autobahnws@googlegroups.com>
rpm_group: Development/Libraries
rpm_buildhost: d080dd2f8df642b29c8f7e1c2ae1d932
rpm_sourcerpm: rh-python36-txaio-2.9.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879147-rh-python36-txaio/rh-python36-txaio-2.9.0-1.noarch.rpm
checksum_type: sha256
description:
  txaio
  =====

  | |Version| |Build Status| |Coverage| |Docs|

  --------------

  **txaio** is a helper library for writing code that runs unmodified on
  both `Twisted <https://twistedmatrix.com/>`_ and `asyncio <https://docs.python.org/3/library/asyncio.html>`_ / `Trollius <http://trollius.readthedocs.org/en/latest/index.html>`_.

  This is like `six <http://pythonhosted.org/six/>`_, but for wrapping
  over differences between Twisted and asyncio so one can write code
  that runs unmodified on both (aka *source code compatibility*). In
  other words: your *users* can choose if they want asyncio **or** Twisted
  as a dependency.

  Note that, with this approach, user code **runs under the native event
  loop of either Twisted or asyncio**. This is different from attaching
  either one's event loop to the other using some event loop adapter.


  Platform support
  ----------------

  **txaio** runs on CPython 2.7/3.3+ and PyPy 2/3, on top of Twisted or asyncio. Specifically, **txaio** is tested on the following platforms:

  **Python 2:**

  * CPython 2.7 on Twisted 12.1, 13.2, 15.4, 16.5, trunk and on Trollius 2.0
  * PyPy 2 on Twisted 12.1, 13.2, 15.4, 16.5, trunk and on Trollius 2.0

  **Python 3:**

  * CPython 3.3 on Twisted 15.4, 16.5, trunk and on Trollius 2.0
  * CPython 3.4 on Twisted 15.4, 16.5, trunk and on asyncio (stdlib)
  * CPython 3.5 on Twisted 15.4, 16.5, trunk and on asyncio (stdlib)
  * CPython 3.6 on Twisted 15.4, 16.5, trunk and on asyncio (stdlib)
  * PyPy 3 on Twisted 15.4, 16.5, trunk and on asyncio (stdlib)


  How it works
  ------------

  Instead of directly importing, instantiating and using ``Deferred``
  (for Twisted) or ``Future`` (for asyncio) objects, **txaio** provides
  helper-functions to do that for you, as well as associated things like
  adding callbacks or errbacks.

  This obviously changes the style of your code, but then you can choose
  at runtime (or import time) which underlying event-loop to use. This
  means you can write **one** code-base that can run on Twisted *or*
  asyncio (without a Twisted dependency) as you or your users see fit.

  Code like the following can then run on *either* system:

  .. sourcecode:: python

      import txaio
      txaio.use_twisted()  # or .use_asyncio()

      f0 = txaio.create_future()
      f1 = txaio.as_future(some_func, 1, 2, key='word')
      txaio.add_callbacks(f0, callback, errback)
      txaio.add_callbacks(f1, callback, errback)
      
      txaio.resolve(f0, "value")
      txaio.reject(f1, RuntimeError("it failed"))

  Please refer to the `documentation <https://txaio.readthedocs.io/en/latest/>`_ for description and usage of the library features.


  .. |Version| image:: https://img.shields.io/pypi/v/txaio.svg
     :target: https://pypi.python.org/pypi/txaio

  .. |Build Status| image:: https://travis-ci.org/crossbario/txaio.svg?branch=master
     :target: https://travis-ci.org/crossbario/txaio

  .. |Coverage| image:: https://codecov.io/github/crossbario/txaio/coverage.svg?branch=master
     :target: https://codecov.io/github/crossbario/txaio

  .. |Docs| image:: https://readthedocs.org/projects/txaio/badge/?version=latest
     :target: https://txaio.readthedocs.io/en/latest/


pkgId: 9cf1a6be5d95042ce8c952ec7e250ec8cc0685f37a8a0488966274c6ea52cb2e
name: rh-python36-typing
arch: noarch
version: 3.7.4.1
epoch: 0
release: 1
summary: Type Hints for Python
url: https://docs.python.org/3/library/typing.html
rpm_license: PSF
rpm_vendor: Guido van Rossum, Jukka Lehtosalo, Łukasz Langa, Ivan Levkivskyi <jukka.lehtosalo@iki.fi>
rpm_group: Development/Libraries
rpm_buildhost: e9e8a9a64a3f40b6b0a6eb01e1f648a3
rpm_sourcerpm: rh-python36-typing-3.7.4.1-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143886-rh-python36-typing/rh-python36-typing-3.7.4.1-1.noarch.rpm
checksum_type: sha256
description:
  Typing -- Type Hints for Python

  This is a backport of the standard library typing module to Python
  versions older than 3.5.  (See note below for newer versions.)

  Typing defines a standard notation for Python function and variable
  type annotations. The notation can be used for documenting code in a
  concise, standard format, and it has been designed to also be used by
  static and runtime type checkers, static analyzers, IDEs and other
  tools.

  NOTE: in Python 3.5 and later, the typing module lives in the stdlib,
  and installing this package has NO EFFECT.  To get a newer version of
  the typing module in Python 3.5 or later, you have to upgrade to a
  newer Python (bugfix) version.  For example, typing in Python 3.6.0 is
  missing the definition of 'Type' -- upgrading to 3.6.2 will fix this.

  Also note that most improvements to the typing module in Python 3.7
  will not be included in this package, since Python 3.7 has some
  built-in support that is not present in older versions (See PEP 560.)


pkgId: 3f30d14371f89ab0e3955877e9509f1748dd4a87d42cd70393b86be8996810ab
name: rh-python36-unittest2
arch: noarch
version: 1.1.0
epoch: 0
release: 1
summary: The new features in unittest backported to Python 2.4+.
url: http://pypi.python.org/pypi/unittest2
rpm_license: UNKNOWN
rpm_vendor: Robert Collins <rbtcollins@hp.com>
rpm_group: Development/Libraries
rpm_buildhost: d6e61ed16e534aa19b470069bd7f7fce
rpm_sourcerpm: rh-python36-unittest2-1.1.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00888084-rh-python36-unittest2/rh-python36-unittest2-1.1.0-1.noarch.rpm
checksum_type: sha256
description:
  unittest2 is a backport of the new features added to the unittest testing
  framework in Python 2.7 and onwards. It is tested to run on Python 2.6, 2.7,
  3.2, 3.3, 3.4 and pypy.

  To use unittest2 instead of unittest simply replace ``import unittest`` with
  ``import unittest2``.

  unittest2 is maintained in a mercurial repository. The issue tracker is on
  google code:

  * `unittest2 hg <http://hg.python.org/unittest2>`_
  * `unittest2 issue tracker
    <http://code.google.com/p/unittest-ext/issues/list>`_
  * `Article / Docs: New features in unittest
    <http://www.voidspace.org.uk/python/articles/unittest2.shtml>`_

  Thanks to Mark Roddy, there is a distribution of unittest2 0.5.1 for Python 2.3.
  This is maintained as a separate branch and is a separate download.

  To avoid problems with ``pip`` installing the wrong distribution, the Python 2.3
  version of unittest2 can't be hosted on PyPI:

  * `Download unittest2 0.5.1 for Python 2.3 <http://voidspace.org.uk/downloads/unittest2-0.5.1-python2.3.zip>`_

  There was a separate version of unittest2 for Python 3. This is no longer
  needed, but still exists on PyPI. This had the project name "unittest2py3k" but
  uses the same package name ("unittest2"):

  * `unittest2 for Python 3 <http://pypi.python.org/pypi/unittest2py3k>`_

  Classes in unittest2 derive from the appropriate classes in unittest, so it
  should be possible to use the unittest2 test running infrastructure without
  having to switch all your tests to using unittest2 immediately. Similarly
  you can use the new assert methods on ``unittest2.TestCase`` with the standard
  unittest test running infrastructure. Not all of the new features in unittest2
  will work with the standard unittest test loaders, runners result objects
  however.

  In general for documentation on unittest2 see the current latest documented of
  CPython:

  * `CPython unittest documentation <https://docs.python.org/dev/library/unittest.html>`_

  New features include:

  * ``addCleanups`` - better resource management
  * *many* new assert methods including better defaults for comparing lists,
    sets, dicts unicode strings etc and the ability to specify new default methods
    for comparing specific types
  * ``assertRaises`` as context manager, with access to the exception afterwards
  * test discovery and new command line options (including failfast and better
    handling of ctrl-C during test runs)
  * class and module level fixtures: ``setUpClass``, ``tearDownClass``,
    ``setUpModule``, ``tearDownModule``
  * test skipping and expected failures
  * new ``delta`` keyword argument to ``assertAlmostEqual`` for more useful
    comparison and for comparing non-numeric objects (like datetimes)
  * ``load_tests`` protocol for loading tests from modules or packages
  * ``startTestRun`` and ``stopTestRun`` methods on TestResult
  * various other API improvements and fixes

  .. note:: Command line usage

      In Python 2.7 you invoke the unittest command line features (including test
      discover) with ``python -m unittest <args>``. As unittest is a package, and
      the ability to invoke packages with ``python -m ...`` is new in Python 2.7,
      we can't do this for unittest2.

      Instead unittest2 comes with a script ``unit2``.
      `Command line usage
      <http://docs.python.org/dev/library/unittest.html#command-line-interface>`_::

          unit2 discover
          unit2 -v test_module

      There is also a copy of this script called ``unit2.py``, useful for Windows
      which uses file-extensions rather than shebang lines to determine what
      program to execute files with. Both of these scripts are installed by
      distutils.

  Until I write proper documentation, the best information on all the new features
  is the development version of the Python documentation for Python 2.7:

  * http://docs.python.org/dev/library/unittest.html

  Look for notes about features added or changed in Python 2.7.

  .. note::

      unittest2 is already in use for development of `distutils2
      <http://hg.python.org/distutils2>`_.

      Version 0.5.1 of unittest2 has feature parity with unittest_ in Python 2.7
      final. If you want to ensure that your tests run identically under unittest2
      and unittest in Python 2.7 you should use unittest2 0.5.1.

      Later versions of unittest2 include changes in unittest made in Python 3.2
      and onwards after the release of Python 2.7.


  .. _unittest: http://docs.python.org/release/2.7/library/unittest.html


  Differences
  ===========

  Differences between unittest2 and unittest in Python 2.7:

  ``assertItemsEqual`` does not silence Py3k warnings as this uses
  ``warnings.catch_warnings()`` which is new in Python 2.6 (and is used as a
  context manager which would be a pain to make work with Python 2.4).

  ``TestCase.longMessage`` defaults to True because it is better. It defaults to
  False in Python 2.7 for backwards compatibility reasons.

  ``python -m package`` doesn't work in versions of Python before Python 2.7. The
  command line features of unittest2 are provided by a ``unit2`` (and
  ``unit2.py``) script instead.

  unittest2 includes a very basic setuptools compatible test collector. Specify
  ``test_suite = 'unittest2.collector'`` in your setup.py. This starts test
  discovery with the default parameters from the directory containing setup.py, so
  it is perhaps most useful as an example (see unittest2/collector.py).

  In unittest2 TextTestResult.stopTestRun is responsible for calling printErrors.
  This is desirable behaviour but in Python 3.1 TestResult.stopTestRun was
  documented as being empty and subclasses shouldn't need to call it. This would
  make the change backwards incompatible and needs thinking about.



  Issues
  ======

  A ``TestResult`` object with unexpected successes returns True
  for ``result.wasSuccessful()``. Difficult to know if this is the correct
  behaviour or not.

  If a dotted path name is used for test discovery then a globally installed
  module/package will still be used in preference of one in the current
  directory. When doing discovery from a dotted path name we could check for this
  specific case.

  The ``removeHandler`` decorator could also be a context manager.

  `Issue 8313: <http://bugs.python.org/issue8313>`_, \<unprintable AssertionError object\>
  message in unittest tracebacks, is hard to fix in versions of Python before 2.7.
  The fix in Python 2.7 relies on changes to both the traceback module and
  traceback objects. As the issue is rare I am leaving it unfixed in unittest2.

  There are several places in unittest2 (and unittest) that call ``str(...)`` on
  exceptions to get the exception message. This can fail if the exception was
  created with non-ascii unicode. This is rare and I won't address it unless it is
  actually reported as a problem for someone.

  A comparison of text or long sequences (using ``assertSequenceEqual`` or
  ``assertMultiLineEqual`` etc) can take a *long* time to generate diffs for
  failure messages. These methods use ``prettyprint`` and ``difflib``.

  ``pip install -e .`` on Python3.2 in the unittest2 source will fail unless
  setuptools > 0.6.24 is already installed. This is a combination of needing a
  newer setuptools (to avoid the use of execfile) and setup_requires falling back
  to easy_install that doesn't know how to upgrade setuptools just-in-time that
  prevents it being fixed in unittest2.


  CHANGELOG
  =========

  2015-06-20 - 1.1.0
  ------------------

  - Issue #15836: assertRaises(), assertRaisesRegex(), assertWarns() and
    assertWarnsRegex() assertments now check the type of the first argument
    to prevent possible user error.  Based on patch by Daniel Wagner-Hall.

  - Issue #24134: assertRaises(), assertRaisesRegex(), assertWarns() and
    assertWarnsRegex() checks now emits a deprecation warning when callable is
    None or keyword arguments except msg is passed in the context manager mode.

  - Issue #22903: The fake test case created by unittest.loader when it fails
    importing a test module is now picklable.


  2015-03-12 - 1.0.1
  ------------------

  - Unittest2 issue #94: Need at least 1.4 of six.

  2015-03-06 - 1.0.0
  ------------------

  - Issue #22936: Permit showing local variables in tracebacks.

  2014/11/05 - 0.8
  ----------------

  - Issue #22457: Honour load_tests in the start_dir of discovery.

  - Issue #22894: TestCase.subTest() would cause the test suite to be stopped
    when in failfast mode, even in the absence of failures.

  2014/10/31 - 0.7.1
  ------------------

  Fix for 0.7.0 being broken. Also switches from both manual and entrypoint
  scripts to just entrypoint scripts to reduce the possibility of similar
  oversights in future.

  2014/10/31 - 0.7.0
  ------------------

  This release contains backports from cPython 3.5 of all (I think) commits since
  2010, as of today.

  2014/10/28 - 0.6.0
  ------------------

  Many thanks to Mark Roddy and Ezio Melotti who contributed substantially to
  this release.

  * Changed supported Python versions to start at 2.6, and include all released 3.x
    and pypy. (Robert Collins)
  * Invoking `unit2` without args starts test discovery
  * Added `TestCase.assertWarns` and `TestCase.assertWarnsRegexp` context managers
  * Fix Python issue 9926. TestSuite subclasses that override __call__ are called
    correctly.
  * Removed unused `maxDiff` parameter from `TestCase.assertSequenceEqual`.
  * DeprecationWarning for unsupported result objects (missing addSkip method)
    became RuntimeWarning.
  * Addition of `TestCase.assertWarns` as a context manager.


  2010/07/12 - 0.5.1
  ------------------

  Reverted script names created by setuptools back to "unit2" instead of
  "unit2.py". (Not necessary as setuptools creates stub .exes for console scripts
  anyway.)


  2010/07/11 - 0.5.0
  ------------------

  Addition of a setuptools compatible test collector (very basic). Specify
  ``test_suite = 'unittest2.collector'`` in your setup.py.

  ``TestSuite.debug()`` and ``TestCase.debug()`` now execute cleanup functions
  and class and module level setups and teardowns.

  No longer monkey-patch os.path.relpath for Python 2.4 / 2.5 so that projects
  don't accidentally depend on our patching. Contributed by Konrad Delong.

  Added a Python version specific unit2 entrypoint. This will, for example,
  create a ``unit2-2.6`` script if unittest2 is installed with Python 2.6.
  (Requires setuptools or distribute.)

  Python 2.3 compatibility (in the python2.3 branch of the repository),
  contributed by Mark Roddy.

  setuptools console script entry points are created as '.py' scripts on Windows.

  Feature parity with the Python 2.7 final release.


  2010/06/06 - 0.4.2
  ------------------

  Improved help message for ``unit2 discover -h``.

  SkipTest in unittest.TestCase.setUpClass or setUpModule is now reported as a
  skip rather than an error.

  Excessively large diffs due to ``TestCase.assertSequenceEqual`` are no
  longer included in failure reports. (Controlled by ``TestCase.maxDiff``.)

  Matching files during test discovery is done in ``TestLoader._match_path``. This
  method can be overriden in subclasses to, for example, match on the full file
  path or use regular expressions for matching.

  Addition of a setuptools compatible entrypoint for the unit2 test runner script.
  Contributed by Chris Withers.

  Tests fixed to be compatible with Python 2.7, where deprecation warnings are
  silenced by default.

  Feature parity with unittest in Python 2.7 RC 1.


  2010/05/09 - 0.4.1
  ------------------

  If test discovery imports a module from the wrong location (usually because the
  module is globally installed and the user is expecting to run tests against a
  development version in a different location) then discovery halts with an
  ``ImportError`` and the problem is reported.

  Added docstrings to ``assertRegexpMatches`` and ``assertNotRegexpMatches``.

  Putting functions in test suites no longer crashes.

  Feature parity with unittest in Python 2.7 Beta 2.

  2010/04/08 - 0.4.0
  ------------------

  Addition of ``removeHandler`` for removing the control-C handler.

  ``delta`` keyword argument for ``assertAlmostEqual`` and
  ``assertNotAlmostEqual``.

  Addition of -b command line option (and ``TestResult.buffer``) for buffering
  stdout / stderr during test runs.

  Addition of ``TestCase.assertNotRegexpMatches``.

  Allow test discovery using dotted module names instead of a path.

  All imports requiring the signal module are now optional, for compatiblity
  with IronPython (or other platforms without this module).

  Tests fixed to be compatible with nosetest.


  2010/03/26 - 0.3.0
  ------------------

  ``assertSameElements`` removed and ``assertItemsEqual`` added; assert that
  sequences contain the same elements.

  Addition of -f/--failfast command line option, stopping test run on first
  failure or error.

  Addition of -c/--catch command line option for better control-C handling during
  test runs.

  Added ``BaseTestSuite``, for use by frameworks that don't want to support shared
  class and module fixtures.

  Skipped test methods no longer have ``setUp`` and ``tearDown`` called around
  them.

  Faulty ``load_tests`` functions no longer halt test discovery.

  Using non-strings for failure messages now works.

  Potential for ``UnicodeDecodeError`` whilst creating failure messages fixed.

  Split out monolithic test module into a package.

  BUGFIX: Correct usage message now shown for unit2 scripts.

  BUGFIX: ``__unittest`` in module globals trims frames from that module in
  reported stacktraces.


  2010/03/06 - 0.2.0
  ------------------

  The ``TextTestRunner`` is now compatible with old result objects and standard
  (non-TextTestResult) ``TestResult`` objects.

  ``setUpClass`` / ``tearDownClass`` / ``setUpModule`` / ``tearDownModule`` added.


  2010/02/22 - 0.1.6
  ------------------

  Fix for compatibility with old ``TestResult`` objects. New tests can now be run
  with nosetests (with a DeprecationWarning for ``TestResult`` objects without
  methods to support skipping etc).


  0.1
  ---

  Initial release.


  TODO
  ====

  * Document ``SkipTest``, ``BaseTestSuite```

  Release process
  ===============

  1. Make sure there is an entry in the Changelog in this document.
  1. Update __version__ in unittest2/__init__.py
  1. Commit.
  1. Create a tag for the version (e.g. ``hg tag 0.6.0``)
  1. Push so there is no outstanding patches and no room for races.
  1. Run ``make release`` to build an sdist and wheel and upload to pypi.


pkgId: fe0ff1bb3a99ec504c1ac6d70530e984f161fd720ee451af9a9f1ca285fa8206
name: rh-python36-urllib3
arch: noarch
version: 1.25.8
epoch: 0
release: 1
summary: HTTP library with thread-safe connection pooling, file post, and more.
url: https://urllib3.readthedocs.io/
rpm_license: MIT
rpm_vendor: Andrey Petrov <andrey.petrov@shazow.net>
rpm_group: Development/Libraries
rpm_buildhost: c9de8041b9974aa19d45a592d52170c1
rpm_sourcerpm: rh-python36-urllib3-1.25.8-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01172329-rh-python36-urllib3/rh-python36-urllib3-1.25.8-1.noarch.rpm
checksum_type: sha256
description:
  urllib3
  =======

  .. image:: https://travis-ci.org/urllib3/urllib3.svg?branch=master
          :alt: Build status on Travis
          :target: https://travis-ci.org/urllib3/urllib3

  .. image:: https://img.shields.io/appveyor/ci/urllib3/urllib3/master.svg
          :alt: Build status on AppVeyor
          :target: https://ci.appveyor.com/project/urllib3/urllib3

  .. image:: https://readthedocs.org/projects/urllib3/badge/?version=latest
          :alt: Documentation Status
          :target: https://urllib3.readthedocs.io/en/latest/

  .. image:: https://img.shields.io/codecov/c/github/urllib3/urllib3.svg
          :alt: Coverage Status
          :target: https://codecov.io/gh/urllib3/urllib3

  .. image:: https://img.shields.io/pypi/v/urllib3.svg?maxAge=86400
          :alt: PyPI version
          :target: https://pypi.org/project/urllib3/

  .. image:: https://www.bountysource.com/badge/tracker?tracker_id=192525
          :alt: Bountysource
          :target: https://www.bountysource.com/trackers/192525-urllib3?utm_source=192525&utm_medium=shield&utm_campaign=TRACKER_BADGE

  .. image:: https://badges.gitter.im/python-urllib3/Lobby.svg
          :alt: Gitter
          :target: https://gitter.im/python-urllib3/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

  urllib3 is a powerful, *sanity-friendly* HTTP client for Python. Much of the
  Python ecosystem already uses urllib3 and you should too.
  urllib3 brings many critical features that are missing from the Python
  standard libraries:

  - Thread safety.
  - Connection pooling.
  - Client-side SSL/TLS verification.
  - File uploads with multipart encoding.
  - Helpers for retrying requests and dealing with HTTP redirects.
  - Support for gzip and deflate encoding.
  - Proxy support for HTTP and SOCKS.
  - 100% test coverage.

  urllib3 is powerful and easy to use::

      >>> import urllib3
      >>> http = urllib3.PoolManager()
      >>> r = http.request('GET', 'http://httpbin.org/robots.txt')
      >>> r.status
      200
      >>> r.data
      'User-agent: *\nDisallow: /deny\n'


  Installing
  ----------

  urllib3 can be installed with `pip <https://pip.pypa.io>`_::

      $ pip install urllib3

  Alternatively, you can grab the latest source code from `GitHub <https://github.com/urllib3/urllib3>`_::

      $ git clone git://github.com/urllib3/urllib3.git
      $ python setup.py install


  Documentation
  -------------

  urllib3 has usage and reference documentation at `urllib3.readthedocs.io <https://urllib3.readthedocs.io>`_.


  Contributing
  ------------

  urllib3 happily accepts contributions. Please see our
  `contributing documentation <https://urllib3.readthedocs.io/en/latest/contributing.html>`_
  for some tips on getting started.


  Maintainers
  -----------

  - `@theacodes <https://github.com/theacodes>`_ (Thea Flowers)
  - `@SethMichaelLarson <https://github.com/SethMichaelLarson>`_ (Seth M. Larson)
  - `@haikuginger <https://github.com/haikuginger>`_ (Jesse Shapiro)
  - `@lukasa <https://github.com/lukasa>`_ (Cory Benfield)
  - `@sigmavirus24 <https://github.com/sigmavirus24>`_ (Ian Cordasco)
  - `@shazow <https://github.com/shazow>`_ (Andrey Petrov)

  👋


  Sponsorship
  -----------

  If your company benefits from this library, please consider `sponsoring its
  development <https://urllib3.readthedocs.io/en/latest/contributing.html#sponsorship>`_.

  Sponsors include:

  - Google Cloud Platform (2018-present), sponsors `@theacodes <https://github.com/theacodes>`_'s work on an ongoing basis
  - Abbott (2018-present), sponsors `@SethMichaelLarson <https://github.com/SethMichaelLarson>`_'s work on an ongoing basis
  - Akamai (2017-present), sponsors `@haikuginger <https://github.com/haikuginger>`_'s work on an ongoing basis
  - Hewlett Packard Enterprise (2016-2017), sponsored `@Lukasa’s <https://github.com/Lukasa>`_ work on urllib3


  Changes
  =======

  1.24 (2018-10-16)
  -----------------

  * Allow key_server_hostname to be specified when initializing a PoolManager to allow custom SNI to be overridden. (Pull #1449)

  * Test against Python 3.7 on AppVeyor. (Pull #1453)

  * Early-out ipv6 checks when running on App Engine. (Pull #1450)

  * Change ambiguous description of backoff_factor (Pull #1436)

  * Add ability to handle multiple Content-Encodings (Issue #1441 and Pull #1442)

  * Skip DNS names that can't be idna-decoded when using pyOpenSSL (Issue #1405).

  * Add a server_hostname parameter to HTTPSConnection which allows for
    overriding the SNI hostname sent in the handshake. (Pull #1397)

  * Drop support for EOL Python 2.6 (Pull #1429 and Pull #1430)

  * Fixed bug where responses with header Content-Type: message/* erroneously
    raised HeaderParsingError, resulting in a warning being logged. (Pull #1439)

  * Move urllib3 to src/urllib3 (Pull #1409)


  1.23 (2018-06-04)
  -----------------

  * Allow providing a list of headers to strip from requests when redirecting
    to a different host. Defaults to the ``Authorization`` header. Different
    headers can be set via ``Retry.remove_headers_on_redirect``. (Issue #1316)

  * Fix ``util.selectors._fileobj_to_fd`` to accept ``long`` (Issue #1247).

  * Dropped Python 3.3 support. (Pull #1242)

  * Put the connection back in the pool when calling stream() or read_chunked() on
    a chunked HEAD response. (Issue #1234)

  * Fixed pyOpenSSL-specific ssl client authentication issue when clients
    attempted to auth via certificate + chain (Issue #1060)

  * Add the port to the connectionpool connect print (Pull #1251)

  * Don't use the ``uuid`` module to create multipart data boundaries. (Pull #1380)

  * ``read_chunked()`` on a closed response returns no chunks. (Issue #1088)

  * Add Python 2.6 support to ``contrib.securetransport`` (Pull #1359)

  * Added support for auth info in url for SOCKS proxy (Pull #1363)


  1.22 (2017-07-20)
  -----------------

  * Fixed missing brackets in ``HTTP CONNECT`` when connecting to IPv6 address via
    IPv6 proxy. (Issue #1222)

  * Made the connection pool retry on ``SSLError``.  The original ``SSLError``
    is available on ``MaxRetryError.reason``. (Issue #1112)

  * Drain and release connection before recursing on retry/redirect.  Fixes
    deadlocks with a blocking connectionpool. (Issue #1167)

  * Fixed compatibility for cookiejar. (Issue #1229)

  * pyopenssl: Use vendored version of ``six``. (Issue #1231)


  1.21.1 (2017-05-02)
  -------------------

  * Fixed SecureTransport issue that would cause long delays in response body
    delivery. (Pull #1154)

  * Fixed regression in 1.21 that threw exceptions when users passed the
    ``socket_options`` flag to the ``PoolManager``.  (Issue #1165)

  * Fixed regression in 1.21 that threw exceptions when users passed the
    ``assert_hostname`` or ``assert_fingerprint`` flag to the ``PoolManager``.
    (Pull #1157)


  1.21 (2017-04-25)
  -----------------

  * Improved performance of certain selector system calls on Python 3.5 and
    later. (Pull #1095)

  * Resolved issue where the PyOpenSSL backend would not wrap SysCallError
    exceptions appropriately when sending data. (Pull #1125)

  * Selectors now detects a monkey-patched select module after import for modules
    that patch the select module like eventlet, greenlet. (Pull #1128)

  * Reduced memory consumption when streaming zlib-compressed responses
    (as opposed to raw deflate streams). (Pull #1129)

  * Connection pools now use the entire request context when constructing the
    pool key. (Pull #1016)

  * ``PoolManager.connection_from_*`` methods now accept a new keyword argument,
    ``pool_kwargs``, which are merged with the existing ``connection_pool_kw``.
    (Pull #1016)

  * Add retry counter for ``status_forcelist``. (Issue #1147)

  * Added ``contrib`` module for using SecureTransport on macOS:
    ``urllib3.contrib.securetransport``.  (Pull #1122)

  * urllib3 now only normalizes the case of ``http://`` and ``https://`` schemes:
    for schemes it does not recognise, it assumes they are case-sensitive and
    leaves them unchanged.
    (Issue #1080)


  1.20 (2017-01-19)
  -----------------

  * Added support for waiting for I/O using selectors other than select,
    improving urllib3's behaviour with large numbers of concurrent connections.
    (Pull #1001)

  * Updated the date for the system clock check. (Issue #1005)

  * ConnectionPools now correctly consider hostnames to be case-insensitive.
    (Issue #1032)

  * Outdated versions of PyOpenSSL now cause the PyOpenSSL contrib module
    to fail when it is injected, rather than at first use. (Pull #1063)

  * Outdated versions of cryptography now cause the PyOpenSSL contrib module
    to fail when it is injected, rather than at first use. (Issue #1044)

  * Automatically attempt to rewind a file-like body object when a request is
    retried or redirected. (Pull #1039)

  * Fix some bugs that occur when modules incautiously patch the queue module.
    (Pull #1061)

  * Prevent retries from occurring on read timeouts for which the request method
    was not in the method whitelist. (Issue #1059)

  * Changed the PyOpenSSL contrib module to lazily load idna to avoid
    unnecessarily bloating the memory of programs that don't need it. (Pull
    

  * Add support for IPv6 literals with zone identifiers. (Pull #1013)

  * Added support for socks5h:// and socks4a:// schemes when working with SOCKS
    proxies, and controlled remote DNS appropriately. (Issue #1035)


  1.19.1 (2016-11-16)
  -------------------

  * Fixed AppEngine import that didn't function on Python 3.5. (Pull #1025)


  1.19 (2016-11-03)
  -----------------

  * urllib3 now respects Retry-After headers on 413, 429, and 503 responses when
    using the default retry logic. (Pull #955)

  * Remove markers from setup.py to assist ancient setuptools versions. (Issue
    

  * Disallow superscripts and other integerish things in URL ports. (Issue #989)

  * Allow urllib3's HTTPResponse.stream() method to continue to work with
    non-httplib underlying FPs. (Pull #990)

  * Empty filenames in multipart headers are now emitted as such, rather than
    being suppressed. (Issue #1015)

  * Prefer user-supplied Host headers on chunked uploads. (Issue #1009)


  1.18.1 (2016-10-27)
  -------------------

  * CVE-2016-9015. Users who are using urllib3 version 1.17 or 1.18 along with
    PyOpenSSL injection and OpenSSL 1.1.0 *must* upgrade to this version. This
    release fixes a vulnerability whereby urllib3 in the above configuration
    would silently fail to validate TLS certificates due to erroneously setting
    invalid flags in OpenSSL's ``SSL_CTX_set_verify`` function. These erroneous
    flags do not cause a problem in OpenSSL versions before 1.1.0, which
    interprets the presence of any flag as requesting certificate validation.

    There is no PR for this patch, as it was prepared for simultaneous disclosure
    and release. The master branch received the same fix in PR #1010.


  1.18 (2016-09-26)
  -----------------

  * Fixed incorrect message for IncompleteRead exception. (PR #973)

  * Accept ``iPAddress`` subject alternative name fields in TLS certificates.
    (Issue #258)

  * Fixed consistency of ``HTTPResponse.closed`` between Python 2 and 3.
    (Issue #977)

  * Fixed handling of wildcard certificates when using PyOpenSSL. (Issue #979)


  1.17 (2016-09-06)
  -----------------

  * Accept ``SSLContext`` objects for use in SSL/TLS negotiation. (Issue #835)

  * ConnectionPool debug log now includes scheme, host, and port. (Issue #897)

  * Substantially refactored documentation. (Issue #887)

  * Used URLFetch default timeout on AppEngine, rather than hardcoding our own.
    (Issue #858)

  * Normalize the scheme and host in the URL parser (Issue #833)

  * ``HTTPResponse`` contains the last ``Retry`` object, which now also
    contains retries history. (Issue #848)

  * Timeout can no longer be set as boolean, and must be greater than zero.
    (PR #924)

  * Removed pyasn1 and ndg-httpsclient from dependencies used for PyOpenSSL. We
    now use cryptography and idna, both of which are already dependencies of
    PyOpenSSL. (PR #930)

  * Fixed infinite loop in ``stream`` when amt=None. (Issue #928)

  * Try to use the operating system's certificates when we are using an
    ``SSLContext``. (PR #941)

  * Updated cipher suite list to allow ChaCha20+Poly1305. AES-GCM is preferred to
    ChaCha20, but ChaCha20 is then preferred to everything else. (PR #947)

  * Updated cipher suite list to remove 3DES-based cipher suites. (PR #958)

  * Removed the cipher suite fallback to allow HIGH ciphers. (PR #958)

  * Implemented ``length_remaining`` to determine remaining content
    to be read. (PR #949)

  * Implemented ``enforce_content_length`` to enable exceptions when
    incomplete data chunks are received. (PR #949)

  * Dropped connection start, dropped connection reset, redirect, forced retry,
    and new HTTPS connection log levels to DEBUG, from INFO. (PR #967)


  1.16 (2016-06-11)
  -----------------

  * Disable IPv6 DNS when IPv6 connections are not possible. (Issue #840)

  * Provide ``key_fn_by_scheme`` pool keying mechanism that can be
    overridden. (Issue #830)

  * Normalize scheme and host to lowercase for pool keys, and include
    ``source_address``. (Issue #830)

  * Cleaner exception chain in Python 3 for ``_make_request``.
    (Issue #861)

  * Fixed installing ``urllib3[socks]`` extra. (Issue #864)

  * Fixed signature of ``ConnectionPool.close`` so it can actually safely be
    called by subclasses. (Issue #873)

  * Retain ``release_conn`` state across retries. (Issues #651, #866)

  * Add customizable ``HTTPConnectionPool.ResponseCls``, which defaults to
    ``HTTPResponse`` but can be replaced with a subclass. (Issue #879)


  1.15.1 (2016-04-11)
  -------------------

  * Fix packaging to include backports module. (Issue #841)


  1.15 (2016-04-06)
  -----------------

  * Added Retry(raise_on_status=False). (Issue #720)

  * Always use setuptools, no more distutils fallback. (Issue #785)

  * Dropped support for Python 3.2. (Issue #786)

  * Chunked transfer encoding when requesting with ``chunked=True``.
    (Issue #790)

  * Fixed regression with IPv6 port parsing. (Issue #801)

  * Append SNIMissingWarning messages to allow users to specify it in
    the PYTHONWARNINGS environment variable. (Issue #816)

  * Handle unicode headers in Py2. (Issue #818)

  * Log certificate when there is a hostname mismatch. (Issue #820)

  * Preserve order of request/response headers. (Issue #821)


  1.14 (2015-12-29)
  -----------------

  * contrib: SOCKS proxy support! (Issue #762)

  * Fixed AppEngine handling of transfer-encoding header and bug
    in Timeout defaults checking. (Issue #763)


  1.13.1 (2015-12-18)
  -------------------

  * Fixed regression in IPv6 + SSL for match_hostname. (Issue #761)


  1.13 (2015-12-14)
  -----------------

  * Fixed ``pip install urllib3[secure]`` on modern pip. (Issue #706)

  * pyopenssl: Fixed SSL3_WRITE_PENDING error. (Issue #717)

  * pyopenssl: Support for TLSv1.1 and TLSv1.2. (Issue #696)

  * Close connections more defensively on exception. (Issue #734)

  * Adjusted ``read_chunked`` to handle gzipped, chunk-encoded bodies without
    repeatedly flushing the decoder, to function better on Jython. (Issue #743)

  * Accept ``ca_cert_dir`` for SSL-related PoolManager configuration. (Issue #758)


  1.12 (2015-09-03)
  -----------------

  * Rely on ``six`` for importing ``httplib`` to work around
    conflicts with other Python 3 shims. (Issue #688)

  * Add support for directories of certificate authorities, as supported by
    OpenSSL. (Issue #701)

  * New exception: ``NewConnectionError``, raised when we fail to establish
    a new connection, usually ``ECONNREFUSED`` socket error.


  1.11 (2015-07-21)
  -----------------

  * When ``ca_certs`` is given, ``cert_reqs`` defaults to
    ``'CERT_REQUIRED'``. (Issue #650)

  * ``pip install urllib3[secure]`` will install Certifi and
    PyOpenSSL as dependencies. (Issue #678)

  * Made ``HTTPHeaderDict`` usable as a ``headers`` input value
    (Issues #632, #679)

  * Added `urllib3.contrib.appengine <https://urllib3.readthedocs.io/en/latest/contrib.html#google-app-engine>`_
    which has an ``AppEngineManager`` for using ``URLFetch`` in a
    Google AppEngine environment. (Issue #664)

  * Dev: Added test suite for AppEngine. (Issue #631)

  * Fix performance regression when using PyOpenSSL. (Issue #626)

  * Passing incorrect scheme (e.g. ``foo://``) will raise
    ``ValueError`` instead of ``AssertionError`` (backwards
    compatible for now, but please migrate). (Issue #640)

  * Fix pools not getting replenished when an error occurs during a
    request using ``release_conn=False``. (Issue #644)

  * Fix pool-default headers not applying for url-encoded requests
    like GET. (Issue #657)

  * log.warning in Python 3 when headers are skipped due to parsing
    errors. (Issue #642)

  * Close and discard connections if an error occurs during read.
    (Issue #660)

  * Fix host parsing for IPv6 proxies. (Issue #668)

  * Separate warning type SubjectAltNameWarning, now issued once
    per host. (Issue #671)

  * Fix ``httplib.IncompleteRead`` not getting converted to
    ``ProtocolError`` when using ``HTTPResponse.stream()``
    (Issue #674)

  1.10.4 (2015-05-03)
  -------------------

  * Migrate tests to Tornado 4. (Issue #594)

  * Append default warning configuration rather than overwrite.
    (Issue #603)

  * Fix streaming decoding regression. (Issue #595)

  * Fix chunked requests losing state across keep-alive connections.
    (Issue #599)

  * Fix hanging when chunked HEAD response has no body. (Issue #605)


  1.10.3 (2015-04-21)
  -------------------

  * Emit ``InsecurePlatformWarning`` when SSLContext object is missing.
    (Issue #558)

  * Fix regression of duplicate header keys being discarded.
    (Issue #563)

  * ``Response.stream()`` returns a generator for chunked responses.
    (Issue #560)

  * Set upper-bound timeout when waiting for a socket in PyOpenSSL.
    (Issue #585)

  * Work on platforms without `ssl` module for plain HTTP requests.
    (Issue #587)

  * Stop relying on the stdlib's default cipher list. (Issue #588)


  1.10.2 (2015-02-25)
  -------------------

  * Fix file descriptor leakage on retries. (Issue #548)

  * Removed RC4 from default cipher list. (Issue #551)

  * Header performance improvements. (Issue #544)

  * Fix PoolManager not obeying redirect retry settings. (Issue #553)


  1.10.1 (2015-02-10)
  -------------------

  * Pools can be used as context managers. (Issue #545)

  * Don't re-use connections which experienced an SSLError. (Issue #529)

  * Don't fail when gzip decoding an empty stream. (Issue #535)

  * Add sha256 support for fingerprint verification. (Issue #540)

  * Fixed handling of header values containing commas. (Issue #533)


  1.10 (2014-12-14)
  -----------------

  * Disabled SSLv3. (Issue #473)

  * Add ``Url.url`` property to return the composed url string. (Issue #394)

  * Fixed PyOpenSSL + gevent ``WantWriteError``. (Issue #412)

  * ``MaxRetryError.reason`` will always be an exception, not string.
    (Issue #481)

  * Fixed SSL-related timeouts not being detected as timeouts. (Issue #492)

  * Py3: Use ``ssl.create_default_context()`` when available. (Issue #473)

  * Emit ``InsecureRequestWarning`` for *every* insecure HTTPS request.
    (Issue #496)

  * Emit ``SecurityWarning`` when certificate has no ``subjectAltName``.
    (Issue #499)

  * Close and discard sockets which experienced SSL-related errors.
    (Issue #501)

  * Handle ``body`` param in ``.request(...)``. (Issue #513)

  * Respect timeout with HTTPS proxy. (Issue #505)

  * PyOpenSSL: Handle ZeroReturnError exception. (Issue #520)


  1.9.1 (2014-09-13)
  ------------------

  * Apply socket arguments before binding. (Issue #427)

  * More careful checks if fp-like object is closed. (Issue #435)

  * Fixed packaging issues of some development-related files not
    getting included. (Issue #440)

  * Allow performing *only* fingerprint verification. (Issue #444)

  * Emit ``SecurityWarning`` if system clock is waaay off. (Issue #445)

  * Fixed PyOpenSSL compatibility with PyPy. (Issue #450)

  * Fixed ``BrokenPipeError`` and ``ConnectionError`` handling in Py3.
    (Issue #443)



  1.9 (2014-07-04)
  ----------------

  * Shuffled around development-related files. If you're maintaining a distro
    package of urllib3, you may need to tweak things. (Issue #415)

  * Unverified HTTPS requests will trigger a warning on the first request. See
    our new `security documentation
    <https://urllib3.readthedocs.io/en/latest/security.html>`_ for details.
    (Issue #426)

  * New retry logic and ``urllib3.util.retry.Retry`` configuration object.
    (Issue #326)

  * All raised exceptions should now wrapped in a
    ``urllib3.exceptions.HTTPException``-extending exception. (Issue #326)

  * All errors during a retry-enabled request should be wrapped in
    ``urllib3.exceptions.MaxRetryError``, including timeout-related exceptions
    which were previously exempt. Underlying error is accessible from the
    ``.reason`` property. (Issue #326)

  * ``urllib3.exceptions.ConnectionError`` renamed to
    ``urllib3.exceptions.ProtocolError``. (Issue #326)

  * Errors during response read (such as IncompleteRead) are now wrapped in
    ``urllib3.exceptions.ProtocolError``. (Issue #418)

  * Requesting an empty host will raise ``urllib3.exceptions.LocationValueError``.
    (Issue #417)

  * Catch read timeouts over SSL connections as
    ``urllib3.exceptions.ReadTimeoutError``. (Issue #419)

  * Apply socket arguments before connecting. (Issue #427)


  1.8.3 (2014-06-23)
  ------------------

  * Fix TLS verification when using a proxy in Python 3.4.1. (Issue #385)

  * Add ``disable_cache`` option to ``urllib3.util.make_headers``. (Issue #393)

  * Wrap ``socket.timeout`` exception with
    ``urllib3.exceptions.ReadTimeoutError``. (Issue #399)

  * Fixed proxy-related bug where connections were being reused incorrectly.
    (Issues #366, #369)

  * Added ``socket_options`` keyword parameter which allows to define
    ``setsockopt`` configuration of new sockets. (Issue #397)

  * Removed ``HTTPConnection.tcp_nodelay`` in favor of
    ``HTTPConnection.default_socket_options``. (Issue #397)

  * Fixed ``TypeError`` bug in Python 2.6.4. (Issue #411)


  1.8.2 (2014-04-17)
  ------------------

  * Fix ``urllib3.util`` not being included in the package.


  1.8.1 (2014-04-17)
  ------------------

  * Fix AppEngine bug of HTTPS requests going out as HTTP. (Issue #356)

  * Don't install ``dummyserver`` into ``site-packages`` as it's only needed
    for the test suite. (Issue #362)

  * Added support for specifying ``source_address``. (Issue #352)


  1.8 (2014-03-04)
  ----------------

  * Improved url parsing in ``urllib3.util.parse_url`` (properly parse '@' in
    username, and blank ports like 'hostname:').

  * New ``urllib3.connection`` module which contains all the HTTPConnection
    objects.

  * Several ``urllib3.util.Timeout``-related fixes. Also changed constructor
    signature to a more sensible order. [Backwards incompatible]
    (Issues #252, #262, #263)

  * Use ``backports.ssl_match_hostname`` if it's installed. (Issue #274)

  * Added ``.tell()`` method to ``urllib3.response.HTTPResponse`` which
    returns the number of bytes read so far. (Issue #277)

  * Support for platforms without threading. (Issue #289)

  * Expand default-port comparison in ``HTTPConnectionPool.is_same_host``
    to allow a pool with no specified port to be considered equal to to an
    HTTP/HTTPS url with port 80/443 explicitly provided. (Issue #305)

  * Improved default SSL/TLS settings to avoid vulnerabilities.
    (Issue #309)

  * Fixed ``urllib3.poolmanager.ProxyManager`` not retrying on connect errors.
    (Issue #310)

  * Disable Nagle's Algorithm on the socket for non-proxies. A subset of requests
    will send the entire HTTP request ~200 milliseconds faster; however, some of
    the resulting TCP packets will be smaller. (Issue #254)

  * Increased maximum number of SubjectAltNames in ``urllib3.contrib.pyopenssl``
    from the default 64 to 1024 in a single certificate. (Issue #318)

  * Headers are now passed and stored as a custom
    ``urllib3.collections_.HTTPHeaderDict`` object rather than a plain ``dict``.
    (Issue #329, #333)

  * Headers no longer lose their case on Python 3. (Issue #236)

  * ``urllib3.contrib.pyopenssl`` now uses the operating system's default CA
    certificates on inject. (Issue #332)

  * Requests with ``retries=False`` will immediately raise any exceptions without
    wrapping them in ``MaxRetryError``. (Issue #348)

  * Fixed open socket leak with SSL-related failures. (Issue #344, #348)


  1.7.1 (2013-09-25)
  ------------------

  * Added granular timeout support with new ``urllib3.util.Timeout`` class.
    (Issue #231)

  * Fixed Python 3.4 support. (Issue #238)


  1.7 (2013-08-14)
  ----------------

  * More exceptions are now pickle-able, with tests. (Issue #174)

  * Fixed redirecting with relative URLs in Location header. (Issue #178)

  * Support for relative urls in ``Location: ...`` header. (Issue #179)

  * ``urllib3.response.HTTPResponse`` now inherits from ``io.IOBase`` for bonus
    file-like functionality. (Issue #187)

  * Passing ``assert_hostname=False`` when creating a HTTPSConnectionPool will
    skip hostname verification for SSL connections. (Issue #194)

  * New method ``urllib3.response.HTTPResponse.stream(...)`` which acts as a
    generator wrapped around ``.read(...)``. (Issue #198)

  * IPv6 url parsing enforces brackets around the hostname. (Issue #199)

  * Fixed thread race condition in
    ``urllib3.poolmanager.PoolManager.connection_from_host(...)`` (Issue #204)

  * ``ProxyManager`` requests now include non-default port in ``Host: ...``
    header. (Issue #217)

  * Added HTTPS proxy support in ``ProxyManager``. (Issue #170 #139)

  * New ``RequestField`` object can be passed to the ``fields=...`` param which
    can specify headers. (Issue #220)

  * Raise ``urllib3.exceptions.ProxyError`` when connecting to proxy fails.
    (Issue #221)

  * Use international headers when posting file names. (Issue #119)

  * Improved IPv6 support. (Issue #203)


  1.6 (2013-04-25)
  ----------------

  * Contrib: Optional SNI support for Py2 using PyOpenSSL. (Issue #156)

  * ``ProxyManager`` automatically adds ``Host: ...`` header if not given.

  * Improved SSL-related code. ``cert_req`` now optionally takes a string like
    "REQUIRED" or "NONE". Same with ``ssl_version`` takes strings like "SSLv23"
    The string values reflect the suffix of the respective constant variable.
    (Issue #130)

  * Vendored ``socksipy`` now based on Anorov's fork which handles unexpectedly
    closed proxy connections and larger read buffers. (Issue #135)

  * Ensure the connection is closed if no data is received, fixes connection leak
    on some platforms. (Issue #133)

  * Added SNI support for SSL/TLS connections on Py32+. (Issue #89)

  * Tests fixed to be compatible with Py26 again. (Issue #125)

  * Added ability to choose SSL version by passing an ``ssl.PROTOCOL_*`` constant
    to the ``ssl_version`` parameter of ``HTTPSConnectionPool``. (Issue #109)

  * Allow an explicit content type to be specified when encoding file fields.
    (Issue #126)

  * Exceptions are now pickleable, with tests. (Issue #101)

  * Fixed default headers not getting passed in some cases. (Issue #99)

  * Treat "content-encoding" header value as case-insensitive, per RFC 2616
    Section 3.5. (Issue #110)

  * "Connection Refused" SocketErrors will get retried rather than raised.
    (Issue #92)

  * Updated vendored ``six``, no longer overrides the global ``six`` module
    namespace. (Issue #113)

  * ``urllib3.exceptions.MaxRetryError`` contains a ``reason`` property holding
    the exception that prompted the final retry. If ``reason is None`` then it
    was due to a redirect. (Issue #92, #114)

  * Fixed ``PoolManager.urlopen()`` from not redirecting more than once.
    (Issue #149)

  * Don't assume ``Content-Type: text/plain`` for multi-part encoding parameters
    that are not files. (Issue #111)

  * Pass `strict` param down to ``httplib.HTTPConnection``. (Issue #122)

  * Added mechanism to verify SSL certificates by fingerprint (md5, sha1) or
    against an arbitrary hostname (when connecting by IP or for misconfigured
    servers). (Issue #140)

  * Streaming decompression support. (Issue #159)


  1.5 (2012-08-02)
  ----------------

  * Added ``urllib3.add_stderr_logger()`` for quickly enabling STDERR debug
    logging in urllib3.

  * Native full URL parsing (including auth, path, query, fragment) available in
    ``urllib3.util.parse_url(url)``.

  * Built-in redirect will switch method to 'GET' if status code is 303.
    (Issue #11)

  * ``urllib3.PoolManager`` strips the scheme and host before sending the request
    uri. (Issue #8)

  * New ``urllib3.exceptions.DecodeError`` exception for when automatic decoding,
    based on the Content-Type header, fails.

  * Fixed bug with pool depletion and leaking connections (Issue #76). Added
    explicit connection closing on pool eviction. Added
    ``urllib3.PoolManager.clear()``.

  * 99% -> 100% unit test coverage.


  1.4 (2012-06-16)
  ----------------

  * Minor AppEngine-related fixes.

  * Switched from ``mimetools.choose_boundary`` to ``uuid.uuid4()``.

  * Improved url parsing. (Issue #73)

  * IPv6 url support. (Issue #72)


  1.3 (2012-03-25)
  ----------------

  * Removed pre-1.0 deprecated API.

  * Refactored helpers into a ``urllib3.util`` submodule.

  * Fixed multipart encoding to support list-of-tuples for keys with multiple
    values. (Issue #48)

  * Fixed multiple Set-Cookie headers in response not getting merged properly in
    Python 3. (Issue #53)

  * AppEngine support with Py27. (Issue #61)

  * Minor ``encode_multipart_formdata`` fixes related to Python 3 strings vs
    bytes.


  1.2.2 (2012-02-06)
  ------------------

  * Fixed packaging bug of not shipping ``test-requirements.txt``. (Issue #47)


  1.2.1 (2012-02-05)
  ------------------

  * Fixed another bug related to when ``ssl`` module is not available. (Issue #41)

  * Location parsing errors now raise ``urllib3.exceptions.LocationParseError``
    which inherits from ``ValueError``.


  1.2 (2012-01-29)
  ----------------

  * Added Python 3 support (tested on 3.2.2)

  * Dropped Python 2.5 support (tested on 2.6.7, 2.7.2)

  * Use ``select.poll`` instead of ``select.select`` for platforms that support
    it.

  * Use ``Queue.LifoQueue`` instead of ``Queue.Queue`` for more aggressive
    connection reusing. Configurable by overriding ``ConnectionPool.QueueCls``.

  * Fixed ``ImportError`` during install when ``ssl`` module is not available.
    (Issue #41)

  * Fixed ``PoolManager`` redirects between schemes (such as HTTP -> HTTPS) not
    completing properly. (Issue #28, uncovered by Issue #10 in v1.1)

  * Ported ``dummyserver`` to use ``tornado`` instead of ``webob`` +
    ``eventlet``. Removed extraneous unsupported dummyserver testing backends.
    Added socket-level tests.

  * More tests. Achievement Unlocked: 99% Coverage.


  1.1 (2012-01-07)
  ----------------

  * Refactored ``dummyserver`` to its own root namespace module (used for
    testing).

  * Added hostname verification for ``VerifiedHTTPSConnection`` by vendoring in
    Py32's ``ssl_match_hostname``. (Issue #25)

  * Fixed cross-host HTTP redirects when using ``PoolManager``. (Issue #10)

  * Fixed ``decode_content`` being ignored when set through ``urlopen``. (Issue
    

  * Fixed timeout-related bugs. (Issues #17, #23)


  1.0.2 (2011-11-04)
  ------------------

  * Fixed typo in ``VerifiedHTTPSConnection`` which would only present as a bug if
    you're using the object manually. (Thanks pyos)

  * Made RecentlyUsedContainer (and consequently PoolManager) more thread-safe by
    wrapping the access log in a mutex. (Thanks @christer)

  * Made RecentlyUsedContainer more dict-like (corrected ``__delitem__`` and
    ``__getitem__`` behaviour), with tests. Shouldn't affect core urllib3 code.


  1.0.1 (2011-10-10)
  ------------------

  * Fixed a bug where the same connection would get returned into the pool twice,
    causing extraneous "HttpConnectionPool is full" log warnings.


  1.0 (2011-10-08)
  ----------------

  * Added ``PoolManager`` with LRU expiration of connections (tested and
    documented).
  * Added ``ProxyManager`` (needs tests, docs, and confirmation that it works
    with HTTPS proxies).
  * Added optional partial-read support for responses when
    ``preload_content=False``. You can now make requests and just read the headers
    without loading the content.
  * Made response decoding optional (default on, same as before).
  * Added optional explicit boundary string for ``encode_multipart_formdata``.
  * Convenience request methods are now inherited from ``RequestMethods``. Old
    helpers like ``get_url`` and ``post_url`` should be abandoned in favour of
    the new ``request(method, url, ...)``.
  * Refactored code to be even more decoupled, reusable, and extendable.
  * License header added to ``.py`` files.
  * Embiggened the documentation: Lots of Sphinx-friendly docstrings in the code
    and docs in ``docs/`` and on https://urllib3.readthedocs.io/.
  * Embettered all the things!
  * Started writing this file.


  0.4.1 (2011-07-17)
  ------------------

  * Minor bug fixes, code cleanup.


  0.4 (2011-03-01)
  ----------------

  * Better unicode support.
  * Added ``VerifiedHTTPSConnection``.
  * Added ``NTLMConnectionPool`` in contrib.
  * Minor improvements.


  0.3.1 (2010-07-13)
  ------------------

  * Added ``assert_host_name`` optional parameter. Now compatible with proxies.


  0.3 (2009-12-10)
  ----------------

  * Added HTTPS support.
  * Minor bug fixes.
  * Refactored, broken backwards compatibility with 0.2.
  * API to be treated as stable from this version forward.


  0.2 (2008-11-17)
  ----------------

  * Added unit tests.
  * Bug fixes.


  0.1 (2008-11-16)
  ----------------

  * First release.


pkgId: ef346404afc65ca552393a2e1a67974cbcc97abd45a3aec2531fe05acffa6ae4
name: rh-python36-uwsgi-debuginfo
arch: ppc64le
version: 2.0.18
epoch: 0
release: 1
summary: Debug information for package rh-python36-uwsgi
url: https://uwsgi-docs.readthedocs.io/en/latest/
rpm_license: GPL2
rpm_vendor: Unbit <info@unbit.it>
rpm_group: Development/Debug
rpm_buildhost: 0dd27543e9b5423da51cf2a55a10de69
rpm_sourcerpm: rh-python36-uwsgi-2.0.18-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143855-rh-python36-uwsgi/rh-python36-uwsgi-debuginfo-2.0.18-1.ppc64le.rpm
checksum_type: sha256
description:
  This package provides debug information for package rh-python36-uwsgi.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 080dbee9c83fd46959310a8779e3e05090e1258b576d6fc97549a04dfcceafed
name: rh-python36-uwsgitop
arch: noarch
version: 0.11
epoch: 0
release: 1
summary: uWSGI top-like interface
rpm_license: MIT
rpm_vendor: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: 7469a5496ad24eb5a2b436b4dc5ff3b2
rpm_sourcerpm: rh-python36-uwsgitop-0.11-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143856-rh-python36-uwsgitop/rh-python36-uwsgitop-0.11-1.noarch.rpm
checksum_type: sha256
description:
  uwsgitop
  ========

  ``uwsgitop`` is a top-like command that uses the uWSGI Stats Server to
  monitor your uwsgi application.

  To use uWSGI Stat Server simply use the ``stats`` option followed by
  a valid socket address, for example::

      uwsgi --module myapp --socket :3030 --stats /tmp/stats.socket

  To start monitoring your application with ``uwsgitop`` call it with
  the socket address like so::

      uwsgitop /tmp/stats.socket

  If you want the stats served over HTTP you will need to add
  the ``stats-http`` option in uWSGI::

      uwsgi --module myapp --http :3030 --stats :3031 --stats-http

  You'll now need to call uwsgitop as::

      uwsgitop http://127.0.0.1:3031

  Installation
  ------------

  ::

      pip install uwsgitop

  Usage
  -----

  To display async core statistics (e.g. when using gevent) or to switch between
  core statistics display mode, press ``a``. To refresh the screen super fast press ``f``,
  and to quit, press ``q``.

  +--------+---------------------------------------------------------------+
  | Field  |  Description                                                  |
  +========+===============================================================+
  | WID    | Worker ID                                                     |
  +--------+---------------------------------------------------------------+
  | %      | Worker usage                                                  |
  +--------+---------------------------------------------------------------+
  | PID    | Worker PID                                                    |
  +--------+---------------------------------------------------------------+
  | REQ    | How many requests worker did since worker (re)spawn           |
  +--------+---------------------------------------------------------------+
  | RPS    | Requests per second                                           |
  +--------+---------------------------------------------------------------+
  | EXC    | Exceptions                                                    |
  +--------+---------------------------------------------------------------+
  | STATUS | Worker is busy or free to use?                                |
  +--------+---------------------------------------------------------------+
  | AVG    | Average request time                                          |
  +--------+---------------------------------------------------------------+
  | RSS    | Worker RSS (Resident Set Size, see linux memory management)   |
  +--------+---------------------------------------------------------------+
  | VSZ    | Worker VSZ (Virtual Memory Size, see linux memory management) |
  +--------+---------------------------------------------------------------+
  | TX     | How many data was transmitted by worker                       |
  +--------+---------------------------------------------------------------+
  | RunT   | How long worker is working                                    |
  +--------+---------------------------------------------------------------+

  Colors
  ------

  Lines would be displayed in different colors:

  - default console text color, if the worker is idle
  - ``green``, if the worker is busy
  - ``magenta``, if the worker is in ``cheap`` mode
  - ``yellow``, if the worker is handling an uwsgi signal
  - ``blue``, if the worker is ``suspended``


  Remember to enable ``memory-report`` in your uwsgi configuration to see how
  much memory resources your uwsgi processes are consuming.

  Further Reading
  ---------------

  For more info on uWSGI Stats Server see http://projects.unbit.it/uwsgi/wiki/StatsServer


pkgId: 3e1d15e5bd815723fa2559a4fe4d3d095d10f3a7053e3ed6a002c090c576ec90
name: rh-python36-vcversioner
arch: noarch
version: 2.16.0.0
epoch: 0
release: 1
summary: Use version control tags to discover version numbers
url: https://github.com/habnabit/vcversioner
rpm_license: ISC
rpm_vendor: Aaron Gallagher <_@habnab.it>
rpm_group: Development/Libraries
rpm_buildhost: ed69aa871658420283ddec37be3824a7
rpm_sourcerpm: rh-python36-vcversioner-2.16.0.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879152-rh-python36-vcversioner/rh-python36-vcversioner-2.16.0.0-1.noarch.rpm
checksum_type: sha256
description:
  .. image:: https://travis-ci.org/habnabit/vcversioner.png

  ===========
  vcversioner
  ===========

  `Elevator pitch`_: you can write a ``setup.py`` with no version information
  specified, and vcversioner will find a recent, properly-formatted VCS tag and
  extract a version from it.

  It's much more convenient to be able to use your version control system's
  tagging mechanism to derive a version number than to have to duplicate that
  information all over the place. I eventually ended up copy-pasting the same
  code into a couple different ``setup.py`` files just to avoid duplicating
  version information. But, copy-pasting is dumb and unit testing ``setup.py``
  files is hard. This code got factored out into vcversioner.


  Basic usage
  -----------

  vcversioner installs itself as a setuptools hook, which makes its use
  exceedingly simple::

    from setuptools import setup

    setup(
        
        setup_requires=['vcversioner'],
        vcversioner={},
    )

  The presence of a ``vcversioner`` argument automagically activates vcversioner
  and updates the project's version. The parameter to the ``vcversioner``
  argument can also be a dict of keyword arguments which |find_version|
  will be called with.

  To allow tarballs to be distributed without requiring a ``.git`` (or ``.hg``,
  etc.) directory, vcversioner will also write out a file named (by default)
  ``version.txt``. Then, if there is no VCS program or the program is unable to
  find any version information, vcversioner will read version information from
  the ``version.txt`` file. However, this file needs to be included in a
  distributed tarball, so the following line should be added to ``MANIFEST.in``::

    include version.txt

  This isn't necessary if ``setup.py`` will always be run from a checkout, but
  otherwise is essential for vcversioner to know what version to use.

  The name ``version.txt`` also can be changed by specifying the ``version_file``
  parameter. For example::

    from setuptools import setup

    setup(
        
        setup_requires=['vcversioner'],
        vcversioner={
            'version_file': 'custom_version.txt',
        },
    )

  For compatibility with `semantic versioning`_, ``vcversioner`` will strip
  leading ``'v'``\ s  from version tags. That is, the tag ``v1.0`` will be
  treated as if it was ``1.0``.

  Other prefixes can be specified to be stripped by using the ``strip_prefix``
  argument to vcversioner. For compatibility with ``git-dch``, one could specify
  the ``strip_prefix`` as ``'debian/'``.


  Non-hook usage
  --------------

  It's not necessary to depend on vcversioner; while `pip`_ will take care of
  dependencies automatically, sometimes having a self-contained project is
  simpler. vcversioner is a single file which is easy to add to a project. Simply
  copy the entire ``vcversioner.py`` file adjacent to the existing ``setup.py``
  file and update the usage slightly::

    from setuptools import setup
    import vcversioner

    setup(
        
        version=vcversioner.find_version().version,
    )

  This is necessary because the ``vcversioner`` distutils hook won't be
  available.


  Version modules
  ---------------

  ``setup.py`` isn't the only place that version information gets duplicated. By
  generating a version module, the ``__init__.py`` file of a package can import
  version information. For example, with a package named ``spam``::

    from setuptools import setup

    setup(
        
        setup_requires=['vcversioner'],
        vcversioner={
            'version_module_paths': ['spam/_version.py'],
        },
    )

  This will generate a ``spam/_version.py`` file that defines ``__version__`` and
  ``__revision__``. Then, in ``spam/__init__.py``::

    from spam._version import __version__, __revision__

  Since this acts like (and *is*) a regular python module, changing
  ``MANIFEST.in`` is not required.


  Customizing VCS commands
  ------------------------

  vcversioner by default tries to detect which VCS is being used and picks a
  command to run based on that. For git, that is ``git --git-dir s/.git
  describe --tags --long``. For hg, that is ``hg log -R s -r . --template
  '{latesttag}-{latesttagdistance}-hg{node|short}'``.

  Any command should output a string that describes the current commit in the
  format ``1.0-0-gdeadbeef``. Specifically, that is ``<version number>-<number of
  commits between the current commit and the version tagged commit>-<revision>``.
  The revision should have a VCS-specific prefix, e.g. ``g`` for git and ``hg``
  for hg.

  However, sometimes this isn't sufficient. If someone wanted to only use
  annotated tags, the git command could be amended like so::

    from setuptools import setup

    setup(
        
        setup_requires=['vcversioner'],
        vcversioner={
            'vcs_args': ['git', 'describe', '--long'],
        },
    )

  The ``vcs_args`` parameter must always be a list of strings, which will not be
  interpreted by the shell. This is the same as what ``subprocess.Popen``
  expects.

  This argument used to be spelled ``git_args`` until support for multiple VCS
  systems was added.


  Development versions
  --------------------

  vcversioner can also automatically make a version that corresponds to a commit
  that isn't itself tagged. Following `PEP 386`_, this is done by adding a
  ``.post`` suffix to the version specified by a tag on an earlier commit. For
  example, if the current commit is three revisions past the ``1.0`` tag, the
  computed version will be ``1.0.post3``.

  This behavior can be disabled by setting the ``include_dev_version`` parameter
  to ``False``. In that case, the aforementioned untagged commit's version would
  be just ``1.0``.

  Since hg requires a commit to make a tag, there's a parameter
  ``decrement_dev_version`` to subtract one from the number of commits after the
  most recent tag. If the VCS used is detected to be hg (i.e. the revision starts
  with ``'hg'``) and ``decrement_dev_version`` is not specified as ``False``,
  ``decrement_dev_version`` will be automatically set to ``True``.


  Project roots
  -------------

  In order to prevent contamination from other source repositories, vcversioner
  in the 1.x version series will only look in the project root directory for
  repositories. The project root defaults to the current working directory, which
  is often the case when running setup.py. This can be changed by specifying the
  ``root`` parameter. Someone concerned with being able to run setup.py from
  directories other than the directory containing setup.py should determine the
  project root from ``__file__`` in setup.py::

    from setuptools import setup
    import os

    setup(
        
        setup_requires=['vcversioner'],
        vcversioner={
            'root': os.path.dirname(os.path.abspath(__file__)),
        },
    )

  To get the same behavior in the 0.x version series, ``vcs_args`` can be set to
  include the ``--git-dir`` flag::

    from setuptools import setup

    setup(
        
        setup_requires=['vcversioner'],
        vcversioner={
            vcs_args=['git', '--git-dir', 's/.git', 'describe',
                      '--tags', '--long'],
        },
    )

  By default, ``version.txt`` is also read from the project root.


  Substitutions
  ~~~~~~~~~~~~~

  As seen above, *root*, *version_file*, and *vcs_args* each support some
  substitutions:

  ``s``
    The value provided for *root*. This is not available for the *root*
    parameter itself.

  ``/s``
    The current working directory.

  ``/`` will automatically be translated into the correct path separator for the
  current platform, such as ``:`` or ``\``.


  Sphinx documentation
  --------------------

  `Sphinx`_ documentation is yet another place where version numbers get
  duplicated. Fortunately, since sphinx configuration is python code, vcversioner
  can be used there too. Assuming vcversioner is installed system-wide, this is
  quite easy. Since Sphinx is typically run with the current working directory as
  ``<your project root>/docs``, it's necessary to tell vcversioner where the
  project root is. Simply change your ``conf.py`` to include::

    import vcversioner
    version = release = vcversioner.find_version(root='..').version

  This assumes that your project root is the parent directory of the current
  working directory. A slightly longer version which is a little more robust
  would be::

    import vcversioner, os
    version = release = vcversioner.find_version(
        root=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))).version

  This version is more robust because it finds the project root not relative to
  the current working directory but instead relative to the ``conf.py`` file.

  If vcversioner is bundled with your project instead of relying on it being
  installed, you might have to add the following to your ``conf.py`` before
  ``import vcversioner``::

    import sys, os
    sys.path.insert(0, os.path.abspath('..'))

  This line, or something with the same effect, is sometimes already present when
  using the sphinx ``autodoc`` extension.


  Read the Docs
  ~~~~~~~~~~~~~

  Using vcversioner is even possible when building documentation on `Read the
  Docs`_. If vcversioner is bundled with your project, nothing further needs to
  be done. Otherwise, you need to tell Read the Docs to install vcversioner
  before it builds the documentation. This means using a ``requirements.txt``
  file.

  If your project is already set up to install dependencies with a
  ``requirements.txt`` file, add ``vcversioner`` to it. Otherwise, create a
  ``requirements.txt`` file. Assuming your documentation is in a ``docs``
  subdirectory of the main project directory, create ``docs/requirements.txt``
  containing a ``vcversioner`` line.

  Then, make the following changes to your project's configuration: (Project
  configuration is edited at e.g.
  https://readthedocs.org/dashboard/vcversioner/edit/)

  - Check the checkbox under **Use virtualenv**.
  - If there was no ``requirements.txt`` previously, set the **Requirements
    file** to the newly-created one, e.g. ``docs/requirements.txt``.


  .. _Elevator pitch: http://en.wikipedia.org/wiki/Elevator_pitch
  .. _pip: https://pypi.python.org/pypi/pip
  .. _PEP 386: http://www.python.org/dev/peps/pep-0386/
  .. _Sphinx: http://sphinx-doc.org
  .. _Read the Docs: https://readthedocs.org/
  .. _semantic versioning: http://semver.org/

  .. |find_version| replace:: ``find_version``


pkgId: 0e503b01f6e950d736b955cd9e6b9ce4b9b3d7bf70a45e259fc98fda1422ad85
name: rh-python36-vine
arch: noarch
version: 1.3.0
epoch: 0
release: 1
summary: Promises, promises, promises.
url: http://github.com/celery/vine
rpm_license: BSD
rpm_vendor: Ask Solem <ask@celeryproject.org>
rpm_group: Development/Libraries
rpm_buildhost: 8e5ed6958d244b59b00aef8080dfb168
rpm_sourcerpm: rh-python36-vine-1.3.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879153-rh-python36-vine/rh-python36-vine-1.3.0-1.noarch.rpm
checksum_type: sha256
description:
  =====================================================================
   vine - Python Promises
  =====================================================================

  |build-status| |coverage| |license| |wheel| |pyversion| |pyimp|

  :Version: 1.2.0
  :Web: https://vine.readthedocs.io/
  :Download: https://pypi.org/project/vine/
  :Source: http://github.com/celery/vine/
  :Keywords: promise, async, future

  About
  =====


  .. |build-status| image:: https://secure.travis-ci.org/celery/vine.png?branch=master
      :alt: Build status
      :target: https://travis-ci.org/celery/vine

  .. |coverage| image:: https://codecov.io/github/celery/vine/coverage.svg?branch=master
      :target: https://codecov.io/github/celery/vine?branch=master

  .. |license| image:: https://img.shields.io/pypi/l/vine.svg
      :alt: BSD License
      :target: https://opensource.org/licenses/BSD-3-Clause

  .. |wheel| image:: https://img.shields.io/pypi/wheel/vine.svg
      :alt: Vine can be installed via wheel
      :target: https://pypi.org/project/vine/

  .. |pyversion| image:: https://img.shields.io/pypi/pyversions/vine.svg
      :alt: Supported Python versions.
      :target: https://pypi.org/project/vine/

  .. |pyimp| image:: https://img.shields.io/pypi/implementation/vine.svg
      :alt: Support Python implementations.
      :target: https://pypi.org/project/vine/


pkgId: 9d5064715a54ba2fbeaf5b0c82061e52eb54c3be5e3adc3c69ee574d8b7879a6
name: rh-python36-wcwidth
arch: noarch
version: 0.1.7
epoch: 0
release: 1
summary: Measures number of Terminal column cells of wide-character codes
url: https://github.com/jquast/wcwidth
rpm_license: MIT
rpm_vendor: Jeff Quast <contact@jeffquast.com>
rpm_group: Development/Libraries
rpm_buildhost: 246728f38c144317ab5ffa67ce92970e
rpm_sourcerpm: rh-python36-wcwidth-0.1.7-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00887970-rh-python36-wcwidth/rh-python36-wcwidth-0.1.7-1.noarch.rpm
checksum_type: sha256
description:
  .. image:: https://img.shields.io/travis/jquast/wcwidth.svg
      :target: https://travis-ci.org/jquast/wcwidth
      :alt: Travis Continous Integration

  .. image:: https://img.shields.io/coveralls/jquast/wcwidth.svg
      :target: https://coveralls.io/r/jquast/wcwidth
      :alt: Coveralls Code Coverage

  .. image:: https://img.shields.io/pypi/v/wcwidth.svg
      :target: https://pypi.python.org/pypi/wcwidth/
      :alt: Latest Version

  .. image:: https://img.shields.io/github/license/jquast/wcwidth.svg
      :target: https://pypi.python.org/pypi/wcwidth/
      :alt: License

  .. image:: https://img.shields.io/pypi/wheel/wcwidth.svg
      :alt: Wheel Status

  .. image:: https://img.shields.io/pypi/dm/wcwidth.svg
      :target: https://pypi.python.org/pypi/wcwidth/
      :alt: Downloads

  ============
  Introduction
  ============

  This Library is mainly for those implementing a Terminal Emulator, or programs
  that carefully produce output to be interpreted by one.

  **Problem Statement**: When printed to the screen, the length of the string is
  usually equal to the number of cells it occupies.  However, there are
  categories of characters that occupy 2 cells (full-wide), and others that
  occupy 0.


  **Solution**: POSIX.1-2001 and POSIX.1-2008 conforming systems provide
  `wcwidth(3)`_ and `wcswidth(3)`_ C functions of which this python module's
  functions precisely copy.  *These functions return the number of cells a
  unicode string is expected to occupy.*

  This library aims to be forward-looking, portable, and most correct.  The most
  current release of this API is based on the Unicode Standard release files:

  ``DerivedGeneralCategory-9.0.0.txt``
    *Date: 2016-06-01, 10:34:26 GMT*
    © 2016 Unicode®, Inc.

  ``EastAsianWidth-9.0.0.txt``
    *Date: 2016-05-27, 17:00:00 GMT [KW, LI]*
    © 2016 Unicode®, Inc.


  Installation
  ------------

  The stable version of this package is maintained on pypi, install using pip::

      pip install wcwidth

  Example
  -------

  To Display ``u'コンニチハ'`` right-adjusted on screen of 80 columns::

      >>> from wcwidth import wcswidth
      >>> text = u'コンニチハ'
      >>> text_len = wcswidth(text)
      >>> print(u' ' * (80 - text_len) + text)

  wcwidth, wcswidth
  -----------------
  Use function ``wcwidth()`` to determine the length of a *single unicode
  character*, and ``wcswidth()`` to determine the length of a several, or a
  *string of unicode characters*.

  Briefly, return values of function ``wcwidth()`` are:

  ``-1``
    Indeterminate (not printable).

  ``0``
    Does not advance the cursor, such as NULL or Combining.

  ``2``
    Characters of category East Asian Wide (W) or East Asian
    Full-width (F) which are displayed using two terminal cells.

  ``1``
    All others.

  Function ``wcswidth()`` simply returns the sum of all values for each character
  along a string, or ``-1`` when it occurs anywhere along a string.

  More documentation is available using pydoc::

      $ pydoc wcwidth

  =======
  Caveats
  =======

  This library attempts to determine the printable width by an unknown targeted
  terminal emulator.  It does not provide any ability to discern what the target
  emulator software, version, of level of support is.  Results may vary!

  A `crude method
  <http://blessed.readthedocs.org/en/latest/examples.html#detect-multibyte-py>`_
  of determining the level of unicode support by the target emulator may be
  performed using the VT100 Query Cursor Position sequence.

  The libc version of `wcwidth(3)`_ is often several unicode releases behind,
  and therefor several levels of support lower than this python library.  You
  may determine an exacting list of these discrepancies using the project
  file `wcwidth-libc-comparator.py
  <https://github.com/jquast/wcwidth/tree/master/bin/wcwidth-libc-comparator.py>`_.


  ==========
  Developing
  ==========

  Install wcwidth in editable mode::

     pip install -e.

  Install developer requirements::

     pip install -r requirements-develop.txt

  Execute unit tests using tox::

     tox

  Updating Tables
  ---------------

  The command ``python setup.py update`` will fetch the following resources:

  - http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
  - http://www.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt

  And generates the table files:

  - `wcwidth/table_wide.py <https://github.com/jquast/wcwidth/tree/master/wcwidth/table_wide.py>`_
  - `wcwidth/table_zero.py <https://github.com/jquast/wcwidth/tree/master/wcwidth/table_zero.py>`_

  Uses
  ----

  This library is used in:

  - `jquast/blessed`_, a simplified wrapper around curses.

  - `jonathanslenders/python-prompt-toolkit`_, a Library for building powerful
    interactive command lines in Python.

  Additional tools for displaying and testing wcwidth are found in the `bin/
  <https://github.com/jquast/wcwidth/tree/master/bin>`_ folder of this project's
  source code.  They are not distributed.

  =======
  History
  =======

  0.1.7 *2016-07-01*
    * **Updated** tables to Unicode Specification 9.0.0. (`PR #18`_).

  0.1.6 *2016-01-08 Production/Stable*
    * ``LICENSE`` file now included with distribution.

  0.1.5 *2015-09-13 Alpha*
    * **Bugfix**:
      Resolution of "combining_ character width" issue, most especially
      those that previously returned -1 now often (correctly) return 0.
      resolved by `Philip Craig`_ via `PR #11`_.
    * **Deprecated**:
      The module path ``wcwidth.table_comb`` is no longer available,
      it has been superseded by module path ``wcwidth.table_zero``.

  0.1.4 *2014-11-20 Pre-Alpha*
    * **Feature**: ``wcswidth()`` now determines printable length
      for (most) combining_ characters.  The developer's tool
      `bin/wcwidth-browser.py`_ is improved to display combining_
      characters when provided the ``--combining`` option
      (`Thomas Ballinger`_ and `Leta Montopoli`_ `PR #5`_).
    * **Feature**: added static analysis (prospector_) to testing
      framework.

  0.1.3 *2014-10-29 Pre-Alpha*
    * **Bugfix**: 2nd parameter of wcswidth was not honored.
      (`Thomas Ballinger`_, `PR #4`_).

  0.1.2 *2014-10-28 Pre-Alpha*
    * **Updated** tables to Unicode Specification 7.0.0.
      (`Thomas Ballinger`_, `PR #3`_).

  0.1.1 *2014-05-14 Pre-Alpha*
    * Initial release to pypi, Based on Unicode Specification 6.3.0

  This code was originally derived directly from C code of the same name,
  whose latest version is available at
  http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c::

   * Markus Kuhn -- 2007-05-26 (Unicode 5.0)
   *
   * Permission to use, copy, modify, and distribute this software
   * for any purpose and without fee is hereby granted. The author
   * disclaims all warranties with regard to this software.

  .. _`prospector`: https://github.com/landscapeio/prospector
  .. _`combining`: https://en.wikipedia.org/wiki/Combining_character
  .. _`bin/wcwidth-browser.py`: https://github.com/jquast/wcwidth/tree/master/bin/wcwidth-browser.py
  .. _`Thomas Ballinger`: https://github.com/thomasballinger
  .. _`Leta Montopoli`: https://github.com/lmontopo
  .. _`Philip Craig`: https://github.com/philipc
  .. _`PR #3`: https://github.com/jquast/wcwidth/pull/3
  .. _`PR #4`: https://github.com/jquast/wcwidth/pull/4
  .. _`PR #5`: https://github.com/jquast/wcwidth/pull/5
  .. _`PR #11`: https://github.com/jquast/wcwidth/pull/11
  .. _`PR #18`: https://github.com/jquast/wcwidth/pull/18
  .. _`jquast/blessed`: https://github.com/jquast/blessed
  .. _`jonathanslenders/python-prompt-toolkit`: https://github.com/jonathanslenders/python-prompt-toolkit
  .. _`wcwidth(3)`:  http://man7.org/linux/man-pages/man3/wcwidth.3.html
  .. _`wcswidth(3)`: http://man7.org/linux/man-pages/man3/wcswidth.3.html


pkgId: 07dacabba5d764205c0e6ac67014711d785a8f5c7dd655ff6507b8869756526d
name: rh-python36-websocket_client
arch: noarch
version: 0.57.0
epoch: 0
release: 1
summary: WebSocket client for Python. hybi13 is supported.
url: https://github.com/websocket-client/websocket-client.git
rpm_license: BSD
rpm_vendor: liris <liris.pp@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: aed953aa08b546baaf5557c88cf5ac0a
rpm_sourcerpm: rh-python36-websocket_client-0.57.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143893-rh-python36-websocket_client/rh-python36-websocket_client-0.57.0-1.noarch.rpm
checksum_type: sha256
description:
  =================
  websocket-client
  =================

  websocket-client module  is WebSocket client for python. This provide the low level APIs for WebSocket. All APIs are the synchronous functions.

  websocket-client supports only hybi-13.


  License
  =======

   - BSD

  Installation
  ============

  This module is tested on Python 2.7 and Python 3.4+.

  Type "python setup.py install" or "pip install websocket-client" to install.

  .. CAUTION::

    from v0.16.0, we can install by "pip install websocket-client" for Python 3.

  This module depends on

   - six
   - backports.ssl_match_hostname for Python 2.x

  Performance
  -----------

  The "send" and "validate_utf8" methods are too slow on pure python. If you want to get better performace, please install both numpy and wsaccel.


  How about Python 3
  ==================

  Now, we support Python 3 on single source code from version 0.14.0. Thanks, @battlemidget and @ralphbean.

  HTTP Proxy
  ==========

  Support websocket access via http proxy.
  The proxy server must allow "CONNECT" method to websocket port.
  Default squid setting is "ALLOWED TO CONNECT ONLY HTTPS PORT".

  Current implementation of websocket-client is using "CONNECT" method via proxy.


  example

  .. code:: python

      import websocket
      ws = websocket.WebSocket()
      ws.connect("ws://example.com/websocket", http_proxy_host="proxy_host_name", http_proxy_port=3128)



  Examples
  ========

  Long-lived connection
  ---------------------
  This example is similar to how WebSocket code looks in browsers using JavaScript.

  .. code:: python

      import websocket
      try:
          import thread
      except ImportError:
          import _thread as thread
      import time

      def on_message(ws, message):
          print(message)

      def on_error(ws, error):
          print(error)

      def on_close(ws):
          print("### closed ###")

      def on_open(ws):
          def run(*args):
              for i in range(3):
                  time.sleep(1)
                  ws.send("Hello %d" % i)
              time.sleep(1)
              ws.close()
              print("thread terminating...")
          thread.start_new_thread(run, ())


      if __name__ == "__main__":
          websocket.enableTrace(True)
          ws = websocket.WebSocketApp("ws://echo.websocket.org/",
                                    on_message = on_message,
                                    on_error = on_error,
                                    on_close = on_close)
          ws.on_open = on_open
          ws.run_forever()



  Short-lived one-off send-receive
  --------------------------------
  This is if you want to communicate a short message and disconnect immediately when done.

  .. code:: python

      from websocket import create_connection
      ws = create_connection("ws://echo.websocket.org/")
      print("Sending 'Hello, World'...")
      ws.send("Hello, World")
      print("Sent")
      print("Receiving...")
      result =  ws.recv()
      print("Received '%s'" % result)
      ws.close()


  If you want to customize socket options, set sockopt.

  sockopt example

  .. code:: python

      from websocket import create_connection
      ws = create_connection("ws://echo.websocket.org/",
                              sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))


  More advanced: Custom class
  ---------------------------
  You can also write your own class for the connection, if you want to handle the nitty-gritty details yourself.

  .. code:: python

      import socket
      from websocket import create_connection, WebSocket
      class MyWebSocket(WebSocket):
          def recv_frame(self):
              frame = super().recv_frame()
              print('yay! I got this frame: ', frame)
              return frame

      ws = create_connection("ws://echo.websocket.org/",
                              sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),), class_=MyWebSocket)


  FAQ
  ===

  How to disable ssl cert verification?
  -------------------------------------

  Please set sslopt to {"cert_reqs": ssl.CERT_NONE}.

  WebSocketApp sample

  .. code:: python

      ws = websocket.WebSocketApp("wss://echo.websocket.org")
      ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})


  create_connection sample

  .. code:: python

      ws = websocket.create_connection("wss://echo.websocket.org",
        sslopt={"cert_reqs": ssl.CERT_NONE})


  WebSocket sample

  .. code:: python

      ws = websocket.WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})
      ws.connect("wss://echo.websocket.org")


  How to disable hostname verification?
  -------------------------------------

  Please set sslopt to {"check_hostname": False}.
  (since v0.18.0)

  WebSocketApp sample

  .. code:: python

      ws = websocket.WebSocketApp("wss://echo.websocket.org")
      ws.run_forever(sslopt={"check_hostname": False})


  create_connection sample

  .. code:: python

      ws = websocket.create_connection("wss://echo.websocket.org",
        sslopt={"check_hostname": False})


  WebSocket sample

  .. code:: python

      ws = websocket.WebSocket(sslopt={"check_hostname": False})
      ws.connect("wss://echo.websocket.org")


  How to enable `SNI <http://en.wikipedia.org/wiki/Server_Name_Indication>`_?
  ---------------------------------------------------------------------------

  SNI support is available for Python 2.7.9+ and 3.2+. It will be enabled automatically whenever possible.


  Sub Protocols.
  --------------

  The server needs to support sub protocols, please set the subprotocol like this.


  Subprotocol sample

  .. code:: python

      ws = websocket.create_connection("ws://example.com/websocket", subprotocols=["binary", "base64"])



  wsdump.py
  =========

  wsdump.py is simple WebSocket test(debug) tool.

  sample for echo.websocket.org::

    $ wsdump.py ws://echo.websocket.org/
    Press Ctrl+C to quit
    > Hello, WebSocket
    < Hello, WebSocket
    > How are you?
    < How are you?


  Usage
  -----

  usage::

    wsdump.py [-h] [-v [VERBOSE]] ws_url


  WebSocket Simple Dump Tool

  positional arguments:
    ws_url                websocket url. ex. ws://echo.websocket.org/


  optional arguments:
    -h, --help                           show this help message and exit
  WebSocketApp
    -v VERBOSE, --verbose VERBOSE    set verbose mode. If set to 1, show opcode. If set to 2, enable to trace websocket module


  example::

    $ wsdump.py ws://echo.websocket.org/
    $ wsdump.py ws://echo.websocket.org/ -v
    $ wsdump.py ws://echo.websocket.org/ -vv


pkgId: fca9a6372b2ba50f33aa6c779e657f03ec85e10418933897eacdcfc468559b54
name: rh-python36-wheel
arch: noarch
version: 0.33.6
epoch: 0
release: 1
summary: A built-package format for Python.
url: https://github.com/pypa/wheel
rpm_license: MIT
rpm_vendor: Alex Grönholm <alex.gronholm@nextday.fi>
rpm_group: Development/Libraries
rpm_buildhost: 4123800ebfa24ca2a31e3b6632997921
rpm_sourcerpm: rh-python36-wheel-0.33.6-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01245662-rh-python36-wheel/rh-python36-wheel-0.33.6-1.noarch.rpm
checksum_type: sha256
description:
  wheel
  =====

  This library is the reference implementation of the Python wheel packaging
  standard, as defined in `PEP 427`_.

  It has two different roles:


     ``bdist_wheel`` setuptools command


  It should be noted that wheel is **not** intended to be used as a library, and
  as such there is no stable, public API.

  .. _PEP 427: https://www.python.org/dev/peps/pep-0427/
  .. _setuptools: https://pypi.org/project/setuptools/


  Code of Conduct
  ---------------

  Everyone interacting in the wheel project's codebases, issue trackers, chat
  rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_.

  .. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/


pkgId: 4e0dd1f203466918e23a9b824c2b24a5186c1f128538e7fe6a73fa2ebb6925bc
name: rh-python36-wrapt
arch: ppc64le
version: 1.11.1
epoch: 0
release: 1
summary: Module for decorators, wrappers and monkey patching.
url: https://github.com/GrahamDumpleton/wrapt
rpm_license: BSD
rpm_vendor: Graham Dumpleton <Graham.Dumpleton@gmail.com>
rpm_group: Development/Libraries
rpm_buildhost: cc5f388d02c14ca68f52b779f2373bf4
rpm_sourcerpm: rh-python36-wrapt-1.11.1-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00887959-rh-python36-wrapt/rh-python36-wrapt-1.11.1-1.ppc64le.rpm
checksum_type: sha256
description:
  wrapt
  =====

  |Travis| |AppVeyor| |Coveralls| |PyPI|

  The aim of the **wrapt** module is to provide a transparent object proxy
  for Python, which can be used as the basis for the construction of function
  wrappers and decorator functions.

  The **wrapt** module focuses very much on correctness. It therefore goes
  way beyond existing mechanisms such as ``functools.wraps()`` to ensure that
  decorators preserve introspectability, signatures, type checking abilities
  etc. The decorators that can be constructed using this module will work in
  far more scenarios than typical decorators and provide more predictable and
  consistent behaviour.

  To ensure that the overhead is as minimal as possible, a C extension module
  is used for performance critical components. An automatic fallback to a
  pure Python implementation is also provided where a target system does not
  have a compiler to allow the C extension to be compiled.

  Documentation
  -------------

  For further information on the **wrapt** module see:

  * http://wrapt.readthedocs.org/

  Quick Start
  -----------

  To implement your decorator you need to first define a wrapper function.
  This will be called each time a decorated function is called. The wrapper
  function needs to take four positional arguments:

  * ``wrapped`` - The wrapped function which in turns needs to be called by your wrapper function.
  * ``instance`` - The object to which the wrapped function was bound when it was called.
  * ``args`` - The list of positional arguments supplied when the decorated function was called.
  * ``kwargs`` - The dictionary of keyword arguments supplied when the decorated function was called.

  The wrapper function would do whatever it needs to, but would usually in
  turn call the wrapped function that is passed in via the ``wrapped``
  argument.

  The decorator ``@wrapt.decorator`` then needs to be applied to the wrapper
  function to convert it into a decorator which can in turn be applied to
  other functions.

  ::

      import wrapt

      @wrapt.decorator
      def pass_through(wrapped, instance, args, kwargs):
          return wrapped(*args, **kwargs)

      @pass_through
      def function():
          pass

  If you wish to implement a decorator which accepts arguments, then wrap the
  definition of the decorator in a function closure. Any arguments supplied
  to the outer function when the decorator is applied, will be available to
  the inner wrapper when the wrapped function is called.

  ::

      import wrapt

      def with_arguments(myarg1, myarg2):
          @wrapt.decorator
          def wrapper(wrapped, instance, args, kwargs):
              return wrapped(*args, **kwargs)
          return wrapper

      @with_arguments(1, 2)
      def function():
          pass

  When applied to a normal function or static method, the wrapper function
  when called will be passed ``None`` as the ``instance`` argument.

  When applied to an instance method, the wrapper function when called will
  be passed the instance of the class the method is being called on as the
  ``instance`` argument. This will be the case even when the instance method
  was called explicitly via the class and the instance passed as the first
  argument. That is, the instance will never be passed as part of ``args``.

  When applied to a class method, the wrapper function when called will be
  passed the class type as the ``instance`` argument.

  When applied to a class, the wrapper function when called will be passed
  ``None`` as the ``instance`` argument. The ``wrapped`` argument in this
  case will be the class.

  The above rules can be summarised with the following example.

  ::

      import inspect

      @wrapt.decorator
      def universal(wrapped, instance, args, kwargs):
          if instance is None:
              if inspect.isclass(wrapped):
                  
                  return wrapped(*args, **kwargs)
              else:
                  
                  return wrapped(*args, **kwargs)
          else:
              if inspect.isclass(instance):
                  
                  return wrapped(*args, **kwargs)
              else:
                  
                  return wrapped(*args, **kwargs)

  Using these checks it is therefore possible to create a universal decorator
  that can be applied in all situations. It is no longer necessary to create
  different variants of decorators for normal functions and instance methods,
  or use additional wrappers to convert a function decorator into one that
  will work for instance methods.

  In all cases, the wrapped function passed to the wrapper function is called
  in the same way, with ``args`` and ``kwargs`` being passed. The
  ``instance`` argument doesn't need to be used in calling the wrapped
  function.

  Repository
  ----------

  Full source code for the **wrapt** module, including documentation files
  and unit tests, can be obtained from github.

  * https://github.com/GrahamDumpleton/wrapt

  .. |Travis| image:: https://travis-ci.org/GrahamDumpleton/wrapt.svg?branch=develop
     :target: https://travis-ci.org/GrahamDumpleton/wrapt
  .. |Appveyor| image:: https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva?svg=true
     :target: https://ci.appveyor.com/project/GrahamDumpleton/wrapt/branch/develop
  .. |Coveralls| image:: https://img.shields.io/coveralls/GrahamDumpleton/wrapt/develop.svg
     :target: https://coveralls.io/github/GrahamDumpleton/wrapt?branch=develop
  .. |PyPI| image:: https://img.shields.io/pypi/v/wrapt.svg
     :target: https://pypi.python.org/pypi/wrapt


pkgId: d9c45ca3d115816b270b43ccb2bd7efbdc38aec3e5b0aee79dda3cac30925c51
name: rh-python36-wrapt-debuginfo
arch: ppc64le
version: 1.11.1
epoch: 0
release: 1
summary: Debug information for package rh-python36-wrapt
url: https://github.com/GrahamDumpleton/wrapt
rpm_license: BSD
rpm_vendor: Graham Dumpleton <Graham.Dumpleton@gmail.com>
rpm_group: Development/Debug
rpm_buildhost: cc5f388d02c14ca68f52b779f2373bf4
rpm_sourcerpm: rh-python36-wrapt-1.11.1-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00887959-rh-python36-wrapt/rh-python36-wrapt-debuginfo-1.11.1-1.ppc64le.rpm
checksum_type: sha256
description:
  This package provides debug information for package rh-python36-wrapt.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: ddcdb1bdbf5b7fd245597302fff1149d2297b021ea3874d20deaece671b5a577
name: rh-python36-xmlsec-debuginfo
arch: ppc64le
version: 1.3.3
epoch: 0
release: 1
summary: Debug information for package rh-python36-xmlsec
url: https://github.com/mehcode/python-xmlsec
rpm_license: MIT
rpm_vendor: Bulat Gaifullin <gaifullinbf@gmail.com>
rpm_group: Development/Debug
rpm_buildhost: 0ac2ab3d01774f6ab9c6b16237ed5c6e
rpm_sourcerpm: rh-python36-xmlsec-1.3.3-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 00879227-rh-python36-xmlsec/rh-python36-xmlsec-debuginfo-1.3.3-1.ppc64le.rpm
checksum_type: sha256
description:
  This package provides debug information for package rh-python36-xmlsec.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 2e81e7daba66b96cc37643447c403ac57aec31d2e89f59a6711caba02fc0696c
name: rh-python36-zipp
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Backport of pathlib-compatible object wrapper for zip files
url: https://github.com/jaraco/zipp
rpm_license: UNKNOWN
rpm_vendor: Jason R. Coombs <jaraco@jaraco.com>
rpm_group: Development/Libraries
rpm_buildhost: ccac5bea15fd4fc3ab993a7d5bc9b7ad
rpm_sourcerpm: rh-python36-zipp-1.0.0-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01144281-rh-python36-zipp/rh-python36-zipp-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  .. image:: https://img.shields.io/pypi/v/zipp.svg
     :target: https://pypi.org/project/zipp

  .. image:: https://img.shields.io/pypi/pyversions/zipp.svg

  .. image:: https://img.shields.io/travis/jaraco/zipp/master.svg
     :target: https://travis-ci.org/jaraco/zipp

  .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
     :target: https://github.com/ambv/black
     :alt: Code style: Black

  .. image:: https://img.shields.io/appveyor/ci/jaraco/zipp/master.svg
     :target: https://ci.appveyor.com/project/jaraco/zipp/branch/master

  .. .. image:: https://readthedocs.org/projects/zipp/badge/?version=latest
  ..    :target: https://zipp.readthedocs.io/en/latest/?badge=latest


  A pathlib-compatible Zipfile object wrapper. A backport of the
  `Path object <https://docs.python.org/3.8/library/zipfile.html#path-objects>`_.


pkgId: 82d388baa33525bca3ad8d8d987f4498e21b124e9a926ddc05b57af5ecb7aba2
name: rh-python36-zope.interface
arch: ppc64le
version: 4.7.1
epoch: 0
release: 1
summary: Interfaces for Python
url: https://github.com/zopefoundation/zope.interface
rpm_license: ZPL 2.1
rpm_vendor: Zope Foundation and Contributors <zope-dev@zope.org>
rpm_group: Development/Libraries
rpm_buildhost: 3cb24262a3dc48318b1ef5058ae5f862
rpm_sourcerpm: rh-python36-zope.interface-4.7.1-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143858-rh-python36-zope.interface/rh-python36-zope.interface-4.7.1-1.ppc64le.rpm
checksum_type: sha256
description:
  ``zope.interface``
  ==================

  .. image:: https://img.shields.io/pypi/v/zope.interface.svg
      :target: https://pypi.python.org/pypi/zope.interface/
      :alt: Latest Version

  .. image:: https://travis-ci.org/zopefoundation/zope.interface.png?branch=master
          :target: https://travis-ci.org/zopefoundation/zope.interface

  .. image:: https://readthedocs.org/projects/zopeinterface/badge/?version=latest
          :target: https://zopeinterface.readthedocs.io/en/latest/
          :alt: Documentation Status

  This package is intended to be independently reusable in any Python
  project. It is maintained by the `Zope Toolkit project
  <http://docs.zope.org/zopetoolkit/>`_.

  This package provides an implementation of "object interfaces" for Python.
  Interfaces are a mechanism for labeling objects as conforming to a given
  API or contract. So, this package can be considered as implementation of
  the `Design By Contract`_ methodology support in Python.

  .. _Design By Contract: http://en.wikipedia.org/wiki/Design_by_contract

  For detailed documentation, please see https://zopeinterface.readthedocs.io/en/latest/

  Changes
  =======

  4.4.3 (2017-09-22)
  ------------------

  - Avoid exceptions when the ``__annotations__`` attribute is added to
    interface definitions with Python 3.x type hints. See `issue 98
    <https://github.com/zopefoundation/zope.interface/issues/98>`_.
  - Fix the possibility of a rare crash in the C extension when
    deallocating items. See `issue 100
    <https://github.com/zopefoundation/zope.interface/issues/100>`_.


  4.4.2 (2017-06-14)
  ------------------

  - Fix a regression storing
    ``zope.component.persistentregistry.PersistentRegistry`` instances.
    See `issue 85 <https://github.com/zopefoundation/zope.interface/issues/85>`_.

  - Fix a regression that could lead to the utility registration cache
    of ``Components`` getting out of sync. See `issue 93
    <https://github.com/zopefoundation/zope.interface/issues/93>`_.

  4.4.1 (2017-05-13)
  ------------------

  - Simplify the caching of utility-registration data. In addition to
    simplification, avoids spurious test failures when checking for
    leaks in tests with persistent registries. See `pull 84
    <https://github.com/zopefoundation/zope.interface/pull/84>`_.

  - Raise ``ValueError`` when non-text names are passed to adapter registry
    methods:  prevents corruption of lookup caches.

  4.4.0 (2017-04-21)
  ------------------

  - Avoid a warning from the C compiler.
    (https://github.com/zopefoundation/zope.interface/issues/71)

  - Add support for Python 3.6.

  4.3.3 (2016-12-13)
  ------------------

  - Correct typos and ReST formatting errors in documentation.

  - Add API documentation for the adapter registry.

  - Ensure that the ``LICENSE.txt`` file is included in built wheels.

  - Fix C optimizations broken on Py3k.  See the Python bug at:
    http://bugs.python.org/issue15657
    (https://github.com/zopefoundation/zope.interface/issues/60)


  4.3.2 (2016-09-05)
  ------------------

  - Fix equality testing of ``implementedBy`` objects and proxies.
    (https://github.com/zopefoundation/zope.interface/issues/55)


  4.3.1 (2016-08-31)
  ------------------

  - Support Components subclasses that are not hashable.
    (https://github.com/zopefoundation/zope.interface/issues/53)


  4.3.0 (2016-08-31)
  ------------------

  - Add the ability to sort the objects returned by ``implementedBy``.
    This is compatible with the way interface classes sort so they can
    be used together in ordered containers like BTrees.
    (https://github.com/zopefoundation/zope.interface/issues/42)

  - Make ``setuptools`` a hard dependency of ``setup.py``.
    (https://github.com/zopefoundation/zope.interface/issues/13)

  - Change a linear algorithm (O(n)) in ``Components.registerUtility`` and
    ``Components.unregisterUtility`` into a dictionary lookup (O(1)) for
    hashable components. This substantially improves the time taken to
    manipulate utilities in large registries at the cost of some
    additional memory usage. (https://github.com/zopefoundation/zope.interface/issues/46)


  4.2.0 (2016-06-10)
  ------------------

  - Add support for Python 3.5

  - Drop support for Python 2.6 and 3.2.


  4.1.3 (2015-10-05)
  ------------------

  - Fix installation without a C compiler on Python 3.5
    (https://github.com/zopefoundation/zope.interface/issues/24).


  4.1.2 (2014-12-27)
  ------------------

  - Add support for PyPy3.

  - Remove unittest assertions deprecated in Python3.x.

  - Add ``zope.interface.document.asReStructuredText``, which formats the
    generated text for an interface using ReST double-backtick markers.


  4.1.1 (2014-03-19)
  ------------------

  - Add support for Python 3.4.


  4.1.0 (2014-02-05)
  ------------------

  - Update ``boostrap.py`` to version 2.2.

  - Add ``@named(name)`` declaration, that specifies the component name, so it
    does not have to be passed in during registration.


  4.0.5 (2013-02-28)
  ------------------

  - Fix a bug where a decorated method caused false positive failures on
    ``verifyClass()``.


  4.0.4 (2013-02-21)
  ------------------

  - Fix a bug that was revealed by porting zope.traversing. During a loop, the
    loop body modified a weakref dict causing a ``RuntimeError`` error.

  4.0.3 (2012-12-31)
  ------------------

  - Fleshed out PyPI Trove classifiers.

  4.0.2 (2012-11-21)
  ------------------

  - Add support for Python 3.3.

  - Restored ability to install the package in the absence of ``setuptools``.

  - LP #1055223:  Fix test which depended on dictionary order and failed randomly
    in Python 3.3.

  4.0.1 (2012-05-22)
  ------------------

  - Drop explicit ``DeprecationWarnings`` for "class advice" APIS (these
    APIs are still deprecated under Python 2.x, and still raise an exception
    under Python 3.x, but no longer cause a warning to be emitted under
    Python 2.x).

  4.0.0 (2012-05-16)
  ------------------

  - Automated build of Sphinx HTML docs and running doctest snippets via tox.

  - Deprecate the "class advice" APIs from ``zope.interface.declarations``:
    ``implements``, ``implementsOnly``, and ``classProvides``.  In their place,
    prefer the equivalent class decorators: ``@implementer``,
    ``@implementer_only``, and ``@provider``.  Code which uses the deprecated
    APIs will not work as expected under Py3k.

  - Remove use of '2to3' and associated fixers when installing under Py3k.
    The code is now in a "compatible subset" which supports Python 2.6, 2.7,
    and 3.2, including PyPy 1.8 (the version compatible with the 2.7 language
    spec).

  - Drop explicit support for Python 2.4 / 2.5 / 3.1.

  - Add support for PyPy.

  - Add support for continuous integration using ``tox`` and ``jenkins``.

  - Add 'setup.py dev' alias (runs ``setup.py develop`` plus installs
    ``nose`` and ``coverage``).

  - Add 'setup.py docs' alias (installs ``Sphinx`` and dependencies).

  - Replace all unittest coverage previously accomplished via doctests with
    unittests.  The doctests have been moved into a ``docs`` section, managed
    as a Sphinx collection.

  - LP #910987:  Ensure that the semantics of the ``lookup`` method of
    ``zope.interface.adapter.LookupBase`` are the same in both the C and
    Python implementations.

  - LP #900906:  Avoid exceptions due to tne new ``__qualname__`` attribute
    added in Python 3.3 (see PEP 3155 for rationale).  Thanks to Antoine
    Pitrou for the patch.

  3.8.0 (2011-09-22)
  ------------------

  - New module ``zope.interface.registry``.  This is code moved from
    ``zope.component.registry`` which implements a basic nonperistent component
    registry as ``zope.interface.registry.Components``.  This class was moved
    from ``zope.component`` to make porting systems (such as Pyramid) that rely
    only on a basic component registry to Python 3 possible without needing to
    port the entirety of the ``zope.component`` package.  Backwards
    compatibility import shims have been left behind in ``zope.component``, so
    this change will not break any existing code.

  - New ``tests_require`` dependency: ``zope.event`` to test events sent by
    Components implementation.  The ``zope.interface`` package does not have a
    hard dependency on ``zope.event``, but if ``zope.event`` is importable, it
    will send component registration events when methods of an instance of
    ``zope.interface.registry.Components`` are called.

  - New interfaces added to support ``zope.interface.registry.Components``
    addition: ``ComponentLookupError``, ``Invalid``, ``IObjectEvent``,
    ``ObjectEvent``, ``IComponentLookup``, ``IRegistration``,
    ``IUtilityRegistration``, ``IAdapterRegistration``,
    ``ISubscriptionAdapterRegistration``, ``IHandlerRegistration``,
    ``IRegistrationEvent``, ``RegistrationEvent``, ``IRegistered``,
    ``Registered``, ``IUnregistered``, ``Unregistered``,
    ``IComponentRegistry``, and ``IComponents``.

  - No longer Python 2.4 compatible (tested under 2.5, 2.6, 2.7, and 3.2).

  3.7.0 (2011-08-13)
  ------------------

  - Move changes from 3.6.2 - 3.6.5 to a new 3.7.x release line.

  3.6.7 (2011-08-20)
  ------------------

  - Fix sporadic failures on x86-64 platforms in tests of rich comparisons
    of interfaces.

  3.6.6 (2011-08-13)
  ------------------

  - LP #570942:  Now correctly compare interfaces  from different modules but
    with the same names.

    N.B.: This is a less intrusive / destabilizing fix than the one applied in
    3.6.3:  we only fix the underlying cmp-alike function, rather than adding
    the other "rich comparison" functions.

  - Revert to software as released with 3.6.1 for "stable" 3.6 release branch.

  3.6.5 (2011-08-11)
  ------------------

  - LP #811792:  work around buggy behavior in some subclasses of
    ``zope.interface.interface.InterfaceClass``, which invoke ``__hash__``
    before initializing ``__module__`` and ``__name__``.  The workaround
    returns a fixed constant hash in such cases, and issues a ``UserWarning``.

  - LP #804832:  Under PyPy, ``zope.interface`` should not build its C
    extension.  Also, prevent attempting to build it under Jython.

  - Add a tox.ini for easier xplatform testing.

  - Fix testing deprecation warnings issued when tested under Py3K.

  3.6.4 (2011-07-04)
  ------------------

  - LP 804951:  InterfaceClass instances were unhashable under Python 3.x.

  3.6.3 (2011-05-26)
  ------------------

  - LP #570942:  Now correctly compare interfaces  from different modules but
    with the same names.

  3.6.2 (2011-05-17)
  ------------------

  - Moved detailed documentation out-of-line from PyPI page, linking instead to
    http://docs.zope.org/zope.interface .

  - Fixes for small issues when running tests under Python 3.2 using
    ``zope.testrunner``.

  - LP # 675064:  Specify return value type for C optimizations module init
    under Python 3:  undeclared value caused warnings, and segfaults on some
    64 bit architectures.

  - setup.py now raises RuntimeError if you don't have Distutils installed when
    running under Python 3.

  3.6.1 (2010-05-03)
  ------------------

  - A non-ASCII character in the changelog made 3.6.0 uninstallable on
    Python 3 systems with another default encoding than UTF-8.

  - Fix compiler warnings under GCC 4.3.3.

  3.6.0 (2010-04-29)
  ------------------

  - LP #185974:  Clear the cache used by ``Specificaton.get`` inside
    ``Specification.changed``.  Thanks to Jacob Holm for the patch.

  - Add support for Python 3.1. Contributors:

      Lennart Regebro
      Martin v Loewis
      Thomas Lotze
      Wolfgang Schnerring

    The 3.1 support is completely backwards compatible. However, the implements
    syntax used under Python 2.X does not work under 3.X, since it depends on
    how metaclasses are implemented and this has changed. Instead it now supports
    a decorator syntax (also under Python 2.X)::

      class Foo:
          implements(IFoo)
          ...

    can now also be written::

      @implementer(IFoo):
      class Foo:
          ...

    There are 2to3 fixers available to do this change automatically in the
    zope.fixers package.

  - Python 2.3 is no longer supported.


  3.5.4 (2009-12-23)
  ------------------

  - Use the standard Python doctest module instead of zope.testing.doctest, which
    has been deprecated.


  3.5.3 (2009-12-08)
  ------------------

  - Fix an edge case: make providedBy() work when a class has '__provides__' in
    its __slots__ (see http://thread.gmane.org/gmane.comp.web.zope.devel/22490)


  3.5.2 (2009-07-01)
  ------------------

  - BaseAdapterRegistry.unregister, unsubscribe: Remove empty portions of
    the data structures when something is removed.  This avoids leaving
    references to global objects (interfaces) that may be slated for
    removal from the calling application.


  3.5.1 (2009-03-18)
  ------------------

  - verifyObject: use getattr instead of hasattr to test for object attributes
    in order to let exceptions other than AttributeError raised by properties
    propagate to the caller

  - Add Sphinx-based documentation building to the package buildout
    configuration. Use the ``bin/docs`` command after buildout.

  - Improve package description a bit. Unify changelog entries formatting.

  - Change package's mailing list address to zope-dev at zope.org as
    zope3-dev at zope.org is now retired.


  3.5.0 (2008-10-26)
  ------------------

  - Fix declaration of _zope_interface_coptimizations, it's not a top level
    package.

  - Add a DocTestSuite for odd.py module, so their tests are run.

  - Allow to bootstrap on Jython.

  - Fix https://bugs.launchpad.net/zope3/3.3/+bug/98388: ISpecification
    was missing a declaration for __iro__.

  - Add optional code optimizations support, which allows the building
    of C code optimizations to fail (Jython).

  - Replace `_flatten` with a non-recursive implementation, effectively making
    it 3x faster.


  3.4.1 (2007-10-02)
  ------------------

  - Fix a setup bug that prevented installation from source on systems
    without setuptools.


  3.4.0 (2007-07-19)
  ------------------

  - Final release for 3.4.0.


  3.4.0b3 (2007-05-22)
  --------------------


  - When checking whether an object is already registered, use identity
    comparison, to allow adding registering with picky custom comparison methods.


  3.3.0.1 (2007-01-03)
  --------------------

  - Made a reference to OverflowWarning, which disappeared in Python
    2.5, conditional.


  3.3.0 (2007/01/03)
  ------------------

  New Features
  ++++++++++++

  - Refactor the adapter-lookup algorithim to make it much simpler and faster.

    Also, implement more of the adapter-lookup logic in C, making
    debugging of application code easier, since there is less
    infrastructre code to step through.

  - Treat objects without interface declarations as if they
    declared that they provide ``zope.interface.Interface``.

  - Add a number of richer new adapter-registration interfaces
    that provide greater control and introspection.

  - Add a new interface decorator to zope.interface that allows the
    setting of tagged values on an interface at definition time (see
    zope.interface.taggedValue).

  Bug Fixes
  +++++++++

  - A bug in multi-adapter lookup sometimes caused incorrect adapters to
    be returned.


  3.2.0.2 (2006-04-15)
  --------------------

  - Fix packaging bug:  'package_dir' must be a *relative* path.


  3.2.0.1 (2006-04-14)
  --------------------

  - Packaging change:  suppress inclusion of 'setup.cfg' in 'sdist' builds.


  3.2.0 (2006-01-05)
  ------------------

  - Corresponds to the verison of the zope.interface package shipped as part of
    the Zope 3.2.0 release.


  3.1.0 (2005-10-03)
  ------------------

  - Corresponds to the verison of the zope.interface package shipped as part of
    the Zope 3.1.0 release.

  - Made attribute resolution order consistent with component lookup order,
    i.e. new-style class MRO semantics.

  - Deprecate 'isImplementedBy' and 'isImplementedByInstancesOf' APIs in
    favor of 'implementedBy' and 'providedBy'.


  3.0.1 (2005-07-27)
  ------------------

  - Corresponds to the verison of the zope.interface package shipped as part of
    the Zope X3.0.1 release.

  - Fix a bug reported by James Knight, which caused adapter registries
    to fail occasionally to reflect declaration changes.


  3.0.0 (2004-11-07)
  ------------------

  - Corresponds to the verison of the zope.interface package shipped as part of
    the Zope X3.0.0 release.


pkgId: 68ccae8e7f91005569aaf0b10c0f83db8f6ce7de65db72a6d9bbf8461a8b6fe8
name: rh-python36-zope.interface-debuginfo
arch: ppc64le
version: 4.7.1
epoch: 0
release: 1
summary: Debug information for package rh-python36-zope.interface
url: https://github.com/zopefoundation/zope.interface
rpm_license: ZPL 2.1
rpm_vendor: Zope Foundation and Contributors <zope-dev@zope.org>
rpm_group: Development/Debug
rpm_buildhost: 3cb24262a3dc48318b1ef5058ae5f862
rpm_sourcerpm: rh-python36-zope.interface-4.7.1-1.src.rpm
rpm_packager: Martin Juhl <m@rtinjuhl.dk>
location_href: 01143858-rh-python36-zope.interface/rh-python36-zope.interface-debuginfo-4.7.1-1.ppc64le.rpm
checksum_type: sha256
description:
  This package provides debug information for package rh-python36-zope.interface.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 2a5a6c516608d7732edc53bdf20fd78c1781946365b40a3e854d59a480af0774
name: scl-utils-build-helpers
arch: noarch
version: 0
epoch: 0
release: 7.el7
summary: RPM macros and scripts for SCL maintainers
url: https://github.com/sclorg/scl-utils-build-helpers
rpm_license: LGPLv2+
rpm_group: Unspecified
rpm_buildhost: 39df98468d794893a08b500530642a7b
rpm_sourcerpm: scl-utils-build-helpers-0-7.el7.src.rpm
location_href: 00878728-scl-utils-build-helpers/scl-utils-build-helpers-0-7.el7.noarch.rpm
checksum_type: sha256
description:
  Several RPM macros and convenience scripts to make the maintenance of packages
  for Software Collections easier.  The aim is to move as much duplicated code as
  possible into one (dedicated) place.


pkgId: c6fe8defdd96ccfddf91cd61fe264db758643cadb9a04dcde12e4a9631fb8432
name: sqlite
arch: ppc64le
version: 3.29.0
epoch: 0
release: 1.el7
summary: Library that implements an embeddable SQL database engine
url: http://www.sqlite.org/
rpm_license: Public Domain
rpm_group: Applications/Databases
rpm_buildhost: ddb48eaa3fa14a2bb066cb59084742a0
rpm_sourcerpm: sqlite-3.29.0-1.el7.src.rpm
location_href: 00972892-sqlite/sqlite-3.29.0-1.el7.ppc64le.rpm
checksum_type: sha256
description:
  SQLite is a C library that implements an SQL database engine. A large
  subset of SQL92 is supported. A complete database is stored in a
  single disk file. The API is designed for convenience and ease of use.
  Applications that link against SQLite can enjoy the power and
  flexibility of an SQL database without the administrative hassles of
  supporting a separate database server.  Version 2 and version 3 binaries
  are named to permit each to be installed on a single host


pkgId: 25894fc1588ca8f225637c630eb9232301a73408cabe52b6335710923ef4298b
name: sqlite-debuginfo
arch: ppc64le
version: 3.29.0
epoch: 0
release: 1.el7
summary: Debug information for package sqlite
url: http://www.sqlite.org/
rpm_license: Public Domain
rpm_group: Development/Debug
rpm_buildhost: ddb48eaa3fa14a2bb066cb59084742a0
rpm_sourcerpm: sqlite-3.29.0-1.el7.src.rpm
location_href: 00972892-sqlite/sqlite-debuginfo-3.29.0-1.el7.ppc64le.rpm
checksum_type: sha256
description:
  This package provides debug information for package sqlite.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: c5e71601bd9e4b8d1dcc99e7a9f35d0e8be095302a3de33449007b0cdba44017
name: sqlite-devel
arch: ppc64le
version: 3.29.0
epoch: 0
release: 1.el7
summary: Development tools for the sqlite3 embeddable SQL database engine
url: http://www.sqlite.org/
rpm_license: Public Domain
rpm_group: Development/Libraries
rpm_buildhost: ddb48eaa3fa14a2bb066cb59084742a0
rpm_sourcerpm: sqlite-3.29.0-1.el7.src.rpm
location_href: 00972892-sqlite/sqlite-devel-3.29.0-1.el7.ppc64le.rpm
checksum_type: sha256
description:
  This package contains the header files and development documentation
  for sqlite. If you like to develop programs using sqlite, you will need
  to install sqlite-devel.


pkgId: 6ba6e73a41502f68f8ff946a6744f9d4ac9f8d14a7253962a008f44ff95d5a07
name: sqlite-doc
arch: noarch
version: 3.29.0
epoch: 0
release: 1.el7
summary: Documentation for sqlite
url: http://www.sqlite.org/
rpm_license: Public Domain
rpm_group: Documentation
rpm_buildhost: ddb48eaa3fa14a2bb066cb59084742a0
rpm_sourcerpm: sqlite-3.29.0-1.el7.src.rpm
location_href: 00972892-sqlite/sqlite-doc-3.29.0-1.el7.noarch.rpm
checksum_type: sha256
description:
  This package contains most of the static HTML files that comprise the
  www.sqlite.org website, including all of the SQL Syntax and the
  C/C++ interface specs and other miscellaneous documentation.


