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.1-cp314-cp314t-win_amd64.whl (238.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

aiopvxs-0.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (325.9 kB view details)

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

aiopvxs-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl (298.7 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

aiopvxs-0.3.1-cp314-cp314t-macosx_10_15_x86_64.whl (289.1 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

aiopvxs-0.3.1-cp314-cp314-win_amd64.whl (210.2 kB view details)

Uploaded CPython 3.14Windows x86-64

aiopvxs-0.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (327.3 kB view details)

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

aiopvxs-0.3.1-cp314-cp314-macosx_11_0_arm64.whl (274.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

aiopvxs-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl (271.1 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

aiopvxs-0.3.1-cp313-cp313-win_amd64.whl (205.4 kB view details)

Uploaded CPython 3.13Windows x86-64

aiopvxs-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (327.1 kB view details)

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

aiopvxs-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (275.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

aiopvxs-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl (270.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

aiopvxs-0.3.1-cp312-cp312-win_amd64.whl (205.4 kB view details)

Uploaded CPython 3.12Windows x86-64

aiopvxs-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (327.2 kB view details)

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

aiopvxs-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (275.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

aiopvxs-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl (270.4 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

aiopvxs-0.3.1-cp311-cp311-win_amd64.whl (201.3 kB view details)

Uploaded CPython 3.11Windows x86-64

aiopvxs-0.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (322.1 kB view details)

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

aiopvxs-0.3.1-cp311-cp311-macosx_11_0_arm64.whl (267.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

aiopvxs-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl (266.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

aiopvxs-0.3.1-cp310-cp310-win_amd64.whl (200.4 kB view details)

Uploaded CPython 3.10Windows x86-64

aiopvxs-0.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (318.8 kB view details)

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

aiopvxs-0.3.1-cp310-cp310-macosx_11_0_arm64.whl (265.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

aiopvxs-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl (265.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: aiopvxs-0.3.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 238.6 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.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 a10bc56350e84a5b433fcd0fcbede88d229b6a74b875aa42daf1ee8ff4998c54
MD5 3f04369c94aef14ef1af09ef2f9351ed
BLAKE2b-256 baf1b411026affe3a1620905338038fd3389bb5b949d9117acb9edb280b4de56

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9e4c8899620fe29c51b864719c8947b679d046e56b5774a8bc88fc615775340
MD5 cbef42c920396055067fe44ac22ac4af
BLAKE2b-256 da7eb4f64363dba1887df5d0b16b7cb3a175f5f25d9aae2d4d29caeded44bbc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 061e235d6cb80aee70ecfb1c6c798d2917b49e559a05ec0c64d8b63b70407311
MD5 f86a4b1fd10bfb6c1508a52b5bfb63d9
BLAKE2b-256 3b286e17d0796953d50a4f0cd6d4e06b3a5835190dcefc770ae4b3131f06b0f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5ff8567e15210dd5b961bcad148d7384d4c7806bff6c7d1bd9edc120974a12f1
MD5 b52698392628fd780caae5f5eaaff869
BLAKE2b-256 4cc73791bf9fb3ce17f0c7910f4b02e886a4dd843f71bf1e96c44940c79cd2bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 210.2 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8b4892b3a7f86448f2fb34bbc6830a566284331f82144ae9f8e3027a5138d138
MD5 a11e6a5dfa80ebedebbef1ae0660dc2c
BLAKE2b-256 cb7c75fada2a45f6ec8a9cf0f3d2b71bec0852471b09b3fc901bcc475cc233fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 224d6f8489618a46a46338245161da5e0db87b44f324f53a563a33b93d668e5d
MD5 66bd49952c72287bf4a95e61fcdeac65
BLAKE2b-256 e6c51ece2856fed1f05d41bc3e22714e85f398473db233fd1899e84590f157fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62eb77b1ef1fbb35c2462e2d5272a01cb0b17d6725655ba0d605c48aecbcd340
MD5 3be3971862c89be9040b1aa21ed6d1de
BLAKE2b-256 04dfcd5737209bcbee0cc410514f1af8b2ad621b5b6bb227c2818576bceddbc7

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 83b018313bd23f53c6ba04d969b31a8a56b09d13fd72900cf8056bb613e9bf40
MD5 8a245c3324d82235e40da4c796e7bfe5
BLAKE2b-256 6338b221fc48fba5ea6dc8335bc593cd49ff55614faf2e12638b622a911d7bff

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 205.4 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 19391d59678ee0570071a21ae7cbe499b920ca58749349fd18d1914a19f4035f
MD5 4119afeed8fb94df47e58b326e351644
BLAKE2b-256 e52e55622e3c4c77544811dd42d882431976da84c69ff7bbe288d9686a147dcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-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.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1e813ecd7e52d96e36fd4b3aec0f62f6babd05b75de5105c0f9c2377ca7bf465
MD5 5d7d98e169b796d9d453557f13059293
BLAKE2b-256 92a9c1c4d60f6bbc1365ce32422d51c008173c43c4f871f70680c72854a366ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e25bf8fa9b9071f6e24391f93201543c7dff8d4a7fcb2639e9c32c322ef4e1ec
MD5 604868880c815285549c4f0c35c296cb
BLAKE2b-256 c3049a737f62505ca86711f962d798ad7996dde4770074614b070643a308cae5

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 953386d6a664c1be3e8e64e874dc4468ed1e344dfdc6f6196475b4d1715c3978
MD5 b52198f24963e1547389a7da128ae015
BLAKE2b-256 972ac4e759ff07a8b8f4ae3c13fac70daffc28ec3fd9ece0ef297a00044fb47e

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 205.4 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 edbb4f13b8abda48079b4eba55022b27699e923e472ed82601f35204ee11d2e6
MD5 fa47f22243a5339598c71e590e4f9f54
BLAKE2b-256 7d0503aa221fe84060c106de7e146e33a6790e91794943ce5d50a4bc2c6fd411

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-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.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2de8ff8220d80764d773b345ca1b8f4fc981da53c84be996ebd2a1d223fbb870
MD5 fefc3b5cb32d39a3275300791e84ab40
BLAKE2b-256 3c16700fd8f32d0fd3e254ddda42200b11f9126d9e012be212eb07ab2d1f771d

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0904a90946aad4d18a61cd88fe4f25e98b31de3acc0aec41e7fe26a5857b5e66
MD5 203874f7080ec587f311b3a36ea15b04
BLAKE2b-256 78c8b6693a400cfd4bf6d9f8b8745684fe21ee2e1fd799db82c07dc3f80e6204

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 905fdf2a9532845d54c2a4ac9dfa9d98ee81bd7b0ffe63a55c28ed95c5156483
MD5 934228fbbf81463924598f7d69fce3b6
BLAKE2b-256 6e84b2a8c042dc965d38abbb3e383576c14d630d677cdf487e54da267bd86a71

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 201.3 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1645bb28799a1a098a7a099be679d61143d4f589ac744eb38cbe9d7926b53f53
MD5 2bd62ec3eeaac8fc9c9a6f2f1bbc64ec
BLAKE2b-256 6c23826244e0514c52adf06ff00b1346691edf4e6211c3fc1286c4c2c7cd9276

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-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.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19886b50469847a66b25818542a9da41b16501423524fc478112dc64369f6c05
MD5 23831296696b8800d5df6f44a79b5def
BLAKE2b-256 ac40f5873914cd5779e9f97872febd715c6d626bf996b7f10ca66a39a3b280f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21d28de93a6537ed4db25509f0a2cd4bcc90160698c749fd9085fb54b63e64c9
MD5 b5e3f522db080830601fd84747cf9da7
BLAKE2b-256 f97be0e3f26ab835339189b90383bef4f7adbcfa648b0277060a05f9a45fc6d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2ce263ce5f1db5ea76a4c1adc13a4fa0148092b9db4dca5a560538b0edb080e1
MD5 9b8fc6bfc415b6ae385cc3b5ef2762c6
BLAKE2b-256 541ea94a41933fff88b7fe51a4a7698cb1894a28170a7390d116302014e48890

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: aiopvxs-0.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 200.4 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8311e1908d44c08959f3bce0538fe1425b703615fbba4e4124733319774e5a52
MD5 449675eb7c41c66f988b52a03b2f40c9
BLAKE2b-256 ba88dda8e4e96ff4794f30e6c66dcd78875b01770b0d90bcca6e46e88c2cb5ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-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.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a24b4ade2150b57e45e3536a0384ee2c001dda7fed8a20583f9b09c0c47e638
MD5 f616e88bf3d2cba24f8a94644f01229d
BLAKE2b-256 e111898fc1d7b0fe8b839e66f401f6ad857794f9a1db15ed60c3c44727029512

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 129de0de563a0a7cbde506f97b901dba5ef790dfa76662cebf22e38a59f31da0
MD5 8bd4165cd21360941492b156e65a04c3
BLAKE2b-256 ff29006aa2fb5cbf05ee57ec5da558bb833755fefcba1e6998ef6608bd457961

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 74a2c49bd74b509c050ec79ffb0b994247a5cf9757fc0de5ee1226242aec43b0
MD5 c22bbb1e84d43c0524d0b69174775b5b
BLAKE2b-256 e9ee868da64709b2b32fe070c19bf2d3c029101c31b056a65471bc5b6f93a263

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.1-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