Skip to main content
https://img.shields.io/pypi/v/barril.svg https://img.shields.io/pypi/pyversions/barril.svg https://github.com/ESSS/barril/workflows/test/badge.svg https://codecov.io/gh/ESSS/barril/branch/master/graph/badge.svg https://img.shields.io/readthedocs/barril.svg https://sonarcloud.io/api/project_badges/measure?project=ESSS_barril&metric=alert_status

What is Barril?

Python package to manage units for physical quantities.

Quick example:

from barril.units import Scalar

s1 = Scalar(10, "m")
s2 = Scalar(500, "cm")
assert s1 + s2 == Scalar(15, "m")

Features

  • Pre-defined unit database containing several physical quantities for the Oil & Gas industry.

  • Data types with an associated unit: Scalar, Array, Quantity, FixedArray.

  • Automatic conversion during arithmetic operations.

Development

For complete description of what type of contributions are possible, see the full CONTRIBUTING guide.

Here is a quick summary of the steps necessary to setup your environment to contribute to barril.

  1. Create a virtual environment and activate it:

    $ python -m virtualenv .env
    $ .env\Scripts\activate  # windows
    $ source .env/bin/activate  # linux
  2. Update pip:

    $ python -m pip install -U pip
  3. Install development dependencies:

    $ pip install -e .[testing]
  4. Install pre-commit:

    $ pre-commit install
  5. Run tests:

    $ pytest --pyargs barril
  6. Generate docs locally:

    $ tox -e docs

    The documentation files will be generated in docs/_build.

Release

A reminder for the maintainers on how to make a new release.

Note that the VERSION should folow the semantic versioning as X.Y.Z Ex.: v1.0.5

  1. Create a release-VERSION branch from upstream/master.

  2. Update CHANGELOG.rst.

  3. Push a branch with the changes.

  4. Once all builds pass, push a VERSION tag to upstream.

  5. Merge the PR.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

2.2.1

2026-01-16

  • Fixed UnboundLocalError bug when performing multiplication in an empty array.

2.2.0

2025-12-23

  • Add category slip coefficient (default unit: m3/Pa.s).

  • Add category fluid mobility (default unit: s/m2).

  • Add category and quantity type time per per area (s/m2).

2.1.0

2025-09-17

  • Added new unit: “Kelvin per atm” (K/atm).

  • Added support for Python 3.13.

  • Dropped support for Python 3.8 (EOL).

2.0.1 (2024-02-15)

  • Added support for Python 3.11 and 3.12.

  • Dropped support for EOL Python 3.6 and 3.7.

  • Add categorie and quantity type henry solubility coefficient (mol/m3.Pa)

  • Add categorie and quantity type crystallization kinetic rate (mol/m2.s.Pa)

1.19.0 (2023-08-10)

  • Define the category and quantity type density derivative in respect to enthalpy``(default unit: ``kg2/m3.J).

1.18.0 (2023-06-01)

  • Define categories forchheimer linear productivity index and forchheimer linear productivity index.

  • Define quantity types forchheimer linear productivity index and forchheimer quadratic productivity index.

  • Add units to categories forchheimer linear productivity index and forchheimer quadratic productivity index.

1.17.0 (2023-05-02)

  • Standardize the usage of lbmol

  • Add more valid units for mole per mass category

1.16.0 (2023-04-26)

  • Add more units for mole per mass quantity.

  • Define a molality category.

1.15.0 (2023-04-03)

  • Add cubic meter per day per kilogram-force per square centimeter (m3/d/kgf/cm2) unit to productivity index category.

  • Add gauge pressures units Pa(g), kPa(g), bar(g), and kgf/cm2(g) to pressure category.

1.14.1 (2022-11-03)

  • Add mole per mass quantity (mol/kg).

1.13.0 (2021-11-30)

  • Update Newton second per meter unit from Ns/m to N.s/m to get unit display consistent with other units in the same category (support for the old unit input added).

  • Add force per velocity squared quantity (N.s2/m2, lbf.s2/ft2, lbf.s2/in2, kgf.s2/m2).

1.12.0 (2021-11-08)

  • barril is now fully type annotated, being tested with mypy.

  • Array and FixedArray are Generic subclasses, parametrized by the container type.

1.11.1 (2021-10-08)

  • Fixed typos in unit names: kilkodynes (unit=kdyne) fixed to kilodynes, killowatts/cubic metre degree Kelvin (unit=kW/m3.K) fixed to kilowatts/cubic metre degree Kelvin.

