Package: dbus-deviation
dbus-deviationdbus-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-deviationdbus-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-diffcom.example.Interface1.xml \  # old version of the interface
com.example.Interface2.xml    # new version of the interfacedbus-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.mkThis 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.mkDo not add it to EXTRA_DIST. It is designed to work from git checkouts only.Then run:make dbus-deviation-mk-installto 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)DependenciesargparselxmlDevelopmentFor fun, dbus-deviation uses the following services to do continuous
integration and gather build statistics:https://travis-ci.org/pwithnall/dbus-deviationhttps://landscape.io/github/pwithnall/dbus-deviationhttps://coveralls.io/r/pwithnall/dbus-deviationhttps://codecov.io/github/pwithnall/dbus-deviationLicensingdbus-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.BugsBug reports and patches should be sent via GitHub or Gitlab:https://github.com/pwithnall/dbus-deviationhttps://gitlab.com/dbus-deviation/dbus-deviationContactPhilip Withnallphilip@tecnocode.co.ukhttps://tecnocode.co.uk/dbus-deviation/Overview of changes from dbus-deviation 0.6.0 to dbus-deviation 0.6.1Major changes:Drop support for Python 2.7Move to pycodestyle from pep8 and drop setup.py requirement for itMinor maintenance documentation updatesOverview of changes from dbus-deviation 0.5.0 to dbus-deviation 0.6.0Major changes:Split out the logging API to allow for reuseExpose source line numbers in dbusapi.astAdd a D-Bus type parser, dbusapi.typeparser (thanks to Kaloyan Tenchov)Drop Python 3.3 support as Sphinx no longer supports itAdd a D-Bus type formatter, dbusapi.typeformatterOverview of changes from dbus-deviation 0.4.0 to dbus-deviation 0.5.0Major 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.0Major changes:Improve test coveragePort to lxml instead of xml.etreeSupport parsing comments and documentation nodesOverview of changes from dbus-deviation 0.2.0 to dbus-deviation 0.3.0Major changes:Improve utility arguments and variables in dbus-deviation.mk and vcs-helperOverview of changes from dbus-deviation 0.1.0 to dbus-deviation 0.2.0Major changes:Improve error reportingImprove test coverageAdd Makefile snippet and helper program (vcs-helper) for use in other
projectsInitial release of dbus-deviation 0.1.0Major changes:Initial version of the project