Skip to main content

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:

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dbus-deviation-0.6.1.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

dbus_deviation-0.6.1-py3-none-any.whl (52.4 kB view details)

Uploaded Python 3

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

Hashes for dbus-deviation-0.6.1.tar.gz
Algorithm Hash digest
SHA256 e06b88efe223885d2725df51cf7c9b7b463d1c6f04ea49d4690874318d0eb7a3
MD5 649e1024a024242bfc38a5e1dfec69b4
BLAKE2b-256 01dc047feaa6a81545e10c37d4eeff86443c90dd114c5ce13d6937c5ed38854d

See more details on using hashes here.

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

Hashes for dbus_deviation-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 187d56ea000742af291fa5fe5694365c59c7f7ffb38ad46cee752c40626ec4f2
MD5 dfef27416f687fe5f0e7b26c3c420a1a
BLAKE2b-256 2f3bed8628640a4e917be11268d64a342966358b9001801a21edd6c7988794c2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page