Skip to main content

Python asyncio API to the PVXS libraries

Project description

aiopvxs

Asynchronous PVAccess client/server API using Python asyncio and pybind11

Key Features

  • Uses pybind11 to generate python bindings to pvxslibs v1.5 C++ library
  • Supports getting/setting pvxs.Value fields with python data types
  • Supports PVAccess StaticSource server
  • Supports PVAccess client Context operations via python asyncio
    • Get & Put
    • RPC with arguments
    • List (see simple_discovery.py for simple pvlist implementation)
    • Discover & Monitor (can retrieve updates via async for loop)

Installation

It is recommended to install via the packages available on pypi.org. Packages are available for linux, win64, and macos intel/arm.

pip install aiopvxs

To compile this project manually, create python virtual environment from a cloned copy of this source and use pip install:

git clone https://github.com/m2es3h/aiopvxs.git
cd aiopvxs
python3 -m venv .venv
source .venv/bin/activate
pip install ".[test]"      # or pip install -e ".[test]" for editable mode
pytest -vs .

If developing in Visual Studio Code (VSCode), follow their instructions on how to automatically setup a python virtual environment (https://code.visualstudio.com/docs/python/environments).

VSCode's Python extension can be used to discover and run the pytest unit tests (http://code.visualstudio.com/docs/python/testing).

Getting Started

aiopvxs provides Python bindings to the pvxslibs C++ library (https://epics-base.github.io/pvxs/). This module enables asynchronous interaction with PVAccess servers and clients from Python. Bindings, type casting, and object lifetime management between Python <-> C++ is handled by pybind11.

To test that aiopvxs is able to find and load the pip installed pvxs library:

python3
>>> import aiopvxs
>>> aiopvxs.get_version_str()
'PVXS 1.5.1 (pip)'
>>>

Simple Server

aiopvxs shortest server example (compare to C++ example: https://epics-base.github.io/pvxs/example.html#shortest-server)

import asyncio

from aiopvxs.data import TypeCodeEnum as T
from aiopvxs.nt import NTScalar
from aiopvxs.server import Server, SharedPV

# create SharedPV with Value
pv_int32 = SharedPV(
    nt=NTScalar(T.Int32A).build(),
    initial={
        'value': [0, -1, -2, -3, -4, -5],
        'alarm.message': "ints are negative"
    }
)

async def main():
    try:
        # run PVAccess server
        with Server({"test:pv:int32": pv_int32}) as srv:
            print("Starting server", srv)
            while True:
                await asyncio.sleep(1)
    except asyncio.CancelledError:
        print("Stopping server")

asyncio.run(main())

# instead of asyncio.run(), could just call Server.run()
# srv = Server({"test:pv:int32": pv_int32})
# srv.run()

Simple Client

aiopvxs shortest client example (compare to C++ example: https://epics-base.github.io/pvxs/example.html#client-demo)

import asyncio

from aiopvxs.client import Context

# instantiate new client Context
client_ctx = Context()

async def main():
    # put new value
    new_value = {
        'value': [1, 2, 3, 4, 5],
        'alarm.message': "ints are positive",
    }
    await client_ctx.put("test:pv:int32", new_value)

    # get new value
    pv_int32 = await client_ctx.get("test:pv:int32")

    # print it
    print("----------- full pvxs.Value structure -----------")
    print(pv_int32)
    print("------ outer-most fields within pvxs.Value ------")
    # or iterate over outer-most members of received value
    for field, contents in pv_int32.as_dict().items():
        print(f"{field} is {contents}")

asyncio.run(main())

client.Context operations wrap a pvxs::client::Operation() in an asyncio.Future() and returns the Future to Python, enabling the use of all asyncio features to retrieve the result or exception.

The asyncio.Future holds a reference to the C++ Operation() instance until await completes or asyncio.Future.cancel() is called on the Future.

put_op = client_ctx.put("test:pv:int32", {'value': [1, 2, 3, 4, 5]})
assert isinstance(put_op, asyncio.Future)

try:
    # call put_op.cancel() before the await to cancel the operation
    await asyncio.wait_for(put_op, timeout=3.0)
except asyncio.TimeoutError:
    print("put operation failed: Timed out")
except asyncio.CancelledError:
    print("put operation failed: Operation cancelled")
except aiopvxs.client.RemoteError as e:
    print("put operation failed: Server returned exception:", e)
except (KeyError, TypeError, LookupError) as e:
    print("put value not compatible with pvxs.Value type:", e)
else:
    print("put operation successful")
finally:
    # asyncio.Future.done() is true in all cases
    assert put_op.done()

Calling client.Context.monitor() sets up a callback that puts new values and exceptions into an asyncio.Queue and returns a pvxs::client::Subscription() that holds a reference to that Queue. You can then use an async for loop to iterate over the Subscription object to get value updates as they arrive. Keep the reference to the Subscription object to keep the subscription alive.

import asyncio

from aiopvxs.client import Context, Disconnected, Subscription
from aiopvxs.data import Value

# instantiate new client Context
client_ctx = Context()

async def main():
    # subscribe to changes in scalar_int32 PV
    monitor_sub = client_ctx.monitor("scalar_int32")
    assert isinstance(monitor_op, Subscription)

    # print out value updates as they arrive 
    # until some condition is reached
    async for val in monitor_sub:
        if isinstance(val, Disconnected):
            break
        elif not isinstance(val, Value):
            continue
        else:
            print("Value is now", val.value.as_int())

    # unsubscribe
    monitor_sub.cancel()

asyncio.run(main())

Working with pvxs.Value object

The pvxs::Value object is the API used to exchange data of arbitrary types between PVAccess clients and servers. Using pybind11's default type casters plus custom type casters, aiopvxs enables encoding and decoding pvxs::Value data using Python data types.

python3
>>> import array
>>> from aiopvxs.data import Member as M
>>> from aiopvxs.data import TypeCodeEnum as T
>>> from aiopvxs.data import TypeDef

>>> val_container = TypeDef(T.Struct, [
...    M(T.String, "desc"),
...    M(T.Bool, "flag"),
...    M(T.Int16, "number32"),
...    M(T.Int64A, "array64"),
...    M(T.Struct, "substruct", [
...        M(T.Bool, "flag"),
...        M(T.Int16, "number32"),
...        M(T.Int64A, "array64"),
...    ])
... ]).create()

>>> print(val_container)
struct {
    string desc = ""
    bool flag = false
    int16_t number32 = 0
    int64_t[] array64 = {?}[]
    struct {
        bool flag = false
        int64_t[] array64 = {?}[]
        int16_t number32 = 0
    } substruct
}

>>> val_container.desc = "some string"
>>> val_container['flag'] = True
>>> val_container.number32 = 999
>>> val_container['substruct.flag'] = False
>>> val_container.substruct.number32 = -888
>>> val_container.substruct["array64"] = [1, 2, 3, 4, 5]
>>> print(val_container)
struct {
    string desc = "some string"
    bool flag = true
    int16_t number32 = 999
    int64_t[] array64 = {?}[]
    struct {
        int16_t number32 = -888
        int64_t[] array64 = {5}[1, 2, 3, 4, 5]
        bool flag = false
    } substruct
}

Each field in the container is also a value type. Iterating over the Value container iterates over the outer-most fields of that value. The equivalent Python value of a field can be unwrapped using Python builtins such as int(...), str(...), bool(...), float(...), or using one of the Value.as_type() methods:

>>> from aiopvxs.data import Value
>>> Value.
Value.as_array(   Value.as_float_list(   Value.as_py(            Value.cloneEmpty(   Value.id(
Value.as_bool(    Value.as_int(          Value.as_string(        Value.equalInst(    Value.mro()
Value.as_dict(    Value.as_int_list(     Value.as_string_list(   Value.equalType(    Value.storageType(
Value.as_float(   Value.as_list(         Value.assign(           Value.get(          Value.type(

Incompatible conversions will raise the underlying aiopvxs.data.NoConvert exception, or a "Cast not yet implemented" RuntimeError.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

aiopvxs-0.3.5-cp314-cp314t-win_amd64.whl (246.1 kB view details)

Uploaded CPython 3.14tWindows x86-64

aiopvxs-0.3.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (329.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

aiopvxs-0.3.5-cp314-cp314t-macosx_11_0_arm64.whl (301.8 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

aiopvxs-0.3.5-cp314-cp314t-macosx_10_15_x86_64.whl (291.8 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

aiopvxs-0.3.5-cp314-cp314-win_amd64.whl (236.1 kB view details)

Uploaded CPython 3.14Windows x86-64

aiopvxs-0.3.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (330.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

aiopvxs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl (277.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

aiopvxs-0.3.5-cp314-cp314-macosx_10_15_x86_64.whl (274.3 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

aiopvxs-0.3.5-cp313-cp313-win_amd64.whl (229.9 kB view details)

Uploaded CPython 3.13Windows x86-64

aiopvxs-0.3.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (330.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

aiopvxs-0.3.5-cp313-cp313-macosx_11_0_arm64.whl (278.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

aiopvxs-0.3.5-cp313-cp313-macosx_10_13_x86_64.whl (273.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

aiopvxs-0.3.5-cp312-cp312-win_amd64.whl (229.9 kB view details)

Uploaded CPython 3.12Windows x86-64

aiopvxs-0.3.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (330.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

aiopvxs-0.3.5-cp312-cp312-macosx_11_0_arm64.whl (278.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

aiopvxs-0.3.5-cp312-cp312-macosx_10_13_x86_64.whl (273.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

aiopvxs-0.3.5-cp311-cp311-win_amd64.whl (225.4 kB view details)

Uploaded CPython 3.11Windows x86-64

aiopvxs-0.3.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (325.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

aiopvxs-0.3.5-cp311-cp311-macosx_11_0_arm64.whl (270.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

aiopvxs-0.3.5-cp311-cp311-macosx_10_9_x86_64.whl (268.8 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

aiopvxs-0.3.5-cp310-cp310-win_amd64.whl (223.9 kB view details)

Uploaded CPython 3.10Windows x86-64

aiopvxs-0.3.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (321.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

aiopvxs-0.3.5-cp310-cp310-macosx_11_0_arm64.whl (269.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

aiopvxs-0.3.5-cp310-cp310-macosx_10_9_x86_64.whl (267.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file aiopvxs-0.3.5-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.5-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 246.1 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 b6cbea491b92ebb468fdc94e4b6e3baa63bd2c384435015f5dfe1f5a8813044b
MD5 5fac76134f849a068ad56f5cda25fe72
BLAKE2b-256 082ed2b2f4ea42dcea3a40615e8741e1f1049147f2dd52ff1b747212b0678e14

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314t-win_amd64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 040bf41c31bff38112d73b01c88d28d70ecadb82f9470d582c6f3f2b174b3f1c
MD5 bc80a7c679247425908f460e0e1cf198
BLAKE2b-256 55775e5852deaade1049530425c6bcd7cda3159c97fdc5f69d3367cd13c146ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7dd24a8fb9eb1f75e466e10d54e80da849272bea0fdd55bd0996faebd50d405e
MD5 dd69cfe028ed6abe47b1d4aa26074e8b
BLAKE2b-256 216d9dc410601599c11d341756b41d7cf65206e7b5ef7bac016a0949c12285a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1be226eab3f19973a6f45e2a104e74afcc38d9dda4f9fbb3abd9223886bdf76c
MD5 40cba67d1341af1ba56963ce85716763
BLAKE2b-256 377fb1b1fce278bde4df43f50774e01af9ea43263aafe9a6398894f823633e13

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 236.1 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c761241749906a53e9e823c47f11e602af918c766d414e8fac791d9725132cfc
MD5 36b6b3a0ca682c286b169aad3e194b4c
BLAKE2b-256 69e2c80e1c88f0d4355ae52f944565230709105d4c7948807d46d1736ba18b1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6406e0c676541f52b48cea71216ada9f4b7ee1a35b482fc6aba784f297d80e72
MD5 9bdf8bc6ce59130f254acdbf0f7d511a
BLAKE2b-256 46cc339f1d7376ce477132a87edb9e0978756f1d147b872474c8a4b2a3dd20d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1284a647c85c6568b37512943ac2c5ff1415f0fd16eae306d45c8e488e26ec8b
MD5 432f56087eb5664846a127cf5bf04ea4
BLAKE2b-256 9b22c94f6cc30261b6a72ca263801a2ac6a668a316b5b17af71fae4945043ac5

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 173ab9b1996c9e338fb18678466d4abf2b40535a72253ac54ec28c26fae7bed8
MD5 59573a1d32ef4e597fcc66fff070888d
BLAKE2b-256 f29372d94fa2b21513c42c73e2d402d09e2617f13b55c935fd0e78d87d9f7df5

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 229.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiopvxs-0.3.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0feedd30faebdd964a3a0689dda5b780e8c6c9f50bb314b948333ae99775007c
MD5 debf93182b5d7d611541bd3a78cb13fb
BLAKE2b-256 45a6bdac2e4db9ce686d8edcd7d173f1cf533078a68b2ae9a2bd983f8fc66b23

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d93255d16ade981ade7a526501698b289fa021cadd482585f3ae4d636503054c
MD5 b8d82b696aaca1b8cd4432bdf43d589a
BLAKE2b-256 ab5f740965570d946ff5f93509396b7dd5ba7419cd67b91a2992f24a77770ba3

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71ffa682b7d923e3288eb5305f73ab61b329b674817e50eb2ca1d16f6c4a5eed
MD5 255cf214ebc027809ef907e36ecab8bb
BLAKE2b-256 384a2d64125f9f1066e0b6a872a04c9cc7067ebf6bfef8108fa1c98a3110857e

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8f8017c2b113190e03a414e3749e97f1974e066af44e3d00f62862ecb8aaba29
MD5 c83572612f61e167ee0b18b324154ef7
BLAKE2b-256 0ce54075d1cb7dfb205cf8a61e08103fb46b38f32103a9ffd1a85ef571b1a0bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 229.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiopvxs-0.3.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3ef34ee801a609aacca449e3c82bb4a0e605f6e2785aba966f42c30d46fbdffb
MD5 8d8a7c52154b4c86e7f54f858827d1de
BLAKE2b-256 08df17e05e95826827965dfe1292d3004c3966b074318a6ad9a844bd1ca5964e

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ad40bd09eb3c9ecb2d09ba0c7095ddbe6b61b087c3197811c5c7ac76fa09748e
MD5 898e88198894e70666f536ad3d329237
BLAKE2b-256 fec024e49f1b1e5ea846f46116a257787cb73fcc38d540b89ac5f6383054c366

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0291100f9714d8422deca108d15ab5c6b56eb041a2286c8c3cac2cfc78c112fb
MD5 661448eb0fcda60ed8628428e97306dd
BLAKE2b-256 52b193c3cc5b105ada0d5011116ef99cad768d2541da673f1da887afd6bc9893

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 3e96dc9faba31270ed98a65af0230e392eed655950f1d6d075a9367b585cfa33
MD5 00ba3fc92e0a480ebf2f4e3216955610
BLAKE2b-256 8cb6f8013183383e3dbd9b8e422bd4417d485db8a7e7b0876d7f6d5c96d0c5c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 225.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiopvxs-0.3.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3aec31b2c1c37dbeee25870977565028287d4e0bf6a4ed8174cab971a0b060b6
MD5 a87063509cfac02774e77db614a7b1d2
BLAKE2b-256 2e2f1a64760bb1a7855cb6e79be529801cbe01c9ceed0b6a37d99d9e7eac55df

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf1e4b387959ec977086d0ad35717806f8fee7830b6b6a871ebd11c869cbe593
MD5 57d22e00a3f52a714d8e6e158a2b84b6
BLAKE2b-256 2d79e5af12a183cb1788c178ab7d2b7e8176f49cee0a96da455248cb1133e96f

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bc4c2dfe7ef1689c3e18e3183f5f02f713f02df141afa98fe6a488ba8646938
MD5 622e55e42478b008b234ebca7eacdad5
BLAKE2b-256 c32abb683de1f71fdd3b14757f20840d215010c7241b52411caa8a1ac164fb74

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6a94b2c9ace0a4defb40fecc3f67b75697088efb6b514225cce3db773d504651
MD5 14c9f22e86ca4799f1026b27dcc87ef1
BLAKE2b-256 4528020be7b6a53c09bffab5359122dbd1f0039d0d95b3f249731682ee96bd56

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 223.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiopvxs-0.3.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1f385a3b4045a59d5a9c5753d67f228a3093419fbf003b6579001745aeec454f
MD5 75d48c9bbeefb58bf2542db844c275fb
BLAKE2b-256 1ba1146de1114ef6aecd78f7032abc9d39d87ad7e50972fafe11e94fe52d9df0

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f74206a4fad64a909c4338b3f6d31453acb987f078f994e25ea08069970d859e
MD5 fcf019229dbcbab484160a04fd6ef889
BLAKE2b-256 22e8ccef37d09561ab3941b4e5cf6d92b6479e4ecaf38ca886cec0c91b563d85

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4dfc9a44cad5e6e9a3121e379d582f74644c1eb7ccd93b97846704723c96465
MD5 57870895742f2803e31629524dcd0a1e
BLAKE2b-256 b615785a5d46a644c6f602e0cb19e4692b3737ba8cb2255462c2300223101c51

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiopvxs-0.3.5-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 727f0af8ecbd779cc45d5c7c8d8d9a50e6b6cc0144eaf8dc5dc3b07dd008cbdf
MD5 c48d09f03a46b3e123abe87541a6a859
BLAKE2b-256 a473cd9ffcbc4daec98282bccbe88587c286d50f4bfb091bbb061b9606c3ac1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.5-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on m2es3h/aiopvxs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page