rtest


Namertest JSON
Version 0.0.36 PyPI version JSON
download
home_pageNone
SummaryPython test runner built in Rust
upload_time2025-08-06 17:43:11
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords testing pytest rust performance
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # rtest

[![PyPI version](https://badge.fury.io/py/rtest.svg)](https://badge.fury.io/py/rtest)
[![Python](https://img.shields.io/pypi/pyversions/rtest.svg)](https://pypi.org/project/rtest/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A Python test runner built with Rust, currently supporting high-performance test-collection, with the goal of being a drop-in replacement for [`pytest`](https://pytest.org).

> **⚠️ Development Status**: This project is in early development (v0.0.x). Expect bugs, breaking changes, and evolving features as we work toward stability.

## Performance

*Benchmarks performed using [hyperfine](https://github.com/sharkdp/hyperfine) with 20 runs, 3 warmup runs per measurement, on an M4 Macbook Pro with 14 cores and 48GB RAM.* **More sophisticated benchmarks will be implemented in the future.**

### Against the [`flask`](https://github.com/pallets/flask) Repository
```
hyperfine --command-name pytest --command-name rtest "pytest --collect-only" "rtest --collect-only" --warmup 3 --runs 20
Benchmark 1: pytest
  Time (mean ± σ):     229.9 ms ±   2.6 ms    [User: 184.5 ms, System: 37.4 ms]
  Range (min … max):   226.0 ms … 235.4 ms    20 runs
 
Benchmark 2: rtest
  Time (mean ± σ):      35.8 ms ±   1.2 ms    [User: 18.1 ms, System: 10.7 ms]
  Range (min … max):    34.2 ms …  40.3 ms    20 runs
 
Summary
  rtest ran
    6.41 ± 0.23 times faster than pytest
```

### Against the [`httpx`](https://github.com/encode/httpx) Repository
```
hyperfine --command-name pytest --command-name rtest "pytest --collect-only" "rtest --collect-only" --warmup 3 --runs 20
Benchmark 1: pytest
  Time (mean ± σ):     310.1 ms ±  18.6 ms    [User: 259.3 ms, System: 42.6 ms]
  Range (min … max):   291.0 ms … 344.4 ms    20 runs
 
Benchmark 2: rtest
  Time (mean ± σ):      20.6 ms ±   1.0 ms    [User: 12.5 ms, System: 5.5 ms]
  Range (min … max):    18.6 ms …  21.9 ms    20 runs
 
Summary
  rtest ran
   15.06 ± 1.15 times faster than pytest
```

### Against the [`pydantic`](https://github.com/pydantic/pydantic) Repository
```
hyperfine --command-name pytest --command-name rtest "pytest --collect-only" "rtest --collect-only" --warmup 3 --runs 20
Benchmark 1: pytest
  Time (mean ± σ):      2.777 s ±  0.031 s    [User: 2.598 s, System: 0.147 s]
  Range (min … max):    2.731 s …  2.864 s    20 runs
 
Benchmark 2: rtest
  Time (mean ± σ):      61.2 ms ±   1.1 ms    [User: 40.1 ms, System: 14.4 ms]
  Range (min … max):    60.1 ms …  64.2 ms    20 runs
 
Summary
  rtest ran
   45.39 ± 0.95 times faster than pytest
```

## Quick Start

### Installation

```bash
pip install rtest
```

*Requires Python 3.9+*

### Basic Usage

```bash
rtest --collect-only
```

## Roadmap
Support executing tests, with parallelization built out of the box (bypassing [`pytest-xdist`](https://pypi.org/project/pytest-xdist/)). Currently, this works for some cases, but is not yet stable.

## Known Limitations

### Parametrized Test Discovery
`rtest` currently discovers only the base function names for parametrized tests (created with `@pytest.mark.parametrize`), rather than expanding them into individual test items during collection. For example:

```python
@pytest.mark.parametrize("value", [1, 2, 3])
def test_example(value):
    assert value > 0
```

**pytest collection shows:**
```
test_example[1]
test_example[2] 
test_example[3]
```

**rtest collection shows:**
```
test_example
```

However, when `rtest` executes tests using pytest as the executor, passing the base function name (`test_example`) to pytest results in identical behavior - pytest automatically runs all parametrized variants. This means test execution is functionally equivalent between the tools, but collection counts may differ.

### Test Class Inheritance Collection
When a test class inherits from another test class, `rtest` collects inherited test methods differently than `pytest`. While `pytest` shows inherited methods under each subclass that inherits them, `rtest` currently shows inherited methods only under the base class where they are defined. For example:

```python
# test_example.py
class TestAddNumbers:
    def test_add_positive_numbers(self):
        pass
    
    def test_add_negative_numbers(self):
        pass

# test_floating_numbers.py  
from tests.test_example import TestAddNumbers

class TestAddFloatingNumbers(TestAddNumbers):
    def test_add_simple_floats(self):
        pass
```

**pytest collection shows:**
```
test_example.py::TestAddNumbers::test_add_positive_numbers
test_example.py::TestAddNumbers::test_add_negative_numbers
test_floating_numbers.py::TestAddNumbers::test_add_positive_numbers
test_floating_numbers.py::TestAddNumbers::test_add_negative_numbers
test_floating_numbers.py::TestAddFloatingNumbers::test_add_positive_numbers
test_floating_numbers.py::TestAddFloatingNumbers::test_add_negative_numbers
test_floating_numbers.py::TestAddFloatingNumbers::test_add_simple_floats
```

**rtest collection shows:**
```
test_example.py::TestAddNumbers::test_add_positive_numbers
test_example.py::TestAddNumbers::test_add_negative_numbers
test_floating_numbers.py::TestAddFloatingNumbers::test_add_positive_numbers
test_floating_numbers.py::TestAddFloatingNumbers::test_add_negative_numbers
test_floating_numbers.py::TestAddFloatingNumbers::test_add_simple_floats
```

We believe this difference is desirable, in that `TestAddNumbers` isn't collected twice from different modules.

### Path Separator Handling
`rtest` uses platform-specific path separators in test nodeids, while `pytest` normalizes all paths to use forward slashes (`/`) regardless of platform. For example:

**On Windows:**
- pytest shows: `tests/unit/test_example.py::test_function`
- rtest shows: `tests\unit\test_example.py::test_function`

**On Unix/macOS:**
- Both show: `tests/unit/test_example.py::test_function`

This difference is intentional as `rtest` preserves the native path format of the operating system.

## Contributing

We welcome contributions! See [Contributing Guide](CONTRIBUTING.rst).

## License

MIT - see [LICENSE](LICENSE) file for details.

---

## Acknowledgments

This project takes inspiration from [Astral](https://astral.sh) and leverages crates from [`ruff`].


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rtest",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "testing, pytest, rust, performance",
    "author": null,
    "author_email": "Hugh Han <hughhan1@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/38/03/f113f002336f9523ddfd5368455ab07f0266fa42409e3826fcb6a4f09f46/rtest-0.0.36.tar.gz",
    "platform": null,
    "description": "# rtest\n\n[![PyPI version](https://badge.fury.io/py/rtest.svg)](https://badge.fury.io/py/rtest)\n[![Python](https://img.shields.io/pypi/pyversions/rtest.svg)](https://pypi.org/project/rtest/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA Python test runner built with Rust, currently supporting high-performance test-collection, with the goal of being a drop-in replacement for [`pytest`](https://pytest.org).\n\n> **\u26a0\ufe0f Development Status**: This project is in early development (v0.0.x). Expect bugs, breaking changes, and evolving features as we work toward stability.\n\n## Performance\n\n*Benchmarks performed using [hyperfine](https://github.com/sharkdp/hyperfine) with 20 runs, 3 warmup runs per measurement, on an M4 Macbook Pro with 14 cores and 48GB RAM.* **More sophisticated benchmarks will be implemented in the future.**\n\n### Against the [`flask`](https://github.com/pallets/flask) Repository\n```\nhyperfine --command-name pytest --command-name rtest \"pytest --collect-only\" \"rtest --collect-only\" --warmup 3 --runs 20\nBenchmark 1: pytest\n  Time (mean \u00b1 \u03c3):     229.9 ms \u00b1   2.6 ms    [User: 184.5 ms, System: 37.4 ms]\n  Range (min \u2026 max):   226.0 ms \u2026 235.4 ms    20 runs\n \nBenchmark 2: rtest\n  Time (mean \u00b1 \u03c3):      35.8 ms \u00b1   1.2 ms    [User: 18.1 ms, System: 10.7 ms]\n  Range (min \u2026 max):    34.2 ms \u2026  40.3 ms    20 runs\n \nSummary\n  rtest ran\n    6.41 \u00b1 0.23 times faster than pytest\n```\n\n### Against the [`httpx`](https://github.com/encode/httpx) Repository\n```\nhyperfine --command-name pytest --command-name rtest \"pytest --collect-only\" \"rtest --collect-only\" --warmup 3 --runs 20\nBenchmark 1: pytest\n  Time (mean \u00b1 \u03c3):     310.1 ms \u00b1  18.6 ms    [User: 259.3 ms, System: 42.6 ms]\n  Range (min \u2026 max):   291.0 ms \u2026 344.4 ms    20 runs\n \nBenchmark 2: rtest\n  Time (mean \u00b1 \u03c3):      20.6 ms \u00b1   1.0 ms    [User: 12.5 ms, System: 5.5 ms]\n  Range (min \u2026 max):    18.6 ms \u2026  21.9 ms    20 runs\n \nSummary\n  rtest ran\n   15.06 \u00b1 1.15 times faster than pytest\n```\n\n### Against the [`pydantic`](https://github.com/pydantic/pydantic) Repository\n```\nhyperfine --command-name pytest --command-name rtest \"pytest --collect-only\" \"rtest --collect-only\" --warmup 3 --runs 20\nBenchmark 1: pytest\n  Time (mean \u00b1 \u03c3):      2.777 s \u00b1  0.031 s    [User: 2.598 s, System: 0.147 s]\n  Range (min \u2026 max):    2.731 s \u2026  2.864 s    20 runs\n \nBenchmark 2: rtest\n  Time (mean \u00b1 \u03c3):      61.2 ms \u00b1   1.1 ms    [User: 40.1 ms, System: 14.4 ms]\n  Range (min \u2026 max):    60.1 ms \u2026  64.2 ms    20 runs\n \nSummary\n  rtest ran\n   45.39 \u00b1 0.95 times faster than pytest\n```\n\n## Quick Start\n\n### Installation\n\n```bash\npip install rtest\n```\n\n*Requires Python 3.9+*\n\n### Basic Usage\n\n```bash\nrtest --collect-only\n```\n\n## Roadmap\nSupport executing tests, with parallelization built out of the box (bypassing [`pytest-xdist`](https://pypi.org/project/pytest-xdist/)). Currently, this works for some cases, but is not yet stable.\n\n## Known Limitations\n\n### Parametrized Test Discovery\n`rtest` currently discovers only the base function names for parametrized tests (created with `@pytest.mark.parametrize`), rather than expanding them into individual test items during collection. For example:\n\n```python\n@pytest.mark.parametrize(\"value\", [1, 2, 3])\ndef test_example(value):\n    assert value > 0\n```\n\n**pytest collection shows:**\n```\ntest_example[1]\ntest_example[2] \ntest_example[3]\n```\n\n**rtest collection shows:**\n```\ntest_example\n```\n\nHowever, when `rtest` executes tests using pytest as the executor, passing the base function name (`test_example`) to pytest results in identical behavior - pytest automatically runs all parametrized variants. This means test execution is functionally equivalent between the tools, but collection counts may differ.\n\n### Test Class Inheritance Collection\nWhen a test class inherits from another test class, `rtest` collects inherited test methods differently than `pytest`. While `pytest` shows inherited methods under each subclass that inherits them, `rtest` currently shows inherited methods only under the base class where they are defined. For example:\n\n```python\n# test_example.py\nclass TestAddNumbers:\n    def test_add_positive_numbers(self):\n        pass\n    \n    def test_add_negative_numbers(self):\n        pass\n\n# test_floating_numbers.py  \nfrom tests.test_example import TestAddNumbers\n\nclass TestAddFloatingNumbers(TestAddNumbers):\n    def test_add_simple_floats(self):\n        pass\n```\n\n**pytest collection shows:**\n```\ntest_example.py::TestAddNumbers::test_add_positive_numbers\ntest_example.py::TestAddNumbers::test_add_negative_numbers\ntest_floating_numbers.py::TestAddNumbers::test_add_positive_numbers\ntest_floating_numbers.py::TestAddNumbers::test_add_negative_numbers\ntest_floating_numbers.py::TestAddFloatingNumbers::test_add_positive_numbers\ntest_floating_numbers.py::TestAddFloatingNumbers::test_add_negative_numbers\ntest_floating_numbers.py::TestAddFloatingNumbers::test_add_simple_floats\n```\n\n**rtest collection shows:**\n```\ntest_example.py::TestAddNumbers::test_add_positive_numbers\ntest_example.py::TestAddNumbers::test_add_negative_numbers\ntest_floating_numbers.py::TestAddFloatingNumbers::test_add_positive_numbers\ntest_floating_numbers.py::TestAddFloatingNumbers::test_add_negative_numbers\ntest_floating_numbers.py::TestAddFloatingNumbers::test_add_simple_floats\n```\n\nWe believe this difference is desirable, in that `TestAddNumbers` isn't collected twice from different modules.\n\n### Path Separator Handling\n`rtest` uses platform-specific path separators in test nodeids, while `pytest` normalizes all paths to use forward slashes (`/`) regardless of platform. For example:\n\n**On Windows:**\n- pytest shows: `tests/unit/test_example.py::test_function`\n- rtest shows: `tests\\unit\\test_example.py::test_function`\n\n**On Unix/macOS:**\n- Both show: `tests/unit/test_example.py::test_function`\n\nThis difference is intentional as `rtest` preserves the native path format of the operating system.\n\n## Contributing\n\nWe welcome contributions! See [Contributing Guide](CONTRIBUTING.rst).\n\n## License\n\nMIT - see [LICENSE](LICENSE) file for details.\n\n---\n\n## Acknowledgments\n\nThis project takes inspiration from [Astral](https://astral.sh) and leverages crates from [`ruff`].\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python test runner built in Rust",
    "version": "0.0.36",
    "project_urls": {
        "Homepage": "https://github.com/hughhan1/rtest",
        "Issues": "https://github.com/hughhan1/rtest/issues",
        "Repository": "https://github.com/hughhan1/rtest.git"
    },
    "split_keywords": [
        "testing",
        " pytest",
        " rust",
        " performance"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "529369792aa30aed0648e186a128b6034482974a188b33f29ca61ddbc4706c1f",
                "md5": "702d5d237cc6cbfc05d4771f7da275ba",
                "sha256": "50a9c638505418ccecea0646acc19e4bebc4c8d4d09e8da6bbaeeea65307a777"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "702d5d237cc6cbfc05d4771f7da275ba",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1536700,
            "upload_time": "2025-08-06T17:42:34",
            "upload_time_iso_8601": "2025-08-06T17:42:34.007628Z",
            "url": "https://files.pythonhosted.org/packages/52/93/69792aa30aed0648e186a128b6034482974a188b33f29ca61ddbc4706c1f/rtest-0.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "02f4c0ea3c776bb4ec8777058e8429bee82578f5176614f0ff24f8f45bf13646",
                "md5": "cdef61df34fc54402b20bac3cd71f731",
                "sha256": "b476bd7075dbc5d6e45993dcd511f7bab02af2d38562ddc0a7d544284e556277"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp310-cp310-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "cdef61df34fc54402b20bac3cd71f731",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1497032,
            "upload_time": "2025-08-06T17:42:35",
            "upload_time_iso_8601": "2025-08-06T17:42:35.842787Z",
            "url": "https://files.pythonhosted.org/packages/02/f4/c0ea3c776bb4ec8777058e8429bee82578f5176614f0ff24f8f45bf13646/rtest-0.0.36-cp310-cp310-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "63a35068d3ed743ac0800da4ba3f1a4e4903634202f132ae5a24bb6a49a511ee",
                "md5": "883627d9fee2aa1080f0faf576958692",
                "sha256": "950845c7b87d0d21b9e8526438eb462c74c7c06cbcea6bd56a30fbc1b5c300b0"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "883627d9fee2aa1080f0faf576958692",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1341251,
            "upload_time": "2025-08-06T17:42:37",
            "upload_time_iso_8601": "2025-08-06T17:42:37.231702Z",
            "url": "https://files.pythonhosted.org/packages/63/a3/5068d3ed743ac0800da4ba3f1a4e4903634202f132ae5a24bb6a49a511ee/rtest-0.0.36-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "86a441ff1492e2f52ec7e7d6b8aef24e337363411b0b15c9b45ea9627c1ce830",
                "md5": "2ec1e87660d3934738a4e1db5d9641cc",
                "sha256": "6acc583469f602a6e490255497fb3191be1225d8ad7c28ffae23053b576f4b2f"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2ec1e87660d3934738a4e1db5d9641cc",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1456163,
            "upload_time": "2025-08-06T17:42:38",
            "upload_time_iso_8601": "2025-08-06T17:42:38.285144Z",
            "url": "https://files.pythonhosted.org/packages/86/a4/41ff1492e2f52ec7e7d6b8aef24e337363411b0b15c9b45ea9627c1ce830/rtest-0.0.36-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7479762d5cbc4f713c7ea1204e165962a4a7b9902fb55adbc925b0c0b714e500",
                "md5": "7d10e74d4119c71085522c70b372ce23",
                "sha256": "1355e100e521570c194dd59aa4730223cb79d21310607a9a18e5e2df5560db4e"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7d10e74d4119c71085522c70b372ce23",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1414765,
            "upload_time": "2025-08-06T17:42:39",
            "upload_time_iso_8601": "2025-08-06T17:42:39.560686Z",
            "url": "https://files.pythonhosted.org/packages/74/79/762d5cbc4f713c7ea1204e165962a4a7b9902fb55adbc925b0c0b714e500/rtest-0.0.36-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6e4fd90136d33807f9a7dd4210e8cbddb159526b57fc2f8c71e5429e13cb0cce",
                "md5": "08409edb4abff4ac0ac52d039275547d",
                "sha256": "051b6dbc1b9f21b33bed0c89bdaaf3cd57ed35a45a6ff746f4318e2af22d9f15"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "08409edb4abff4ac0ac52d039275547d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1536227,
            "upload_time": "2025-08-06T17:42:41",
            "upload_time_iso_8601": "2025-08-06T17:42:41.073282Z",
            "url": "https://files.pythonhosted.org/packages/6e/4f/d90136d33807f9a7dd4210e8cbddb159526b57fc2f8c71e5429e13cb0cce/rtest-0.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8fc26acd0845d50160d6972185e22dd8fe098f776fcdf61fcb8acccfa4971c71",
                "md5": "2c111c681e7ef03f186c8fb3c238a4b8",
                "sha256": "5ef42a63b5d015a6edaa78c3aec8fc6bbddabfdeffa48ca9336eeb0ea0d00796"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp311-cp311-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "2c111c681e7ef03f186c8fb3c238a4b8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1496406,
            "upload_time": "2025-08-06T17:42:42",
            "upload_time_iso_8601": "2025-08-06T17:42:42.171816Z",
            "url": "https://files.pythonhosted.org/packages/8f/c2/6acd0845d50160d6972185e22dd8fe098f776fcdf61fcb8acccfa4971c71/rtest-0.0.36-cp311-cp311-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "81c979a33177cf404c953e3288405a67ff2ee5417e24a8abf2bf92fb0553b7e6",
                "md5": "db734d93331fb3f2508c134822c092a4",
                "sha256": "c846ff2e60a2326c54f6f85561463e91b202a0c426d46f255e1fe15b53466a1a"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "db734d93331fb3f2508c134822c092a4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1341088,
            "upload_time": "2025-08-06T17:42:43",
            "upload_time_iso_8601": "2025-08-06T17:42:43.539867Z",
            "url": "https://files.pythonhosted.org/packages/81/c9/79a33177cf404c953e3288405a67ff2ee5417e24a8abf2bf92fb0553b7e6/rtest-0.0.36-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "659a0a4c23a37268b8304565584b9472bd5e45a80c86eec1c33a0b25e22acf15",
                "md5": "35ffaaa75e82274348e0f3fd626e9eca",
                "sha256": "e4d8ca3b7924cbc183a5817cc5aac4ad0d706dac50986f30d9bc3d0de20fb904"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "35ffaaa75e82274348e0f3fd626e9eca",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1451802,
            "upload_time": "2025-08-06T17:42:44",
            "upload_time_iso_8601": "2025-08-06T17:42:44.726342Z",
            "url": "https://files.pythonhosted.org/packages/65/9a/0a4c23a37268b8304565584b9472bd5e45a80c86eec1c33a0b25e22acf15/rtest-0.0.36-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f0e46c18473c37f0a2895dadb6b39208f165daf83d1927499b5952e413d056e3",
                "md5": "7e8715c597cea3642259e51a1a018385",
                "sha256": "8113d8c55e56bf2c7bf332952431d6723089ec7de74b17390351284efeb5e3dc"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7e8715c597cea3642259e51a1a018385",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1413015,
            "upload_time": "2025-08-06T17:42:46",
            "upload_time_iso_8601": "2025-08-06T17:42:46.138340Z",
            "url": "https://files.pythonhosted.org/packages/f0/e4/6c18473c37f0a2895dadb6b39208f165daf83d1927499b5952e413d056e3/rtest-0.0.36-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6d6f9c28918244c62ff56b98118406c6124e8d640f4bd2d057b22078bc3c9c4c",
                "md5": "35de43843999d5a0bd9f7c993cc5086e",
                "sha256": "68cea9287d8b837592ac1735a8c14a7a9dc1e96d375a66cb046b84418e8bb3ba"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "35de43843999d5a0bd9f7c993cc5086e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1535136,
            "upload_time": "2025-08-06T17:42:47",
            "upload_time_iso_8601": "2025-08-06T17:42:47.223324Z",
            "url": "https://files.pythonhosted.org/packages/6d/6f/9c28918244c62ff56b98118406c6124e8d640f4bd2d057b22078bc3c9c4c/rtest-0.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cf199cffe2ed557a1e9591b22d7ae58b9298bc40e34f5d488c538ecef346fc50",
                "md5": "4b85139bd12b3135f943989170430156",
                "sha256": "3f38805ccd9eb18ff1c84478bac16f72807289daedee4f034acb3481c4c14940"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp312-cp312-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4b85139bd12b3135f943989170430156",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1495859,
            "upload_time": "2025-08-06T17:42:48",
            "upload_time_iso_8601": "2025-08-06T17:42:48.337626Z",
            "url": "https://files.pythonhosted.org/packages/cf/19/9cffe2ed557a1e9591b22d7ae58b9298bc40e34f5d488c538ecef346fc50/rtest-0.0.36-cp312-cp312-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "24327a08de53970e6c9df88008d322ca89ef7d37cc9734de072506a4e4727870",
                "md5": "28e54cc4e0ce12055bcbc85a7f62e554",
                "sha256": "b903e68784465cd4b12aebc0b8c6a23ab33b658e0f8e6dd7a2f6463c5a16e2cc"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "28e54cc4e0ce12055bcbc85a7f62e554",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1340165,
            "upload_time": "2025-08-06T17:42:49",
            "upload_time_iso_8601": "2025-08-06T17:42:49.447875Z",
            "url": "https://files.pythonhosted.org/packages/24/32/7a08de53970e6c9df88008d322ca89ef7d37cc9734de072506a4e4727870/rtest-0.0.36-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "58e854b8de8ca76012bb6568dee73ec3d0f0e4e4b39eacfbe985567b0d49ba64",
                "md5": "db20c3e7f20f21e2a90518e88db71f62",
                "sha256": "b7fa37815b7614ee5aebed91e4e75d0828abc5df2c43402b3796fa8dc508b43b"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "db20c3e7f20f21e2a90518e88db71f62",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1451781,
            "upload_time": "2025-08-06T17:42:50",
            "upload_time_iso_8601": "2025-08-06T17:42:50.507902Z",
            "url": "https://files.pythonhosted.org/packages/58/e8/54b8de8ca76012bb6568dee73ec3d0f0e4e4b39eacfbe985567b0d49ba64/rtest-0.0.36-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c12e8a62d0c84aae79446324cb1f4ae2cefce15a1680d9b0d65beaf9679d1a52",
                "md5": "623bf543f86d854bd73772427978617a",
                "sha256": "54b9b48acb0430d7d3587859dd85ec8594188f97bffd7dba657feec626b929e1"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "623bf543f86d854bd73772427978617a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1413048,
            "upload_time": "2025-08-06T17:42:51",
            "upload_time_iso_8601": "2025-08-06T17:42:51.722931Z",
            "url": "https://files.pythonhosted.org/packages/c1/2e/8a62d0c84aae79446324cb1f4ae2cefce15a1680d9b0d65beaf9679d1a52/rtest-0.0.36-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1979e40f596997b089b485d1f282b011f12ed437f2855265022c1f57412feb21",
                "md5": "191d8c5a27cce515ae81b3f0f6d34cdf",
                "sha256": "99d737f1917bb40e22b97e29fc79a023f42737df456d9ca1cf416f4ba3a5eb5c"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "191d8c5a27cce515ae81b3f0f6d34cdf",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1535030,
            "upload_time": "2025-08-06T17:42:52",
            "upload_time_iso_8601": "2025-08-06T17:42:52.823167Z",
            "url": "https://files.pythonhosted.org/packages/19/79/e40f596997b089b485d1f282b011f12ed437f2855265022c1f57412feb21/rtest-0.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1d852c4bf0060751405bb158d70a73167d7247b25d89540ea7de319b5c866554",
                "md5": "d3b358ed74b90ba480291cd153c710d6",
                "sha256": "512514bfa3124a5c5ccbc3246420c0cf1f8ec8a0924c7e43c80f6c082addd736"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp313-cp313-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d3b358ed74b90ba480291cd153c710d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1495426,
            "upload_time": "2025-08-06T17:42:54",
            "upload_time_iso_8601": "2025-08-06T17:42:54.252599Z",
            "url": "https://files.pythonhosted.org/packages/1d/85/2c4bf0060751405bb158d70a73167d7247b25d89540ea7de319b5c866554/rtest-0.0.36-cp313-cp313-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6ce5dea72d3196a6e41b5d7e4564829e74f4c98014fb66667029fd83eff54801",
                "md5": "adc45df773e599cacd17ab7f6ba72b3d",
                "sha256": "1a0cfffe3fcdb1442a92911a7367916e2dbd7cd923a14e47147c0340ec2f384f"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp313-cp313t-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "adc45df773e599cacd17ab7f6ba72b3d",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1495894,
            "upload_time": "2025-08-06T17:42:56",
            "upload_time_iso_8601": "2025-08-06T17:42:56.740826Z",
            "url": "https://files.pythonhosted.org/packages/6c/e5/dea72d3196a6e41b5d7e4564829e74f4c98014fb66667029fd83eff54801/rtest-0.0.36-cp313-cp313t-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e0e41af0187da5523abf8058fa0eff8853e66e310aea77887875d3093011aaec",
                "md5": "23951b48e31c75e5f4e96767e87468ab",
                "sha256": "c8c98882c62ea1c8791f4cf737105723a1af72edca24df48caf3b8cb751b8fe1"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "23951b48e31c75e5f4e96767e87468ab",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1340116,
            "upload_time": "2025-08-06T17:42:55",
            "upload_time_iso_8601": "2025-08-06T17:42:55.613099Z",
            "url": "https://files.pythonhosted.org/packages/e0/e4/1af0187da5523abf8058fa0eff8853e66e310aea77887875d3093011aaec/rtest-0.0.36-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bf9e9b6aa88c4d85f0d2b0eb3939c47fe28444ee1983f609c318622f95e7b7ae",
                "md5": "f5a51a43d358a3e377fecd799b1b0177",
                "sha256": "111986995643eebd791b3c2bb4a27e39f74a3cbced476489dc7847f10f0383f0"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f5a51a43d358a3e377fecd799b1b0177",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 1535048,
            "upload_time": "2025-08-06T17:42:58",
            "upload_time_iso_8601": "2025-08-06T17:42:58.550646Z",
            "url": "https://files.pythonhosted.org/packages/bf/9e/9b6aa88c4d85f0d2b0eb3939c47fe28444ee1983f609c318622f95e7b7ae/rtest-0.0.36-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d79bfdc9269b6d1693b3e750cac355df2f5074372a32300244d82cf2bee5bb94",
                "md5": "96077dda25ff8b508bb1a6e667fb4d74",
                "sha256": "96cc3be82da0bacd371bb406380ebd8cec2814b550d67a2e177cf8cfd54489f7"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "96077dda25ff8b508bb1a6e667fb4d74",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1537078,
            "upload_time": "2025-08-06T17:42:59",
            "upload_time_iso_8601": "2025-08-06T17:42:59.955793Z",
            "url": "https://files.pythonhosted.org/packages/d7/9b/fdc9269b6d1693b3e750cac355df2f5074372a32300244d82cf2bee5bb94/rtest-0.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b23a55c1a2bd1f0ea6c757c07e45bb7a43bedf9b6e06d0629590319da930573e",
                "md5": "bc992a986532af69041ca81a05352022",
                "sha256": "68045258a04d51543c0b5be90fc03a3e48b10235ffb697a624efb470f068c6df"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp39-cp39-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "bc992a986532af69041ca81a05352022",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1497013,
            "upload_time": "2025-08-06T17:43:01",
            "upload_time_iso_8601": "2025-08-06T17:43:01.133796Z",
            "url": "https://files.pythonhosted.org/packages/b2/3a/55c1a2bd1f0ea6c757c07e45bb7a43bedf9b6e06d0629590319da930573e/rtest-0.0.36-cp39-cp39-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "11932bb06541516f44a44dfdeff5dd5a379af1a08639179effb2bcd13b06faa0",
                "md5": "5b26d0b18b28077d3c3bf985f67159b7",
                "sha256": "41a4e355205ca4036419b1c3285ddc4097c8d98991756b17d9593af8fabcf996"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5b26d0b18b28077d3c3bf985f67159b7",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1341181,
            "upload_time": "2025-08-06T17:43:02",
            "upload_time_iso_8601": "2025-08-06T17:43:02.440538Z",
            "url": "https://files.pythonhosted.org/packages/11/93/2bb06541516f44a44dfdeff5dd5a379af1a08639179effb2bcd13b06faa0/rtest-0.0.36-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "931b221d461c4a1e4abc570e321d02d8784137a7eb61d3def64b15fb57dcef7e",
                "md5": "87196f5b0d79458e7b41b4589eea0d51",
                "sha256": "365a3e7fd65f1363f9ff359805049b53476d886ee6d1130da96a9ac22b2a00b0"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "87196f5b0d79458e7b41b4589eea0d51",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.9",
            "size": 1537740,
            "upload_time": "2025-08-06T17:43:03",
            "upload_time_iso_8601": "2025-08-06T17:43:03.510901Z",
            "url": "https://files.pythonhosted.org/packages/93/1b/221d461c4a1e4abc570e321d02d8784137a7eb61d3def64b15fb57dcef7e/rtest-0.0.36-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "455319618e2b9b30bb7c2deb0cf4991694dc121201bf94ec0f01ca25c61b4efc",
                "md5": "7aa9fdf865d74b0c06d7493a378d57a5",
                "sha256": "57922b15955cf2af835a7f520b486f8eb46176f82f0eaab725767b6f5f72c997"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7aa9fdf865d74b0c06d7493a378d57a5",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.9",
            "size": 1497496,
            "upload_time": "2025-08-06T17:43:05",
            "upload_time_iso_8601": "2025-08-06T17:43:05.000277Z",
            "url": "https://files.pythonhosted.org/packages/45/53/19618e2b9b30bb7c2deb0cf4991694dc121201bf94ec0f01ca25c61b4efc/rtest-0.0.36-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c836ee92753096fe1ecd0f854efe9f88c028a3a54bd40604c72cf3b6110f7fd4",
                "md5": "6c3c657eb230d636c03475970aebaea0",
                "sha256": "847cfe130c89b42120b59363f8c735b10596a3857f94f817ad5c6b47888f4e21"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6c3c657eb230d636c03475970aebaea0",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 1537349,
            "upload_time": "2025-08-06T17:43:07",
            "upload_time_iso_8601": "2025-08-06T17:43:07.318823Z",
            "url": "https://files.pythonhosted.org/packages/c8/36/ee92753096fe1ecd0f854efe9f88c028a3a54bd40604c72cf3b6110f7fd4/rtest-0.0.36-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e7c97cfddcb6ed0e82f7064e23089c641b76b3870b994121e6f7b6119e9b4e84",
                "md5": "6765bbd547ca07c587e9b1f935a94816",
                "sha256": "988415a170b82cad094d8ca6eb61e39d321ae6f3b00648a2d15eef594f9fc771"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "6765bbd547ca07c587e9b1f935a94816",
            "packagetype": "bdist_wheel",
            "python_version": "pp311",
            "requires_python": ">=3.9",
            "size": 1497366,
            "upload_time": "2025-08-06T17:43:08",
            "upload_time_iso_8601": "2025-08-06T17:43:08.795954Z",
            "url": "https://files.pythonhosted.org/packages/e7/c9/7cfddcb6ed0e82f7064e23089c641b76b3870b994121e6f7b6119e9b4e84/rtest-0.0.36-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9cf7e361e9e84583a8c069e37649fe2af14b4cbffd5d336cb1ee27745cf1966d",
                "md5": "62ed4c2ba09e55756af9b2d12dead9aa",
                "sha256": "9d889722523d82a955faeb8a9773955a28084f6ab7b518f20880609b7b4d8458"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36-pp39-pypy39_pp73-manylinux_2_34_aarch64.whl",
            "has_sig": false,
            "md5_digest": "62ed4c2ba09e55756af9b2d12dead9aa",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.9",
            "size": 1497365,
            "upload_time": "2025-08-06T17:43:09",
            "upload_time_iso_8601": "2025-08-06T17:43:09.974547Z",
            "url": "https://files.pythonhosted.org/packages/9c/f7/e361e9e84583a8c069e37649fe2af14b4cbffd5d336cb1ee27745cf1966d/rtest-0.0.36-pp39-pypy39_pp73-manylinux_2_34_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3803f113f002336f9523ddfd5368455ab07f0266fa42409e3826fcb6a4f09f46",
                "md5": "e6119df15753575b94f5d35d0b9f50c0",
                "sha256": "f820fdb1b820603de38dda3454d2ee9b09fa5be7d9eb5d94bbb80d819665e8c8"
            },
            "downloads": -1,
            "filename": "rtest-0.0.36.tar.gz",
            "has_sig": false,
            "md5_digest": "e6119df15753575b94f5d35d0b9f50c0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 2034237,
            "upload_time": "2025-08-06T17:43:11",
            "upload_time_iso_8601": "2025-08-06T17:43:11.158358Z",
            "url": "https://files.pythonhosted.org/packages/38/03/f113f002336f9523ddfd5368455ab07f0266fa42409e3826fcb6a4f09f46/rtest-0.0.36.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-06 17:43:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hughhan1",
    "github_project": "rtest",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "rtest"
}
        
Elapsed time: 2.41011s