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

Uploaded CPython 3.14tWindows x86-64

aiopvxs-0.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (326.5 kB view details)

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

aiopvxs-0.3.3-cp314-cp314t-macosx_11_0_arm64.whl (299.3 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

aiopvxs-0.3.3-cp314-cp314t-macosx_10_15_x86_64.whl (289.7 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

aiopvxs-0.3.3-cp314-cp314-win_amd64.whl (233.5 kB view details)

Uploaded CPython 3.14Windows x86-64

aiopvxs-0.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (327.9 kB view details)

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

aiopvxs-0.3.3-cp314-cp314-macosx_11_0_arm64.whl (274.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

aiopvxs-0.3.3-cp314-cp314-macosx_10_15_x86_64.whl (271.6 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

aiopvxs-0.3.3-cp313-cp313-win_amd64.whl (227.6 kB view details)

Uploaded CPython 3.13Windows x86-64

aiopvxs-0.3.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (327.8 kB view details)

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

aiopvxs-0.3.3-cp313-cp313-macosx_11_0_arm64.whl (275.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

aiopvxs-0.3.3-cp313-cp313-macosx_10_13_x86_64.whl (271.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

aiopvxs-0.3.3-cp312-cp312-win_amd64.whl (227.6 kB view details)

Uploaded CPython 3.12Windows x86-64

aiopvxs-0.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (327.9 kB view details)

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

aiopvxs-0.3.3-cp312-cp312-macosx_11_0_arm64.whl (275.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

aiopvxs-0.3.3-cp312-cp312-macosx_10_13_x86_64.whl (270.9 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

aiopvxs-0.3.3-cp311-cp311-win_amd64.whl (222.9 kB view details)

Uploaded CPython 3.11Windows x86-64

aiopvxs-0.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (322.8 kB view details)

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

aiopvxs-0.3.3-cp311-cp311-macosx_11_0_arm64.whl (267.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

aiopvxs-0.3.3-cp311-cp311-macosx_10_9_x86_64.whl (266.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

aiopvxs-0.3.3-cp310-cp310-win_amd64.whl (221.3 kB view details)

Uploaded CPython 3.10Windows x86-64

aiopvxs-0.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (319.5 kB view details)

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

aiopvxs-0.3.3-cp310-cp310-macosx_11_0_arm64.whl (266.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

aiopvxs-0.3.3-cp310-cp310-macosx_10_9_x86_64.whl (265.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: aiopvxs-0.3.3-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 243.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.3-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 6a78aac241810c13f7571d5db90fe05083162a0238d5fdd87fdac94356cbc7ca
MD5 dfc34adfcbf6a4f28f1811ebc340d21c
BLAKE2b-256 395fc58d45dfba9db058a9439e5aa9d7e56ec5139d834adb39ccd5eb896bf446

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4de93a1cb24640a9d41e9550ea254c5a555d22ce92c077c4e3480aef50d1b8d
MD5 35bb48c2c6338b3f559f79af78bbb341
BLAKE2b-256 73776799b12962a9106ff911b7ee00ec9399af4fb52bb084e6cbc5ca67910e4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 629b03ee2a615392219402268b863ca8970108117a37353012482251df05c99d
MD5 18d7b4358084d3ee0e086579974e6d69
BLAKE2b-256 e1874dea3b74980c6089e29dc5bd69a8f9f723911a927db8c1820e2b0be8258f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e452241c2fba9f73291bc754c14ba7f6ac38c66c4fb28182ddbef331d67745be
MD5 38451ed047f10fb21e06ac8b4c23c013
BLAKE2b-256 53b5b77f473f569cd5d2a8829fd79b24932a0663d84fd56738a2f9106a0db15e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.3.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 233.5 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.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 930f8f288db994a490f0dfb381fdeb7ab6b8bf638fbb613bf2477a5eea6a7731
MD5 7291c659498a384dc5341d3373bb88c8
BLAKE2b-256 09bd353fb1b7a58ba161363df76a36420905f4a006a949def76f9099e97c19ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5da08fa0974177af28431bb00431e1be8b00ee4cdc4c9438d7241c381d1f9c39
MD5 7712edb43bd3df2f5ebc82c9573be763
BLAKE2b-256 6ce4b241a3fece623f6685c975fc79f00ba829c274c0d9de7aea7378faf318a5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 371f5c3a7126a1a541945d03f8310d3812fbc7b3d5a5c18d1691273e388d7cd5
MD5 9c222d4c7c0e3ba715e12076cbf86593
BLAKE2b-256 299af7f621e6bd0e033585a5571555c081aeb4262c2f0c6df5673fe0e17581bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 957dec4a7dd8175d791b1054e45c9621ee16ec0747dac76fdad496f83e2464bd
MD5 2f15fc04ce83ccdd8d09bf56c43946d6
BLAKE2b-256 b94bbfa29ce559bbc30fa4d050ccacafbacdc22bd2d4beca30b130b393abaa4e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.3.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 227.6 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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8727c43255790585f4faf71fd1a7b1c8e8cef6892846f0831c97fe748a3cb785
MD5 d09815d6481447c5971441406b730f33
BLAKE2b-256 9705a0d2876b0cd65ff87aacee4dfb88199abf32a8552b8db8f6dd5f18b06dce

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.3-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.3-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.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2de6544048b2afb8297c7b52e6111ccfd8824b93b2926fc6512d0967d2a51b5a
MD5 32f48abc566a12954dfe0c48ea55b8d8
BLAKE2b-256 39e4c345ad079380f4fcaf2d68c72dcc1cac093eb45b462555a77dcd576883c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 59b10ad851d4c9dc501a42024e9acd557a6aab114952ef4cf7d250a674ef259a
MD5 84c68181c8f38186afacd5560bcb7564
BLAKE2b-256 8493f93e5d1698a86812be20d1f4a512eaa4b8612d7b8e4bad649df0a9eeaa47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f764944461588d65d51db4bb97e521d74b1b2e694a6d6c56fa3ed899a7529b80
MD5 7ccffe6c4ae820f438fbe3b50bb67550
BLAKE2b-256 bf59e1998544f10518a583a42fd030e0047598b9f8261c577982c698385e76a3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.3.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 227.6 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7948ca1af5d8b2009485ee4748a87615f1d9c105458fd6bea9ac8c530bc98cc1
MD5 ac0bda44d6d8135a19d262fbf7e73b9d
BLAKE2b-256 09a761faad564174f472ef9d381a86a22d8f03db62dcefd91110ee2ce8c0327a

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.3-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.3-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.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 42035384755e661209131a4bbd70103980855188e8c451ccda761b7acc0088b8
MD5 c91741a82bf2328356111e13ce09ff8d
BLAKE2b-256 60927f98aba3b92e21ac98372cf35afb49a960694396cb57cabceff968099b55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9b5e2450301ae2071ddda20ef5f1c6f54da38f73393523a5141d374df218e0a
MD5 1731e4d286fed69a6caf3e12b09d79c8
BLAKE2b-256 b118eaa63854ebd8e5bf1173b60a3d20e7a435cc2986b47a59bc374a3e8fc2f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c5594b236d72482ddcd8ec17c8da03a773bbc50f443683c972c2801beddace74
MD5 83e4b8f24e62c2b7c04acf558fbe9aa4
BLAKE2b-256 76775e23703409bf0a73f15ceae3d1fa87e3c9e491a271558a2be7b8ee331bfe

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.3.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 222.9 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3f84d49a0b79258d838bd5c83679e54874fc51c325e6cf4d8dcb76fe36b3a7f9
MD5 a977a2f1f7e270b030ca8e136916cadd
BLAKE2b-256 d43393a3cdbaa53551de6052f5bc82ede821d55e9e3622751b69d4d907ea667d

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.3-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.3-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.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 68b22b4d0d273ddb1f55da9fc3add4e1a7a64180f674ff2cb07432b468b14152
MD5 dbd32d23687515cc5228de009154c4db
BLAKE2b-256 503413c2c5c547f7eebf6a3c658f0ccdf5b69136dd84dc70aa7e8d710892cfae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e607e010b2c0bc60d47265f610e9155531887912c086495b2fb1fe927a0fa11
MD5 4afe09c192f089a899c453078c78499d
BLAKE2b-256 9644ab28535c22b5e6cd47b26a2211a41f09735e501de441e29bfc015b6121eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4f03b205a5175078ddfbe596335a917a9b63a851803d42b331af1ff8391723c0
MD5 60531f4048022edf85d4af8c55a356ef
BLAKE2b-256 e449931fbeefa508461bcf2750f9e845749dcb4c1a27c72945a669d9922b839f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.3.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 221.3 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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 997ebdb935fccc136fe71bb21edf02980d62cb7442cf16d7d53bfbed42a94060
MD5 e91681ba953cb6b44c1153db30ca6a73
BLAKE2b-256 f989f22d6913c8aa8c03e63ed6e594d208fbfbdbd2b0daad69040986becea642

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.3.3-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.3-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.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a13e3849e1f31a793de4bb62c71d3ad9aa6bee2842e1e138d5b6f0e0669c16f3
MD5 4216608c538eccd9d65c7c4dfc5902cc
BLAKE2b-256 3ef2e271e9f8fda08b12dd79a07be3c628e188082ca10a1064f19148bcd5e207

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b8f847852d142984d38b2c62066d670a9366ea07b4cdbd49460a2fb1a0266f29
MD5 d445fdc70afe66279c6b44a2fa5ae845
BLAKE2b-256 740e7260e5ecd9a802573b59de579a5f62b5e157a37566beb100fcc0607d459b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.3.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 05676120c620cc54cd9f9e83ebc5c34b0200aeac9757e2c4b21d0629edd0eec3
MD5 0e05fc6154375491d6fd64365dea63d8
BLAKE2b-256 644bab4a1095b8f1c4ffbc7c35963d5af7b94d0b6bf7de22228b265d4397e90f

See more details on using hashes here.

Provenance

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