pycapi


Namepycapi JSON
Version 0.82.1 PyPI version JSON
download
home_pagehttps://github.com/brandtbucher/pycapi
SummaryOver 600 fast Python bindings to the CPython C API.
upload_time2022-12-14 01:49:42
maintainer
docs_urlNone
authorBrandt Bucher
requires_python
licenseMIT
keywords api c cpython python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align=justify>

<div align=center>

PyCAPI
======

[![latest version](https://img.shields.io/github/release-pre/brandtbucher/pycapi.svg?style=for-the-badge&label=latest)![latest release date](https://img.shields.io/github/release-date-pre/brandtbucher/pycapi.svg?style=for-the-badge&label=released)](https://github.com/brandtbucher/pycapi/releases)[![build status](https://img.shields.io/github/workflow/status/brandtbucher/pycapi/CI/master.svg?style=for-the-badge)](https://github.com/brandtbucher/pycapi/actions)[![issues](https://img.shields.io/github/issues-raw/brandtbucher/pycapi.svg?label=issues&style=for-the-badge)](https://github.com/brandtbucher/pycapi/issues)

<br>

</div>

PyCAPI is a Python package containing over 600 fast bindings to the CPython C API. Its goal is to support as many of the Python 3.7 - 3.11 stable public APIs as possible.

To install, just run:
```sh
$ pip install pycapi
```

Where is the documentation?
---------------------------

Documentation of the full CPython C API can be found [here](https://docs.python.org/3/c-api/index.html). It's not a goal of this project to maintain a separate API reference.

Any type conversions (such as Python `int` with C `long`, or Python `bytes` with C `char*`) should be obvious, and all other semantics (such as refcounts, etc.) are identical to the documented API behavior. For simplicity, PyCAPI doesn't provide any additional functionality or utilities beyond CPython's documented stable public API.

How is PyCAPI better than `ctypes.pythonapi`?
---------------------------------------------

### It's easier to use.

`pycapi` works as expected, right out of the box:

```py
>>> import pycapi
>>> pycapi.PyNumber_Add(1, 2)
3
```

`ctypes.pythonapi` implicity requires users to specify the argument and return types as `ctypes` types:

```py
>>> import ctypes
>>> ctypes.pythonapi.PyNumber_Add(1, 2)
Segmentation fault: 11
```

```py
>>> import ctypes
>>> ctypes.pythonapi.PyNumber_Add.argtypes = (ctypes.py_object, ctypes.py_object)
>>> ctypes.pythonapi.PyNumber_Add.restype = ctypes.py_object
>>> ctypes.pythonapi.PyNumber_Add(1, 2)
3
```

### It's more complete.

`pycapi` is designed to provide properly typed bindings for *any* part of the C API that's reasonable to call from the Python layer:

```py
>>> import pycapi
>>> pycapi.PyDict_Check({})
1
```

In comparison, `ctypes.pythonapi` is loaded directly from the `Python.h` DLL. As a consequence, it isn't able to offer any APIs that happen to be implemented as macros:

```py
>>> import ctypes
>>> ctypes.pythonapi.PyDict_Check(ctypes.py_object({}))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py", line 369, in __getattr__
    func = self.__getitem__(name)
  File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py", line 374, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: dlsym(RTLD_DEFAULT, PyDict_Check): symbol not found
```

`pycapi` is also fully loaded on import, so you can use tab-completion and other introspection techniques to discover APIs (it's also fully typed, so linters and other static editing tools "just work"). `ctypes.pythonapi` requires you to access the attribute *before* it is loaded, and there is no way to get a complete listing of what it supports.

### It's faster.

In many cases, it can be even *faster than the built-in equivalent* in the Python layer. The numbers speak for themselves:

```py
In [1]: from pycapi import PyDict_New, PyDict_Clear, PyDict_Copy

In [2]: %timeit PyDict_New()
44.7 ns ± 1.38 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [3]: %timeit PyDict_Clear({})
54 ns ± 0.448 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [4]: %timeit PyDict_Copy({})
68.9 ns ± 0.362 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
```

```py
In [1]: PyDict_New = dict
   ...: PyDict_Clear = dict.clear
   ...: PyDict_Copy = dict.copy

In [2]: %timeit PyDict_New()
71.7 ns ± 0.569 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [3]: %timeit PyDict_Clear({})
55.8 ns ± 0.506 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [4]: %timeit PyDict_Copy({})
73.1 ns ± 1.06 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
```

```py
In [1]: import ctypes
   ...:
   ...: PyDict_New = ctypes.pythonapi.PyDict_New
   ...: PyDict_New.argtypes = ()
   ...: PyDict_New.restype = ctypes.py_object
   ...:
   ...: PyDict_Clear = ctypes.pythonapi.PyDict_Clear
   ...: PyDict_Clear.argtypes = (ctypes.py_object,)
   ...: PyDict_Clear.restype = None
   ...:
   ...: PyDict_Copy = ctypes.pythonapi.PyDict_Copy
   ...: PyDict_Copy.argtypes = (ctypes.py_object,)
   ...: PyDict_Copy.restype = None

In [2]: %timeit PyDict_New()
113 ns ± 0.424 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [3]: %timeit PyDict_Clear({})
273 ns ± 3.34 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [4]: %timeit PyDict_Copy({})
378 ns ± 9.77 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
```

</div>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/brandtbucher/pycapi",
    "name": "pycapi",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "API C CPython Python",
    "author": "Brandt Bucher",
    "author_email": "brandtbucher@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e2/fa/407bc224b695506b3e3d7ba3133664fcca4119ee84bead04f6ea95b5bc2a/pycapi-0.82.1.tar.gz",
    "platform": null,
    "description": "<div align=justify>\n\n<div align=center>\n\nPyCAPI\n======\n\n[![latest version](https://img.shields.io/github/release-pre/brandtbucher/pycapi.svg?style=for-the-badge&label=latest)![latest release date](https://img.shields.io/github/release-date-pre/brandtbucher/pycapi.svg?style=for-the-badge&label=released)](https://github.com/brandtbucher/pycapi/releases)[![build status](https://img.shields.io/github/workflow/status/brandtbucher/pycapi/CI/master.svg?style=for-the-badge)](https://github.com/brandtbucher/pycapi/actions)[![issues](https://img.shields.io/github/issues-raw/brandtbucher/pycapi.svg?label=issues&style=for-the-badge)](https://github.com/brandtbucher/pycapi/issues)\n\n<br>\n\n</div>\n\nPyCAPI is a Python package containing over 600 fast bindings to the CPython C API. Its goal is to support as many of the Python 3.7 - 3.11 stable public APIs as possible.\n\nTo install, just run:\n```sh\n$ pip install pycapi\n```\n\nWhere is the documentation?\n---------------------------\n\nDocumentation of the full CPython C API can be found [here](https://docs.python.org/3/c-api/index.html). It's not a goal of this project to maintain a separate API reference.\n\nAny type conversions (such as Python `int` with C `long`, or Python `bytes` with C `char*`) should be obvious, and all other semantics (such as refcounts, etc.) are identical to the documented API behavior. For simplicity, PyCAPI doesn't provide any additional functionality or utilities beyond CPython's documented stable public API.\n\nHow is PyCAPI better than `ctypes.pythonapi`?\n---------------------------------------------\n\n### It's easier to use.\n\n`pycapi` works as expected, right out of the box:\n\n```py\n>>> import pycapi\n>>> pycapi.PyNumber_Add(1, 2)\n3\n```\n\n`ctypes.pythonapi` implicity requires users to specify the argument and return types as `ctypes` types:\n\n```py\n>>> import ctypes\n>>> ctypes.pythonapi.PyNumber_Add(1, 2)\nSegmentation fault: 11\n```\n\n```py\n>>> import ctypes\n>>> ctypes.pythonapi.PyNumber_Add.argtypes = (ctypes.py_object, ctypes.py_object)\n>>> ctypes.pythonapi.PyNumber_Add.restype = ctypes.py_object\n>>> ctypes.pythonapi.PyNumber_Add(1, 2)\n3\n```\n\n### It's more complete.\n\n`pycapi` is designed to provide properly typed bindings for *any* part of the C API that's reasonable to call from the Python layer:\n\n```py\n>>> import pycapi\n>>> pycapi.PyDict_Check({})\n1\n```\n\nIn comparison, `ctypes.pythonapi` is loaded directly from the `Python.h` DLL. As a consequence, it isn't able to offer any APIs that happen to be implemented as macros:\n\n```py\n>>> import ctypes\n>>> ctypes.pythonapi.PyDict_Check(ctypes.py_object({}))\nTraceback (most recent call last):\n  File \"<stdin>\", line 1, in <module>\n  File \"/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py\", line 369, in __getattr__\n    func = self.__getitem__(name)\n  File \"/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py\", line 374, in __getitem__\n    func = self._FuncPtr((name_or_ordinal, self))\nAttributeError: dlsym(RTLD_DEFAULT, PyDict_Check): symbol not found\n```\n\n`pycapi` is also fully loaded on import, so you can use tab-completion and other introspection techniques to discover APIs (it's also fully typed, so linters and other static editing tools \"just work\"). `ctypes.pythonapi` requires you to access the attribute *before* it is loaded, and there is no way to get a complete listing of what it supports.\n\n### It's faster.\n\nIn many cases, it can be even *faster than the built-in equivalent* in the Python layer. The numbers speak for themselves:\n\n```py\nIn [1]: from pycapi import PyDict_New, PyDict_Clear, PyDict_Copy\n\nIn [2]: %timeit PyDict_New()\n44.7 ns \u00b1 1.38 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000000 loops each)\n\nIn [3]: %timeit PyDict_Clear({})\n54 ns \u00b1 0.448 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000000 loops each)\n\nIn [4]: %timeit PyDict_Copy({})\n68.9 ns \u00b1 0.362 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000000 loops each)\n```\n\n```py\nIn [1]: PyDict_New = dict\n   ...: PyDict_Clear = dict.clear\n   ...: PyDict_Copy = dict.copy\n\nIn [2]: %timeit PyDict_New()\n71.7 ns \u00b1 0.569 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000000 loops each)\n\nIn [3]: %timeit PyDict_Clear({})\n55.8 ns \u00b1 0.506 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000000 loops each)\n\nIn [4]: %timeit PyDict_Copy({})\n73.1 ns \u00b1 1.06 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000000 loops each)\n```\n\n```py\nIn [1]: import ctypes\n   ...:\n   ...: PyDict_New = ctypes.pythonapi.PyDict_New\n   ...: PyDict_New.argtypes = ()\n   ...: PyDict_New.restype = ctypes.py_object\n   ...:\n   ...: PyDict_Clear = ctypes.pythonapi.PyDict_Clear\n   ...: PyDict_Clear.argtypes = (ctypes.py_object,)\n   ...: PyDict_Clear.restype = None\n   ...:\n   ...: PyDict_Copy = ctypes.pythonapi.PyDict_Copy\n   ...: PyDict_Copy.argtypes = (ctypes.py_object,)\n   ...: PyDict_Copy.restype = None\n\nIn [2]: %timeit PyDict_New()\n113 ns \u00b1 0.424 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000000 loops each)\n\nIn [3]: %timeit PyDict_Clear({})\n273 ns \u00b1 3.34 ns per loop (mean \u00b1 std. dev. of 7 runs, 1000000 loops each)\n\nIn [4]: %timeit PyDict_Copy({})\n378 ns \u00b1 9.77 ns per loop (mean \u00b1 std. dev. of 7 runs, 1000000 loops each)\n```\n\n</div>\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Over 600 fast Python bindings to the CPython C API.",
    "version": "0.82.1",
    "split_keywords": [
        "api",
        "c",
        "cpython",
        "python"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "e9b9d443a3dbdc2a727e5cbff568a5d5",
                "sha256": "25f02c34e50e61056ebaf0c1e744d2b9454301b138670710b541eb9245926ad7"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "e9b9d443a3dbdc2a727e5cbff568a5d5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 102513,
            "upload_time": "2022-12-14T01:48:32",
            "upload_time_iso_8601": "2022-12-14T01:48:32.521248Z",
            "url": "https://files.pythonhosted.org/packages/a0/7b/74ae12b0b70fe443f69abed94b2da3f5073c1eeb561aceefe67e5cd258b7/pycapi-0.82.1-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "2c9c10189b1c17039f6f61c308c77227",
                "sha256": "5e0b05d0ee85be46bdcb545c49f7617bfc118152004c876a247b70b7bd61e5fb"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2c9c10189b1c17039f6f61c308c77227",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 51616,
            "upload_time": "2022-12-14T01:48:34",
            "upload_time_iso_8601": "2022-12-14T01:48:34.654454Z",
            "url": "https://files.pythonhosted.org/packages/98/10/0d639bec542efb6ee37dc80d74dc9617eaabacb88d6b7e84ab8822664b87/pycapi-0.82.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "7f3b091b20ba83e9bbe4cf43d3b871aa",
                "sha256": "d7c5e8705bb1d88294ff6e0e378b9cd577892dbda51bd4d9ab6cea082f14b274"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7f3b091b20ba83e9bbe4cf43d3b871aa",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 54609,
            "upload_time": "2022-12-14T01:48:36",
            "upload_time_iso_8601": "2022-12-14T01:48:36.303641Z",
            "url": "https://files.pythonhosted.org/packages/62/1a/472aed1a00dd561035351f60cc4d8e3f7df1f3293fafecde1b4473ba5306/pycapi-0.82.1-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "0b162265229e25e52e2f2f7eb8e9e28f",
                "sha256": "17f54da754f008b528f670395914a945d5494f422f40a0988b9ed1cd00fde826"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "0b162265229e25e52e2f2f7eb8e9e28f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 138141,
            "upload_time": "2022-12-14T01:48:38",
            "upload_time_iso_8601": "2022-12-14T01:48:38.049561Z",
            "url": "https://files.pythonhosted.org/packages/ea/f4/54c72277246c9ea74b7d78ffa24d4a72e8245d0df01544f217d50cfd5d4a/pycapi-0.82.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "e5a256127b6c43c69b2162c55ea8b200",
                "sha256": "200338f34c640480267c890c264578d54f32487f1a68f0fdfe7ce9b7a3230ae1"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e5a256127b6c43c69b2162c55ea8b200",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 168445,
            "upload_time": "2022-12-14T01:48:40",
            "upload_time_iso_8601": "2022-12-14T01:48:40.071340Z",
            "url": "https://files.pythonhosted.org/packages/4f/5d/7fff12318132d8c522f4618220803f3ec0a5de9b80b8ee42e0c47275d456/pycapi-0.82.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5c4c4dd76334fe1c499d552c81ec134b",
                "sha256": "256cfda750376bf9ab9a0b6a5069dd71591e6eec7fa6575604d272e262032499"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "5c4c4dd76334fe1c499d552c81ec134b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 145920,
            "upload_time": "2022-12-14T01:48:42",
            "upload_time_iso_8601": "2022-12-14T01:48:42.444269Z",
            "url": "https://files.pythonhosted.org/packages/ca/5b/93232de2e51c2049bc7ee0ac5f0f8db1c93a3c64305d0a14d4649eb02754/pycapi-0.82.1-cp310-cp310-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d78474b707f4cfefb3e6c1ded54cc65a",
                "sha256": "f4c68e3662c7a673440b3cb4fe7805acb885d2ec85514af4c6cc6fc0e9ed7479"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d78474b707f4cfefb3e6c1ded54cc65a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 174524,
            "upload_time": "2022-12-14T01:48:44",
            "upload_time_iso_8601": "2022-12-14T01:48:44.434421Z",
            "url": "https://files.pythonhosted.org/packages/fc/cb/f1c2774baa3313e9f3b5bfce37289392ed8f756b886b02d2e939a4436705/pycapi-0.82.1-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "4e4a043fef0cca7122fd87a371e13141",
                "sha256": "9262f288e075e16173b3370f1bfcaeb4b826eae07001b6bfd2c1fd946c17f311"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "4e4a043fef0cca7122fd87a371e13141",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 32209,
            "upload_time": "2022-12-14T01:48:46",
            "upload_time_iso_8601": "2022-12-14T01:48:46.303707Z",
            "url": "https://files.pythonhosted.org/packages/da/25/73300b4c2e551ece225aa5c86aedf5447e88221074b716f3918906708711/pycapi-0.82.1-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "8239a36a56c96cfed4af503b70a02af3",
                "sha256": "5bf90fab5584a8f3c27c5aa28f96c9a8d6e479ce6ff64b03c52e4a6a361e306d"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8239a36a56c96cfed4af503b70a02af3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 37874,
            "upload_time": "2022-12-14T01:48:48",
            "upload_time_iso_8601": "2022-12-14T01:48:48.719902Z",
            "url": "https://files.pythonhosted.org/packages/93/3e/10c33f376dea22f49b6c8a364574d65c4a2cc993fcf0647ca8fc816cadb4/pycapi-0.82.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "4a368acfee6511003f670ae1bbef7a19",
                "sha256": "6781a4860b5e904399cad2f3f3423fedd3461a15398451ab2876efeb3682ff8c"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "4a368acfee6511003f670ae1bbef7a19",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 100429,
            "upload_time": "2022-12-14T01:48:50",
            "upload_time_iso_8601": "2022-12-14T01:48:50.209161Z",
            "url": "https://files.pythonhosted.org/packages/fd/71/3258458e202664c749f83c3c41aadc3974e728175207aeb8a5d13c617dff/pycapi-0.82.1-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "55f2030e3330f7f38035431667c4ed92",
                "sha256": "200e8da556e81c74bfe32ee12f7f605c92ab8ee3a925847db8bedf8094608ed8"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "55f2030e3330f7f38035431667c4ed92",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 50618,
            "upload_time": "2022-12-14T01:48:51",
            "upload_time_iso_8601": "2022-12-14T01:48:51.537400Z",
            "url": "https://files.pythonhosted.org/packages/0a/e4/a517a079fcde3a85e7fce244a095a1870a1071b978513458d4aa28e44f76/pycapi-0.82.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "22b63ef4ee1da7c11f2d61a451409743",
                "sha256": "4c906d344855d777173d99e0cee790a21a4f0f571d7b1f1d2e9258bdc2a2aaf5"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "22b63ef4ee1da7c11f2d61a451409743",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 53431,
            "upload_time": "2022-12-14T01:48:52",
            "upload_time_iso_8601": "2022-12-14T01:48:52.808269Z",
            "url": "https://files.pythonhosted.org/packages/45/5e/a3190588c4f339928d579d14f4e4496404e537c51374d75f99430c2aa4bd/pycapi-0.82.1-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "97e2ab4b8c5ba27975a5ee04ab4e7840",
                "sha256": "9c7ec2b9caa894bf296e1982c9543de67c14ec58a06091ca8269925d53ff83b7"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "97e2ab4b8c5ba27975a5ee04ab4e7840",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 138441,
            "upload_time": "2022-12-14T01:48:54",
            "upload_time_iso_8601": "2022-12-14T01:48:54.434691Z",
            "url": "https://files.pythonhosted.org/packages/bc/0e/ab7b61928d4b5528753ba81de1f07c3f2f53ca524a709571e3fe0642a5f7/pycapi-0.82.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "c51b207a75360f32cce4577b4a18e224",
                "sha256": "8f031149d9743023939dd6834e749408460ddd3ebbd5ff4f77e23fe6fa7f2bef"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c51b207a75360f32cce4577b4a18e224",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 168315,
            "upload_time": "2022-12-14T01:48:55",
            "upload_time_iso_8601": "2022-12-14T01:48:55.835328Z",
            "url": "https://files.pythonhosted.org/packages/4c/26/d1ba9c343688c0a71a384c991747811ad5c046f500aa06476e808e9bced9/pycapi-0.82.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "f0bb339f3c9aa76561bc95e0df3755bb",
                "sha256": "fd15f721e80c3ae034aab15f5d5b7beb370d1c33c73bfdc0afd43a0311a3f960"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "f0bb339f3c9aa76561bc95e0df3755bb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 145687,
            "upload_time": "2022-12-14T01:48:57",
            "upload_time_iso_8601": "2022-12-14T01:48:57.635585Z",
            "url": "https://files.pythonhosted.org/packages/ae/b1/536627c7787853d820580fd90a63be9d94b085aa2282907c5d3524a31d84/pycapi-0.82.1-cp311-cp311-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "3523398d085838835ef73fe92783f5d2",
                "sha256": "19443f0c76b237cfeda510831e7a2740e7cf781017af903541b2347c3f806fac"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3523398d085838835ef73fe92783f5d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 174464,
            "upload_time": "2022-12-14T01:48:59",
            "upload_time_iso_8601": "2022-12-14T01:48:59.375842Z",
            "url": "https://files.pythonhosted.org/packages/e8/1e/88a955cb9a8a01665d4401b1a6cfdadcd36c022dbfb736d822a72d544059/pycapi-0.82.1-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "df11dac390621acc61bdbb8461c2c382",
                "sha256": "9bc16465df429fc306a604fcf2730eb698c676cdc3911d43b35bea38fbd8e53d"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "df11dac390621acc61bdbb8461c2c382",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 31622,
            "upload_time": "2022-12-14T01:49:00",
            "upload_time_iso_8601": "2022-12-14T01:49:00.766698Z",
            "url": "https://files.pythonhosted.org/packages/a7/6d/d1d182e6ee10efb11ca6e02a95cf791eea16b97869c5ee49456487b72b8c/pycapi-0.82.1-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "8f0bce5f4e6fbc9f163a00dcf1b696ca",
                "sha256": "cbe7ec5c8d99ca02c3e2f0a66a8fe1a5cdb3dc92b7083d79ab3e781fa78ab03c"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8f0bce5f4e6fbc9f163a00dcf1b696ca",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 37019,
            "upload_time": "2022-12-14T01:49:02",
            "upload_time_iso_8601": "2022-12-14T01:49:02.023186Z",
            "url": "https://files.pythonhosted.org/packages/59/41/a79825197b4cf6c0bec29ae88d5fcc27e0a0f4c18e678995c6fd10e8835f/pycapi-0.82.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "3cda680391b808695840ca6c36e3a269",
                "sha256": "8476ed88490140b0a7f16c5aa31e0c0bae25b949c205c3d0dbec021a5fd8036a"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3cda680391b808695840ca6c36e3a269",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 52215,
            "upload_time": "2022-12-14T01:49:04",
            "upload_time_iso_8601": "2022-12-14T01:49:04.040445Z",
            "url": "https://files.pythonhosted.org/packages/9a/1d/de738b31dda1113e16eb95bd504b2e65ef1334ff903affd3de7be08c72bd/pycapi-0.82.1-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "1a440a622c8245cf28e4b6ee4ce93753",
                "sha256": "4398074cf3fba28d02d55f19cc0cf4bc225eaa74be5af557f12b0cccd1d34f28"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "1a440a622c8245cf28e4b6ee4ce93753",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 130186,
            "upload_time": "2022-12-14T01:49:05",
            "upload_time_iso_8601": "2022-12-14T01:49:05.787445Z",
            "url": "https://files.pythonhosted.org/packages/79/02/fd09978fcb69cecad6fbb419c4c95045acff9acccedd0f23b77a45029e68/pycapi-0.82.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5ee8e6e125e2cbcdc1e0155d52822d24",
                "sha256": "0b016f87e94d785fbfcd380cf8794cb3badffe4942708d9a2c3139168036f008"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5ee8e6e125e2cbcdc1e0155d52822d24",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 158559,
            "upload_time": "2022-12-14T01:49:07",
            "upload_time_iso_8601": "2022-12-14T01:49:07.788920Z",
            "url": "https://files.pythonhosted.org/packages/2f/9b/da5e5d3bff027f4160b1508fc277ff74faa7095f4fd64d99e3abccf52d34/pycapi-0.82.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "022b2f3d5dd6bc38bb3e17046275ff0a",
                "sha256": "69aa59e8eb0e16f44a3834a6a00daca5116c7bab2a7cf3b0ac6bf7e98502ac23"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp37-cp37m-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "022b2f3d5dd6bc38bb3e17046275ff0a",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 136784,
            "upload_time": "2022-12-14T01:49:09",
            "upload_time_iso_8601": "2022-12-14T01:49:09.927164Z",
            "url": "https://files.pythonhosted.org/packages/cc/ef/3fcd51d9107cf6962fb94bf3b0c16c4a7455051ccd979b8a6e433aff2528/pycapi-0.82.1-cp37-cp37m-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "28dbdb1bbee9293d7ba1879efede191b",
                "sha256": "69e077b62a414b26b29636dc8df8818685eb4acf92f4bcdc22d6a7f74ed3ad38"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "28dbdb1bbee9293d7ba1879efede191b",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 165600,
            "upload_time": "2022-12-14T01:49:11",
            "upload_time_iso_8601": "2022-12-14T01:49:11.279630Z",
            "url": "https://files.pythonhosted.org/packages/2c/d9/5c5b750dda8b96024a24c3c48a22cef941162c447f64436431b5755f034c/pycapi-0.82.1-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "00d6d7c5ad7ab432d9e3c2d9f06ee233",
                "sha256": "1d32c791c5998781f6cfb43f30f058acc1f5b2660da6aca424b60a15688964a5"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp37-cp37m-win32.whl",
            "has_sig": false,
            "md5_digest": "00d6d7c5ad7ab432d9e3c2d9f06ee233",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 33114,
            "upload_time": "2022-12-14T01:49:12",
            "upload_time_iso_8601": "2022-12-14T01:49:12.667127Z",
            "url": "https://files.pythonhosted.org/packages/20/8d/5da2ef633f1eed23a32f6efd75c270a5765a32b17b4bc51beed66c6f320d/pycapi-0.82.1-cp37-cp37m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5c5b6168bcd54d1b2ae6dfbdf197a57e",
                "sha256": "7c8c0f456538e0cedcf5c3fbc186189d6fb9323b528e4bf7f4f17ed277f4be5d"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5c5b6168bcd54d1b2ae6dfbdf197a57e",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 39775,
            "upload_time": "2022-12-14T01:49:13",
            "upload_time_iso_8601": "2022-12-14T01:49:13.980619Z",
            "url": "https://files.pythonhosted.org/packages/68/31/5a06d62b7901935e39d8216de43729d4d05e74151ef23732d46c85c477ea/pycapi-0.82.1-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "6a9e8b4a0a5bcd506b32ac95506ed493",
                "sha256": "21dd98db272954568c6244842aa9903813ff01c1aec7452e53399a55223be401"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "6a9e8b4a0a5bcd506b32ac95506ed493",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 104013,
            "upload_time": "2022-12-14T01:49:15",
            "upload_time_iso_8601": "2022-12-14T01:49:15.377501Z",
            "url": "https://files.pythonhosted.org/packages/25/89/3aacfb822f122bda7ad0571fb1e52d97c1ba5120a361afe1bb1e4a70d142/pycapi-0.82.1-cp38-cp38-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "72b8d04f057b7be0723373c858b1cc64",
                "sha256": "5ac40feea9c9df793fbac18438921d4d60d9ab85a930be15c8e304d53a06df67"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "72b8d04f057b7be0723373c858b1cc64",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 52278,
            "upload_time": "2022-12-14T01:49:16",
            "upload_time_iso_8601": "2022-12-14T01:49:16.661952Z",
            "url": "https://files.pythonhosted.org/packages/32/a6/a1af978499ad171699dc71a335e4e08bfe7d5678f3a27dccffa6f6721ce8/pycapi-0.82.1-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "54cd5dbe0984b4aaa9e60050f8971300",
                "sha256": "95ff437ae0ac6f31524b42eb3903365ea0d5ed4f940caeac301a079baa8f484f"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "54cd5dbe0984b4aaa9e60050f8971300",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 55327,
            "upload_time": "2022-12-14T01:49:17",
            "upload_time_iso_8601": "2022-12-14T01:49:17.971855Z",
            "url": "https://files.pythonhosted.org/packages/c1/a8/e4c7784332f95fe2a2a9a0bdcab6b021714018e32ab7277b120646c75364/pycapi-0.82.1-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "32d87c524d5591526d752f867fa4eca7",
                "sha256": "9c18190bb61cb7954072c00659c495e42a6cf45243b692d9c04726fa62c3eb11"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "32d87c524d5591526d752f867fa4eca7",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 132398,
            "upload_time": "2022-12-14T01:49:19",
            "upload_time_iso_8601": "2022-12-14T01:49:19.966018Z",
            "url": "https://files.pythonhosted.org/packages/2e/e3/48ea2a933a0a23a42e092018063665b2e9d270a2d3967ef1f08c08bd3ac0/pycapi-0.82.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d766c272fb5d30f61af0cbbe50187849",
                "sha256": "1d3a623d9ce62a2dee5e25887f658a42f292a6f38e95d7ebc9e33ee650c8ce23"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d766c272fb5d30f61af0cbbe50187849",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 161419,
            "upload_time": "2022-12-14T01:49:21",
            "upload_time_iso_8601": "2022-12-14T01:49:21.448395Z",
            "url": "https://files.pythonhosted.org/packages/c2/51/4cd5fcd5515c4c39ff4acbe862f03d23a205e70807ad13b39fb786c2be07/pycapi-0.82.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "700d00bc40fd87be4e162c50e8f5bd3a",
                "sha256": "b392e529aaa6b5039699a582d143cf21edd27d21ffbf6329766314d7a8515f32"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "700d00bc40fd87be4e162c50e8f5bd3a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 139276,
            "upload_time": "2022-12-14T01:49:22",
            "upload_time_iso_8601": "2022-12-14T01:49:22.819785Z",
            "url": "https://files.pythonhosted.org/packages/7f/d2/ddb04b580d019c3c6376035ea861e6bbcd20a906d3cf8a288b5737debc18/pycapi-0.82.1-cp38-cp38-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "faadbc3c905d38917e2b5b46b264d78a",
                "sha256": "9c949322b5c4fee50096edc7973d91d1fcf5677a3ddb5257efaf8b1daca0f0e3"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "faadbc3c905d38917e2b5b46b264d78a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 168187,
            "upload_time": "2022-12-14T01:49:25",
            "upload_time_iso_8601": "2022-12-14T01:49:25.070375Z",
            "url": "https://files.pythonhosted.org/packages/bd/13/5d98ee78be02d0d267281319f987e1c52565bcbc77dca6d35ee5abc4b667/pycapi-0.82.1-cp38-cp38-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "a5e75879de9571f5cd07fadd051a3d7d",
                "sha256": "03b1f99efe61e7e741aa8bd76067915b96746bb4b9e7637789631c82bb095f0e"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "a5e75879de9571f5cd07fadd051a3d7d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 33099,
            "upload_time": "2022-12-14T01:49:26",
            "upload_time_iso_8601": "2022-12-14T01:49:26.273327Z",
            "url": "https://files.pythonhosted.org/packages/47/8d/f3390a360871e39e3802442ede89ff87ffd1a44ec45a680988f9efbbb1fe/pycapi-0.82.1-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "86ba9ba6ed464eb537c4ee856c705d8e",
                "sha256": "f056d8e2ee3c7f50780448e9921a47124e40402b236bc9cff241d4d898ce64d2"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "86ba9ba6ed464eb537c4ee856c705d8e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 39696,
            "upload_time": "2022-12-14T01:49:27",
            "upload_time_iso_8601": "2022-12-14T01:49:27.883092Z",
            "url": "https://files.pythonhosted.org/packages/11/75/8f699fd029bfc585f523015c85a8ca461cb99cc7764b282219d46482042e/pycapi-0.82.1-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "8bf63d338c358cb95951c074b3dbbaa2",
                "sha256": "cd9f8de1e5176f1b330f50318a8a3c4e351e5d23d1658ebc581a8acd34f1ec56"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "8bf63d338c358cb95951c074b3dbbaa2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 102696,
            "upload_time": "2022-12-14T01:49:29",
            "upload_time_iso_8601": "2022-12-14T01:49:29.261860Z",
            "url": "https://files.pythonhosted.org/packages/34/ad/0c635cc4a0d1502a4209e3cf02ac65adf618f5b226d1b9dbfc492cce0e52/pycapi-0.82.1-cp39-cp39-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "7d31906893cffbe61411bbaea69382c3",
                "sha256": "259fff9def3e3528f9c7bca806e8111a6e6c2d7ef864283b0e4c0a1a9df24d78"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7d31906893cffbe61411bbaea69382c3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 51654,
            "upload_time": "2022-12-14T01:49:30",
            "upload_time_iso_8601": "2022-12-14T01:49:30.592817Z",
            "url": "https://files.pythonhosted.org/packages/19/88/27c77c105301f56fa0b80e05ed834bcc24b5aa150d1e267f6f4e11d92341/pycapi-0.82.1-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "a39c6b45823245c1c5036b4011633d6d",
                "sha256": "d2974c67c87c5c58887ad56c6d2525b3b3cf69910c2363e9740e2aa27a2b1065"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a39c6b45823245c1c5036b4011633d6d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 54736,
            "upload_time": "2022-12-14T01:49:31",
            "upload_time_iso_8601": "2022-12-14T01:49:31.928559Z",
            "url": "https://files.pythonhosted.org/packages/d1/49/7cb8314ee0f4bc3e239d7f7e7eeac359c042720422cdd293f29b64c13727/pycapi-0.82.1-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "4282dca70354d27711aa82d2b20795aa",
                "sha256": "7983256cc2ad88d18765545fb5995ea130a0bbd71b49d90cd412ac13e168f886"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "4282dca70354d27711aa82d2b20795aa",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 132981,
            "upload_time": "2022-12-14T01:49:33",
            "upload_time_iso_8601": "2022-12-14T01:49:33.296438Z",
            "url": "https://files.pythonhosted.org/packages/61/a1/fee4ede967d240ad67c71709707277538c486e29a368ad38f1df7d2f4342/pycapi-0.82.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "b82e19724d8e076e569a88bc3137ffb1",
                "sha256": "30154840a5f23de47d3c528d3a4cbe0aad70bb62e498385a56a81f62cbcce0c1"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b82e19724d8e076e569a88bc3137ffb1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 163092,
            "upload_time": "2022-12-14T01:49:34",
            "upload_time_iso_8601": "2022-12-14T01:49:34.705488Z",
            "url": "https://files.pythonhosted.org/packages/e8/d4/2ae51bdaaf328544c4add9ea5cffe74bceb2a21da73576dd7543f8832522/pycapi-0.82.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "bb40e33c7c770dede3979d017ce4a6de",
                "sha256": "7d3fc3d77201a28c48056e811925fc01309b16c699eca7940e269607e95cec85"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "bb40e33c7c770dede3979d017ce4a6de",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 140715,
            "upload_time": "2022-12-14T01:49:36",
            "upload_time_iso_8601": "2022-12-14T01:49:36.277576Z",
            "url": "https://files.pythonhosted.org/packages/e0/f0/31de827bb30f008313dfe6ce22ddc77c0eec71ef838e575a0ba381109746/pycapi-0.82.1-cp39-cp39-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "3f81ccfc37f3e116cf40647096562979",
                "sha256": "f26b00e0cd9c1742acedd6dd1d09348d89a8cb1bd61c841406171f4ff9b7738c"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3f81ccfc37f3e116cf40647096562979",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 169560,
            "upload_time": "2022-12-14T01:49:37",
            "upload_time_iso_8601": "2022-12-14T01:49:37.679580Z",
            "url": "https://files.pythonhosted.org/packages/0a/12/d5366440511b8c4686ce64911efb35366cb6d7c43e3579129c1ac0cfbd54/pycapi-0.82.1-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "7b6482ef7e89bd3b9802503b6cbe794f",
                "sha256": "b5700d00aa9e49423f528f09355f25bbdf240d4728d334a7af30d2dcac6f8da8"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "7b6482ef7e89bd3b9802503b6cbe794f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 32848,
            "upload_time": "2022-12-14T01:49:39",
            "upload_time_iso_8601": "2022-12-14T01:49:39.278288Z",
            "url": "https://files.pythonhosted.org/packages/5c/96/1ba9ae66aa731bbd320739dc51d95dff31f3c000a964e59d2f9e6f969d4c/pycapi-0.82.1-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "56e498600d1d4189839dbb66fff34cd8",
                "sha256": "452255076092c0bb2ce6951da320b10f4cba1bf51ca7b84511d40a8bb3da3447"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "56e498600d1d4189839dbb66fff34cd8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 39312,
            "upload_time": "2022-12-14T01:49:40",
            "upload_time_iso_8601": "2022-12-14T01:49:40.639358Z",
            "url": "https://files.pythonhosted.org/packages/c7/fc/7141c130187d9ab3964b65abed7c9fd4d90b4e694c6dcd51a7f816885804/pycapi-0.82.1-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "cf104d387fe852c520a6528bf7641256",
                "sha256": "ef07adabb7a5297f3fd40f0160a1b0c43eab9f3940be54a00379f0dcd2426b8f"
            },
            "downloads": -1,
            "filename": "pycapi-0.82.1.tar.gz",
            "has_sig": false,
            "md5_digest": "cf104d387fe852c520a6528bf7641256",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 24619,
            "upload_time": "2022-12-14T01:49:42",
            "upload_time_iso_8601": "2022-12-14T01:49:42.770049Z",
            "url": "https://files.pythonhosted.org/packages/e2/fa/407bc224b695506b3e3d7ba3133664fcca4119ee84bead04f6ea95b5bc2a/pycapi-0.82.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-12-14 01:49:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "brandtbucher",
    "github_project": "pycapi",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "pycapi"
}
        
Elapsed time: 0.02241s