Skip to main content

pyResToolbox - A collection of Reservoir Engineering Utilities

Project description

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).

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

pyrestoolbox-3.1.5.tar.gz (974.5 kB view details)

Uploaded Source

Built Distributions

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

pyrestoolbox-3.1.5-py3-none-any.whl (917.9 kB view details)

Uploaded Python 3

pyrestoolbox-3.1.5-cp313-cp313-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.13Windows x86-64

pyrestoolbox-3.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyrestoolbox-3.1.5-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyrestoolbox-3.1.5-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

pyrestoolbox-3.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyrestoolbox-3.1.5-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyrestoolbox-3.1.5-cp311-cp311-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.11Windows x86-64

pyrestoolbox-3.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyrestoolbox-3.1.5-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyrestoolbox-3.1.5-cp310-cp310-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.10Windows x86-64

pyrestoolbox-3.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyrestoolbox-3.1.5-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyrestoolbox-3.1.5-cp39-cp39-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.9Windows x86-64

pyrestoolbox-3.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pyrestoolbox-3.1.5-cp39-cp39-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pyrestoolbox-3.1.5-cp38-cp38-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.8Windows x86-64

pyrestoolbox-3.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pyrestoolbox-3.1.5-cp38-cp38-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file pyrestoolbox-3.1.5.tar.gz.

File metadata

  • Download URL: pyrestoolbox-3.1.5.tar.gz
  • Upload date:
  • Size: 974.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyrestoolbox-3.1.5.tar.gz
Algorithm Hash digest
SHA256 46de80f71784515ff15183845a36227ea7867ea26303d535a3669eb1cee4bd03
MD5 207dc18d482792ab44b51ec2c18eff5d
BLAKE2b-256 8e0e23c344aaa209b74de24bd57b5795b8ffeb415b794d9e2a5f15b04e9c3e53

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5.tar.gz:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-py3-none-any.whl.

File metadata

  • Download URL: pyrestoolbox-3.1.5-py3-none-any.whl
  • Upload date:
  • Size: 917.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyrestoolbox-3.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4f935498fb05f55e2711e642ef138cc7c4004317bd9b1dd674f347ff50f86dea
