pytera


Namepytera JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
SummaryA fast, Python templating engine powered by Rust's Tera library
upload_time2025-11-02 18:48:35
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8.1
licenseMIT
keywords templating tera rust pyo3 jinja2 django-templates web-framework html rendering fast
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PyTera

[![PyPI version](https://badge.fury.io/py/pytera.svg)](https://pypi.org/project/pytera/)
[![Python versions](https://img.shields.io/pypi/pyversions/pytera.svg)](https://pypi.org/project/pytera/)
[![License](https://img.shields.io/pypi/l/pytera.svg)](https://github.com/un4gt/pytera/blob/main/LICENSE)
[![CI](https://github.com/un4gt/pytera/actions/workflows/ci.yml/badge.svg)](https://github.com/un4gt/pytera/actions/workflows/ci.yml)
[![Codecov](https://codecov.io/gh/un4gt/pytera/branch/main/graph/badge.svg)](https://codecov.io/gh/un4gt/pytera)

A fast, Python-native templating engine powered by Rust's Tera library. PyTera brings the power and performance of Tera templates to Python applications through PyO3 bindings.

## Features

- 🚀 **High Performance**: Rust-powered templating with zero-copy operations
- 🐍 **Python Native**: Seamless integration with Python data types and workflows
- 📝 **Tera Compatible**: Full support for Tera template syntax and features
- 🔧 **Easy Integration**: Simple API that works with Flask, FastAPI, and other web frameworks
- 🛡️ **Type Safe**: Comprehensive type hints and error handling
- 📚 **Rich Features**: Variables, conditionals, loops, filters, inheritance, and more

## Installation

Install PyTera from PyPI:

```bash
pip install pytera
```

Or using uv:

```bash
uv add pytera
```

### Requirements

- Python 3.8+
- Rust toolchain (for building from source)

## Quick Start

```python
import os
from pytera import PyTera

template_dir = os.path.join(os.path.dirname(__file__), "templates")
tera = PyTera(f"{template_dir}/*.html")

result = tera.render_template("basic_variables.html", name="Alice", age=30)
print(result)  # Hello Alice! You are 30 years old.
```

> ℹ️ **Glob pattern tips**: The current templates live directly under `templates/`, so `PyTera(f"{template_dir}/*.html")` works. If you reorganize templates into nested subdirectories, switch to `PyTera(f"{template_dir}/**/*.html")` to load them recursively.

## Usage Examples

### Basic Variables

```python
tera = PyTera("templates/*.html")
result = tera.render_template(
    "basic_variables.html",
    name="Alice",
    age=30,
)
print(result)  # Hello Alice! You are 30 years old.
```

> ℹ️ **Glob pattern tips**: Current templates live directly under `templates/`, so `PyTera(f"{template_dir}/*.html")` works. If you organize templates into nested subdirectories later, switch to `PyTera(f"{template_dir}/**/*.html")` to load them recursively.

```html
<!-- templates/basic_variables.html -->
Hello {{ name }}! You are {{ age }} years old.
```

### Conditionals

```python
user = {"name": "Bob", "is_admin": True}
result = tera.render_template("conditionals.html", user=user)
print(result)  # Welcome, Administrator Bob!
```

```html
<!-- templates/conditionals.html -->
{% if user.is_admin %}
Welcome, Administrator {{ user.name }}!
{% else %}
Hello, {{ user.name }}!
{% endif %}
```

### Loops

```python
items = [
    {"name": "Apple", "price": 1.50},
    {"name": "Banana", "price": 0.75},
    {"name": "Cherry", "price": 2.25},
]
result = tera.render_template("loops.html", items=items)
print(result)
```

```html
<!-- templates/loops.html -->
<ul>
{% for item in items %}
<li>{{ item.name }}: {{ item.price | round(precision=2) }}</li>
{% endfor %}
</ul>
```

### Filters

```python
data = {
    "text": "hello world",
    "missing": None,
    "list": ["apple", "banana", "cherry", "date"],
}
result = tera.render_template("filters.html", **data)
print(result)
```

```html
<!-- templates/filters.html -->
<p>Uppercase: {{ text | upper }}</p>
<p>Length: {{ text | length }}</p>
<p>Default: {{ missing | default(value="N/A") }}</p>
<p>Slice: {{ list | slice(start=1, end=3) | join(sep=", ") }}</p>
```

### Template Inheritance

```html
<!-- templates/base.html -->
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}Default Title{% endblock %}</title>
</head>
<body>
    <header>
        <h1>My Website</h1>
    </header>
    <main>
        {% block content %}{% endblock %}
    </main>
    <footer>
        <p>&copy; 2023</p>
    </footer>
</body>
</html>
```

```html
<!-- templates/child.html -->
{% extends "base.html" %}

{% block title %}Home Page{% endblock %}

{% block content %}
<h2>Welcome to {{ site_name }}</h2>
<p>This is the home page content.</p>
{% if user %}
<p>Hello, {{ user.name }}!</p>
{% endif %}
{% endblock %}
```

### Flask Integration

```python
import os
from flask import Flask, render_template
from pytera import PyTera

template_dir = os.path.join(os.path.dirname(__file__), "..", "templates")
tera = PyTera(f"{template_dir}/*.html")

app = Flask(__name__, template_folder=os.path.abspath(template_dir))

@app.route("/")
def index():
    return tera.render_template(
        "child.html",
        site_name="example",
        user={"name": "David"},
    )

@app.route("/child")
def child():
    return render_template(
        "child.html",
        site_name="example",
        user={"name": "David"},
    )
```

For a complete working example with additional routes (`/basic_variables`, `/conditionals`, `/filters`, `/loops`), see [examples/app.py](examples/app.py).


## Template Syntax

The templates rendered in [examples/app.py](examples/app.py) cover the core pieces of Tera syntax:

### Variables
```html
Hello {{ name }}! You are {{ age }} years old.
```

### Conditionals
```html
{% if user.is_admin %}
Welcome, Administrator {{ user.name }}!
{% else %}
Hello, {{ user.name }}!
{% endif %}
```

### Loops
```html
<ul>
{% for item in items %}
<li>{{ item.name }}: {{ item.price | round(precision=2) }}</li>
{% endfor %}
</ul>
```

### Filters
```html
<p>Uppercase: {{ text | upper }}</p>
<p>Length: {{ text | length }}</p>
<p>Default: {{ missing | default(value="N/A") }}</p>
<p>Slice: {{ list | slice(start=1, end=3) | join(sep=", ") }}</p>
```

### Template Inheritance
```html
{% extends "base.html" %}
{% block title %}Home Page{% endblock %}
{% block content %}
<h2>Welcome to {{ site_name }}</h2>
{% if user %}
<p>Hello, {{ user.name }}!</p>
{% endif %}
{% endblock %}
```

For more template features—such as macros, tests, and custom filters—consult the [Tera documentation](https://keats.github.io/tera/docs/#getting-started).

## Error Handling

PyTera provides detailed error messages for common issues:

- **Template Not Found**: When requesting a non-existent template
- **Invalid Context**: When context keys aren't strings
- **Parsing Errors**: Syntax errors in templates
- **Inheritance Issues**: Circular dependencies or missing parents


## Development

### Building from Source

```bash
# Clone the repository
git clone https://github.com/un4gt/pytera.git
cd pytera

# Install development dependencies
uv sync --dev

# Build the package
maturin develop

# Run tests
pytest
```

### Running Tests

```bash
# Run all tests
pytest

# Run with coverage
pytest --cov=pytera --cov-report=html
```

### Code Quality

```bash
# Format code
cargo fmt
black src/

# Lint code
cargo clippy
flake8 src/
```

## Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request

### Development Setup

```bash
# Install development dependencies
uv sync --dev

# Install pre-commit hooks
pre-commit install

# Build and test
maturin develop
pytest
```

## License

PyTera is licensed under the MIT License. See [LICENSE](LICENSE) for details.

## Acknowledgments

- [Tera](https://keats.github.io/tera/docs/#getting-started) - The Rust templating engine
- [PyO3](https://pyo3.rs/) - Python bindings for Rust
- [Maturin](https://www.maturin.rs/) - Build tool for Python extensions

## Changelog

See [CHANGELOG.md](CHANGELOG.md) for version history.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pytera",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8.1",
    "maintainer_email": "un4gt <mt3085570450@outlook.com>",
    "keywords": "templating, tera, rust, pyo3, jinja2, django-templates, web-framework, html, rendering, fast",
    "author": null,
    "author_email": "un4gt <mt3085570450@outlook.com>",
    "download_url": "https://files.pythonhosted.org/packages/c3/ce/56324ada8340261fdefc48759c98a183c536ac461c4e3f7b54a4defe0df5/pytera-0.1.2.tar.gz",
    "platform": null,
    "description": "# PyTera\n\n[![PyPI version](https://badge.fury.io/py/pytera.svg)](https://pypi.org/project/pytera/)\n[![Python versions](https://img.shields.io/pypi/pyversions/pytera.svg)](https://pypi.org/project/pytera/)\n[![License](https://img.shields.io/pypi/l/pytera.svg)](https://github.com/un4gt/pytera/blob/main/LICENSE)\n[![CI](https://github.com/un4gt/pytera/actions/workflows/ci.yml/badge.svg)](https://github.com/un4gt/pytera/actions/workflows/ci.yml)\n[![Codecov](https://codecov.io/gh/un4gt/pytera/branch/main/graph/badge.svg)](https://codecov.io/gh/un4gt/pytera)\n\nA fast, Python-native templating engine powered by Rust's Tera library. PyTera brings the power and performance of Tera templates to Python applications through PyO3 bindings.\n\n## Features\n\n- \ud83d\ude80 **High Performance**: Rust-powered templating with zero-copy operations\n- \ud83d\udc0d **Python Native**: Seamless integration with Python data types and workflows\n- \ud83d\udcdd **Tera Compatible**: Full support for Tera template syntax and features\n- \ud83d\udd27 **Easy Integration**: Simple API that works with Flask, FastAPI, and other web frameworks\n- \ud83d\udee1\ufe0f **Type Safe**: Comprehensive type hints and error handling\n- \ud83d\udcda **Rich Features**: Variables, conditionals, loops, filters, inheritance, and more\n\n## Installation\n\nInstall PyTera from PyPI:\n\n```bash\npip install pytera\n```\n\nOr using uv:\n\n```bash\nuv add pytera\n```\n\n### Requirements\n\n- Python 3.8+\n- Rust toolchain (for building from source)\n\n## Quick Start\n\n```python\nimport os\nfrom pytera import PyTera\n\ntemplate_dir = os.path.join(os.path.dirname(__file__), \"templates\")\ntera = PyTera(f\"{template_dir}/*.html\")\n\nresult = tera.render_template(\"basic_variables.html\", name=\"Alice\", age=30)\nprint(result)  # Hello Alice! You are 30 years old.\n```\n\n> \u2139\ufe0f **Glob pattern tips**: The current templates live directly under `templates/`, so `PyTera(f\"{template_dir}/*.html\")` works. If you reorganize templates into nested subdirectories, switch to `PyTera(f\"{template_dir}/**/*.html\")` to load them recursively.\n\n## Usage Examples\n\n### Basic Variables\n\n```python\ntera = PyTera(\"templates/*.html\")\nresult = tera.render_template(\n    \"basic_variables.html\",\n    name=\"Alice\",\n    age=30,\n)\nprint(result)  # Hello Alice! You are 30 years old.\n```\n\n> \u2139\ufe0f **Glob pattern tips**: Current templates live directly under `templates/`, so `PyTera(f\"{template_dir}/*.html\")` works. If you organize templates into nested subdirectories later, switch to `PyTera(f\"{template_dir}/**/*.html\")` to load them recursively.\n\n```html\n<!-- templates/basic_variables.html -->\nHello {{ name }}! You are {{ age }} years old.\n```\n\n### Conditionals\n\n```python\nuser = {\"name\": \"Bob\", \"is_admin\": True}\nresult = tera.render_template(\"conditionals.html\", user=user)\nprint(result)  # Welcome, Administrator Bob!\n```\n\n```html\n<!-- templates/conditionals.html -->\n{% if user.is_admin %}\nWelcome, Administrator {{ user.name }}!\n{% else %}\nHello, {{ user.name }}!\n{% endif %}\n```\n\n### Loops\n\n```python\nitems = [\n    {\"name\": \"Apple\", \"price\": 1.50},\n    {\"name\": \"Banana\", \"price\": 0.75},\n    {\"name\": \"Cherry\", \"price\": 2.25},\n]\nresult = tera.render_template(\"loops.html\", items=items)\nprint(result)\n```\n\n```html\n<!-- templates/loops.html -->\n<ul>\n{% for item in items %}\n<li>{{ item.name }}: {{ item.price | round(precision=2) }}</li>\n{% endfor %}\n</ul>\n```\n\n### Filters\n\n```python\ndata = {\n    \"text\": \"hello world\",\n    \"missing\": None,\n    \"list\": [\"apple\", \"banana\", \"cherry\", \"date\"],\n}\nresult = tera.render_template(\"filters.html\", **data)\nprint(result)\n```\n\n```html\n<!-- templates/filters.html -->\n<p>Uppercase: {{ text | upper }}</p>\n<p>Length: {{ text | length }}</p>\n<p>Default: {{ missing | default(value=\"N/A\") }}</p>\n<p>Slice: {{ list | slice(start=1, end=3) | join(sep=\", \") }}</p>\n```\n\n### Template Inheritance\n\n```html\n<!-- templates/base.html -->\n<!DOCTYPE html>\n<html>\n<head>\n    <title>{% block title %}Default Title{% endblock %}</title>\n</head>\n<body>\n    <header>\n        <h1>My Website</h1>\n    </header>\n    <main>\n        {% block content %}{% endblock %}\n    </main>\n    <footer>\n        <p>&copy; 2023</p>\n    </footer>\n</body>\n</html>\n```\n\n```html\n<!-- templates/child.html -->\n{% extends \"base.html\" %}\n\n{% block title %}Home Page{% endblock %}\n\n{% block content %}\n<h2>Welcome to {{ site_name }}</h2>\n<p>This is the home page content.</p>\n{% if user %}\n<p>Hello, {{ user.name }}!</p>\n{% endif %}\n{% endblock %}\n```\n\n### Flask Integration\n\n```python\nimport os\nfrom flask import Flask, render_template\nfrom pytera import PyTera\n\ntemplate_dir = os.path.join(os.path.dirname(__file__), \"..\", \"templates\")\ntera = PyTera(f\"{template_dir}/*.html\")\n\napp = Flask(__name__, template_folder=os.path.abspath(template_dir))\n\n@app.route(\"/\")\ndef index():\n    return tera.render_template(\n        \"child.html\",\n        site_name=\"example\",\n        user={\"name\": \"David\"},\n    )\n\n@app.route(\"/child\")\ndef child():\n    return render_template(\n        \"child.html\",\n        site_name=\"example\",\n        user={\"name\": \"David\"},\n    )\n```\n\nFor a complete working example with additional routes (`/basic_variables`, `/conditionals`, `/filters`, `/loops`), see [examples/app.py](examples/app.py).\n\n\n## Template Syntax\n\nThe templates rendered in [examples/app.py](examples/app.py) cover the core pieces of Tera syntax:\n\n### Variables\n```html\nHello {{ name }}! You are {{ age }} years old.\n```\n\n### Conditionals\n```html\n{% if user.is_admin %}\nWelcome, Administrator {{ user.name }}!\n{% else %}\nHello, {{ user.name }}!\n{% endif %}\n```\n\n### Loops\n```html\n<ul>\n{% for item in items %}\n<li>{{ item.name }}: {{ item.price | round(precision=2) }}</li>\n{% endfor %}\n</ul>\n```\n\n### Filters\n```html\n<p>Uppercase: {{ text | upper }}</p>\n<p>Length: {{ text | length }}</p>\n<p>Default: {{ missing | default(value=\"N/A\") }}</p>\n<p>Slice: {{ list | slice(start=1, end=3) | join(sep=\", \") }}</p>\n```\n\n### Template Inheritance\n```html\n{% extends \"base.html\" %}\n{% block title %}Home Page{% endblock %}\n{% block content %}\n<h2>Welcome to {{ site_name }}</h2>\n{% if user %}\n<p>Hello, {{ user.name }}!</p>\n{% endif %}\n{% endblock %}\n```\n\nFor more template features\u2014such as macros, tests, and custom filters\u2014consult the [Tera documentation](https://keats.github.io/tera/docs/#getting-started).\n\n## Error Handling\n\nPyTera provides detailed error messages for common issues:\n\n- **Template Not Found**: When requesting a non-existent template\n- **Invalid Context**: When context keys aren't strings\n- **Parsing Errors**: Syntax errors in templates\n- **Inheritance Issues**: Circular dependencies or missing parents\n\n\n## Development\n\n### Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/un4gt/pytera.git\ncd pytera\n\n# Install development dependencies\nuv sync --dev\n\n# Build the package\nmaturin develop\n\n# Run tests\npytest\n```\n\n### Running Tests\n\n```bash\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=pytera --cov-report=html\n```\n\n### Code Quality\n\n```bash\n# Format code\ncargo fmt\nblack src/\n\n# Lint code\ncargo clippy\nflake8 src/\n```\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Submit a pull request\n\n### Development Setup\n\n```bash\n# Install development dependencies\nuv sync --dev\n\n# Install pre-commit hooks\npre-commit install\n\n# Build and test\nmaturin develop\npytest\n```\n\n## License\n\nPyTera is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\n- [Tera](https://keats.github.io/tera/docs/#getting-started) - The Rust templating engine\n- [PyO3](https://pyo3.rs/) - Python bindings for Rust\n- [Maturin](https://www.maturin.rs/) - Build tool for Python extensions\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for version history.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A fast, Python templating engine powered by Rust's Tera library",
    "version": "0.1.2",
    "project_urls": {
        "Changelog": "https://github.com/PyO3Lab/pytera/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/PyO3Lab/pytera#readme",
        "Homepage": "https://github.com/PyO3Lab/pytera",
        "Issues": "https://github.com/PyO3Lab/pytera/issues",
        "Repository": "https://github.com/PyO3Lab/pytera.git"
    },
    "split_keywords": [
        "templating",
        " tera",
        " rust",
        " pyo3",
        " jinja2",
        " django-templates",
        " web-framework",
        " html",
        " rendering",
        " fast"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c88741b7ddb17b5b819e7b16ba7acf286f2a5f4b3838d22463d38ee1164b450f",
                "md5": "b8bab86f5d5853edf0517832432706c8",
                "sha256": "5ac77410ce344a86f5b5032fa8e5948a2951a4b8fa1b323c269a7a6b56c5d410"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b8bab86f5d5853edf0517832432706c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1502868,
            "upload_time": "2025-11-02T18:48:22",
            "upload_time_iso_8601": "2025-11-02T18:48:22.064068Z",
            "url": "https://files.pythonhosted.org/packages/c8/87/41b7ddb17b5b819e7b16ba7acf286f2a5f4b3838d22463d38ee1164b450f/pytera-0.1.2-cp313-cp313t-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ca480aea258d148e474bf48e18e98bcd3b0f356a5e8a42eef965756ff103a019",
                "md5": "c0ae1c3614593a9635bbe0e734c74b23",
                "sha256": "d48645ded1176462dbe7a22a57fb50901374067205511eea5104700167c71264"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c0ae1c3614593a9635bbe0e734c74b23",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1404736,
            "upload_time": "2025-11-02T18:48:19",
            "upload_time_iso_8601": "2025-11-02T18:48:19.330435Z",
            "url": "https://files.pythonhosted.org/packages/ca/48/0aea258d148e474bf48e18e98bcd3b0f356a5e8a42eef965756ff103a019/pytera-0.1.2-cp313-cp313t-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0b91d5c523e6a9c74f538eca8f25bb709a3903c1e58f2b1a25ff72ea06cecfd2",
                "md5": "0b9e50141b7f2051f4606412fd61c424",
                "sha256": "7d0618b8ae59833ab89d18ea481ef6bb93f11e5a66887e0f004b7d40fc95e010"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0b9e50141b7f2051f4606412fd61c424",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1547755,
            "upload_time": "2025-11-02T18:48:02",
            "upload_time_iso_8601": "2025-11-02T18:48:02.857139Z",
            "url": "https://files.pythonhosted.org/packages/0b/91/d5c523e6a9c74f538eca8f25bb709a3903c1e58f2b1a25ff72ea06cecfd2/pytera-0.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "208340c270030f73f3f0257972de5371d8e045674ccee480cef0d2a71bbdfe6b",
                "md5": "509919daae0818a1744a340ff84010b0",
                "sha256": "b685cb884540f08dde551920966fb26f7faf2b5d62b681721e9f1b16d344fb21"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "509919daae0818a1744a340ff84010b0",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1529881,
            "upload_time": "2025-11-02T18:48:05",
            "upload_time_iso_8601": "2025-11-02T18:48:05.895236Z",
            "url": "https://files.pythonhosted.org/packages/20/83/40c270030f73f3f0257972de5371d8e045674ccee480cef0d2a71bbdfe6b/pytera-0.1.2-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6b5b0bd408635a1648802329ef3cb147cfd54735fbcfde64d12a9d1dd5743f68",
                "md5": "5dccc84fe7a8195f698799fc1691d9c7",
                "sha256": "f419d9522e5cb49f4b081e3a7b758eeac1a972914c9f061ad2ff78418af0cf1c"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "5dccc84fe7a8195f698799fc1691d9c7",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1729763,
            "upload_time": "2025-11-02T18:48:08",
            "upload_time_iso_8601": "2025-11-02T18:48:08.827211Z",
            "url": "https://files.pythonhosted.org/packages/6b/5b/0bd408635a1648802329ef3cb147cfd54735fbcfde64d12a9d1dd5743f68/pytera-0.1.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "eaab67c3bf28892cb5adda8f29f5adad789599954e4424986487c4aecbb5edd7",
                "md5": "f1c61a87efb34582decc36942034dea9",
                "sha256": "057a41e6e4197e629f75aeb75a9ba257c7d08c63e91267ebfa9eea944fd39df7"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "f1c61a87efb34582decc36942034dea9",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1770510,
            "upload_time": "2025-11-02T18:48:11",
            "upload_time_iso_8601": "2025-11-02T18:48:11.334183Z",
            "url": "https://files.pythonhosted.org/packages/ea/ab/67c3bf28892cb5adda8f29f5adad789599954e4424986487c4aecbb5edd7/pytera-0.1.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "12118069e4266c741a7f9177891865bb835c8c0a1d2ceb8208c409c86aec088a",
                "md5": "e5eed69f727a09a639d4a23b59f9a100",
                "sha256": "70da508137919e7840dbda2a2d6bc28da96187752eff2328a587c587ed743dc1"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e5eed69f727a09a639d4a23b59f9a100",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1652393,
            "upload_time": "2025-11-02T18:48:16",
            "upload_time_iso_8601": "2025-11-02T18:48:16.353355Z",
            "url": "https://files.pythonhosted.org/packages/12/11/8069e4266c741a7f9177891865bb835c8c0a1d2ceb8208c409c86aec088a/pytera-0.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0571c7f417cb227dfec70d25fc3b87dacf6ceb4eabcbbd77a1f0ad5b6de25517",
                "md5": "315b221b82690c443b9ba58f0003118b",
                "sha256": "50dbf01a61990e4a7fc3b29b915b8066958a25af40442ca126369de3db9f339e"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "315b221b82690c443b9ba58f0003118b",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1614674,
            "upload_time": "2025-11-02T18:48:13",
            "upload_time_iso_8601": "2025-11-02T18:48:13.797834Z",
            "url": "https://files.pythonhosted.org/packages/05/71/c7f417cb227dfec70d25fc3b87dacf6ceb4eabcbbd77a1f0ad5b6de25517/pytera-0.1.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1571faa882497507e8be4cad111f76d583c4c83cc6cd18a6f55b99767ce9db23",
                "md5": "075d132718619be63ffbee023927c0f8",
                "sha256": "ec20986bb050c4a356cdf73c43c421a298d4ff238fd9d7104588605531919c86"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "075d132718619be63ffbee023927c0f8",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1730278,
            "upload_time": "2025-11-02T18:48:24",
            "upload_time_iso_8601": "2025-11-02T18:48:24.878993Z",
            "url": "https://files.pythonhosted.org/packages/15/71/faa882497507e8be4cad111f76d583c4c83cc6cd18a6f55b99767ce9db23/pytera-0.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9bb43e0ee932bd8da51ca6d3e704315da89e8db22eca0f0e7d1d2984c3f6de38",
                "md5": "64fae97a7097890accd6d7e97565a23f",
                "sha256": "849fe7aee510587711922b7feb64f66831922dd04a58c07c639adb83a1812015"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "64fae97a7097890accd6d7e97565a23f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1792504,
            "upload_time": "2025-11-02T18:48:27",
            "upload_time_iso_8601": "2025-11-02T18:48:27.738202Z",
            "url": "https://files.pythonhosted.org/packages/9b/b4/3e0ee932bd8da51ca6d3e704315da89e8db22eca0f0e7d1d2984c3f6de38/pytera-0.1.2-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fee2beef52396277d12ebf208231c4fab2820b6cf36fe335306a9c88bee56548",
                "md5": "372a5142a0d2c5eccc01cd88d855a51b",
                "sha256": "a6edfdd908affa0fac12053896199db47967b6079e682c99d3db039faaa00096"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "372a5142a0d2c5eccc01cd88d855a51b",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1762741,
            "upload_time": "2025-11-02T18:48:30",
            "upload_time_iso_8601": "2025-11-02T18:48:30.500689Z",
            "url": "https://files.pythonhosted.org/packages/fe/e2/beef52396277d12ebf208231c4fab2820b6cf36fe335306a9c88bee56548/pytera-0.1.2-cp313-cp313t-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2cc986729a8b920e950626af1c66d658cebb60e1b020b36017718a8664b25219",
                "md5": "0a76cdea2f0d989013a3f3fda41d1f70",
                "sha256": "42c12d725cf3bfc3ec404ddf0f3fe81230cb6139b4ca6e86f28cf5b1b5365667"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0a76cdea2f0d989013a3f3fda41d1f70",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1831850,
            "upload_time": "2025-11-02T18:48:32",
            "upload_time_iso_8601": "2025-11-02T18:48:32.919311Z",
            "url": "https://files.pythonhosted.org/packages/2c/c9/86729a8b920e950626af1c66d658cebb60e1b020b36017718a8664b25219/pytera-0.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "214ef263e85b10bdc84fa3b671e1cd2f015af39a01149bc751a068ebea9a4492",
                "md5": "3eee1b8690b39febfe91b28849d2ed39",
                "sha256": "55e18a318c2eed1b01ea4528b0c92f9a0beca1a9389eae1ce609736f70c00f29"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-win32.whl",
            "has_sig": false,
            "md5_digest": "3eee1b8690b39febfe91b28849d2ed39",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1363123,
            "upload_time": "2025-11-02T18:48:38",
            "upload_time_iso_8601": "2025-11-02T18:48:38.516733Z",
            "url": "https://files.pythonhosted.org/packages/21/4e/f263e85b10bdc84fa3b671e1cd2f015af39a01149bc751a068ebea9a4492/pytera-0.1.2-cp313-cp313t-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "775eecccda3bbaa9b9d0ca5865a170e43a5000fb1979eac2a878d56b1f886626",
                "md5": "1798ef74f0cf595adecdabf4aa50ceb8",
                "sha256": "40d3d21d559283d3a0bad626c58b6291880e1c47a5444bbf1b8eb4014bb8257f"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp313-cp313t-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1798ef74f0cf595adecdabf4aa50ceb8",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.1",
            "size": 1424470,
            "upload_time": "2025-11-02T18:48:36",
            "upload_time_iso_8601": "2025-11-02T18:48:36.185396Z",
            "url": "https://files.pythonhosted.org/packages/77/5e/ecccda3bbaa9b9d0ca5865a170e43a5000fb1979eac2a878d56b1f886626/pytera-0.1.2-cp313-cp313t-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fcd792d9484008c5ef00eece1dd1bd4971ff53ca0ff4ff61da63734234177591",
                "md5": "8687ba7ce18fe7e90f5ae9c9f95dc6e5",
                "sha256": "ef61de50f9ab508e6cae331e8de630795fbfd9a2aa31da32f5475d2e620c5901"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8687ba7ce18fe7e90f5ae9c9f95dc6e5",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1508650,
            "upload_time": "2025-11-02T18:48:23",
            "upload_time_iso_8601": "2025-11-02T18:48:23.683978Z",
            "url": "https://files.pythonhosted.org/packages/fc/d7/92d9484008c5ef00eece1dd1bd4971ff53ca0ff4ff61da63734234177591/pytera-0.1.2-cp38-abi3-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8ebf2358ea804903a239da2f71127ee913a2b4372dbc7b84dabb968a0fc20219",
                "md5": "55c7b974f7e6e2c622dae8f388b909a1",
                "sha256": "fc77b080c1887eee6710ad58ad4188288e773d6f4d0a5088f0eacfc3d3bb2283"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "55c7b974f7e6e2c622dae8f388b909a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1406934,
            "upload_time": "2025-11-02T18:48:20",
            "upload_time_iso_8601": "2025-11-02T18:48:20.548568Z",
            "url": "https://files.pythonhosted.org/packages/8e/bf/2358ea804903a239da2f71127ee913a2b4372dbc7b84dabb968a0fc20219/pytera-0.1.2-cp38-abi3-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "17e05f91e1e981fc8d32da0c4430f12c45bf53fa973379c6282b671e4d859598",
                "md5": "fca770ad4bd7bb19ddaf36c727932259",
                "sha256": "6c46cbd5d8d17516825d1122a1b7d365e5fd838dd3f4df299a0a99784dd1f1b7"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "fca770ad4bd7bb19ddaf36c727932259",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1550266,
            "upload_time": "2025-11-02T18:48:04",
            "upload_time_iso_8601": "2025-11-02T18:48:04.689684Z",
            "url": "https://files.pythonhosted.org/packages/17/e0/5f91e1e981fc8d32da0c4430f12c45bf53fa973379c6282b671e4d859598/pytera-0.1.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0f47a048ef2c6ea9844843728a38881922588c18289ef480d24a11496eb48f13",
                "md5": "b2d9274df373e2d38383b167787e21b9",
                "sha256": "9dd86beebf6d024792a8be1dc0b285b99369dbb24e30c31ee53b5f004e3d4292"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "b2d9274df373e2d38383b167787e21b9",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1534067,
            "upload_time": "2025-11-02T18:48:07",
            "upload_time_iso_8601": "2025-11-02T18:48:07.242873Z",
            "url": "https://files.pythonhosted.org/packages/0f/47/a048ef2c6ea9844843728a38881922588c18289ef480d24a11496eb48f13/pytera-0.1.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6054c1def0f561fb086416f8561c6e34ac7473b32507fa44fbf56922db1a412e",
                "md5": "48e9c3c5216f17c15752fb7ae0bb4d71",
                "sha256": "b8df5ec074c4d751bf8e19b04c4c1013b9122b93b56002493ed1731fbced05f3"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "48e9c3c5216f17c15752fb7ae0bb4d71",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1734133,
            "upload_time": "2025-11-02T18:48:10",
            "upload_time_iso_8601": "2025-11-02T18:48:10.125605Z",
            "url": "https://files.pythonhosted.org/packages/60/54/c1def0f561fb086416f8561c6e34ac7473b32507fa44fbf56922db1a412e/pytera-0.1.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7e0b582305db20f2e38fdcbb3bbb3b8a40c8957ece93cd0a4d085fe257265b62",
                "md5": "e601878c9bbcbe73185acc6a65583d81",
                "sha256": "6a1d2d6e6d4f4502e2983dc5555f9d330a5ee4e9cf151f2ff6c3098d50d07f32"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "e601878c9bbcbe73185acc6a65583d81",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1791876,
            "upload_time": "2025-11-02T18:48:12",
            "upload_time_iso_8601": "2025-11-02T18:48:12.560908Z",
            "url": "https://files.pythonhosted.org/packages/7e/0b/582305db20f2e38fdcbb3bbb3b8a40c8957ece93cd0a4d085fe257265b62/pytera-0.1.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b24893b85b903d18e4f3a7e7a2dd7f88f19915c7f4acf3321c421d7dd9349d01",
                "md5": "35e803f22a64fcb5334b0f84e5abfd71",
                "sha256": "6956681a84aa68e15638788915473e41ae2b31b79863507e7573a2e137d23b86"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "35e803f22a64fcb5334b0f84e5abfd71",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1655847,
            "upload_time": "2025-11-02T18:48:17",
            "upload_time_iso_8601": "2025-11-02T18:48:17.555971Z",
            "url": "https://files.pythonhosted.org/packages/b2/48/93b85b903d18e4f3a7e7a2dd7f88f19915c7f4acf3321c421d7dd9349d01/pytera-0.1.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ede8cbd7d33f6bb421921d6e1253780b9e98212d195f64f674947a9b6347fd24",
                "md5": "ba56c213c6e37ebd266a2d3c0fa1c392",
                "sha256": "1e86b6cd3c056b48101c13730c60781c77bd97d7405d2d9d14c69a0b04dce1a0"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "ba56c213c6e37ebd266a2d3c0fa1c392",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1618550,
            "upload_time": "2025-11-02T18:48:15",
            "upload_time_iso_8601": "2025-11-02T18:48:15.038895Z",
            "url": "https://files.pythonhosted.org/packages/ed/e8/cbd7d33f6bb421921d6e1253780b9e98212d195f64f674947a9b6347fd24/pytera-0.1.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "59dfbab4c7324384dc9fdea58c468a5cb2ad468bd11509a6b7dd2bc055b7cf9f",
                "md5": "40a3e6d165821d6c52ac52fb54f6366f",
                "sha256": "8e86bddab3da4cb72e645d96b667b0d9ed98b01375d24fd5818050868c794748"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "40a3e6d165821d6c52ac52fb54f6366f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1732771,
            "upload_time": "2025-11-02T18:48:26",
            "upload_time_iso_8601": "2025-11-02T18:48:26.128343Z",
            "url": "https://files.pythonhosted.org/packages/59/df/bab4c7324384dc9fdea58c468a5cb2ad468bd11509a6b7dd2bc055b7cf9f/pytera-0.1.2-cp38-abi3-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "727a0cae45afc09765876881a216878b6d3e252851e4724a35755896a443f438",
                "md5": "48742996804e48a5a4c78bb1f9a086dd",
                "sha256": "c8b2d62329e4eccebe4d8f3a1d36762d3f8d46570900df3e1a8be77ae9c12f64"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "48742996804e48a5a4c78bb1f9a086dd",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1795830,
            "upload_time": "2025-11-02T18:48:29",
            "upload_time_iso_8601": "2025-11-02T18:48:29.280141Z",
            "url": "https://files.pythonhosted.org/packages/72/7a/0cae45afc09765876881a216878b6d3e252851e4724a35755896a443f438/pytera-0.1.2-cp38-abi3-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "55da17f1d506ad7768231a7031d41eebb912718c7364372aa8359fc216046227",
                "md5": "772585df6f3fe3462dea90e5a505a9f6",
                "sha256": "ced029df2b993ed1b62a14fff709c46c965edb626c07c66e25d3d91c44dee85e"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "772585df6f3fe3462dea90e5a505a9f6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1764155,
            "upload_time": "2025-11-02T18:48:31",
            "upload_time_iso_8601": "2025-11-02T18:48:31.728348Z",
            "url": "https://files.pythonhosted.org/packages/55/da/17f1d506ad7768231a7031d41eebb912718c7364372aa8359fc216046227/pytera-0.1.2-cp38-abi3-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bad88af1c8245b5eabd6930bd8d6657586332adbfe4378a846cb9178f9adc35e",
                "md5": "7a33300b8ef7ff9d39dd2aa5dbf776c9",
                "sha256": "ccc16749115c9b640f780dca67023cdf9c6d175632940a70f6d9c61ca6490bf6"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7a33300b8ef7ff9d39dd2aa5dbf776c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1836042,
            "upload_time": "2025-11-02T18:48:34",
            "upload_time_iso_8601": "2025-11-02T18:48:34.209950Z",
            "url": "https://files.pythonhosted.org/packages/ba/d8/8af1c8245b5eabd6930bd8d6657586332adbfe4378a846cb9178f9adc35e/pytera-0.1.2-cp38-abi3-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9f91c3d84a48f880553138ae25918761bd79a64719adab811da6df0289ad2498",
                "md5": "ed350ede61d42eb63af9e3aed4aace9d",
                "sha256": "3e3c182d6ea356fbdc9cd54c182c1278429e79f56faa5a9142843b03d41a2736"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-win32.whl",
            "has_sig": false,
            "md5_digest": "ed350ede61d42eb63af9e3aed4aace9d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1367346,
            "upload_time": "2025-11-02T18:48:39",
            "upload_time_iso_8601": "2025-11-02T18:48:39.719628Z",
            "url": "https://files.pythonhosted.org/packages/9f/91/c3d84a48f880553138ae25918761bd79a64719adab811da6df0289ad2498/pytera-0.1.2-cp38-abi3-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cad4d83a582581395119f12c2a98e0776bb79399b828dcfc029aa6e958624a69",
                "md5": "12e7454717c7b7f6cd946aeae6dceaab",
                "sha256": "0056c78843de6214360ee3145ef6aebec64f065db13a9f902d26e9b4c4768ade"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2-cp38-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "12e7454717c7b7f6cd946aeae6dceaab",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.1",
            "size": 1428084,
            "upload_time": "2025-11-02T18:48:37",
            "upload_time_iso_8601": "2025-11-02T18:48:37.350593Z",
            "url": "https://files.pythonhosted.org/packages/ca/d4/d83a582581395119f12c2a98e0776bb79399b828dcfc029aa6e958624a69/pytera-0.1.2-cp38-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c3ce56324ada8340261fdefc48759c98a183c536ac461c4e3f7b54a4defe0df5",
                "md5": "85b861e3fc903a8a3a47debfbe14dd3b",
                "sha256": "4f2433a0503d27d1653aef523833f983b624aa2923de3fefcfca1ddf1649fc64"
            },
            "downloads": -1,
            "filename": "pytera-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "85b861e3fc903a8a3a47debfbe14dd3b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8.1",
            "size": 123717,
            "upload_time": "2025-11-02T18:48:35",
            "upload_time_iso_8601": "2025-11-02T18:48:35.290152Z",
            "url": "https://files.pythonhosted.org/packages/c3/ce/56324ada8340261fdefc48759c98a183c536ac461c4e3f7b54a4defe0df5/pytera-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-02 18:48:35",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "PyO3Lab",
    "github_project": "pytera",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "pytera"
}
        
Elapsed time: 2.60994s