Parse D-Bus introspection XML and process it in various ways
Project description
dbus-deviation
dbus-deviation is a project for parsing D-Bus introspection XML and processing it in various ways. Its main tool is dbus-interface-diff, which calculates the difference between two D-Bus APIs for the purpose of checking for API breaks. This functionality is also available as a Python module, dbusdeviation.
A second Python module, dbusapi, is provided for parsing D-Bus introspection XML to produce an AST representing a D-Bus interface.
dbus-deviation’s API is currently unstable and is likely to change wildly.
Using dbus-deviation
dbus-deviation can be used as a utility program or as a Python library.
The utility programs:
-
dbus-interface-diff: Check for differences between two versions of the same D-Bus API and print details of each difference. It can check for problems with forwards and backwards compatibility, as well as general informational differences.
Example: dbus-interface-diff
com.example.Interface1.xml \ # old version of the interface com.example.Interface2.xml # new version of the interface -
dbus-interface-vcs-helper: This is a helper program designed to be used by dbus-deviation.mk.
As a library, the core object is an InterfaceParser, allowing a D-Bus API to be parsed and represented as an AST. See the API documentation for more explanation and examples.
dbus-deviation.mk
This is a Makefile snippet which should be copied into your project, added to git, and the following two lines included in your top-level Makefile.am:
dbus_api_xml_files = list of D-Bus interface XML files
-include $(top_srcdir)/dbus-deviation.mk
Do not add it to EXTRA_DIST. It is designed to work from git checkouts only.
Then run:
make dbus-deviation-mk-install
to set up the API signature database. This assumes that your project defines D-Bus interfaces in XML files, and does not generate them at runtime.
Finally, copy pre-push.hook to .git/hooks/pre-push and ensure it’s executable. This script will automatically update the API signature database when a new release tag is pushed to the git remote.
There is currently no streamlined support for projects which generate D-Bus interfaces at runtime.
dbus-deviation.mk defines the following rules:
- dist-dbus-api-compatibility (a dependency of dist-hook)
- check-dbus-api-compatibility (a dependency of check-local)
- dbus-deviation-mk-install (never triggered automatically)
Dependencies
- argparse
- lxml
Development
For fun, dbus-deviation uses the following services to do continuous integration and gather build statistics:
- https://travis-ci.org/pwithnall/dbus-deviation
- https://landscape.io/github/pwithnall/dbus-deviation
- https://coveralls.io/r/pwithnall/dbus-deviation
- https://codecov.io/github/pwithnall/dbus-deviation
Licensing
dbus-deviation is licensed under the LGPL version 2.1 (or, at your option, any later version). See COPYING for more details.
dbus-deviation versions 0.4.0 and earlier were licensed under the choice of the Academic Free License version 2.1, or the GNU General Public License version 2 (or, at your option, any later version). This is the same license as D-Bus itself. Version 0.5.0 was relicensed to LGPLv2.1+ as it’s a more standard license with less ambiguity about its implications.
Bugs
Bug reports and patches should be sent via GitHub or Gitlab:
Contact
Philip Withnall philip@tecnocode.co.uk https://tecnocode.co.uk/dbus-deviation/
Overview of changes from dbus-deviation 0.6.0 to dbus-deviation 0.6.1
Major changes:
- Drop support for Python 2.7
- Move to pycodestyle from pep8 and drop setup.py requirement for it
- Minor maintenance documentation updates
Overview of changes from dbus-deviation 0.5.0 to dbus-deviation 0.6.0
Major changes:
- Split out the logging API to allow for reuse
- Expose source line numbers in dbusapi.ast
- Add a D-Bus type parser, dbusapi.typeparser (thanks to Kaloyan Tenchov)
- Drop Python 3.3 support as Sphinx no longer supports it
- Add a D-Bus type formatter, dbusapi.typeformatter
Overview of changes from dbus-deviation 0.4.0 to dbus-deviation 0.5.0
Major changes:
- Add support for elements (Kaloyan Tenchov)
- Add object path, interface name and callable name validation (Kaloyan Tenchov)
- Relicense to LGPLv2.1+
Overview of changes from dbus-deviation 0.3.0 to dbus-deviation 0.4.0
Major changes:
- Improve test coverage
- Port to lxml instead of xml.etree
- Support parsing comments and documentation nodes
Overview of changes from dbus-deviation 0.2.0 to dbus-deviation 0.3.0
Major changes:
- Improve utility arguments and variables in dbus-deviation.mk and vcs-helper
Overview of changes from dbus-deviation 0.1.0 to dbus-deviation 0.2.0
Major changes:
- Improve error reporting
- Improve test coverage
- Add Makefile snippet and helper program (vcs-helper) for use in other projects
Initial release of dbus-deviation 0.1.0
Major changes:
- Initial version of the project
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dbus-deviation-0.6.1.tar.gz
.
File metadata
- Download URL: dbus-deviation-0.6.1.tar.gz
- Upload date:
- Size: 60.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.3 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e06b88efe223885d2725df51cf7c9b7b463d1c6f04ea49d4690874318d0eb7a3 |
|
MD5 | 649e1024a024242bfc38a5e1dfec69b4 |
|
BLAKE2b-256 | 01dc047feaa6a81545e10c37d4eeff86443c90dd114c5ce13d6937c5ed38854d |
File details
Details for the file dbus_deviation-0.6.1-py3-none-any.whl
.
File metadata
- Download URL: dbus_deviation-0.6.1-py3-none-any.whl
- Upload date:
- Size: 52.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.3 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 187d56ea000742af291fa5fe5694365c59c7f7ffb38ad46cee752c40626ec4f2 |
|
MD5 | dfef27416f687fe5f0e7b26c3c420a1a |
|
BLAKE2b-256 | 2f3bed8628640a4e917be11268d64a342966358b9001801a21edd6c7988794c2 |