Skip to main content

pyrestoolbox

A collection of Reservoir Engineering Utilities

This set of functions focuses on those that the author uses often while crafting programming solutions. These are the scripts that are often copy/pasted from previous work - sometimes slightly modified - resulting in a trail of slightly different versions over the years. Some attempt has been made here to make this implementation flexible enough such that it can be relied on as-is going forward.

Note: Version 3.0 consolidates simulation-oriented functions under the simtools module, adds nodal analysis (VLP/IPR), VFP table generation, relative permeability curve fitting, and Eclipse METRIC unit support across all modules. Version 3.0.4 adds decline curve analysis, material balance, method recommendations, and sensitivity analysis.

Includes functions to perform calculations including;

  • Decline Curve Analysis with Arps and Duong models — fitting, forecasting, EUR, windowed fitting, secondary phase ratio models, and uptime inference

  • Material Balance for gas (P/Z with Cole plot and Havlena-Odeh aquifer support) and oil (Havlena-Odeh with drive indices, parameter regression, and tabulated PVT)

  • Inflow Performance Relationships (IPR) for oil and gas wells

  • Vertical Lift Performance (VLP) with four multiphase flow correlations (Hagedorn-Brown, Woldesemayat-Ghajar, Gray, Beggs & Brill)

  • Nodal analysis operating point determination

  • Eclipse VFP table generation (VFPPROD and VFPINJ keywords)

  • PVT Calculations for oil

  • PVT calculation for gas, including up to 100% inerts for CO2, H2S, N2 and H2

  • Gas hydrate formation prediction with thermodynamic inhibitor calculations

  • Return critical parameters for typical components

  • Creation of Black Oil Table information (PVDO, PVDG, PVTO, PVTW keywords)

  • Creation of layered permeability distribution consistent with a Lorenz heterogeneity factor

  • Extract problem cells information from Intersect (IX) print files

  • Generation of AQUTAB include file influence functions for use in ECLIPSE

  • Creation of Corey, LET and Jerauld relative permeability tables in Eclipse format, with curve fitting support

  • Calculation of Methane, CO2 and multicomponent gas saturated brine properties (Soreide-Whitson VLE)

  • Method recommendation engine for selecting appropriate correlations based on fluid composition

  • Sensitivity analysis with parameter sweeps and tornado charts

All public PVT, flow rate, and simulation table functions support both oilfield (psia, deg F, ft) and Eclipse METRIC (barsa, deg C, m) unit systems via an optional metric=False parameter. See individual module documentation for unit mapping details.

Rust Acceleration (Optional)

pyResToolbox includes optional Rust-compiled extensions that accelerate computationally intensive algorithms. When the compiled extension is present and loadable, these functions run automatically through Rust with no API changes. When the extension is unavailable, all functions fall back silently to the pure Python implementation.

Accelerated functions:

  • Nodal VLP segment loops — all 8 VLP method functions (4 methods x gas/oil)

  • Gas Z-factor — DAK, Hall-Yarborough, and BNS full-pipeline calculations

  • Gas viscosity — LGE and LBC correlations

  • Gas pseudopressure — Gauss-Legendre quadrature integration

  • Oil density — Standing-Witte-McCain-Hill (iterative and above-Pb)

  • Oil FVF — McCain density-based method

  • DCA hyperbolic fitting — grid search with RANSAC (fit_decline, fit_decline_cum)

  • Material balance — oil matbal regression objective function

  • CO2-Brine solubility — Spycher-Pruess iterative RK-EOS solver

  • VLE flash — Soreide-Whitson multi-component Peng-Robinson flash

Behavior:

  • If the Rust extension is not found on disk, pure Python is used with no warning

  • If the extension fails to load (e.g. OS permission restrictions, architecture mismatch), a sentinel file is written to avoid repeated probe attempts on subsequent imports. The sentinel is automatically invalidated when the extension file changes (new build or update)

  • All Rust-accelerated paths use try/except wrappers — any Rust-side error falls back to the Python implementation transparently

Environment variables:

  • PYRESTOOLBOX_NO_RUST=1 — Force pure Python mode (skip Rust extension entirely)

  • PYRESTOOLBOX_RETRY_RUST=1 — Ignore the sentinel file and retry loading the extension

Programmatic status check:

>>> from pyrestoolbox._accelerator import get_status, clear_block
>>> get_status()
{'rust_available': True, 'failure_reason': '', 'forced_python': False, ...}
>>> # If blocked by a sentinel, clear it and restart Python:
>>> clear_block()

