.. include:: common.rst Welcome! ======== Welcome to the `Babeltrace 2 `_ Python |~| 3 bindings documentation (version |version|). .. note:: This documentation (text and illustrations) is licensed under a `Creative Commons Attribution-ShareAlike 4.0 International `_ license. .. attention:: This documentation is **incomplete**. In the meantime: * See :ref:`examples` to learn how to accomplish common tasks. * Have a look at the :bt2link:`Babeltrace 2 C API documentation `. The Babeltrace |~| 2 Python bindings wrap all the functionalities of libbabeltrace2 in a reasonably systematic manner. **Contents**: .. toctree:: :maxdepth: 2 installation examples What's Babeltrace 2? -------------------- Babeltrace 2 is an open-source software project by `EfficiOS `_; its purpose is to process or convert `traces `_. The Babeltrace |~| 2 project contains: * A **library**, :bt2link:`libbabeltrace2 `, which all the other parts rely on. libbabeltrace2 offers a C99 interface. * A **command-line program**, :bt2man:`babeltrace2(1)`, which can convert and manipulate traces. * **Python 3 bindings** which offer a Pythonic interface of libbabeltrace2. This documentation is about those bindings. * "Standard" **plugins** which ship with the project. `Common Trace Format `_ (CTF) input and output, :bt2link:`plain text ` input and output, and various :bt2link:`utilities ` are part of those plugins. With the Babeltrace |~| 2 Python bindings, you can write programs to do everything you can do, and more, with libbabeltrace2, that is: * Write custom source, filter, and sink *component classes* which you can package as Python *plugins*. Component classes are instantiated as components within a *trace processing graph* and are assembled to accomplish a trace manipulation or conversion job. * Load plugins (compiled shared object or Python modules), instantiate their component classes within a trace processing graph, connect the components as needed, and run the graph to accomplish a trace manipulation or conversion job. This is what the :command:`babeltrace2` CLI tool's ``convert`` and ``run`` commands do, for example. A trace processing graph contains connected components. The specific component topology determines the trace processing task to realize. .. figure:: images/basic-convert-graph.png A *conversion graph*, a specific trace processing graph. Between the components of a trace processing graph, *messages* flow from output ports to input ports following the configured connections through *message iterators*. There are many types of messages, chief amongst which is the *event message*. With the Babeltrace |~| 2 Python bindings, you can also query some specific object from a component class (for example, the available LTTng live sessions of an `LTTng `_ relay daemon). This is what the :command:`babeltrace2` CLI tool's ``query`` command does, for example. Make sure to read the :bt2man:`babeltrace2-intro(7)` manual page to learn even more about the Babeltrace |~| 2 project and its core concepts.