debian-inspector


Namedebian-inspector JSON
Version 31.1.0 PyPI version JSON
download
home_pagehttps://github.com/nexB/debian-inspector
SummaryUtilities to parse Debian package, copyright and control files.
upload_time2024-02-19 10:29:34
maintainer
docs_urlNone
authornexB. Inc. and others
requires_python>=3.7
licenseApache-2.0 AND BSD-3-Clause AND MIT
keywords utilities deb822 debian copyright package dependency license dep5 control dsc python-debian dpkg libapt
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            =================================
debian-inspector
=================================

Utilities to parse Debian package, copyright and control files

The Python package `debian_inspector` is a collection of utilities to parse
various Debian package manifests, machine readable copyright and control files
collectively known as the Debian 822 format (based on the RFC822 email format).

It was originally named "debut" as a portmanteau of DEBian and UTilities.


Origin
------

This library is based on a heavily modified and remixed combination of original
code with code from other origins:

* python-deb-pkg-tools from @xolox for its handling of Debian packages and the
  parsing of versions, dependencies and other package-to-package relationship
  fields and for its ability to process the syntax of Debian versions and
  compare them. See https://github.com/xolox/python-deb-pkg-tools

* dlt (Debian license tools) from @agustinhenze for its check of the coverage of
  a license file Files sections and a lot of inspiration. See
  https://github.com/agustinhenze/dlt/

* PGPy from @SecurityInnovation and @Commod0re for its ability to remove a PGP
  signature from an email. dsc (Debian Source Control) files are typically
  PGP-signed and are email-like. See https://github.com/SecurityInnovation/PGPy

* python-dpkg by @TheClimateCorporation and @memory for its ability to process
  the syntax of Debian versions and to compare them according to the spec.
  See https://github.com/TheClimateCorporation/python-dpkg


Why?
----

Why create this seemingly redundant library? The official python-debian tools
and several other utilities already provide similar capabilities!

On the surface this is correct, but there are several reasons for a new utility:

* Existing tools parse control files strictly. This library tries to be more
  flexible. For instance it can recognize and fix some almost correct copyright
  files that are not fully "machine readable" but close enough to the spec to be
  worthy of recovery.

* Several of these tools have to deal with legacy compatibility. We do not have
  such a need. For instance, the Python standard library email module and one
  line of code is enough to parse a Debian 822 file fields. I doubt that this
  feature was available in the standard library when python-debian was started
  but it is here now and this vastly simplifies the code.

* The focus of this library is to parse and inspect control files, not to emit
  and create them, so the code and tests can be much simpler. For instance,
  rather than using more complex case-insensitive dictionary keys while
  preserving case for Deb822-like objects, this library uses lower case keys
  throughout.

* The official python-debian library is GPL-licensed making it it hard to
  combine with Apache-licensed libraries. I tried to work out a licensing change
  for python-debian with all its authors such that it could be integrated in
  permissive-licensed Python tools. Even though most current maintainers and
  contributors were OK with that relicensing to a permissive or an LGPL license,
  I could not get a reply and agreement from some important legacy authors:
  therefore the relicensing was not possible.


License
-------

SPDX-License-Identifier: Apache-2.0 AND BSD-3-Clause AND MIT

