{"id":21113,"library":"debian-inspector","title":"debian-inspector","description":"Utilities to parse Debian package, control, and copyright files. Current version 31.1.1, with a recent release cadence (multiple minor releases in 2025). Requires Python >=3.9.","status":"active","version":"31.1.1","language":"python","source_language":"en","source_url":"https://github.com/nexB/debian-inspector","tags":["debian","package-parsing","copyright","control-files"],"install":[{"cmd":"pip install debian-inspector","lang":"bash","label":"Default install"}],"dependencies":[],"imports":[{"wrong":"from debian_inspector import DpkgHandler","symbol":"DpkgHandler","correct":"from debian_inspector import DpkgHandler"}],"quickstart":{"code":"from debian_inspector import DpkgHandler, Copyright\n\n# Parse a Debian control file (e.g., debian/control)\nwith open('control', 'r') as f:\n    control_text = f.read()\nhandler = DpkgHandler(control_text)\nprint(handler.paragraphs[0].get('Package'))\n\n# Parse a copyright file (e.g., /usr/share/doc/*/copyright)\nwith open('copyright', 'r') as f:\n    copyright_text = f.read()\ncopyright_obj = Copyright(copyright_text)\nprint(copyright_obj.paragraphs_license_expression())","lang":"python","description":"Parses a control file and a copyright file using top-level API."},"warnings":[{"fix":"Update any code that references 'licence' field in copyright paragraphs to use 'license'.","message":"In v31.0.0, the function `get_license_detection_from_nameless_paragraph` was renamed from a previous name? Actually it's a fix: the `licence` field in copyright files is now normalized to `license`. Code relying on the old field name `licence` may break.","severity":"breaking","affected_versions":"<31.0.0"},{"fix":"Change imports to `from debian_inspector import DpkgHandler, Copyright, get_license_detection_from_nameless_paragraph`.","message":"Direct import from submodules like `debian_inspector.dpkg` or `debian_inspector.copyright` is discouraged. Use top-level imports.","severity":"deprecated","affected_versions":">=31.0.0"},{"fix":"Read the file content first: `with open('control') as f: text = f.read(); handler = DpkgHandler(text)`.","message":"The class `DpkgHandler` expects a single string (the full control file content), not a file path. Passing a file path will raise an error.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'2025':25 '3.9':28 '31.1.1':15 'cadenc':20 'control':9,35 'control-fil':34 'copyright':11,33 'current':13 'debian':2,7,29 'debian-inspector':1 'file':12,36 'inspector':3 'minor':22 'multipl':21 'packag':8,31 'package-pars':30 'pars':6,32 'python':27 'recent':18 'releas':19,23 'requir':26 'util':4 'version':14","created_at":"2026-04-27T16:58:09.968437+00:00","updated_at":"2026-04-27T16:58:09.968437+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\nImportError: cannot import name 'DpkgHandler' from 'debian_inspector' (/tmp/tmpjl_s5by6/venv/lib/python3.12/site-packages/debian_inspector/__init__.py)"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"31.1.1","cli_name":"debian-inspector","cli_version":"sh: 1: debian-inspector: not found","type":"library","homepage":null,"github":"https://github.com/nexB/debian-inspector","docs":null,"changelog":null,"pypi":"https://pypi.org/project/debian-inspector/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}