Changelist

Upgrade previous installations with

pip install pyrestoolbox --upgrade

Module List

dca

Arps and Duong decline rate and cumulative, EUR estimation, Decline model fitting (time-domain and cumulative, with windowing), Ratio model fitting (GOR/WOR), Forecasting with uptime and secondary phase ratios

matbal

Gas P/Z material balance (OGIP), Cole plot diagnostics, Havlena-Odeh with aquifer influx, Oil Havlena-Odeh material balance (OOIP) with drive indices, Parameter regression with bounds, Tabulated PVT support

gas

Gas Tc & Pc Calculation, Gas Z-Factor Calculation, Gas Viscosity, Gas Viscosity * Z, Gas Compressibility, Gas Formation Volume Factor, Gas Density, Gas Water of Condensation, Convert P/Z to P, Convert Gas Gradient to SG, Delta Pseudopressure, Gas Condensate FWS SG, Gas Flow Rate Radial, Gas Flow Rate Linear, Gas Hydrate Prediction

oil

Oil Density from MW, Oil Critical Properties with Twu, Incremental GOR post Separation, Oil Bubble Point Pressure, Oil GOR at Pb, Oil GOR at P, Oil Compressibility, Oil Density, Oil Formation Volume Factor, Oil Viscosity, Harmonize Pb and Rsb, Estimate soln gas SG from oil, Estimate SG of gas post separator, Calculate weighted average surface gas SG, Oil API to SG, Oil SG to API, Oil Flow Rate Radial, Oil Flow Rate Linear

nodal

Flowing BHP (4 VLP methods), Outflow (VLP) curves, Inflow (IPR) curves, Operating point analysis, Multi-segment deviated/horizontal wells, GasPVT and OilPVT convenience classes

library

Return critical parameters for typical single components

brine

Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE)

layer

Lorenz coefficient from Beta value, Lorenz coefficient from flow fraction, Lorenz coefficient to flow fraction, Lorenz coefficient to permeability array

simtools

Summarize IX convergence errors from PRT file, Create Aquifer Influence Functions, Perform recursive ECL or IX deck zip/check for INCLUDE files, Solve Rachford Rice for user specified feed Zis and Ki’s, Create sets of rel perm tables (Corey, LET, Jerauld), Fit relative permeability models to measured data, Generate Eclipse VFPPROD lift curve tables, Generate Eclipse VFPINJ injection curve tables, Create Black Oil tables (PVDO, PVDG, PVTO), Create PVTW water PVT tables

recommend

Recommend Z-factor, critical property, oil PVT, and VLP methods based on fluid composition and well configuration

sensitivity

Parameter sweeps and tornado chart sensitivity analysis

Getting Started

Install the library with pip:

pip install pyrestoolbox

Import library into your project and start using.

A simple example below of estimating oil bubble point pressure.

>>> from pyrestoolbox import oil
>>> oil.oil_pbub(api=43, degf=185, rsb=2350, sg_g =0.72, pbmethod ='VALMC')
5179.51086900132

Fit a decline curve to production data and estimate ultimate recovery.

>>> import numpy as np
>>> from pyrestoolbox import dca
>>> t = np.arange(1, 51, dtype=float)
>>> q = 1000 * np.exp(-0.05 * t)
>>> result = dca.fit_decline(t, q, method='exponential')
>>> result.qi, result.di
(1000.0000000000007, 0.05000000000000006)
>>> dca.eur(qi=result.qi, di=result.di, b=0, q_min=10)
19799.99999999999

Estimate gas in place from pressure-production history.

>>> from pyrestoolbox import matbal
>>> r = matbal.gas_matbal(
...     p=[3000, 2700, 2400, 2100, 1800],
...     Gp=[0, 5, 12, 22, 35],
...     degf=200, sg=0.65
... )
>>> r.ogip
87.602774253829
>>> r.r_squared
0.9734794008096929

A set of Gas-Oil relative permeability curves with the LET method

