Skip to main content

Python library for EPICS PV Access

Project description

PvaPy - PvAccess for Python

The PvaPy package is a Python API for EPICS7. It supports both PVA and CA providers, all standard EPICS7 types (structures, scalars, unions, etc), standard set of channel operations (put/get, monitor), RPC client/server, PVA server, etc. It uses Boost/Python to wrap EPICS7 C++ libraries and APIs, and is currently supported on Linux, OSX and Windows.

Installation

At the moment prebuilt PvaPy packages exist for the Conda and PyPI package management system. If none of the prebuilt packages work for you, or if you need 32-bit Linux packages, you will have to build PvaPy from sources.

Conda

  • Supported platforms: Linux (64-bit), OSX
  • Supported Python versions: Python2, Python3

Make sure conda command is in your path, and execute the following command:

  $ conda install -c epics pvapy

This should result in installation of pvapy, pvapy-boost and epics-base Conda packages.

PyPI

  • Supported platforms: Linux (64-bit), Windows (64-bit), OSX (64-bit), ARM (64-bit)
  • Supported Python versions: Python2, Python3

Make sure pip command is in your path, and execute the following command:

  $ pip install pvapy

PvaPy pip packages contain all needed epics base and boost libraries.

Build

This section is intended for those users that would like to build PvaPy from the source code.

Prerequisites

Building PvaPy from source requires recent versions of the following software:

  1. Standard development tools (gcc, make, autoconf, etc.)
  2. Python development header files/libraries (>=v2.6.6)
  3. Sphinx/Sphinx RTD Theme (optional, for generating documentation)

There are two ways of building and installing PvaPy from sources: automated and custom. The automated local install will download and build predefined versions of EPICS Base, Boost and PvaPy. Custom local install relies on already existing EPICS Base and Boost libraries, and builds only PvaPy.

Automated Build

Automated build works under Linux and OSX. Make sure the desired version of Python is in your path, and execute the following command from the top of the PvaPy source directory:

  $ PREFIX=/local/install/path make local

This should build and install predefined versions of EPICS Base, Boost Python and PvaPy libraries under the directory specified by the PREFIX variable. If PREFIX is not specified, all software will be installed under the tools/local subdirectory of the PvaPy distribution.

Custom Build

In addition to the Python-related prerequsites, the custom build requires the following software already built:

  1. EPICS Base (>=v3.14.12.3)
  2. EPICS4 CPP release (>=v4.4.0); note that EPICS7 release includes all needed v4 modules
  3. Boost (>=v1.41.0); must have the boost_python library built
  4. Boost.NumPy (optional, for retrieving numeric scalar arrays as numpy arrays; this is not needed for Boost v1.63.0 and later)

The version numbers mentioned above are the earliest that PvaPy was tested with. Any recent version of Python and the Boost libraries (such as those that come with current linux distributions) should work. Similarly, any recent version of EPICS Base that is supported by EPICS4 CPP should be fine.

Nothing special needs to be done when building the EPICS4 CPP modules. Ensure that the EPICS Base installation you use for this module is the same one that was used to build the EPICS4 modules.

This module has not been adapted for use on Microsoft Windows. Only Unix-like operating systems (e.g. Linux, MacOS, Solaris) are currently supported.

1. Configure PvaPy

This can be done manually (all platforms), or using autoconf (on Linux and OSX).

For manual configuration: Read the comments in both the configure/RELEASE and configure/CONFIG_SITE files and follow the instructions given there.

For automatic configuration: In the top level directory run

  $ make configure EPICS_BASE=/epics/base/path [EPICS4_DIR=/epics/v4/path] [BOOST_NUMPY_DIR=/boost.numpy/path] [BOOST_ROOT=/boost/path] [PYTHON_VERSION=3]

Note that you can only use the automatic configuration if the v4 modules have not been renamed. In the above command replace /epics/base/path with the full path to your EPICS Base directory, and /epics/v4/path with the full path to your top level directory containing the v4 modules pvDataCPP, pvAccessCPP, etc. If you are using EPICS7 release, you can omit EPICS4_DIR argument, as configuration scripts will find the required v4 libraries and header files in the EPICS Base directory.

The optional BOOST_NUMPY_DIR argument enables NumPy array support for older Boost versions, as v1.63.0 and later releases already include NumPy libraries. The optional BOOST_ROOT argument is typically used for custom Boost installation directory. In case you are using custom python installation that uses shared object libraries, you may need to set PATH and LD_LIBRARY_PATH environment variables before running the above make configure command. Also, note that building with python 3.x requires PYTHON_VERSION=3 argument.

