PM4Py is a Python library providing state-of-the-art algorithms and tools for process mining.
It is developed and maintained by Process Intelligence Solutions GmbH (PIS).
Installation instructions, tutorials, and the full documentation are maintained on the PM4Py website:
The open-source version of PM4Py, available on GitHub, is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
A separate version of PM4Py is available for commercial use in closed-source environments under a different license. See PM4Py Licensing for details.
The default installation covers mainstream usage. Additional integrations are grouped by feature in pyproject.toml:
| Extra | Installs |
|---|---|
calendars |
workalendar |
connectors |
requests |
llm |
openai, requests |
ml |
pyemd, scikit-learn |
ocel |
jsonschema, pyarrow |
polars |
polars (dataframe support) |
solvers |
cvxopt |
visualization |
pyvis |
windows |
pygetwindow, pynput, pywin32 (Windows only) |
The stable extra pins the exact dependency versions validated by the project and used in CI.
Polars 1.40.1 and 2.x are supported. Joins used in filtering and enrichment preserve event order, including when lazy queries run on the streaming engine (the default in Polars 2.0).
SciPy is the default LP solver; PuLP is optional. If PuLP is installed, PM4Py selects the matching backend for
PuLP 3.x or 4.x. PuLP 4 requires CBC to be installed separately, either with python -m pip install "pulp[cbc]" or by
putting cbc on your PATH.
See CHANGELOG.md for incremental updates.
Before contributing, please review the contributing guidelines and Contributor License Agreement (CLA).
For a source checkout, install the project with python -m pip install -e .. Build, CI, and lint dependencies are
standard dependency groups and can be installed with, for example, python -m pip install --group lint
(requires pip 25.1 or later).
As a scientific library in the Python ecosystem, PM4Py relies on external libraries. The licenses of all direct
dependencies are in the third_party/ folder, and
third_party/LICENSES_TRANSITIVE lists every transitive dependency with its license.
If you use PM4Py in your scientific work, please cite:
Alessandro Berti, Sebastiaan van Zelst, and Daniel Schuster (2023). PM4Py: A process mining library for Python. Software Impacts, 17, 100556. https://doi.org/10.1016/j.simpa.2023.100556
BibTeX:
@article{pm4py,
title = {{PM4Py}: A process mining library for {Python}},
author = {Berti, Alessandro and van Zelst, Sebastiaan and Schuster, Daniel},
journal = {Software Impacts},
volume = {17},
pages = {100556},
year = {2023},
issn = {2665-9638},
doi = {10.1016/j.simpa.2023.100556},
url = {https://www.sciencedirect.com/science/article/pii/S2665963823000933}
}This repository is managed by Process Intelligence Solutions GmbH. Further information about PIS is available at processintelligence.solutions.