>>> import matplotlib.pyplot as plt
>>> from pyrestoolbox import simtools
>>> df = simtools.rel_perm_table(rows=25, krtable='SGOF', krfamily='LET', kromax =1, krgmax =1, swc =0.2, sorg =0.15, Lo=2.5, Eo = 1.25, To = 1.75, Lg = 1.2, Eg = 1.5, Tg = 2.0)
>>> plt.plot(df['Sg'], df['Krgo'], c = 'r', label='Gas')
>>> plt.plot(df['Sg'], df['Krog'], c = 'g', label='Oil')
>>> plt.title('SGOF Gas Oil LET Relative Permeability Curves')
>>> plt.xlabel('Sg')
>>> plt.ylabel('Kr')
>>> plt.legend()
>>> plt.grid('both')
>>> plt.plot()
SGOF Relative Permeability Curves

Or a set of Water-Oil relative permeability curves with the Corey method

>>> df = simtools.rel_perm_table(rows=25, krtable='SWOF', kromax =1, krwmax =0.25, swc =0.15, swcr = 0.2, sorw =0.15, no=2.5, nw=1.5)
>>> plt.plot(df['Sw'], df['Krow'], c = 'g', label='Oil')
>>> plt.plot(df['Sw'], df['Krwo'], c = 'b', label='Water')
>>> plt.title('SWOF Water Oil Corey Relative Permeability Curves')
>>> plt.xlabel('Sw')
>>> plt.ylabel('Kr')
>>> plt.legend()
>>> plt.grid('both')
>>> plt.plot()
SWOF Relative Permeability Curves

A set of dimensionless pressures for the constant terminal rate Van Everdingin & Hurst aquifer, along with an AQUTAB.INC export for use in ECLIPSE.

>>> ReDs = [1.5, 2, 3, 5, 10, 25, 1000]
>>> tds, pds = simtools.influence_tables(ReDs=ReDs, export=True)
>>>
>>> for p, pd in enumerate(pds):
>>>     plt.plot(tds, pd, label = str(ReDs[p]))
>>>
>>> plt.xscale('log')
>>> plt.yscale('log')
>>> plt.legend(loc='upper left')
>>> plt.grid(which='both')
>>> plt.xlabel('Dimensionless Time (tD)')
>>> plt.ylabel('Dimensionless Pressure Drop (PD)')
>>> plt.title('Constant Terminal Rate Solution')
>>> plt.show()
Constant Terminal Rate influence tables

Or creating black oil table information for oil

>>> results = simtools.make_bot_og(pi=4000, api=38, degf=175, sg_g=0.68, pmax=5000, pb=3900, rsb=2300, nrows=50)
>>> df, st_deno, st_deng, res_denw, res_cw, visw, pb, rsb, rsb_frac, usat = results['bot'], results['deno'], results['deng'], results['denw'], results['cw'], results['uw'], results['pb'], results['rsb'], results['rsb_scale'], results['usat']
>>>
>>> print('Stock Tank Oil Density:', st_deno, 'lb/cuft')
>>> print('Stock Tank Gas Density:', st_deng, 'lb/cuft')
>>> print('Reservoir Water Density:', res_denw, 'lb/cuft')
>>> print('Reservoir Water Compressibility:', res_cw, '1/psi')
>>> print('Reservoir Water Viscosity:', visw,'cP')
>>>
>>> fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(10,10))
>>> ax1.plot(df['Pressure (psia)'], df['Rs (mscf/stb)'])
>>> ax2.plot(df['Pressure (psia)'], df['Bo (rb/stb)'])
>>> ax3.plot(df['Pressure (psia)'], df['uo (cP)'])
>>> ax4.semilogy(df['Pressure (psia)'], df['Co (1/psi)'])
>>>
>>> fig.suptitle('Black Oil Properties')
>>> ax1.set_title("Rs vs P")
>>> ax1.set_ylabel('Rs (mscf/stb)')
>>> ax1.set_xlabel('Pressure (psia)')
>>> ax1.grid('both')
>>>
>>> ax2.set_title("Bo vs P")
>>> ax2.set_ylabel('Bo (rb/stb)')
>>> ax2.set_xlabel('Pressure (psia)')
>>> ax2.grid('both')
>>>
>>> ax3.set_title("Viso vs P")
>>> ax3.set_xlabel('Pressure (psia)')
>>> ax3.set_ylabel('Viscosity (cP)')
>>> ax3.grid('both')
>>>
>>> ax4.set_title("Co vs P")
>>> ax4.set_ylabel('Co (1/psi)')
>>> ax4.set_xlabel('Pressure (psia)')
>>> ax4.grid('both')
>>>
>>> plt.tight_layout()
>>> plt.show()
Iteratively solving for Rsb fraction to use in order to harmonize user specified Pb and Rsb