The make configure command will check for your Boost/Python libraries, and create suitable configure/RELEASE.local and configure/CONFIG_SITE.local files that are used by the build process. They should look roughly like the examples below:

  $ cat RELEASE.local
  PVACLIENT = /home/epics/v4/pvaClientCPP
  PVDATABASE = /home/epics/v4/pvDatabaseCPP
  NORMATIVETYPES = /home/epics/v4/normativeTypesCPP
  PVACCESS = /home/epics/v4/pvAccessCPP
  PVDATA = /home/epics/v4/pvDataCPP
  EPICS_BASE = /home/epics/base-3.15.5

  $ cat CONFIG_SITE.local
  PVAPY_CPPFLAGS = -I/usr/include -I/usr/include/python2.7
  PVAPY_LDFLAGS = -L/usr/lib64 -lpython2.7
  PVAPY_SYS_LIBS = boost_python  
  PVA_API_VERSION = 480
  PVA_RPC_API_VERSION = 480
  HAVE_BOOST_NUMPY = 0
  HAVE_BOOST_PYTHON_NUMPY = 0
  PYTHON_VERSION = 2.7
  PVAPY_PYTHON = /bin/python
  PVAPY_PYTHONPATH = /home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64
  PVAPY_LD_LIBRARY_PATH = /usr/lib64
  PVAPY_EPICS_BASE = /home/epics/base-3.15.5
  PVAPY_EPICS4_DIR = /home/epics/v4
  PVAPY_HOST_ARCH = linux-x86_64
  PVAPY_SETUP_SH = /home/epics/pvaPy/bin/linux-x86_64/pvapy_setup_full.2.7.sh

The above files were created automatically on a 64-bit RHEL 7.4 machine, with the following boost/python packages installed:

  $ rpm -q boost-python python-devel
  boost-python-1.53.0-27.el7.x86_64
  python-devel-2.7.5-58.el7.x86_64

Note that the automatic configuration process also creates pvapy_setup_full.$PYTHON_VERSION.(c)sh and pvapy_setup_pythonpath.$PYTHON_VERSION.(c)sh files in the bin/$EPICS_HOST_ARCH directory. The full setup files modify PATH, LD_LIBRARY_PATH and PYTHONPATH environment variables, while the pythonpath setup files modify only PYTHONPATH variable. For example,

  $ cat pvapy_setup_pythonpath.2.7.sh
  #!/bin/sh
  #
  # modifies PYTHONPATH environment variable
  #
  if test -z "$PYTHONPATH" ; then
      export PYTHONPATH=/home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64
  else
      export PYTHONPATH=/home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64:$PYTHONPATH
  fi

After building pvaPy, the environment setup files can be sourced to use the built python module, e.g.:

  $ . /home/epics/v4/pvaPy/bin/linux-x86_64/pvapy_setup_pythonpath.2.7.sh
  $ echo $PYTHONPATH
  /home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64

or for csh users:

  % source /home/epics/v4/pvaPy/bin/linux-x86_64/pvapy_setup_pythonpath.2.7.csh
  % echo $PYTHONPATH
  /home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64

2. Compile PvaPy Source

In the top level package directory run:

  $ make

The above command will create and install a loadable library pvaccess.so under the lib/python directory which can be imported directly by Python.

3. Generate Documentation

This step is optional and requires Sphinx to be installed:

  $ make doc

If a sphinx-build script is present on the system, html pages will be generated in the documentation/sphinx/_build/html directory.

Basic Usage: PV put/get

For simple testing, do the following:

  1. In a separate terminal, start the testDbPv IOC:
  $ cd $EPICS4_DIR/pvaSrv/testTop/iocBoot/testDbPv
  $ ../../bin/$EPICS_HOST_ARCH/testDbPv st.cmd
  1. Source the appropriate setup file from pvaPy's bin/$EPICS_HOST_ARCH directory and start python (the Python PVA module is called pvaccess):
  $ python
  >>> import pvaccess
  >>> dir (pvaccess)
  ['BOOLEAN', 'BYTE', 'CA', 'Channel', 'DOUBLE', 'FLOAT', 'FieldNotFound',
  'INT', 'InvalidArgument', 'InvalidDataType', 'InvalidRequest', 'LONG',
  'NtTable', 'NtType', 'PVA', 'ProviderType', 'PvAlarm', 'PvBoolean', 'PvByte',
  'PvDouble', 'PvFloat', 'PvInt', 'PvLong', 'PvObject', 'PvScalar',
  'PvScalarArray', 'PvShort', 'PvString', 'PvTimeStamp', 'PvType', 'PvUByte',
  'PvUInt', 'PvULong', 'PvUShort', 'PvUnion', 'PvaException', 'RpcClient',
  'RpcServer', 'SHORT', 'STRING', 'UBYTE', 'UINT', 'ULONG', 'USHORT', '__doc__',
  '__file__', '__name__', '__package__']
  >>> c = pvaccess.Channel('int01')
  >>> print c.get()
  epics:nt/NTScalar:1.0
      int value 0
  >>> c.putInt(7)
  >>> print c.get()
  epics:nt/NTScalar:1.0
      int value 7
  >>> c.put(pvaccess.PvInt(5))
  >>> print c.get()
  epics:nt/NTScalar:1.0
      int value 5