1.11.0 (2021-06-18)

  • Add new unit: “Stokes” (St).

  • Use TypeCheckingSupport from oop-ext 1.1.

  • Add cubic feet per day per psi (ft3/psi.d) unit to productivity index category.

  • Add calories/metre hour degree Celsius (cal/m.h.degC) unit to thermal conductivity category.

  • Add calorie/hour square metre deg C (cal/h.m2.degC) unit to heat transfer coefficient category.

  • Add std cubic metres/second (sm3/s) unit to standard volume per time category.

  • Add million std cubic feet/stock tank barrel (MMscf/stb), stock tank barrel/std cubic feet (stb/scf) and stock tank barrel/million std cubic feet (stb/MMscf) units to standard volume per standard volume category.

1.10.0 (2020-10-22)

  • Removing thermodynamic temperature as default category for degF and degR units.

1.9.0 (2020-02-20)

  • New classmethod Array.FromScalars that creates an Array from a List[Scalar].

  • Add new unit: “barrel per second” (bbl/s).

1.8.0 (2020-01-10)

  • Add new category: “standard volume per standard volume”.

  • Move unit sm3/sm3 from “volume per volume” to “standard volume per standard volume”.

1.7.2 (2019-10-16)

  • _foundation has been renamed to _util, and a lot of functions which were not being used anymore have been removed.

  • Add new unit category mass temperature per mol (kg.K/mol).

  • Some units have been renamed as they were deemed out-of-place in the oil industry to something more usual (for example, 1000ft3/d became Mcf/d). The old representation of those units is still supported, but they will be automatically translated during Quantity creation, so this change should not affect users much.

  • Fix division 1.0 / a where a is a Scalar or Array and also add support for floor division, i.e., operations like a // b where a and b are Scalar or Array (and combinations with float or int).

  • Add new unit category for Joule-Thomson coefficient (K/Pa).

  • Add new temperature unit for density derivative in respect to temperature (kg/m3.K).

1.7.1 (2019-10-03)

  • Fixed bug in / and - operators for FixedArray.

1.7.0 (2019-06-18)

  • Add unit system.

1.6.1 (2019-04-11)

  • Change export to include ICurve and Curve and exclude IReadOnlyScalar.

1.6.0 (2019-04-10)

  • Add curve implementation.

  • Add support to interfaces from oop-ext.

  • Drop support to Python 2.

1.5.0 (2019-01-09)

  • Quantity.CheckValue now raises QuantityValidationError instead of ValueError.

1.4.0 (2018-12-17)

  • Add new category for “concentration ratio”.

1.3.0 (2018-10-13)

  • Add “per micrometre” unit to “per length” category.

  • Remove internal barril.fixtures module as it is not necessary or part of the public API.

1.2.0 (2018-09-26)

  • Add units for defining Spring-Dashpot movements.

1.1.0 (2018-09-24)

  • Add number and fraction properties to FractionValue.

  • Add unit read-only property to Quantity.

1.0.0 (2018-09-21)

  • First feature release.

0.1.0 (2018-09-03)

  • First release on PyPI.

Download files

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

Source Distribution

barril-2.2.1.tar.gz (182.2 kB view details)

Uploaded Source

Built Distribution

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

barril-2.2.1-py3-none-any.whl (161.2 kB view details)

Uploaded Python 3

File details

Details for the file barril-2.2.1.tar.gz.

File metadata

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

File hashes

Hashes for barril-2.2.1.tar.gz
Algorithm Hash digest
SHA256 ee74e1adc927f2ec9b044988292967a09742059197dc705461762a440ca7e3d7
MD5 cf0f32b0deaf941b7ce6c491ced6e082
BLAKE2b-256 6499c1328eac1d89c5de1f3087a988fcb557ca298da50ea9c0ea8b5bf2ff439f

See more details on using hashes here.

Provenance

The following attestation bundles were made for barril-2.2.1.tar.gz:

Publisher: deploy.yml on ESSS/barril

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

File details

Details for the file barril-2.2.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for barril-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cb828f5084e743812791248770db6d359d2972a5277f0ae61114ece3cb25a82c
MD5 3b3f46b5a14c62d55f54b3aebfd15428
BLAKE2b-256 254a1d7b5161d85bb67fb81380b072b82384dd0f55a37282fd9865097b6662b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for barril-2.2.1-py3-none-any.whl:

Publisher: deploy.yml on ESSS/barril

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

Release history Release notifications | RSS feed

This release

2.2.1 This release

2 files

2.2.0

2 files

2.1.0

2 files

2.0.1

2 files

1.19.0

2 files

1.18.0

2 files

1.17.0

2 files

1.16.0

2 files

1.15.0

2 files

1.14.2

2 files

1.14.1

2 files

1.13.0

2 files

1.12.0

2 files

1.11.1

2 files

1.11.0

2 files

1.10.0

2 files

1.9.0

2 files

1.8.0

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.1

2 files

1.6.0

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

0.1

1 file

0.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page