Stock Tank Oil Density: 52.09203539823009 lb/cuft
Stock Tank Gas Density: 0.052046870460837856 lb/cuft
Reservoir Water Density: 61.40223160167964 lb/cuft
Reservoir Water Compressibility: 2.930237693350768e-06 1/psi
Reservoir Water Viscosity: 0.3640686136171888 cP
Black Oil Properties

And gas

>>> fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(10,10))
>>> ax1.semilogy(df['Pressure (psia)'], df['Bg (rb/mscf'])
>>> ax2.plot(df['Pressure (psia)'], df['ug (cP)'])
>>> ax3.plot(df['Pressure (psia)'], df['Gas Z (v/v)'])
>>> ax4.semilogy(df['Pressure (psia)'], df['Cg (1/psi)'])
>>> ...
>>> plt.show()
Dry Gas Properties

With ability to generate Live Oil PVTO style table data as well

>>> pb = 4500
>>> results = simtools.make_bot_og(pvto=True, pi=4000, api=38, degf=175, sg_g=0.68, pmax=5500, pb=pb, nrows=25, export=True)
>>> df, st_deno, st_deng, res_denw, res_cw, visw, pb, rsb, rsb_frac, usat = results['bot'], results['deno'], results['deng'], results['denw'], results['cw'], results['uw'], results['pb'], results['rsb'], results['rsb_scale'], results['usat']
>>>
>>> if len(usat) == 0:
>>>     usat_flag = False
>>> else:
>>>     usat_flag=True
>>>     usat_p, usat_bo, usat_uo = usat
>>>
>>> try:
>>>     pb_idx = df['Pressure (psia)'].tolist().index(pb)
>>>     bob = df['Bo (rb/stb)'].iloc[pb_idx]
>>>     rsb = df['Rs (mscf/stb)'].iloc[pb_idx]
>>>     uob = df['uo (cP)'].iloc[pb_idx]
>>>     cob = df['Co (1/psi)'].iloc[pb_idx]
>>>     no_pb = False
>>> except:
>>>     print('Pb was > Pmax')
>>>     no_pb = True
>>>
>>> print('Pb (psia):', pb)
>>> print('Bob (rb/stb):', bob)
>>> print('Rsb (mscf/stb):', rsb)
>>> print('Rsb Scaling Required:', rsb_frac)
>>> print('Visob (cP):', uob)
>>> print('Cob (1/psi):', cob,'\n')
>>> print('Stock Tank Oil Density:', st_deno, 'lb/cuft')
>>> print('Stock Tank Gas Density:', st_deng, 'lb/cuft')
>>> print('Reservoir Water Density:', res_denw, 'lb/cuft')
>>> print('Reservoir Water Compressibility:', res_cw, '1/psi')
>>> print('Reservoir Water Viscosity:', visw,'cP')
>>>
>>> fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(10,10))
>>> ax1.plot(df['Pressure (psia)'], df['Rs (mscf/stb)'])
>>> ax2.plot(df['Pressure (psia)'], df['Bo (rb/stb)'])
>>> ax3.plot(df['Pressure (psia)'], df['uo (cP)'])
>>> ax4.semilogy(df['Pressure (psia)'], df['Co (1/psi)'])
>>>
>>> ax1.plot([pb], [rsb], 'o', c='r')
>>> ax2.plot([pb], [bob], 'o', c='r')
>>> ax3.plot([pb], [uob], 'o', c='r')
>>> ax4.plot([pb], [cob], 'o', c='r')
>>>
>>> if usat_flag:
>>>     if no_pb == False:
>>>         for i in range(len(usat_bo)):
>>>             ax2.plot(usat_p[i], usat_bo[i], c='k')
>>>             ax3.plot(usat_p[i], usat_uo[i], c='k')
>>>
>>> fig.suptitle('Black Oil Properties')
>>> ..
>>> ..
>>> plt.show()
Pb (psia): 4500
Bob (rb/stb): 1.6072798403441817
Rsb (mscf/stb): 1.2863705330979234
Rsb Scaling Required: 0.9713981737449556
Visob (cP): 0.3422139569449832
Cob (1/psi): 5.711273668114706e-05