In the above, note that in addition to PV object classes like PvInt, one can also use standard Python types as arguments for channel puts.

Basic Usage: PV monitor

  1. In a separate terminal, start the testDbPv IOC:
  $ cd $EPICS4_DIR/pvaSrv/testTop/iocBoot/testDbPv
  $ ../../bin/$EPICS_HOST_ARCH/testDbPv st.cmd
  1. PV values can be changed using the IOC shell command dbpf, e.g:
  epics> dbpr 'float01'
  ASG:                DESC:               DISA: 0             DISP: 0
  DISV: 1             NAME: float01       SEVR: MAJOR         STAT: LOLO
  TPRO: 0             VAL: 0
  epics> dbpf 'float01' 11.1
  DBR_FLOAT:          11.1
  1. Monitor a channel in Python, passing in a subscriber object (function that processes PvObject instance):
  >>> c = pvaccess.Channel('float01')
  >>> def echo(x):
  ...     print 'New PV value:', x
  ...
  >>> c.subscribe('echo', echo)
  >>> c.startMonitor()
  >>> New PV value: epics:nt/NTScalar:1.0
      float value 11.1

  New PV value: epics:nt/NTScalar:1.0
      float value 11.2

  New PV value: epics:nt/NTScalar:1.0
      float value 11.3

  >>> c.stopMonitor()

Advanced Usage: PVA Server Class

  1. In terminal 1, create a simple 'pair' channel:
  $ python 
  >>> pv = PvObject({'x': INT, 'y' : INT})
  >>> pvaServer = PvaServer('pair', pv)
  1. In terminal 2, start monitoring this channel:
  $ pvget -m pair
  1. In terminal 1, update one of the object's fields:
  >>> pv['x'] = 1

This change should appear in terminal 2.

Advanced Usage: RPC Client Class

  1. In a separate terminal, start the v4 test RPC service:
  $ cd $EPICS4_DIR/pvAccessCPP/bin/$EPICS_HOST_ARCH
  $ ./rpcServiceExample # in terminal 2
  1. RPC test channel is 'sum':
  >>> rpc = pvaccess.RpcClient('sum')
  >>> request = pvaccess.PvObject({'a': pvaccess.STRING, 'b': pvaccess.STRING})
  >>> request.set({'a': '11', 'b': '22' })
  >>> print request
  structure
      string a 11
      string b 22
  >>> response = rpc.invoke(request)
  >>> print response
  structure
      double c 33

Advanced Usage: RPC Server Class

Example 1

  1. In a separate terminal, source the environment file and start python:
  $ python # in terminal 2
  >>> import pvaccess
  >>> srv = pvaccess.RpcServer()
  >>> def echo(x):    # x is an instance of PvObject
  ...     print 'Got object: ', x
  ...     return x    # service must return an instance of PvObject
  >>> srv.registerService('echo', echo)
  >>> srv.listen()
  1. In terminal 1, reuse previous request object
  >>> rpc = pvaccess.RpcClient('echo')
  >>> response = rpc.invoke(request)
  >>> print response
  structure
      string a 11
      string b 22

Example 2

  1. In terminal 2:
  $ python
  >>> import pvaccess
  >>> srv = pvaccess.RpcServer()
  >>> def sum(x):
  ...     a = x.getInt('a')
  ...     b = x.getInt('b')
  ...     return pvaccess.PvInt(a+b)
  >>> srv.registerService('sum', sum)
  >>> srv.listen()
  1. In terminal 1:
  >>> rpc = pvaccess.RpcClient('sum')
  >>> request = pvaccess.PvObject({'a': pvaccess.INT, 'b': pvaccess.INT})
  >>> request.set({'a': 11, 'b': 22})
  >>> print request
  structure
      int a 11
      int b 22
  >>> response = rpc.invoke(request)
  >>> print response
  structure
      int value 33

