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.0.tar.gz (956.9 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.0-py3-none-any.whl (898.4 kB view details)

Uploaded Python 3

pyrestoolbox-3.1.0-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

pyrestoolbox-3.1.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyrestoolbox-3.1.0-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

pyrestoolbox-3.1.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyrestoolbox-3.1.0-cp311-cp311-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11Windows x86-64

pyrestoolbox-3.1.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyrestoolbox-3.1.0-cp310-cp310-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10Windows x86-64

pyrestoolbox-3.1.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pyrestoolbox-3.1.0.tar.gz
Algorithm Hash digest
SHA256 e2fdde77e2a4fdee01c57e75efeb5d86abfe9453518dacde98769407a53d030a
MD5 2850e57da66eab6a8b670ccdc6b1585b
BLAKE2b-256 92185c53fd7743b60248b4c4530161b20cb737972b028075cd89968b317ad59d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0.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.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pyrestoolbox-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a199bd97699c0f007d11f73b453f5da542d5e69356e3b6b501be3c3b4418ba54
MD5 daeaee5964332907e1c1d0df3a9c025e
BLAKE2b-256 52cb123e9920855f97095b66adb7557ecf03bec1c7d6751c578b38330e6ba102

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5f0c7e9f6967542909207c3869681798d7d4d14615727eda85846ee8c1814710
MD5 514e5f77335a78cad30f0ad88455a8f8
BLAKE2b-256 b52dd2f30aedf07a9da64593ba92cbb6bd2c108e8bcaafdbdb648fa1ed6aa839

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d763cdaaebf7e88ac6f111f2300f7907c0c2c08c3357b695f10fdbc99cbcf1cd
MD5 9adade58b7cb5123f909af03a8c3469d
BLAKE2b-256 198e89e1fda5693c009862b7f9530cad14fc69f6fb47708c0fedbda2a2267721

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94522d6bcbc444cebaa5c2e3bcf2137e5dcf2a24df14041c838e2da4696196b1
MD5 50f30ff405c22afa2ade7f44fde2838c
BLAKE2b-256 2e5f16dc7aec897850ba547d1a957cec14de117e059bf02b4416bf2452d7700c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 91df804fabb930742c7ebab4878b8da71717c752e5d8ccc2aff86a2150876dfb
MD5 570bb2c4e1cc8151031aa4913e1c45fc
BLAKE2b-256 285ba52b38dd4e1735c54653009b819dade659ad6bb43977e91014d9c02d506b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c6adc4063d434ea852c0862999eea0bbbff12a61ee0705e98550fe257ed39e94
MD5 97adc41cab6e42d030e03238e95cde59
BLAKE2b-256 88b8a00b899eb73bfe78f1ab375032ed32177dc82ba3d1d86bb7bd102fc1e3fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff1e1f51f166ab0c395dda44cd71b736836de13fecdcc5ebeb2d4bd0390dccd2
MD5 aadd040ee5673c8b6d46a53d01be80ad
BLAKE2b-256 67f5883437ce0ce694b48435e0448181acdaea5c30e3addb0031442ccdadc72b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 332dad4d1b8c27579f2b112446e3915d4cfffc2d45155d8755f982ad7e5369b1
MD5 be10774ffdd0d397aa7db493b01434ce
BLAKE2b-256 e69eb518cd955e4fe6f7f8703de6644ad7c330652d4b8ab2359a007a58206248

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b79eaae9f1229a0dd40227514c2c0a5977c074e51a5c8230b5a5a36871a35a6e
MD5 75c37bab51faa763b1910662348f1f97
BLAKE2b-256 2ddb8c80edb2830219c4a87b9a4aa8909ca45694a79348535eaacf778a9867ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 491f04ae1cfa17e6973d30d83e8b183395a71fdbfb619617b41f2e81486f6560
MD5 6ea04781e0e71b0cc79fed2ad0e890e6
BLAKE2b-256 53a4d06cf6e8bbae9c5b4857acb5fdf52f8e7d0deea85fe8b69d3f414f7a910a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a258bfbba4ba78247fcf6c0f89fbc9e7e929cfbe799f8b737dd71195073ee1ff
MD5 3992dfad56d476ab8e28421b519dae0d
BLAKE2b-256 fffff1c285498b2047f3b9906d4473dadf2dbdddb4514127c079afd6ec02b859

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 477955d0ccc34d62f4ece60c13c29c9ff8931b58449860d07afd089aecbbb6a5
MD5 040f2422dd6e972efcf82d59180e28fa
BLAKE2b-256 21e56c820188b36361bc5d0b85fdaa4792b64c5432de87163062971ca31e690b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrestoolbox-3.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e169f119087aa681bd187b3f9215410cafb6fb3b58fe3c2b50374e91fa0d27f
MD5 34f8896e35d19461ec54feb2d77c3e3e
BLAKE2b-256 10d7a0de06a38bbcb1e7d1d91a2d95a3ffac8d3c5c59d8a78c19a239dc31f7a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrestoolbox-3.1.0-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.

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