This software combines software from several origins with different licenses.
All of these licenses apply as all original files have been refactored and remixed
significantly::

    Copyright (c) nexB Inc. and others.
    Copyright (c) Peter Odding.
    Copyright (c) The Climate Corporation (https://climate.com)
    Copyright (c) Security Innovation, Inc
    Copyright (c) Agustin Henze <tin@sluc.org.ar>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nexB/debian-inspector",
    "name": "debian-inspector",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "utilities,deb822,debian,copyright,package,dependency,license,dep5,control,dsc,python-debian,dpkg,libapt",
    "author": "nexB. Inc. and others",
    "author_email": "info@aboutcode.org",
    "download_url": "https://files.pythonhosted.org/packages/90/7a/6f9d38aabf50c1e0449e22e42485047f9d22792664e1006b14aba8d2f604/debian_inspector-31.1.0.tar.gz",
    "platform": null,
    "description": "=================================\ndebian-inspector\n=================================\n\nUtilities to parse Debian package, copyright and control files\n\nThe Python package `debian_inspector` is a collection of utilities to parse\nvarious Debian package manifests, machine readable copyright and control files\ncollectively known as the Debian 822 format (based on the RFC822 email format).\n\nIt was originally named \"debut\" as a portmanteau of DEBian and UTilities.\n\n\nOrigin\n------\n\nThis library is based on a heavily modified and remixed combination of original\ncode with code from other origins:\n\n* python-deb-pkg-tools from @xolox for its handling of Debian packages and the\n  parsing of versions, dependencies and other package-to-package relationship\n  fields and for its ability to process the syntax of Debian versions and\n  compare them. See https://github.com/xolox/python-deb-pkg-tools\n\n* dlt (Debian license tools) from @agustinhenze for its check of the coverage of\n  a license file Files sections and a lot of inspiration. See\n  https://github.com/agustinhenze/dlt/\n\n* PGPy from @SecurityInnovation and @Commod0re for its ability to remove a PGP\n  signature from an email. dsc (Debian Source Control) files are typically\n  PGP-signed and are email-like. See https://github.com/SecurityInnovation/PGPy\n\n* python-dpkg by @TheClimateCorporation and @memory for its ability to process\n  the syntax of Debian versions and to compare them according to the spec.\n  See https://github.com/TheClimateCorporation/python-dpkg\n\n\nWhy?\n----\n\nWhy create this seemingly redundant library? The official python-debian tools\nand several other utilities already provide similar capabilities!\n\nOn the surface this is correct, but there are several reasons for a new utility:\n\n* Existing tools parse control files strictly. This library tries to be more\n  flexible. For instance it can recognize and fix some almost correct copyright\n  files that are not fully \"machine readable\" but close enough to the spec to be\n  worthy of recovery.\n\n* Several of these tools have to deal with legacy compatibility. We do not have\n  such a need. For instance, the Python standard library email module and one\n  line of code is enough to parse a Debian 822 file fields. I doubt that this\n  feature was available in the standard library when python-debian was started\n  but it is here now and this vastly simplifies the code.\n\n* The focus of this library is to parse and inspect control files, not to emit\n  and create them, so the code and tests can be much simpler. For instance,\n  rather than using more complex case-insensitive dictionary keys while\n  preserving case for Deb822-like objects, this library uses lower case keys\n  throughout.\n\n* The official python-debian library is GPL-licensed making it it hard to\n  combine with Apache-licensed libraries. I tried to work out a licensing change\n  for python-debian with all its authors such that it could be integrated in\n  permissive-licensed Python tools. Even though most current maintainers and\n  contributors were OK with that relicensing to a permissive or an LGPL license,\n  I could not get a reply and agreement from some important legacy authors:\n  therefore the relicensing was not possible.\n\n\nLicense\n-------\n\nSPDX-License-Identifier: Apache-2.0 AND BSD-3-Clause AND MIT\n\nThis software combines software from several origins with different licenses.\nAll of these licenses apply as all original files have been refactored and remixed\nsignificantly::\n\n    Copyright (c) nexB Inc. and others.\n    Copyright (c) Peter Odding.\n    Copyright (c) The Climate Corporation (https://climate.com)\n    Copyright (c) Security Innovation, Inc\n    Copyright (c) Agustin Henze <tin@sluc.org.ar>\n",
    "bugtrack_url": null,
    "license": "Apache-2.0 AND BSD-3-Clause AND MIT",
    "summary": "Utilities to parse Debian package, copyright and control files.",
    "version": "31.1.0",
    "project_urls": {
        "Homepage": "https://github.com/nexB/debian-inspector"
    },
    "split_keywords": [
        "utilities",
        "deb822",
        "debian",
        "copyright",
        "package",
        "dependency",
        "license",
        "dep5",
        "control",
        "dsc",
        "python-debian",
        "dpkg",
        "libapt"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0961709907d112553b39c8c907f0f90618de58ec87ca4565959d2ad350c84b9f",
                "md5": "2b7c5626ea877850565b30d2bb3225e9",
                "sha256": "77dfeb34492dd49d8593d4f7146ffa3f71fca703737824e09d7472e0eafca567"
            },
            "downloads": -1,
            "filename": "debian_inspector-31.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2b7c5626ea877850565b30d2bb3225e9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 45615,
            "upload_time": "2024-02-19T10:29:32",
            "upload_time_iso_8601": "2024-02-19T10:29:32.837771Z",
            "url": "https://files.pythonhosted.org/packages/09/61/709907d112553b39c8c907f0f90618de58ec87ca4565959d2ad350c84b9f/debian_inspector-31.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "907a6f9d38aabf50c1e0449e22e42485047f9d22792664e1006b14aba8d2f604",
                "md5": "bc819b1bc1d207e8687e258fbc0cbddb",
                "sha256": "ebcfbc17064f10bd3b6d2122cdbc97b71a494af0ebbafaf9a8ceadfe8b164f99"
            },
            "downloads": -1,
            "filename": "debian_inspector-31.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "bc819b1bc1d207e8687e258fbc0cbddb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 191155,
            "upload_time": "2024-02-19T10:29:34",
            "upload_time_iso_8601": "2024-02-19T10:29:34.294641Z",
            "url": "https://files.pythonhosted.org/packages/90/7a/6f9d38aabf50c1e0449e22e42485047f9d22792664e1006b14aba8d2f604/debian_inspector-31.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-19 10:29:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nexB",
    "github_project": "debian-inspector",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "debian-inspector"
}
        
Elapsed time: 0.21457s