# Batch Tamarin (`batch-tamarin`) : Tamarin Python Wrapper
[](https://github.com/tamarin-prover/batch-tamarin/blob/main/LICENSE) [](https://github.com/tamarin-prover/batch-tamarin/releases) [](https://pypi.org/project/batch-tamarin/)
A Python wrapper for Tamarin Prover that enables batch execution of protocol verification tasks with JSON configuration files, comprehensive reporting, and validation tools.

## Features
- **Batch Execution**: Run multiple Tamarin models across different Tamarin binary versions
- **JSON Configuration**: Define execution recipes using simple JSON configuration files
- **Interactive Configuration**: Generate JSON configurations from spthy files with guided prompts
- **Resource Management**: Intelligent CPU and memory allocation for parallel task execution
- **Progress Tracking**: Real-time progress updates with Rich-formatted output
- **Output Processing**: Reformat the different Tamarin output to give a detailed summary of execution
- **CLI Interface**: Easy-to-use command-line interface with `run`, `check`, and `init` commands
- **Configuration Validation**: Validate JSON recipes and preview tasks before execution
- **Wellformedness Checking**: Check theory files for syntax errors and warnings
## Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Prerequisites](#prerequisites)
- [From PyPI](#from-pypi)
- [From local package](#from-local-package)
- [Usage](#usage)
- [Basic Commands](#basic-commands)
- [Configuration Example](#configuration-example)
- [Output](#output)
- [Development](#development)
- [Contributing](#contributing)
- [Dependencies, Configuration](#dependencies-configuration)
- [Using Nix (the easy way)](#using-nix-the-easy-way)
- [Using Python Virtual Environment (still pretty easy)](#using-python-virtual-environment-still-pretty-easy)
- [Testing During Development](#testing-during-development)
- [Packaging/Publishing](#packagingpublishing)
- [Building the Package](#building-the-package)
- [Publishing](#publishing)
- [License](#license)
- [License Summary](#license-summary)
- [Implementation Details](#implementation-details)
- [Acknowledgments](#acknowledgments)
- [Final Note](#final-note)
## Installation
### Prerequisites
- **Python 3.9+**
- **Tamarin Prover binaries** (installed separately)
### From PyPI
```bash
pip install batch-tamarin
```
### From local package
Get the latest release from this github repo.
```bash
pip install pip install ./batch_tamarin-0.1.1-py3-none-any.whl
```
## Usage
### Basic Commands
```bash
# Show version
batch-tamarin --version
# Show help
batch-tamarin --help
# Run tasks with configuration file
batch-tamarin run recipe.json
# Run with debug output
batch-tamarin run recipe.json --debug
# Check configuration and preview tasks
batch-tamarin check recipe.json
# Check with detailed wellformedness report
batch-tamarin check recipe.json --report
# Check with debug output
batch-tamarin check recipe.json --debug
# Generate configuration interactively from spthy files
batch-tamarin init protocol.spthy
# Generate configuration with multiple files and custom output
batch-tamarin init protocol1.spthy protocol2.spthy --output my_recipe.json
```
### Configuration Example
Create a JSON configuration file based on the WPA2 example:
```json
{
"config": {
"global_max_cores": 10,
"global_max_memory": "max",
"default_timeout": 7200,
"output_directory": "./results"
},
"tamarin_versions": {
"stable": {
"path": "tamarin-binaries/tamarin-prover-1.10/1.10.0/bin/tamarin-prover"
},
"legacy": {
"path": "tamarin-binaries/tamarin-prover-1.8/1.8.0/bin/tamarin-prover"
}
},
"tasks": {
"wpa2": {
"theory_file": "protocols/wpa2_four_way_handshake_unpatched.spthy",
"tamarin_versions": ["stable", "legacy"],
"output_file": "wpa2.txt",
"preprocess_flags": ["yes"],
"tamarin_options": ["-v"],
"resources": {
"max_cores": 2,
"max_memory": 8,
"timeout": 3600
},
"lemmas": [
{
"name": "nonce_reuse_key_type",
"resources": {
"max_cores": 1
}
},
{
"name": "authenticator_rcv_m2_must_be_preceded_by_snd_m1",
"tamarin_versions": ["stable"],
"resources": {
"max_cores": 4,
"max_memory": 16,
"timeout": 30
}
}
]
}
}
}
```
Read the configuration guide to understand how to write a JSON recipe : [`JSON Guide`](https://github.com/tamarin-prover/batch-tamarin/blob/main/RECIPE_GUIDE.md)
### Output
The wrapper will output the results of all analysis in the `output_file` specified in the recipe.
It will follow this pattern :
```
output_directory/
├── failed/
│ ├── output_prefix[\_lemma]\_tamarin_alias.json
│ └── ...
├── proofs/
│ ├── output_prefix[\_lemma]\_tamarin_alias.spthy
│ └── ...
└── success/
├── output_prefix[\_lemma]\_tamarin_alias.json
└── ...
```
As the name of each directory and file describe, you will find successful task in `success` and their linked models proofs in `proofs`
Failed tasks don't output proofs (that's a tamarin behavior), you will only find a json in `failed`
Here is an example for each result json :
`success/`
```json
{
"task_id": "wpa2_authenticator_installed_is_unique_for_anonce_dev",
"warnings": ["1 wellformedness check failed!"],
"tamarin_timing": 12.27,
"wrapper_measures": {
"time": 12.385284208023222,
"avg_memory": 200.17067307692307,
"peak_memory": 358.34375
},
"output_spthy": "results/models/wpa2_authenticator_installed_is_unique_for_anonce_dev.spthy",
"verified_lemma": {
"authenticator_installed_is_unique_for_anonce": {
"steps": 102,
"analysis_type": "all-traces"
}
},
"falsified_lemma": {},
"unterminated_lemma": ["nonce_reuse_key_type", "...", "krack_attack_ptk"]
}
```
`failed/`
```json
{
"task_id": "wpa2_authenticator_rcv_m2_must_be_preceded_by_snd_m1_dev",
"error_description": "The task exceeded its memory limit. Review the memory limit setting for this task.",
"wrapper_measures": {
"time": 30.274985666008433,
"avg_memory": 566.9329637096774,
"peak_memory": 1059.609375
},
"return_code": -2,
"last_stderr_lines": ["Process exceeded memory limit"]
}
```
## Development
A macOS or Linux environment is highly recommended, as tamarin-prover is only running on these OS. You can use WSL2 on Windows hosts.
### Contributing
1. **Fork the repository** and create a feature branch:
```bash
git checkout -b feature/my-awesome-feature
```
2. **Set up development environment** (see options below)
3. **Install pre-commit hooks**:
```bash
./setup-hooks.sh
```
4. **Make your changes** and commit them
5. **Push to your branch** and open a pull request
### Dependencies, Configuration
#### Using Nix (the easy way)
```bash
# Enter development environment with all dependencies
nix develop
# Install the package in editable mode (required once per environment)
pip install -e .
# The batch-tamarin command is now available
batch-tamarin --version
```
#### Using Python Virtual Environment (still pretty easy)
```bash
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate
# Install development dependencies
pip install -r requirements.txt
# The package is installed in editable mode automatically
batch-tamarin --version
```
### Testing During Development
#### Running Tests
The project uses pytest for testing. To run the test suite:
```bash
# Run all tests
pytest
# Run with verbose output
pytest -v
# Run specific test file
pytest tests/test_config_manager.py
# Run with coverage report
pytest --cov=src/batch_tamarin
```
#### Testing the Package Installation
Since the package uses proper Python packaging structure, you cannot run `python src/batch_tamarin/main.py` directly. Use one of these methods:
```bash
# Method 1 (Recommended): Use the CLI command (after pip install -e .)
batch-tamarin --help
# Method 2: Test built package (Useful before publishing)
python -m build
pip install dist/batch_tamarin-*.whl
```
## Packaging/Publishing
### Building the Package
```bash
# Clean previous builds
rm -rf dist/ build/ **/*.egg-info/ # Be careful, it's still a rm -rf command
# Might fail because of *.egg-info pattern, you might want to remove it
# Build wheel and source distribution
python -m build
```
### Publishing
#### Test Upload (TestPyPI)
```bash
python -m twine upload --repository testpypi dist/*
```
#### Production Upload (PyPI)
```bash
python -m twine upload dist/*
```
For detailed packaging instructions, see [`PACKAGING.md`](https://github.com/tamarin-prover/batch-tamarin/blob/main/PACKAGING.md).
## License
This project is licensed under the **GNU General Public License v3.0 or later (GPL-3.0-or-later)**.
See the [LICENSE](https://github.com/tamarin-prover/batch-tamarin/blob/main/LICENSE) file for the full license text.
### License Summary
- ✅ **Use**: Commercial and private use allowed
- ✅ **Modify**: Modifications and derivatives allowed
- ✅ **Distribute**: Distribution allowed
- ❗ **Share Alike**: Derivatives must be licensed under GPL-3.0+
- ❗ **Disclose Source**: Source code must be made available
- ❗ **Include License**: License and copyright notice must be included
## Implementation Details
For detailed architecture, module overview, and workflow documentation, see [`ARCHITECTURE.md`](https://github.com/tamarin-prover/batch-tamarin/blob/main/ARCHITECTURE.md).
---
## Acknowledgments
This project has been done during an internship at CISPA.
It was made with the help of the Cas Cremers research group, a particular thanks should go to :
- Cas Cremers, as the supervisor of this internship but also for all his support and guidance.
- Maïwenn Racouchot and Aleksi Peltonen for their close collaboration, feedback, and, most importantly, the logo.
- Esra Günsay, Erik Pallas, Niklas Medinger, Aurora Naska and Alexander Dax for their valuable support and development ideas.
## Final Note
As this package need to directly use `tamarin-prover` commands, you can visit the [Tamarin Prover website](https://tamarin-prover.com) for installation instructions.
Raw data
{
"_id": null,
"home_page": null,
"name": "batch-tamarin",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "tamarin, prover, security, protocol, verification",
"author": null,
"author_email": "Luca Mandrelli <luca.mandrelli@icloud.com>",
"download_url": "https://files.pythonhosted.org/packages/90/4a/e63bf4ac875ead19bdaabba0c08709b13dab72327d0c562e642b95713289/batch_tamarin-0.2.3.tar.gz",
"platform": null,
"description": "# Batch Tamarin (`batch-tamarin`) : Tamarin Python Wrapper\n\n[](https://github.com/tamarin-prover/batch-tamarin/blob/main/LICENSE) [](https://github.com/tamarin-prover/batch-tamarin/releases) [](https://pypi.org/project/batch-tamarin/)\n\nA Python wrapper for Tamarin Prover that enables batch execution of protocol verification tasks with JSON configuration files, comprehensive reporting, and validation tools.\n\n\n\n## Features\n\n- **Batch Execution**: Run multiple Tamarin models across different Tamarin binary versions\n- **JSON Configuration**: Define execution recipes using simple JSON configuration files\n- **Interactive Configuration**: Generate JSON configurations from spthy files with guided prompts\n- **Resource Management**: Intelligent CPU and memory allocation for parallel task execution\n- **Progress Tracking**: Real-time progress updates with Rich-formatted output\n- **Output Processing**: Reformat the different Tamarin output to give a detailed summary of execution\n- **CLI Interface**: Easy-to-use command-line interface with `run`, `check`, and `init` commands\n- **Configuration Validation**: Validate JSON recipes and preview tasks before execution\n- **Wellformedness Checking**: Check theory files for syntax errors and warnings\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n - [Prerequisites](#prerequisites)\n - [From PyPI](#from-pypi)\n - [From local package](#from-local-package)\n- [Usage](#usage)\n - [Basic Commands](#basic-commands)\n - [Configuration Example](#configuration-example)\n - [Output](#output)\n- [Development](#development)\n - [Contributing](#contributing)\n - [Dependencies, Configuration](#dependencies-configuration)\n - [Using Nix (the easy way)](#using-nix-the-easy-way)\n - [Using Python Virtual Environment (still pretty easy)](#using-python-virtual-environment-still-pretty-easy)\n - [Testing During Development](#testing-during-development)\n- [Packaging/Publishing](#packagingpublishing)\n - [Building the Package](#building-the-package)\n - [Publishing](#publishing)\n- [License](#license)\n - [License Summary](#license-summary)\n- [Implementation Details](#implementation-details)\n- [Acknowledgments](#acknowledgments)\n- [Final Note](#final-note)\n\n## Installation\n\n### Prerequisites\n\n- **Python 3.9+**\n- **Tamarin Prover binaries** (installed separately)\n\n### From PyPI\n\n```bash\npip install batch-tamarin\n```\n\n### From local package\n\nGet the latest release from this github repo.\n\n```bash\npip install pip install ./batch_tamarin-0.1.1-py3-none-any.whl\n```\n\n## Usage\n\n### Basic Commands\n\n```bash\n# Show version\nbatch-tamarin --version\n\n# Show help\nbatch-tamarin --help\n\n# Run tasks with configuration file\nbatch-tamarin run recipe.json\n\n# Run with debug output\nbatch-tamarin run recipe.json --debug\n\n# Check configuration and preview tasks\nbatch-tamarin check recipe.json\n\n# Check with detailed wellformedness report\nbatch-tamarin check recipe.json --report\n\n# Check with debug output\nbatch-tamarin check recipe.json --debug\n\n# Generate configuration interactively from spthy files\nbatch-tamarin init protocol.spthy\n\n# Generate configuration with multiple files and custom output\nbatch-tamarin init protocol1.spthy protocol2.spthy --output my_recipe.json\n```\n\n### Configuration Example\n\nCreate a JSON configuration file based on the WPA2 example:\n\n```json\n{\n\t\"config\": {\n\t\t\"global_max_cores\": 10,\n\t\t\"global_max_memory\": \"max\",\n\t\t\"default_timeout\": 7200,\n\t\t\"output_directory\": \"./results\"\n\t},\n\t\"tamarin_versions\": {\n\t\t\"stable\": {\n\t\t\t\"path\": \"tamarin-binaries/tamarin-prover-1.10/1.10.0/bin/tamarin-prover\"\n\t\t},\n\t\t\"legacy\": {\n\t\t\t\"path\": \"tamarin-binaries/tamarin-prover-1.8/1.8.0/bin/tamarin-prover\"\n\t\t}\n\t},\n\t\"tasks\": {\n\t\t\"wpa2\": {\n\t\t\t\"theory_file\": \"protocols/wpa2_four_way_handshake_unpatched.spthy\",\n\t\t\t\"tamarin_versions\": [\"stable\", \"legacy\"],\n\t\t\t\"output_file\": \"wpa2.txt\",\n\t\t\t\"preprocess_flags\": [\"yes\"],\n\t\t\t\"tamarin_options\": [\"-v\"],\n\t\t\t\"resources\": {\n\t\t\t\t\"max_cores\": 2,\n\t\t\t\t\"max_memory\": 8,\n\t\t\t\t\"timeout\": 3600\n\t\t\t},\n\t\t\t\"lemmas\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce_reuse_key_type\",\n\t\t\t\t\t\"resources\": {\n\t\t\t\t\t\t\"max_cores\": 1\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"authenticator_rcv_m2_must_be_preceded_by_snd_m1\",\n\t\t\t\t\t\"tamarin_versions\": [\"stable\"],\n\t\t\t\t\t\"resources\": {\n\t\t\t\t\t\t\"max_cores\": 4,\n\t\t\t\t\t\t\"max_memory\": 16,\n\t\t\t\t\t\t\"timeout\": 30\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}\n```\n\nRead the configuration guide to understand how to write a JSON recipe : [`JSON Guide`](https://github.com/tamarin-prover/batch-tamarin/blob/main/RECIPE_GUIDE.md)\n\n### Output\n\nThe wrapper will output the results of all analysis in the `output_file` specified in the recipe.\nIt will follow this pattern :\n\n```\noutput_directory/\n\u251c\u2500\u2500 failed/\n\u2502 \u251c\u2500\u2500 output_prefix[\\_lemma]\\_tamarin_alias.json\n\u2502 \u2514\u2500\u2500 ...\n\u251c\u2500\u2500 proofs/\n\u2502 \u251c\u2500\u2500 output_prefix[\\_lemma]\\_tamarin_alias.spthy\n\u2502 \u2514\u2500\u2500 ...\n\u2514\u2500\u2500 success/\n \u251c\u2500\u2500 output_prefix[\\_lemma]\\_tamarin_alias.json\n \u2514\u2500\u2500 ...\n```\n\nAs the name of each directory and file describe, you will find successful task in `success` and their linked models proofs in `proofs`\nFailed tasks don't output proofs (that's a tamarin behavior), you will only find a json in `failed`\n\nHere is an example for each result json :\n`success/`\n\n```json\n{\n\t\"task_id\": \"wpa2_authenticator_installed_is_unique_for_anonce_dev\",\n\t\"warnings\": [\"1 wellformedness check failed!\"],\n\t\"tamarin_timing\": 12.27,\n\t\"wrapper_measures\": {\n\t\t\"time\": 12.385284208023222,\n\t\t\"avg_memory\": 200.17067307692307,\n\t\t\"peak_memory\": 358.34375\n\t},\n\t\"output_spthy\": \"results/models/wpa2_authenticator_installed_is_unique_for_anonce_dev.spthy\",\n\t\"verified_lemma\": {\n\t\t\"authenticator_installed_is_unique_for_anonce\": {\n\t\t\t\"steps\": 102,\n\t\t\t\"analysis_type\": \"all-traces\"\n\t\t}\n\t},\n\t\"falsified_lemma\": {},\n\t\"unterminated_lemma\": [\"nonce_reuse_key_type\", \"...\", \"krack_attack_ptk\"]\n}\n```\n\n`failed/`\n\n```json\n{\n\t\"task_id\": \"wpa2_authenticator_rcv_m2_must_be_preceded_by_snd_m1_dev\",\n\t\"error_description\": \"The task exceeded its memory limit. Review the memory limit setting for this task.\",\n\t\"wrapper_measures\": {\n\t\t\"time\": 30.274985666008433,\n\t\t\"avg_memory\": 566.9329637096774,\n\t\t\"peak_memory\": 1059.609375\n\t},\n\t\"return_code\": -2,\n\t\"last_stderr_lines\": [\"Process exceeded memory limit\"]\n}\n```\n\n## Development\n\nA macOS or Linux environment is highly recommended, as tamarin-prover is only running on these OS. You can use WSL2 on Windows hosts.\n\n### Contributing\n\n1. **Fork the repository** and create a feature branch:\n\n ```bash\n git checkout -b feature/my-awesome-feature\n ```\n\n2. **Set up development environment** (see options below)\n\n3. **Install pre-commit hooks**:\n\n ```bash\n ./setup-hooks.sh\n ```\n\n4. **Make your changes** and commit them\n\n5. **Push to your branch** and open a pull request\n\n### Dependencies, Configuration\n\n#### Using Nix (the easy way)\n\n```bash\n# Enter development environment with all dependencies\nnix develop\n\n# Install the package in editable mode (required once per environment)\npip install -e .\n\n# The batch-tamarin command is now available\nbatch-tamarin --version\n```\n\n#### Using Python Virtual Environment (still pretty easy)\n\n```bash\n# Create and activate virtual environment\npython -m venv venv\nsource venv/bin/activate\n\n# Install development dependencies\npip install -r requirements.txt\n\n# The package is installed in editable mode automatically\nbatch-tamarin --version\n```\n\n### Testing During Development\n\n#### Running Tests\n\nThe project uses pytest for testing. To run the test suite:\n\n```bash\n# Run all tests\npytest\n\n# Run with verbose output\npytest -v\n\n# Run specific test file\npytest tests/test_config_manager.py\n\n# Run with coverage report\npytest --cov=src/batch_tamarin\n```\n\n#### Testing the Package Installation\n\nSince the package uses proper Python packaging structure, you cannot run `python src/batch_tamarin/main.py` directly. Use one of these methods:\n\n```bash\n# Method 1 (Recommended): Use the CLI command (after pip install -e .)\nbatch-tamarin --help\n\n# Method 2: Test built package (Useful before publishing)\npython -m build\npip install dist/batch_tamarin-*.whl\n```\n\n## Packaging/Publishing\n\n### Building the Package\n\n```bash\n# Clean previous builds\nrm -rf dist/ build/ **/*.egg-info/ # Be careful, it's still a rm -rf command\n# Might fail because of *.egg-info pattern, you might want to remove it\n\n# Build wheel and source distribution\npython -m build\n```\n\n### Publishing\n\n#### Test Upload (TestPyPI)\n\n```bash\npython -m twine upload --repository testpypi dist/*\n```\n\n#### Production Upload (PyPI)\n\n```bash\npython -m twine upload dist/*\n```\n\nFor detailed packaging instructions, see [`PACKAGING.md`](https://github.com/tamarin-prover/batch-tamarin/blob/main/PACKAGING.md).\n\n## License\n\nThis project is licensed under the **GNU General Public License v3.0 or later (GPL-3.0-or-later)**.\n\nSee the [LICENSE](https://github.com/tamarin-prover/batch-tamarin/blob/main/LICENSE) file for the full license text.\n\n### License Summary\n\n- \u2705 **Use**: Commercial and private use allowed\n- \u2705 **Modify**: Modifications and derivatives allowed\n- \u2705 **Distribute**: Distribution allowed\n- \u2757 **Share Alike**: Derivatives must be licensed under GPL-3.0+\n- \u2757 **Disclose Source**: Source code must be made available\n- \u2757 **Include License**: License and copyright notice must be included\n\n## Implementation Details\n\nFor detailed architecture, module overview, and workflow documentation, see [`ARCHITECTURE.md`](https://github.com/tamarin-prover/batch-tamarin/blob/main/ARCHITECTURE.md).\n\n---\n\n## Acknowledgments\n\nThis project has been done during an internship at CISPA.\nIt was made with the help of the Cas Cremers research group, a particular thanks should go to :\n\n- Cas Cremers, as the supervisor of this internship but also for all his support and guidance.\n- Ma\u00efwenn Racouchot and Aleksi Peltonen for their close collaboration, feedback, and, most importantly, the logo.\n- Esra G\u00fcnsay, Erik Pallas, Niklas Medinger, Aurora Naska and Alexander Dax for their valuable support and development ideas.\n\n## Final Note\n\nAs this package need to directly use `tamarin-prover` commands, you can visit the [Tamarin Prover website](https://tamarin-prover.com) for installation instructions.\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "Python wrapper for Tamarin Prover with JSON configuration",
"version": "0.2.3",
"project_urls": {
"Bug Tracker": "https://github.com/tamarin-prover/batch-tamarin/issues",
"Documentation": "https://github.com/tamarin-prover/batch-tamarin#readme",
"Homepage": "https://github.com/tamarin-prover/batch-tamarin",
"Repository": "https://github.com/tamarin-prover/batch-tamarin"
},
"split_keywords": [
"tamarin",
" prover",
" security",
" protocol",
" verification"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "70fd730a6c6daea7f3e5f4c6b70d157b6a9f453eb42f139c4b0b35df86383d32",
"md5": "58aeada36a0a0f0a96706637da44202b",
"sha256": "f0848a8842cec5610e3a243a5a54cf2340fcc2188c29f7c43e019c0bfc761487"
},
"downloads": -1,
"filename": "batch_tamarin-0.2.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "58aeada36a0a0f0a96706637da44202b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 73031,
"upload_time": "2025-07-08T13:36:46",
"upload_time_iso_8601": "2025-07-08T13:36:46.049031Z",
"url": "https://files.pythonhosted.org/packages/70/fd/730a6c6daea7f3e5f4c6b70d157b6a9f453eb42f139c4b0b35df86383d32/batch_tamarin-0.2.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "904ae63bf4ac875ead19bdaabba0c08709b13dab72327d0c562e642b95713289",
"md5": "3429c44538e4fd50fe366ec2a1f1b4fe",
"sha256": "e16f0b3095ca058294090d2cb56d58030a3685588a0e9224895149624c759de0"
},
"downloads": -1,
"filename": "batch_tamarin-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "3429c44538e4fd50fe366ec2a1f1b4fe",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 151542,
"upload_time": "2025-07-08T13:36:47",
"upload_time_iso_8601": "2025-07-08T13:36:47.450833Z",
"url": "https://files.pythonhosted.org/packages/90/4a/e63bf4ac875ead19bdaabba0c08709b13dab72327d0c562e642b95713289/batch_tamarin-0.2.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-08 13:36:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tamarin-prover",
"github_project": "batch-tamarin",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "batch-tamarin"
}