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.

Release files for barril 2.2.1

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

Source distribution (sdist)

Source distribution for barril 2.2.1
File Size Uploaded
barril-2.2.1.tar.gz 182.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for barril 2.2.1
File Interpreter ABI Platform
barril-2.2.1-py3-none-any.whl Python 3 none any Details

Total release size:343.4 kB

Release files / barril-2.2.1.tar.gz

Download URL barril-2.2.1.tar.gz
Size 182.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ee74e1adc927f2ec9b044988292967a09742059197dc705461762a440ca7e3d7
BLAKE2b-256 checksum
How to use checksums
6499c1328eac1d89c5de1f3087a988fcb557ca298da50ea9c0ea8b5bf2ff439f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jan 16, 2026.

Transparency log

Release files / barril-2.2.1-py3-none-any.whl

Download URL barril-2.2.1-py3-none-any.whl
Size 161.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb828f5084e743812791248770db6d359d2972a5277f0ae61114ece3cb25a82c
BLAKE2b-256 checksum
How to use checksums
254a1d7b5161d85bb67fb81380b072b82384dd0f55a37282fd9865097b6662b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jan 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.2.1 This release

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.1

2 release files

1.19.0

2 release files

1.16.0

2 release files

1.13.0

2 release files

1.11.1

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.1

1 release file

0.0.0

2 release files

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