A simple parser for Debian control file formats.
Once initialized, it exposes three attributes with information from the input Control File, and one method to export the information to a JSON file.
A CLI functionality may be added later.
Install using pip
:
$ pip install --user deb-parse
from deb_parse.parser import Parser
Initialze it with a valid Control File path or a string that follows the schema:
my_parser = Parse("/var/lib/dpkg/status")
- Note: A
TypeError
is raised if the input is notstr
- Note: A
ValueError
is raised if the input string or path don't follow the schema
If everything goes well, my_parser
will now have three accessible attributes:
my_parser.pkg_names
outputs alist
of package names in the inputmy_parser.raw_pkg_info
outputs alist
of rawdict
objects as seen in inputmy_parser.clean_pkg_info
outputs alist
of cleaned updict
objects with more useful information
Examples:
print(my_parser.pkg_names)
['libws-commons-util-java', 'python-pkg-resources', 'tcpd', ... ]
print(my_parser.raw_pkg_info)
[{'name': 'libws-commons-util-java', 'details': {'status': 'install ok installed', 'priority': 'optional', 'section': 'java', 'installed-size': '101', 'maintainer': 'Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>', 'architecture': 'all', 'version': '1.0.1-7', 'description': 'Common utilities from the Apache Web Services Project\n This is a small collection of utility classes, that allow high\n performance XML processing based on SAX.', 'original-maintainer': 'Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>', 'homepage': 'http://ws.apache.org/commons/util/'}}, ... ]
print(my_parser.clean_pkg_info)
[{'name': 'libws-commons-util-java', 'details': {'version': '1.0.1-7', 'synopsis': 'Common utilities from the Apache Web Services Project', 'description': 'This is a small collection of utility classes, that allow high\nperformance XML processing based on SAX.', 'depends': None, 'alt_depends': None, 'reverse_depends': None}}, ... ]
If you want, you can also dump the parsed information in a JSON file using .to_json_file()
:
Attributes:
outfile=str
, default:'./datastore/dpkgs.json'
names_only=bool
, default:False
(ifTrue
outputs list of names and cancelsraw
option)raw=bool
, default:False
(ifTrue
outputs raw parse)
If both options are False
, JSON will be based on clean package information
For working on deb-parse
, you will need Python >= 3.7 and pipenv
installed. Configure pipenv
to create its .venv
in the current folder if you want to use the VS-Code settings. With these installed, run the following command to create a virtualenv for the project and fetch the dependencies:
$ pipenv install --dev
...
Next, activate the virtual environment and get to work:
$ pipenv shell
...
(deb-parse) $