Stock Tank Oil Density: 52.05522123893805 lb/cuft
Stock Tank Gas Density: 0.052025361717109773 lb/cuft
Reservoir Water Density: 61.40223160167964 lb/cuft
Reservoir Water Compressibility: 2.930237693350768e-06 1/psi
Reservoir Water Viscosity: 0.3640686136171888 cP
Live Oil Properties

Development

pyrestoolbox is maintained by Mark W. Burgoyne (github.com/mwburgoyne).

Release files for pyrestoolbox 3.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyrestoolbox 3.7.0
File Size Uploaded
pyrestoolbox-3.7.0.tar.gz 1.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyrestoolbox 3.7.0
File
pyrestoolbox-3.7.0-py3-none-any.whl Python 3 none any Details
pyrestoolbox-3.7.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pyrestoolbox-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
pyrestoolbox-3.7.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pyrestoolbox-3.7.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyrestoolbox-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
pyrestoolbox-3.7.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pyrestoolbox-3.7.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyrestoolbox-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pyrestoolbox-3.7.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pyrestoolbox-3.7.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyrestoolbox-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pyrestoolbox-3.7.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
pyrestoolbox-3.7.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pyrestoolbox-3.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
pyrestoolbox-3.7.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
pyrestoolbox-3.7.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
pyrestoolbox-3.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
pyrestoolbox-3.7.0-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details

Total release size: 26.9 MB

Release files / pyrestoolbox-3.7.0.tar.gz

Download URL pyrestoolbox-3.7.0.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
d61b9c0de9549821cbe628ad27fa3e111e0c65fae9de787222825a0a019cd09b
BLAKE2b-256 checksum
How to use checksums
49476a298256c150e49c03bf7db4301b6e58d5187bdc80e87b84a35aead5abdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-py3-none-any.whl

Download URL pyrestoolbox-3.7.0-py3-none-any.whl
Size 957.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c480031493aaa71e048651699768b46647e88d6aae662cdd4bec02cc2165531
BLAKE2b-256 checksum
How to use checksums
e0c31074185e779845c5f2044c8712df2d8959e19d07e2e24c52b3df09aa5cd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp313-cp313-win_amd64.whl

Download URL pyrestoolbox-3.7.0-cp313-cp313-win_amd64.whl
Size 1.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
eab47d39ef87bbb53bb9f2c2b0c5bebb408423d5423a7ffa0565cd9c9e85cd1a
BLAKE2b-256 checksum
How to use checksums
9de4bf3e7c077908a0a177967b4b4766e6e181600c6cf34b50ff68e88575e839
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyrestoolbox-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6523cb74fe4f9ae8020803d335c58e92663e53be680382f58c1c34fc791baff1
BLAKE2b-256 checksum
How to use checksums
ab935ead0c97e87e087a3a2782e5f3ef8a2fb14fa226b5a085c97ac294cf831b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL pyrestoolbox-3.7.0-cp313-cp313-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f7783b35669b8720463b3575322f30174e00865cf524ef20cf40b3fd94dbe6a3
BLAKE2b-256 checksum
How to use checksums
25c629f4fde33103ff8460aa9568497cb27336d8aec405fd351dad3334d4261e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp312-cp312-win_amd64.whl

Download URL pyrestoolbox-3.7.0-cp312-cp312-win_amd64.whl
Size 1.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
eb4dedd270be3a4ada6ee8249bb0a32b7aada6bac35324dd73af013ff3f1374b
BLAKE2b-256 checksum
How to use checksums
a1feac69b7334fb2609c6cc7c089cfcd7c7983b216846b209b364e2fedaeb23f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyrestoolbox-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
852b6f7abcf09b07f06357f21b3d021f1ff8debcb70dcafc8f36873ff588f62b
BLAKE2b-256 checksum
How to use checksums
48514ca9e2f42443695f9bce0a1febda0a3178300924d4a5db4c625240afd2df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pyrestoolbox-3.7.0-cp312-cp312-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bbfafe4adb067f94099c7f1de1bd5b192a768e5caee5f326aa749f7ad0928d42
BLAKE2b-256 checksum
How to use checksums
ad9fda185150b1ccc6bc23fe6244134ad5580d67a279fc6ad6c30ca046c8a6df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp311-cp311-win_amd64.whl

