Skip to main content

Python bindings for Pinnacle Technology PVFS (virtual filesystem for physiological recordings)

Project description

pypvfs

pypvfs is the PyPI distribution name for Pinnacle Technology PVFS — a virtual filesystem used for physiological recordings. This is not related to the historical HPC “Parallel Virtual File System” or other unrelated “PVFS” acronyms.

After installation you import the pvfs_tools Python package (same module layout as in the former Morelia monolith):

pip install pypvfs
from pvfs_tools.Core.pvfs_data_file import PvfsDataFile

Optional extras

Extra Purpose
video WebM/VP8 export (WebMWriter uses PyAV). pip install "pypvfs[video]"
test pytest + av for running the test suite locally
examples pyedflib + av for the Tk GUI EDF and WebM examples

Native library

The package ships platform-specific native libraries under pvfs_tools.Core (.dll on Windows, .so on Linux). On PyPI you receive a prebuilt wheel for your platform, so pip install pypvfs does not require a C++ toolchain.

If you install from source (sdist or a checkout), pip will invoke scikit-build-core which compiles src/pvfs_tools/Core/pvfs.cpp and pvfs_wrapper.cpp via CMake. You will need:

  • CMake ≥ 3.15 (pip installs cmake from PyPI into the isolated build env if your system lacks it)
  • A C++17 compiler (g++/clang++ on Linux/macOS, MSVC 2019+ on Windows)
pip install -e ".[test]"   # builds the native libs and installs in editable mode
pytest

Examples

The runnable example scripts ship inside the installed package, so they are available immediately after pip install pypvfs — no repo clone required.

Module Extra deps Description
pvfs_tools.examples.pvfs_create_cli CLI to create a synthetic PVFS file
pvfs_tools.examples.pvfs_to_edf_converter pypvfs[examples] (pyedflib) Tk GUI: PVFS → EDF+
pvfs_tools.examples.pvfs_to_video_converter pypvfs[video] (av) Tk GUI: PVFS video → WebM
# Locate or list the installed examples
pypvfs-examples
pypvfs-examples --list

# Copy them out to a directory you can edit freely
pypvfs-examples --copy-to ./my-pvfs-examples

# Or run any of them directly
python -m pvfs_tools.examples.pvfs_create_cli --help
python -m pvfs_tools.examples.pvfs_to_edf_converter
python -m pvfs_tools.examples.pvfs_to_video_converter

The same scripts also live at the top of the GitHub repo under examples/ for easy browsing; both copies are identical, the package build just relocates them into pvfs_tools/examples/ so they are usable without cloning.

Documentation

Tests

pip install -e ".[test]"
pytest

Repository

Source and issues: see Repository URL in pyproject.toml.

Publishing releases

Step-by-step (tags, GitKraken, PyPI checks): docs/RELEASE.md.

Do not rely on twine upload from a developer machine for routine releases (credentials drift and audit pain). Use the GitHub Action instead.

  1. Configure trusted publishing on PyPI for this GitHub repository and workflow publish.yml (OIDC — no PYPI_API_TOKEN in repo secrets unless you choose that path).
  2. Bump version in pyproject.toml, commit, then create and push a version tag matching your policy, e.g. v1.0.2:
    git tag v1.0.2
    git push origin v1.0.2
    
    Pushing tag v* runs .github/workflows/publish.yml: cibuildwheel builds a manylinux_2_28_x86_64 wheel inside the PyPA manylinux Docker image and a win_amd64 wheel on a Windows runner, then uploads both (plus the sdist) with pypa/gh-action-pypi-publish. The manylinux image guarantees a low glibc baseline so the published Linux wheel works on RHEL/CentOS/Rocky/Alma 8+, Ubuntu 20.04+, Debian 11+, and Amazon Linux 2023 — not just the build host.
  3. Manual run: Actions → Publish to PyPIRun workflow (same build/upload path).

Note: ptech-morelia already uses a similar pattern (tag push + matrix build + OIDC) in its packaging workflow — keep both projects on the same release habit so versions stay aligned when you cut coordinated releases.

Project details


Download files

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

Source Distribution

pypvfs-1.0.4.tar.gz (19.9 MB view details)

Uploaded Source

Built Distributions

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

pypvfs-1.0.4-py3-none-win_amd64.whl (108.3 kB view details)

Uploaded Python 3Windows x86-64

pypvfs-1.0.4-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (573.1 kB view details)

Uploaded Python 3manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file pypvfs-1.0.4.tar.gz.

File metadata

  • Download URL: pypvfs-1.0.4.tar.gz
  • Upload date:
  • Size: 19.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypvfs-1.0.4.tar.gz
Algorithm Hash digest
SHA256 b91697b9363aeaf2353b2086cb68be658d31434f4e3ffc99fa00d5e47d611071
MD5 5aade75fb246dc34285ecb99ef0298b8
BLAKE2b-256 76fa07b557e1c29dc3efaab0b5725d711c3f1a84803bb81cdf2b8acb790801b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypvfs-1.0.4.tar.gz:

Publisher: publish.yml on Pinnacle-Technology-Inc/pypvfs

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

File details

Details for the file pypvfs-1.0.4-py3-none-win_amd64.whl.

File metadata

  • Download URL: pypvfs-1.0.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 108.3 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypvfs-1.0.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ca27a245208958d2734606438af48cd5d1ee428a030df86d31307823ec29ff70
MD5 484f31217ba52861c0139dd1d75d5cf8
BLAKE2b-256 8baffa0127eb07d3ff80553881170f332c263613a4b5b6e16c1a103ea505feee

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypvfs-1.0.4-py3-none-win_amd64.whl:

Publisher: publish.yml on Pinnacle-Technology-Inc/pypvfs

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

File details

Details for the file pypvfs-1.0.4-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypvfs-1.0.4-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7fca12cfa5a1b3b3ecdf5b932110b3743e53d341e31984a29f97deef0a286371
MD5 791a453dadfc83d1925c95473ee5d1f6
BLAKE2b-256 ccd0f336a72776f4d409e4a89c4e6b364c37a87c86754c8c8c592056366e90b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypvfs-1.0.4-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on Pinnacle-Technology-Inc/pypvfs

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