MD5 b82c6067d3c2d84c092f01ed0602b899
BLAKE2b-256 1c63cdffdfb994a557981dd6eb1c2770e142e9f19fb1ec5d223ac93401cffc93

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-py3-none-any.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 700e9a362d9c9f839461e0ab6541b663fd5896edc340ab09560aee6b6339ee92
MD5 5c4c82a9193ab6c34a5bc4067a834f3b
BLAKE2b-256 414735dfd1ba0c1b6b183ce9ea3d12dc958b0b95777dcda0db96660470ee35dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp313-cp313-win_amd64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 403c8827792e71b1599be845d844aae9d8f7ea72aaf90168af7d18c709b56933
MD5 d793a4b69eddf96e324edfe41481051b
BLAKE2b-256 3ad2bcbce3d51a51d5ce8ff0cb08460d1884b3d0898bab8e8a81ecfa404c2da5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6755981f9db3722beb8fe534380ad447b9b97708757ec6a96383a9e7f3554999
MD5 f2aee02830eaffc8b5f9e1aeff905b9a
BLAKE2b-256 1cb3509b07a4ce428dea37ca2fbf2f6c90d318fa9a6cd167972f1ccda0a283ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 36ecb0c82f3a9f730f479ba025b967bc76e798d2e2fddce0e39cd2ac030b3fe9
MD5 7a8d969809c02c410fa0517195e2f3fb
BLAKE2b-256 ab707ccadae9652e66df7c24928bac24d90e2e78f39fbe9c07702a781f0a3de6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp312-cp312-win_amd64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cedaba2b20c0ab3aceebcdd218e189d0d844eedf03117b2a069240055af1a83f
MD5 8185861e74fcb3cfbd0df758ef15c22c
BLAKE2b-256 7a49683fa6ab2bdddd71385324601e4c71276f64e5cf9874cec51a30b06a51d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23bd787c5f9b42247cb28de93b2d58588b338caa71ca521cdb46fd79d2ff0ba4
MD5 9c947d77e61c1665da1c6371a2a9ced6
BLAKE2b-256 7cf3f49c9aac3288da368b6c1f99a923f41845eedfefadd74763589addca6a82

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0a05d220bf015723be5c9271e7908fcd55f9b5e0814837a55e57b99b22c27f4e
MD5 9f53eb2862b8f971329b0defc67db05e
BLAKE2b-256 febe47a3b00c0cb008bed53f86eebffd02b1b6aa485994506c30a870fa667635

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp311-cp311-win_amd64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb076630fc3b48208616781888a2e302800f26f633a5a7139dbadba2928095de
MD5 8a28cf9d86d48d88a9debf3656e6c57f
BLAKE2b-256 8326938390d0fea7a1b6ffcee397622d0a5af98307e8b0322cc41b8c5dbdf28f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f37fd9e6ba6755f563857334a4f047eed9b4820f8e17e9e501da0efc15ae267f
MD5 1b9977dd6ddfebd5228964cd6b51b537
BLAKE2b-256 8d8636d10386728c7ff87ec8e28481342627fc1a90695ebf8349ca2ff9a63b54

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b5c9156158764df59674fc443af6864c7fcd5ecc610a3f6d7d8500fed8e8adb5
MD5 6ee4ddba27fa2420be9a5285fda6ec76
BLAKE2b-256 d77181f63ab8a8f3e0dd753139095278f19fdc0d5e149c5e1ac4a419f32489e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp310-cp310-win_amd64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0b0aba4e534d2204b42e74235d6d5f9c1719668cdf0e1356937e7e91ef19248
MD5 26d658212b12b1aa5c55bf16cbe9024e
BLAKE2b-256 52f7cf121927d00c7c37d877597a5f40d5d7af53a1a59db97663c735f3846788

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd944c9fba866ca50696f2e7669062d277e436a267c480c30b33b3aed73e9ae4
MD5 4a7aedfae7ad512004143f06d3eae9c3
BLAKE2b-256 9e9771998daddb0666c18e83484c165da456c0b26aafe500e97188d192ae4609

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyrestoolbox-3.1.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyrestoolbox-3.1.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 4aa39873ea99830ef03565fcd338e99c3518d112d0b95c40bb9bb44e852ae2d1
MD5 5bd5faa9478dbffa0cf1cf2ed9bf0908
BLAKE2b-256 9244ffed16eb4391b1237d4c6d3418ba74eea2fd3dc08985726a96071aaf02b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp39-cp39-win_amd64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78430707c02e8265d434017ea1e12f41e61a4f2415d3c10cd05d52892ee1e226
MD5 98d0911534c80eb804b517ee64959678
BLAKE2b-256 d043b29de1fe6d7795fe91721d5763139a77d675977402321935fa97b65534b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88944bebca5295c04a7aeb0de93f9b8b2c654ca6910b7271753dc808e8ca0852
MD5 25df93ef5113654b356e5a25597b6ca9
BLAKE2b-256 6ccc32d36311120e753766bdb87e60686cb04ac389d352737e185627ebf01019

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyrestoolbox-3.1.5-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyrestoolbox-3.1.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b5e960b3a6ed65ef4bb5a10f6b8f809b40dd5320fae6319988334dd9d3fb773b
MD5 6059003fc3ce7c5a3c5777a740696682
BLAKE2b-256 5ad90831ff1f5fc2b3816a1cf48f710bbad11ec82c9223ebf74a463c9beb455a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp38-cp38-win_amd64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7fa0f6be8586176be3217ecbf3db94aeac8bc47e85989c9a3fcca04ad439ebb3
MD5 438ba10c3ec9895738de8aa28e7304b4
BLAKE2b-256 d8c6a3007de34258447a00f38477d7cb94a3d07a78e1a58cdaac2058ef43c0cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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

File details

Details for the file pyrestoolbox-3.1.5-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b1d568386748b038ddba5ae530e2bc764fe43e880a3a3a8cd3a39af0badd1be
MD5 3a906b1f02be368ebc1e49e86c3abd3b
BLAKE2b-256 6c523e73e650dca153fcbf10fc7767ee9489b7186e903e07f2a8c9e88923cd00

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.5-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on mwburgoyne/pyResToolbox

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