Download URL pyrestoolbox-3.7.0-cp311-cp311-win_amd64.whl
Size 1.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
7e9f25e8eb8d42139f759941b1d0f8a7e2ade2b02c33a4ccdf5adc78ed37fed3
BLAKE2b-256 checksum
How to use checksums
2f241950ed80b4c74e0b852ac7c9bc1669978fcb522301978c69da9a0bc47148
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyrestoolbox-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
909a67a34273457c953f6133380d8870405eb994be0d2885983102b9acbbfafe
BLAKE2b-256 checksum
How to use checksums
b04f70f517856708064032394551068517b9918b058aa3c12fc8f856f6e46a04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyrestoolbox-3.7.0-cp311-cp311-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ea2c1ea641926c00678a44d5384416edf63224e183d883047112d6be4fd537b8
BLAKE2b-256 checksum
How to use checksums
337c12ae3d4f464c9db272ef6762f7b55c35c5bb517ec3792d77d80c39708a47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp310-cp310-win_amd64.whl

Download URL pyrestoolbox-3.7.0-cp310-cp310-win_amd64.whl
Size 1.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
69f7a52ecec533cb952d46901746783ad6818de05471cfb327fa8270f0b9f935
BLAKE2b-256 checksum
How to use checksums
025a884c008389f9df5296417156816a1261b7050f31f3a4d7de30ecdbf1befb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyrestoolbox-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
14f14aab1eb86b3b5d6b75c916ed85d2d1457b66796b3e6e0f8211758e392bb5
BLAKE2b-256 checksum
How to use checksums
75be18093772dade1c71944894d3b211496d89420e5efc32c7cfa8e6b4dcbce3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL pyrestoolbox-3.7.0-cp310-cp310-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0bc86675917cae9ce2db1a78d18820af457f0901a0a9a5edf192ecb268b1662d
BLAKE2b-256 checksum
How to use checksums
5a2b38de0ec6f874db42bf2dc63cab18526ba357fa249fc8a81eeffc739027f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp39-cp39-win_amd64.whl

Download URL pyrestoolbox-3.7.0-cp39-cp39-win_amd64.whl
Size 1.5 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
2c64d418457ab2bea49c235bc30c0adf99300b3e619e30446165baf9409a78b6
BLAKE2b-256 checksum
How to use checksums
649f980b7490e476a65146b96e732243a0da828edc57dd2187caf4d621082644
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyrestoolbox-3.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
75c910969a01027217ae643057feeee27cb5f6c6f2ff5df93ad863ea4e7cba37
BLAKE2b-256 checksum
How to use checksums
ca8916b8d97c4e3282c04d246b8dd772a1bc777736e5c4413fdbd8b711402e74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL pyrestoolbox-3.7.0-cp39-cp39-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b767445f491cc44ac92945a354994b798137f414c5877d7bcb67e4b56ffd690f
BLAKE2b-256 checksum
How to use checksums
cded2f8e3a9583723129135a7e56d22c3b005b6db582b08fec270f7d8ffccc9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp38-cp38-win_amd64.whl

Download URL pyrestoolbox-3.7.0-cp38-cp38-win_amd64.whl
Size 1.5 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
60f55c63c609a7c3d18fbe6b09425bcde1712f664d6a7548923c7c2bd7fafd61
BLAKE2b-256 checksum
How to use checksums
f752c97cbc11ae84a22c914159652929ec9f82a16c1fed8be1f0a309f1097bc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyrestoolbox-3.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1a05245b66e43afdb42ab035f712f8ef5ba0eb7ecbfb848abdc37dd11356d26b
BLAKE2b-256 checksum
How to use checksums
b8b0a359c2f9e52977cf1c440280cc422274763adb3a3ecbfc366c846ec67c9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / pyrestoolbox-3.7.0-cp38-cp38-macosx_11_0_arm64.whl

Download URL pyrestoolbox-3.7.0-cp38-cp38-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
23354aa5b4814700ee6de3f41a587b9f8b8c5d0f2e49bb53e5e8ddf24b7158b0
BLAKE2b-256 checksum
How to use checksums
64312d08718f1530f240adb8ae2c11ba93ad406ba42678b9d9b32bb6a96e508f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release history Release notifications | RSS feed

3.8.1

17 release files

3.8.0

17 release files

This release

3.7.0 This release

20 release files

3.6.0

20 release files

3.5.0

20 release files

3.4.0

20 release files

3.3.0

20 release files

3.2.0

20 release files

3.1.5

20 release files

3.1.4

20 release files

3.1.3

20 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1

2 release files

2.0

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.9

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.2

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.6

2 release files

1.1.4

2 release files

1.1.1

2 release files

1.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page