Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

distroinfo

Package Overview
Dependencies
Maintainers
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

distroinfo

python module for parsing, validating and querying distribution/packaging metadata stored in human readable and reviewable text/YAML files

  • 0.6.3
  • PyPI
  • Socket score

Maintainers
3

distroinfo

distroinfo is a python module for parsing, validating and querying distribution/packaging metadata stored in human readable and reviewable text/YAML files.

This is a proper generic (re)implementation of rdoinfo <https://github.com/redhat-openstack/rdoinfo>__ parser which proved well suited for the task of interfacing with distribution metadata in a human friendly way. If you consider code reviews human friendly, that is.

distroinfo is a part of Software Factory project <https://softwarefactory-project.io/docs/>__

STATUS

distroinfo is available from Fedora/EPEL repos and is BEING INTEGRATED.

rdopkg <https://github.com/softwarefactory-project/rdopkg>__ and DLRN <https://github.com/softwarefactory-project/DLRN>__ are first adopters.

rdoinfo compatibility is ensured through offline and online tests.

CI is enabled.

See distroinfo reviews <https://softwarefactory-project.io/dashboard/project_distroinfo>__.

Use github Issues <https://github.com/softwarefactory-project/distroinfo/issues>__ to make requests and report bugs.

Installation

from source


If you want to hack ``distroinfo`` or just have the latest code without
waiting for next release, you can use the git repo directly:

::

    git clone https://github.com/softwarefactory-project/distroinfo
    cd distroinfo
    python setup.py develop --user

You may set the preference over ``distroinfo`` RPM by correctly
positioning ``~/.local/bin/distroinfo`` in your ``$PATH``.

Or you can use virtualenv to avoid conflicts with RPM:

::

    git clone https://github.com/softwarefactory-project/distroinfo
    cd distroinfo
    virtualenv --system-site-packages ~/distroinfo-venv
    source ~/distroinfo-venv/bin/activate
    python setup.py develop
    ln `which distroinfo` ~/bin/distroinfo-dev

    distroinfo-dev --version

Required python modules are listed in
`requirements.txt <requirements.txt>`__.

from Fedora/EPEL repos (default)

distroinfo is available on Fedora 27 and newer:

::

dnf install python2-distroinfo

including Python 3 version:

::

dnf install python3-distroinfo

On CentOS/RHEL 7, distroinfo is available from EPEL <https://fedoraproject.org/wiki/EPEL>__.

On CentOS 7:

::

yum install epel-release
yum install python2-distroinfo

On RHEL 7:

::

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install python2-distroinfo

from PyPI


For your convenience, ``distroinfo`` is available from the Cheese Shop:

::

    pip install distroinfo

Usage
-----

You can **fetch info files from an URL** by specifying ``remote_info``
base URL:

::

    from distroinfo.info import DistroInfo

    RDOINFO_RAW_URL = \
        'https://raw.githubusercontent.com/redhat-openstack/rdoinfo/master/'

    di = DistroInfo('rdo-full.yml',
                    remote_info=RDOINFO_RAW_URL)
    info = di.get_info()

Or you can **fetch info files from a remote git repository** using
``remote_git_info``:

::

    from distroinfo.info import DistroInfo

    RDOINFO_GIT_URL = \
        'https://github.com/redhat-openstack/rdoinfo'

    di = DistroInfo('rdo-full.yml',
                    remote_git_info=RDOINFO_GIT_URL)
    info = di.get_info()

Or you can **fetch info files from a local directory** using
``local_info``:

::

    from distroinfo.info import DistroInfo

    INFO_PATH = '/path/to/info'

    di = DistroInfo('rdo-full.yml',
                    local_info=INFO_PATH)
    info = di.get_info()

For remote fetchers info files/repos are cached in
``~/.distroinfo/cache``.

You can navigate info structure yourself or use ``query`` module:

::

    from distroinfo import query

    # get a package info by strict package name
    nova = query.get_package(info, 'openstack-nova')

    # find a package by human reference (smart search)
    keystone = query.find_package(info, 'keystone')

Alternatively, you can get info with ``packages`` and ``releases`` as
dictionaries indexed by project/release name for easier access using
``info_dicts=True``:

::

    info = di.get_info(info_dicts=True)
    nova = info['packages']['nova']

It is also possible to filter packages matching a given criteria.
The following query will show all packages matching criteria conf: client AND tags: antelope.

::
    # rexen is a dictionary of applied filters.
    # pkg is the currently processed package.
    info = di.get_info()
    pkgs = info['packages']
    rexen = {"conf": "client", "tags": "antelope"}

    finding = query.filter_pkgs(pkgs, rexen)

It is also possible to apply negative filtering with "~" character, which
can be combined with other filters, like conf: client.

::
    info = di.get_info()
    pkgs = info['packages']
    rexen = {"tags": "~newton", "conf": "client"}
    finding = query.filter_pkgs(pkgs, rexen)

When using this feature, the output will contain packages WITHOUT newton tag but
containing conf:client.

Until proper documentation is in place, please refer to:

-  `rdoinfo <https://github.com/redhat-openstack/rdoinfo>`__ for prime
   example of ``distroinfo`` format usage
-  `rdoinfo integration
   tests <https://github.com/softwarefactory-project/distroinfo/blob/master/tests/integration/test_rdoinfo_online.py>`__
   for code examples
-  `dlrn.drivers.rdoinfo <https://github.com/softwarefactory-project/DLRN/blob/master/dlrn/drivers/rdoinfo.py>`__
   for a real world code that uses tags and
   ``remote_git_info``/``local_info``
-  `distroinfo.info <https://github.com/softwarefactory-project/distroinfo/blob/master/distroinfo/info.py>`__
   to RTFS

Command Line Interface
----------------------

A simple CLI is provided in ``scripts/di.py`` which can be used to test
basic ``distroinfo`` functionality, profile, dump parsed data, etc.

An example of dumping parsed rdoinfo into both YAML and JSON files:

::

    $> ./scripts/di.py dump -y rdoinfo.yaml -j rdoinfo.json -f git \
           'https://github.com/redhat-openstack/rdoinfo' rdo-full.yml

    Dumping YAML to: rdoinfo.yaml
    Dumping JSON to: rdoinfo.json

Additional ``docopt`` module is required to run the CLI.

Bugs
----

Please use the `github
Issues <https://github.com/softwarefactory-project/distroinfo/issues>`__
to report bugs.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc