batch-tamarin


Namebatch-tamarin JSON
Version 0.2.3 PyPI version JSON
download
home_pageNone
SummaryPython wrapper for Tamarin Prover with JSON configuration
upload_time2025-07-08 13:36:47
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseGPL-3.0-or-later
keywords tamarin prover security protocol verification
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Batch Tamarin (`batch-tamarin`) : Tamarin Python Wrapper

[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-gold.svg)](https://github.com/tamarin-prover/batch-tamarin/blob/main/LICENSE) [![Release](https://img.shields.io/badge/release-0.2.3-forestgreen)](https://github.com/tamarin-prover/batch-tamarin/releases) [![PyPI version](https://img.shields.io/pypi/v/batch-tamarin.svg?color=blue)](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.

![WrapperLogo](https://raw.githubusercontent.com/tamarin-prover/batch-tamarin/main/assets/logo.png)

## 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[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-gold.svg)](https://github.com/tamarin-prover/batch-tamarin/blob/main/LICENSE) [![Release](https://img.shields.io/badge/release-0.2.3-forestgreen)](https://github.com/tamarin-prover/batch-tamarin/releases) [![PyPI version](https://img.shields.io/pypi/v/batch-tamarin.svg?color=blue)](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![WrapperLogo](https://raw.githubusercontent.com/tamarin-prover/batch-tamarin/main/assets/logo.png)\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"
}
        
Elapsed time: 0.44876s