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 PVAccess StaticSource server
  • Supports PVAccess get and put client Context operations via python asyncio
  • Supports getting/setting pvxs.Value fields with python data types

aiopvxs Installation

It is recommended to install this project to a python virtual environment from a cloned copy of this source. To do this manually:

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

Uploaded CPython 3.14tWindows x86-64

aiopvxs-0.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (319.1 kB view details)

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

aiopvxs-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl (292.5 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

aiopvxs-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl (284.4 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

aiopvxs-0.2.0-cp314-cp314-win_amd64.whl (207.1 kB view details)

Uploaded CPython 3.14Windows x86-64

aiopvxs-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (320.9 kB view details)

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

aiopvxs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (268.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

aiopvxs-0.2.0-cp314-cp314-macosx_10_15_x86_64.whl (266.2 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

aiopvxs-0.2.0-cp313-cp313-win_amd64.whl (202.3 kB view details)

Uploaded CPython 3.13Windows x86-64

aiopvxs-0.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (321.0 kB view details)

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

aiopvxs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (270.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

aiopvxs-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl (266.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

aiopvxs-0.2.0-cp312-cp312-win_amd64.whl (202.3 kB view details)

Uploaded CPython 3.12Windows x86-64

aiopvxs-0.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (321.1 kB view details)

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

aiopvxs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (269.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

aiopvxs-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl (265.9 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

aiopvxs-0.2.0-cp311-cp311-win_amd64.whl (197.9 kB view details)

Uploaded CPython 3.11Windows x86-64

aiopvxs-0.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (316.3 kB view details)

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

aiopvxs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (261.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

aiopvxs-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl (262.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

aiopvxs-0.2.0-cp310-cp310-win_amd64.whl (197.1 kB view details)

Uploaded CPython 3.10Windows x86-64

aiopvxs-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (313.0 kB view details)

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

aiopvxs-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (259.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

aiopvxs-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl (261.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: aiopvxs-0.2.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 234.5 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.2.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 129aeec51030a8d2443655e259bc822e5fe92b0a07da12ccda589c3aaf221f33
MD5 e5c6ce8398acf3590644f789028572b1
BLAKE2b-256 c469c6231e62b971487046b88f0541d00da4967570bed633a16c39da42f187a9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ab6af9733de9bcc58a1c02f5c062f6e3cf3ac1cd232be8cc5889fccff294b6f
MD5 25895ba483685cefff5001e49f9da4b0
BLAKE2b-256 0d768458ccde456e54a3c7cf57695eb553cbb1b86c2a90947ce4ea4dd9be2bc5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d03dd790488fce25be810e452b295b24a27bd8ba8469710558ea2a6b3fff8e2
MD5 89b3860f338e2ec6ce8a05800cebd2f2
BLAKE2b-256 9dcf8fab7f294f0e55515f4e57f219e4be5a83fcf9eefa5259affddd2f1c2359

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 82dca0df5cb49c15308db43ee35d260c4fc8ef0cc61da2b6c593eefb7b94d044
MD5 cc19af3f6f9a789df013c9bf245e0512
BLAKE2b-256 6c885368083243b31eafed285b62a34d0ec68b590dab746c4303c8797cb7603b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 207.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.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d9ac13f5f9b9a42d404937c9c0469b93fd65943ee48342640e624e62c7d3603d
MD5 cce1d4136b3dcce867deaf87508dfdf5
BLAKE2b-256 d768247ab3ca9e75858d75db217a2f7cf2c0619db18f54fd7e0b3c018763f4a5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e3224ee1e65befb57eeb68cf06dfd697819f5ce1314c9f3779bf804bccce31a3
MD5 aaa3f54fd042438bb4f69631177e1f81
BLAKE2b-256 d708a75a26720e9d240431640576e63b802b900ee1cb26a2885b707c97d63d50

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7bae4a6afbd17e94ec42afdb49bfc43c66445cd91c3589eb6c768f0f26bad094
MD5 aa4028a72cbf14514782c0a351023d81
BLAKE2b-256 b65d4ef81ff81df5cee716d11daa88cda291b71ff29e4bf44020af7fe7c82240

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b2a8693165a2a61771725ddef2fccc64ec8993d12098e9497e507c74554f1532
MD5 638a8175dac39f427d72ae34e58589ef
BLAKE2b-256 1036b1bc4697a1ae2c4997d9b0dcef35a598fbdf9f20bb573100a5d9a414c15a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 202.3 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.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f180f9941bd34887a2d8f754b96d46df5a19dfb4ee3400b8ed8359b91b604575
MD5 32894a8c0fa87762ef3637d9b5e3a041
BLAKE2b-256 b656dd205f804df314feb7b67a35c64673381d5751221043bdffd2fc2226b017

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.2.0-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.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 728dfcb89779428c8293b859627974f276e776489a528791908c1fab511a48a3
MD5 61d18f51117c85b8ad81dc6a7f84752a
BLAKE2b-256 2779cad206beb49b281cb3d62bbe70d47caf1a78c908bb59c597386073e44257

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2326135f4abf31573ebb14b3e5657dec01286c387c7b3b85782444f80bdb2507
MD5 0f5b2b982ba1e339d8b12c8df73d74ba
BLAKE2b-256 53ef14b0e0e09d363b47eaefcff013ce767281270e7d31cb84caab4f167a598f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ac5d93bcd30b5db27efeee687320aebb93bd265349afc2cba0bcf6de2defb2a9
MD5 15eafe7b4a5a635e530e1053fa2e91cf
BLAKE2b-256 a12e64ad0c9079c3e8eccc4b55eeda6dbe7123862928d574f6d3224f49489c0a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 202.3 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.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 54634030535ad6680306fbbe7a37cebf665b365dc7da9c909fd00be6a47eaf59
MD5 992ca3516d514d7bf3319af0a3fdbf3d
BLAKE2b-256 c0d54cb292f19e00348edfa452ee0da4f96b89d96c68500f151cb8e1bbc2e7d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.2.0-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.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5f95345b02ecc044640f39ea96e76b6a15e1af7b049f41811f0ec91e66d71ed5
MD5 254698dda113941378dfd75306a2d097
BLAKE2b-256 123805ea9ea08b2e928f8ffc5628e392daac8b34a1021aadd37603862a3cd760

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9933adeb81495fb98b568100dd041424768bc7c5f61c2eaf706c354e17858cb4
MD5 91cf81f98c1d342ee11e0aa83a0fe8f1
BLAKE2b-256 5ccd66cab9d9aa5a9548fe8e640b955150de92762d1dd54afda20694bba4e9ce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 cfcea64defa585f60108810b84b54b6eb4141d94aee3886ba7194e6b01889a00
MD5 5ceac6b1fe565ef0e85f1d6e721cbc59
BLAKE2b-256 e32a9d0606ebcbb83e51b5d932ba540e19b509f29b3de076091c48f860bb0c9b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 197.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.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bd0f9cbab4f2e4aa43ed01c17c3f0d5ed19203aeb46ae8f3e3adf0fd134ddc9a
MD5 508a8d725c772d29a9fd0890b1f87fb4
BLAKE2b-256 5b8334b5432d23ff52209eb146c3ae326825d6ec9c83a58a8aa8ee01d39e85cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.2.0-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.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6f66f4d9ade7f986f1726ceb63eb83310519341bf62f973859d672f959154559
MD5 231752d76e52957a0338842600f4bb2f
BLAKE2b-256 67aed2f008dd52df1157b1c3a52842365792cf0de4bcab4da396210946e34e61

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ae7cfb67c3f64f5778fc93ce5882dda0886718abe2f2a1341eb034e70d0ccef
MD5 28b0e4be83fb5cd70a98270ed1a156e1
BLAKE2b-256 0ab10384b8eeeba310b53566d86269f87da3345a8136426fe12ea16c33540e5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2bfb8e0258dfdeb575b9baba2a5a24f8766ffabcfbf25cbc3949f1b71570d361
MD5 c538eaa12a18584a418edd616cb42cbe
BLAKE2b-256 d14ca5b3f5ed9dd160d618f79fffe4a5851e9e2317d6490c5e1a232f487108cd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiopvxs-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 197.1 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.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b096473180db86d83f3010ca5d609566c4520fb84ce458460ab29f0238de19b0
MD5 b50d79a9ab7de833f6156cc403e5e569
BLAKE2b-256 97e6cb7c15b8c1e8c081d54a6ecce0a8dbec20e1b1d67e2e1640ff6609f57d57

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiopvxs-0.2.0-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.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8ed46eaa8f4553dd2eca0ce51ded0d60f7763dbf15d3888e0eaeb97c495f1c2b
MD5 b9d354f978c7dd90c00e42b4770adf2d
BLAKE2b-256 fa5ec2ab4a4bfa002619df7a0adc7ee50180fa38bc87eaf5957585f510241edc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40c55d6ed26396fc471c460f4cf407e938d973c66d27923d18784875046ccf80
MD5 14e3690b904ddc9042a7180e8f7d0a06
BLAKE2b-256 6854cb13c2ab9c4ba00dbd1612d93e4527db9644e6af21b905b768a9bdaadff6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for aiopvxs-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8e93a908c0daf6510b81c965f492c6084eccffa6957ae07388d9c640970adbc3
MD5 9d624bab7470b6ec1a20dda071b5a62e
BLAKE2b-256 1858694b69a8a65c0eb8504d76fa6b5a1c10a532528faccd56eb1bd31d7d7740

See more details on using hashes here.

Provenance

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