Example 3

  1. In terminal 2:
  >>> import pvaccess
  >>> srv = pvaccess.RpcServer()
  >>> def hash(x):
  ...     import hashlib
  ...     md5 = hashlib.md5()
  ...     md5.update(str(x))
  ...     h = md5.hexdigest()
  ...     dict = x.getStructureDict()
  ...     dict['hash'] = pvaccess.STRING
  ...     response = pvaccess.PvObject(dict)
  ...     response.setString('hash', h)
  ...     return response
  >>> srv.registerService('hash', hash)
  >>> srv.listen()
  1. In terminal 1:
  >>> rpc = pvaccess.RpcClient('hash')
  >>> request = pvaccess.PvString('abcd')
  >>> print rpc.invoke(request)
  structure
      string hash 0a380e7375d8c3f68d1bbe068141d6ce
      string value

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

pvapy-5.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pvapy-5.3.1-cp311-cp311-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.11 Windows x86-64

pvapy-5.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pvapy-5.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (9.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pvapy-5.3.1-cp311-cp311-macosx_10_15_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

pvapy-5.3.1-cp310-cp310-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.10 Windows x86-64

pvapy-5.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pvapy-5.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (9.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pvapy-5.3.1-cp310-cp310-macosx_10_15_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

pvapy-5.3.1-cp39-cp39-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.9 Windows x86-64

pvapy-5.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pvapy-5.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (9.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pvapy-5.3.1-cp39-cp39-macosx_10_15_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

pvapy-5.3.1-cp38-cp38-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.8 Windows x86-64

pvapy-5.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pvapy-5.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (9.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pvapy-5.3.1-cp38-cp38-macosx_10_15_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

pvapy-5.3.1-cp37-cp37m-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.7m Windows x86-64

pvapy-5.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pvapy-5.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (9.3 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pvapy-5.3.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

pvapy-5.3.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (9.3 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

File details

Details for the file pvapy-5.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41efcbceb38a1fa083c8f6c57bbabdc8529abfc99a4a1f89b526303f27d39a84
MD5 2654c2aec8a59e9281e60c2edb2470e9
BLAKE2b-256 118b7448882d29a840da324a64192057ced3bc67965d405b139a5013fdb2be00

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pvapy-5.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for pvapy-5.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9e99fe708248d6bfd871972b33f05c2a4b553b6de5662a65bf057ff6d51ff236
MD5 47ca939c08e137f6c3385322738befc4
BLAKE2b-256 4398d81c84dd1e35a4567d50f21e1f19b4dd0a4f400810d059764a7b0b7d4d57

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1fe3f76a57182cfea3ad9788f3e3a08e811684e04dc86693a392e726f64465b0
MD5 769b13f125fe9ec988655b2ba7a76810
BLAKE2b-256 3b21dae6d4ad3399997be2239940aecaf31aa004053dcbaa86f77d4e40da028f

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1df453179143fedc0f7f3b5e7239745f20f14afda4f652ced4a358aa16c0b26a
MD5 8f3a267a41318e1fea1616f42f3e1548
BLAKE2b-256 aca641b3a0e91aa612898147db36ea60cf1df72ec8ab9075a0ff87452b651aab

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c8807a719d7369f74b0af7093135a5dddd1c387e8331030124e9376e0ecd2fd9
MD5 550af826dc194395dcf2668aeb3440a0
BLAKE2b-256 d68c43b8988df685aef8093d6f438174a2aa046729f08faeebf87c8ce535f24a

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pvapy-5.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for pvapy-5.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9c8e2380b6ec9e84ba3ea55507a465137e2bd6e30e8338e38bac4256d07ff5bd
MD5 9e5fba0a774db5a7f9f2ffc77c9d01b0
BLAKE2b-256 f60dcf5bda5bf13fe0c455263587b841ba6798b25c12188bf503e4f20108f8ab

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 93d23b6da7fe3da040a87eabe24c4187e5255234a6e4b59d939649e65e1a64d0
MD5 4bcf36cb63e6398d10dd86d614a00c77
BLAKE2b-256 5e3dfff4c7b2f805d03fcfa1a9e836dec4c212c1c3d2e8804d20de2601f596bd

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f33adc01a5fad568645742d28be94f5399c39747330d6a06c8b357e0f54506fc
MD5 8bc3ae641aaa0c208d49f8553acf06a5
BLAKE2b-256 1e316724f06094053e8a7f4162c4a25bd0c0c5356255b5d9a7603dd1037359c3

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d7fa6ac09d4bcb61e0f53a07c9bcb1d9acb05f4475ce387e576fccfaa1fd2dea
MD5 5609e327a9f560b1514f7e9c3bdbe16d
BLAKE2b-256 ed4fdf0f49cbc87017c052616a848c0e6c0b958fa5e218c30ca10de5ea5a90a6

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pvapy-5.3.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for pvapy-5.3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 83cecbc948d934a3c9a219e3f7a9c924484685c21b73c2934cfc7fa309a6abbd
MD5 0d109c09c0c9891d639e9efa05463fa5
BLAKE2b-256 d1c72545b8ea5bb39f8b4642e3beff1cba1fb7a4620b4e5e9c1c0f13be59709f

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d182b2e2cdad7664b6dc5d61ba44a4f0e02a1d84de15555d5fa58c1c739da27b
MD5 9f85dc420361a5af1c17f3c3406e900e
BLAKE2b-256 959d998debac879e1cb21708357c2f1fe95f6693df300b2e55ba747e6da49c26

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba5b49ebd0399b72cd615ee91e9c53a90a9771956fd4a9b600ce3e8761122138
MD5 0f49c3c45e45f67d6a4767147dd5ffd6
BLAKE2b-256 b983174b1569df9f2a0cdd98cb69d0645318c21a3b89c38ebab0026a6c7533f1

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c47c5a4a9b5ce7fe629752421917449f7bbc1f953363d286c74ca823bea1a14e
MD5 a45ec85ff040cd4f636484625490471e
BLAKE2b-256 83fe36dde6b825ce66727c30034ccb37b3b2b76a682e81d05e8f50b821c5075b

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pvapy-5.3.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for pvapy-5.3.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 95dfbcfbec67f54c7aafe8d4f192badc1017b265c7f61d551afdbed6bac91ad5
MD5 112ccf9c576b8a7162b1804c3a834ec9
BLAKE2b-256 e4b8300acb065a0dc439cb12cf14ff4b9401c265827f556a191f29550826d004

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 444260ba1cc803c354904af3a1fba7b0f58f2762fc36e2126d456712e3e921af
MD5 489a2d32f28ebe0772fb0649794f8084
BLAKE2b-256 1d6a60c815582a55fcef04026fa5563de285977598bbfd755f56decd199b99d7

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 515a23b711cf072085c7ddb0b10da6d258914209b49cc6a3bf3911e605c4c882
MD5 66b70327b1f33f9b14a094a237de644f
BLAKE2b-256 897c7dfab538e8a74b85062e54f8ba9fe354a49b1e1dd64a59eff87d5fbc3f01

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 10edab5c162aa4a58a9502052680f786acff965d7a4d9d9532bc1d58b2d68642
MD5 6a29cb9a44c4bc4e81db96001bb2010e
BLAKE2b-256 a2e5bfcce94b767400008ce4c2ef67498fe2dbfe87486b632c3f8d2e508de5f7

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pvapy-5.3.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for pvapy-5.3.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 6aab48e553659bb35ad6ed534d212269780610b120ec7ac52f56f3be4a0cc767
MD5 cc94452d4c4e91f295fc1b7aaf646c49
BLAKE2b-256 01e7e9b130a1cf399e3fe684fa2c09160284dcaec745bf95ceb53cb78163f6f2

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b27e00b548b8debc1c3799634f8adbe3b11b18feb695a5a9c400422e5995ea99
MD5 643ee74ace12ecdec6bcb811e772d257
BLAKE2b-256 a3a4adc832e802689925b27e8316a9abcf250b8a894b32a1d8a28cc6a6b98268

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8079da6d5035abde50beaecb5677075f1f6ccbff5fbbca46d7b7899e06f90dee
MD5 affd345e0d51ed0dc4287a62dd36b576
BLAKE2b-256 92493709ba5fd6792a7259b22c3d7b192864dc399440bb43a11588c975611d3f

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7d167b1683ecd9d0cdbd5cb78476af87c4594b83d8b0fafa0ac76c6a3a8c3cf4
MD5 878619ff13cd8155e664f4d640a9f513
BLAKE2b-256 3ad5f3bfcd2272b48c7c2e95a3919ac50a48240b2cb776c143cb89cb834659e2

See more details on using hashes here.

File details

Details for the file pvapy-5.3.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pvapy-5.3.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 65ec7dab4a2102630e67e99243d3791bc64c065135a6074ba83c3ae029567532
MD5 9647666544e3a5397b8e7f9b12f61c76
BLAKE2b-256 7fd8b839287d85fb3767a7b247a029e62204782b7cc44bebfa1afafc527750b3

See more details on using hashes here.

Supported by

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