Skip to main content

GitHub

PyPI PyPI - Python Version PyPI - Downloads

Libraries.io dependency status for GitHub repo GitHub last commit GitHub Release Date

GitHub commits since latest release (by date)

Code style: black

misura

>>> from misura.quantities import quantity
>>> quantity(7, "m", 1.5) / quantity(2, "s")
3.5 ± 0.75 m / s

>>> from misura.currencies import currency
>>> currency(2, "EUR") + currency(3, "USD")
5.17 USD

Python library providing effortless unit handling and currency conversion for scientific and engineering purposes.

misura is a powerful Python library designed to facilitate the efficient handling of units of measure for scientific and engineering applications, including currencies handling and conversion with constantly updated exchange rates. With its unified interface for dealing with different units and their conversions, you can quickly and accurately complete calculations without the need for complex manual conversions. Additionally, misura supports uncertainty handling allowing you to work with physical quantities and their associated uncertainties in a user-friendly and intuitive fashion. What's more, misura grants you the flexibility to create custom units of measure, so you can work in your preferred units.

Make sure to take a look at the documentation, at the contributing guidelines and at the examples.

Features

  • Mathematical and logical operations between quantities: Example, example
  • Currencies handling with daily updated exchange rates. New feature
  • Uncertainty handling: Example New feature
  • Manual conversions: Example
  • Automatic conversions on operations: Example
  • Unpack and pack derived units: Example, example
  • User defined base and derived units: Example
  • Large compatibility with other libraries: Example
  • Custom exceptions: Example

Installation

Installing misura

misura can be installed from PyPI by:

python3 -m pip install --upgrade misura

Verifying installation and base informations

By:

python -m misura

you'll be able to verify the installation of misura along getting some informations about the library:

misura

Python library providing effortless unit handling and currency conversion for scientific and engineering purposes.

Developed by Andrea Di Antonio, more on https://github.com/diantonioandrea/misura
Documentation on https://misura.diantonioandrea.com
Bug tracker on https://github.com/diantonioandrea/misura/issues

Importing misura

misura can be imported by:

import misura

Examples

These are some examples of operations between quantities.
Note that, by enabling globals.style.unitHighlighting, misura uses colorama to highlight units of measure. by disabling it, the output is in the form of num [unit]

Mathematical operations

from misura.quantities import quantity

num1 = quantity(2, "m s-1")
num2 = quantity(4, "m s-1")
num3 = quantity(2, "s", .5)

print(num1 + num2)
print((num1 + num2).dimension())
print(num1 * num2)
print(num1 / num3)
print(num3 ** 2)

The output is:

6 m / s
[length / time]
8 m(2) / s(2)
1.0 ± 0.25 m / s(2)
4 ± 2.0 s(2)

Currencies

from misura.currencies import currency

cur1 = currency(2, "EUR")
cur2 = currency(3, "USD")

print(cur0 * 2)
print(cur1 + cur0)

The output is:

4 EUR
5.17 USD

Working with other libraries

from misura.quantities import quantity, convert
from decimal import Decimal, getcontext
import numpy

getcontext().prec = 40

arr1 = numpy.array([quantity(2, "m"), quantity(50, "m s-1"), quantity(2, "kg")])
arr2 = quantity(numpy.array([1, 2, 3]), "J")
num2 = quantity(numpy.sqrt(Decimal(5)), "kg")

print(arr1 * 3)
print(arr2 ** 2)
print(num2)

The output is:

[6 m 150 m / s 6 kg]
[1 4 9] J(2)
2.236067977499789696409173668731276235441 kg

Unit highlighting helps distinguish between different numbers.

User defined units of measure

from misura.quantities import quantity, convert
from misura.tables import addUnit

addUnit("volume", {"L": 1, "daL": 10, "hL": 100, "kL": 1000, "dL": 0.1, "cL": 0.01, "mL": 0.001}, "dm3")

num1 = quantity(3, "L")

print(convert(num1, "cm3"))

The output is:

3000.0 cm(3)

Manual and automatic conversion

from misura.quantities import quantity, convert

num1 = quantity(2, "m2")
num2 = quantity(4, "kg")
num3 = quantity(400, "m s-1")

print(convert(num1, "cm2"))
print(num2 + quantity(5, "g"))
print(convert(num3, "km", partial=True))

The output is:

20000.0 cm(2)
4.005 kg
0.4 km / s

Unpack derived quantities

from misura.quantities import quantity, unpack

num1 = quantity(2, "J2")
num2 = quantity(4, "C H")

print(unpack(num1))
print(unpack(num2, "H"))

The output is:

2.0 kg(2) m(4) / s(4)
4.0 C kg m(2) / A(2) s(2)

Pack derived quantities

from misura.quantities import quantity, pack

num1 = quantity(3, "N m T")
num2 = quantity(45, "A2 s2")

print(pack(num1, "J", ignore="T"))
print(pack(num2, "C", full=True))

The output is:

3.0 J T
45.0 C(2)

Comparisons

from misura.quantities import quantity

num1 = quantity(2, "m s-1")
num2 = quantity(4, "m s-1")
num3 = quantity(2, "s")

print(num1 > num2)
print(num2 < 6)
print(num1 > num3)

The output is:

False
True

misura.conversion.ConversionError: cannot convert from 's' to 'm s-1'
raised by: '2 s' -> 'm s-1'

Unary operators and functions

from misura.quantities import quantity
from misura.globals import style
from math import trunc

style.quantityHighlighting = False

num1 = quantity(2, "m s-1")
num2 = quantity(4.5, "m s-1")
num3 = quantity(-2, "s")

print(-num1)
print(trunc(num2))
print(abs(num3))

The output is:

-2 [m / s]
4 [m / s]
2 [s]

Formatting

from misura.quantities import quantity

num1 = quantity(2000, "m s-1")

print("Exponential notation: {:.2e}".format(num1))

The output is:

Exponential notation: 2.00e+00 m / s

Metadata

Release files for misura 1.6.3

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

Source distribution (sdist)

Source distribution for misura 1.6.3
File Size Uploaded
misura-1.6.3.tar.gz 17.5 kB Details

Built distribution (wheel)

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

Total release size: 35.4 kB

Release files / misura-1.6.3.tar.gz

Download URL misura-1.6.3.tar.gz
Size 17.5 kB
Tags Source
SHA-256 checksum
How to use checksums
55b40105cc9b631113cf6ed7b2d55f36366604e9a18f7422d8cd5c010c597419
BLAKE2b-256 checksum
How to use checksums
93240736a04e2b723799fbf38baf00cec733de5cb7e5cdc0a01b7d40f331cc80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / misura-1.6.3-py3-none-any.whl

Download URL misura-1.6.3-py3-none-any.whl
Size 17.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b0e54f29b6e9a652afe242846a544b531d9b8ea5cd62628145ecd97e82a3412f
BLAKE2b-256 checksum
How to use checksums
8a10ebbe182cdecc66918d8d76d85f6b1ce59b8f36c6d3e21b53c0a4496bf1c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release history Release notifications | RSS feed

This release

1.6.3 This release

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

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

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