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.
Modules: gas, oil, brine, nodal (VLP/IPR, chokes, liquid loading, VFP tables), simtools (black-oil, PVTW, rel-perm, aquifer and deck tools), dca (decline curves), matbal (material balance, aquifer influx), pipeline (gas pipelines), crm (capacitance-resistance models), layer, library, recommend and sensitivity. Every module accepts Eclipse METRIC units with metric=True; the full documentation ships inside the package, and pyrestoolbox.docs_dir() returns its location for offline reading.
Includes functions to perform calculations including;
Decline Curve Analysis with Arps and Duong models - fitting, forecasting, EUR, windowed fitting, b-factor uncertainty band, secondary phase ratio models, and uptime inference
Material Balance for gas (P/Z with Cole plot, curvature diagnostic and Havlena-Odeh aquifer support) and oil (least-squares Havlena-Odeh OOIP with drive indices, Campbell points, parameter regression with identifiability warnings, and tabulated PVT)
Carter-Tracy aquifer influx histories, with radial aquifer constants in field or metric units
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), an error-controlled adaptive march, per-step gravity/friction/acceleration breakdown, and calibration of gravity and friction multipliers to well tests
Liquid loading critical rate (Turner, Coleman), erosional velocity (API RP 14E) and wellhead chokes (Gilbert-family and Sachdeva)
Gas well deliverability tests (Rawlins-Schellhardt C,n and Houpeurt LIT, AOF)
Gas pipeline pressure drop and capacity (General Flow, Weymouth, Panhandle A/B, IGT)
Capacitance-resistance models (CRMP, CRMT) for waterflood connectivity, forecasting and oil-cut fitting
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, H2 and He
Gas caloric properties (enthalpy, Cp, Cv, Joule-Thomson coefficient) from the BNS tuned Peng Robinson EOS
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)
Multi-salt gas-free brine viscosity: IAPWS-2008 water, an ion-additive salt ratio over any combination of Na, K, Mg, Ca, Sr, Ba, Cl, Br, sulfate and carbonate, and a measured pressure factor
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. The one exception is simtools.influence_tables, whose pure-Python fallback needs the optional aquifer extra (pip install 'pyrestoolbox[aquifer]').
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)
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()
Upgrade previous installations with
pip install pyrestoolbox --upgrade
Module List
Arps and Duong decline rate and cumulative, EUR estimation, Decline model fitting (time-domain and cumulative, with windowing), b-factor band and EUR spread, Ratio model fitting (GOR/WOR), Forecasting with uptime and secondary phase ratios |
|
Gas P/Z material balance (OGIP), Cole plot and P/Z curvature diagnostics, Havlena-Odeh with aquifer influx, Oil Havlena-Odeh material balance (least-squares OOIP) with drive indices and Campbell points, Parameter regression with bounds and identifiability warnings, Tabulated PVT support, Carter-Tracy aquifer influx, Radial aquifer constants |
|
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 Deliverability Tests (C,n, LIT, AOF), Gas Hydrate Prediction, Gas Caloric Properties (H, Cp, Cv, Joule-Thomson), Non-Darcy and Partial-Penetration Pseudoskins |
|
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 |
|
Flowing BHP (4 VLP methods), Per-step pressure-drop profile, Gravity and friction multipliers, VLP calibration to well tests, Outflow (VLP) curves, Inflow (IPR) curves, Operating point analysis, Multi-segment deviated/horizontal wells, Liquid loading critical rate, Erosional velocity, Wellhead chokes (Gilbert-family, Sachdeva), GasPVT and OilPVT convenience classes |
|
Gas pipeline pressure drop or capacity: General Flow (Colebrook or AGA friction), Weymouth, Panhandle A and B, IGT, with elevation correction |
|
Capacitance-resistance models (CRMP, CRMT) fitted to injection and production rates, connectivity and time constants, forecasting, pore volume, oil-cut model fitting |
|
Return critical parameters for typical single components |
|
Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE), multi-salt gas-free brine viscosity |
|
Lorenz coefficient from Beta value, Lorenz coefficient from flow fraction, Lorenz coefficient to flow fraction, Lorenz coefficient to permeability array |
|
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 Z-factor, critical property, oil PVT, and VLP methods based on fluid composition and well configuration |
|
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')
5199.2406069808885
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
(999.9999999999953, 0.049999999999999885)
>>> dca.eur(qi=result.qi, di=result.di, b=0, q_min=10)
19799.999999999953
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.60264634235122
>>> r.r_squared
0.9734793606102145
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()
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()
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()
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()
Stock Tank Oil Density: 52.06448672566371 lb/cuft
Stock Tank Gas Density: 0.05204687045843109 lb/cuft
Reservoir Water Density: 61.37100825498743 lb/cuft
Reservoir Water Compressibility: 2.930237693350768e-06 1/psi
Reservoir Water Viscosity: 0.36386395924173587 cP
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()
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.5372158966466267
Rsb (mscf/stb): 1.137900924344287
Rsb Scaling Required: 1.0362710951888936
Visob (cP): 0.36663121233374113
Cob (1/psi): 2.0042955593519084e-05
Stock Tank Oil Density: 52.06448672566371 lb/cuft
Stock Tank Gas Density: 0.05204687045843109 lb/cuft
Reservoir Water Density: 61.37100825498743 lb/cuft
Reservoir Water Compressibility: 2.930237693350768e-06 1/psi
Reservoir Water Viscosity: 0.36386395924173587 cP
Development
pyrestoolbox is maintained by Mark W. Burgoyne (github.com/mwburgoyne).
Metadata
Release files for pyrestoolbox 3.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyrestoolbox-3.9.0.tar.gz | 1.2 MB | With provenance | Details for pyrestoolbox-3.9.0.tar.gz |
Built distributions (wheels)
Total release size: 25.5 MB
Release files / pyrestoolbox-3.9.0.tar.gz
| Download URL | pyrestoolbox-3.9.0.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4835f0961238837d3113fb3920fc9bcc62f3bccf351d19d357946ec82493390
|
|
BLAKE2b-256 checksum How to use checksums |
a0b546604a6b1747f17c21f982b22cd2b517584d0456893c65268e90f7c74dcc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-py3-none-any.whl
| Download URL | pyrestoolbox-3.9.0-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5bb2f2a48140c75f1e157a34f1b7823cbe34aa34cfab380ef4825440ce2159a6
|
|
BLAKE2b-256 checksum How to use checksums |
94327fbcfc626d54ab259b55d967180ccd3052278a271677f426c1b9852ab7f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp313-cp313-win_amd64.whl
| Download URL | pyrestoolbox-3.9.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e3a6247b51116d2c9f09da11f630bd2919324459dc2c85b34d0edc329b742ce9
|
|
BLAKE2b-256 checksum How to use checksums |
58fb78b455cdf575bbb508657210719dae517b34b5fd745c2700d4d7898eab70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyrestoolbox-3.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7b6bcb18b5dc5f535ce7f6a0e8b66971a1882c485cffa02c69bfc03e643fb221
|
|
BLAKE2b-256 checksum How to use checksums |
38c03eb79bedfb005e232871772c10fdd3ef5185add359691793742fd568bd05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pyrestoolbox-3.9.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d3028fca991505d3b8c4fcd2a46cc6cf0025795d06fac71bab995845e9631a81
|
|
BLAKE2b-256 checksum How to use checksums |
5f7bd7450b591b9eb0fbb56c612aacd8e34eabad937e5f29efbb87f59d30784f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp312-cp312-win_amd64.whl
| Download URL | pyrestoolbox-3.9.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f031e195872a83c9a69f609e58b74cacdf580739a6ee06223729353694c62f6e
|
|
BLAKE2b-256 checksum How to use checksums |
33f9fa1d2d8dc80ef4ca0857159ac5d38fde378691214e8ecb22390d2b39fde6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyrestoolbox-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
b74a243911c29f19893771c2bdf1b01989ea86944179ddb4f5c6980c6c01fb16
|
|
BLAKE2b-256 checksum How to use checksums |
325b9dad2fb59b5df8877605759077af015b720e98af3cbedca652af17246f45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pyrestoolbox-3.9.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1dc72a43ed43314d167fdf0333cb333b666fee16a3a75dbcd836b78280ffe70d
|
|
BLAKE2b-256 checksum How to use checksums |
fa40f17c7f9c814bcedde00ed259f5a20064c53498022188f339c763b2f38c6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp311-cp311-win_amd64.whl
| Download URL | pyrestoolbox-3.9.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
21cef13ab431ffe8ed614a3976e2a6615a85ecc47a7e0b9b9d2dd9c65422e584
|
|
BLAKE2b-256 checksum How to use checksums |
44f147fb2857fe7add12517616daf7abf0e0ad5efe2563d1a54d27fd90dd3120
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyrestoolbox-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
774755f4af49fa34fcc5cc6d49af2b31b4613ec99004dc74adccb910a58430a8
|
|
BLAKE2b-256 checksum How to use checksums |
bbce70cb889a382f12eff2e506f524f32d6972d77c800af7498573b21f02d725
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pyrestoolbox-3.9.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c790ef643d8ca10822a4e29aaa9e860a7e63075ee093b92f2a22e6ccda067263
|
|
BLAKE2b-256 checksum How to use checksums |
5aa12010fd93244e8f7454b6c247d73ea33c89396104b750cd24438d80c433be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp310-cp310-win_amd64.whl
| Download URL | pyrestoolbox-3.9.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
fc63be19115c7f05d1c083f8dc2a92eced959f2c0aa2f9ab7aa71a74d60c55eb
|
|
BLAKE2b-256 checksum How to use checksums |
8f45b61aec1a25930a9034f962e69dfea2b34a43eec12824ec96439f291f65b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyrestoolbox-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
d5c98cb8996018559e982a0918312046efe8695aec23e6ca72dbb355516b5538
|
|
BLAKE2b-256 checksum How to use checksums |
4a0c57b711a0f7e6eb5d6c7baf685da4308759e5304177fa3364a78fd9bbd166
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pyrestoolbox-3.9.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
fd70a0d13c422d0210aee62553c0cf85fc47baf404e9d5d95076a9f54d6dc7d0
|
|
BLAKE2b-256 checksum How to use checksums |
ea5b0f99339d4611ce015f115827ea1978a7d4621437107f9dd2d803638242d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp39-cp39-win_amd64.whl
| Download URL | pyrestoolbox-3.9.0-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f37b4ad565790983d2dc3c0b40c9669b031fbe9777fba1f0fe8772ad6e3cd0bc
|
|
BLAKE2b-256 checksum How to use checksums |
bd5c1def3e4a5e26626954be0288aa4f808223ae83b4a25b7d98dc85a00a238a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyrestoolbox-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7c80ebbb1ddc70fce632dde454de720ce446d9d3e07d48fc54d505c96b311d9c
|
|
BLAKE2b-256 checksum How to use checksums |
b01c736d056d075206bf48995c990cb242be7951a4ff8e27644311b41185c1a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / pyrestoolbox-3.9.0-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | pyrestoolbox-3.9.0-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a28d8c9c1f7da135c137bc2bf148ceee272a19adaf7e54b1cd2d3da0a4b8c871
|
|
BLAKE2b-256 checksum How to use checksums |
c4bfee4c0c9e5ddc460629827efcebb0d97102b85daef39935d83cb462bdecc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logSecurity for pyrestoolbox 3.9.0
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.
Full provenance
All 17 files in this release have been uploaded with provenance metadata.
Attestation for pyrestoolbox-3.9.0.tar.gz
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 Nov 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.