Skip to main content

A simple wrapper around the 'units' shell command

Project description

Unit Converter

The unit converter is a simple utility to convert units. While it may seem to be a trivial task initially, there are many different conventions and combinations. Instead of inventing yet another unit conversion utility, this package reuses the units shell command, which has the best implementation that I have found out there.

>>> from keas.unit import unit

The first step is to instantiate the unit converter object:

>>> converter = unit.UnitConverter()

By default the converter uses the following path for the units command:

>>> converter.executable
'/usr/bin/units'

So let’s make a simple unit conversion:

>>> converter.convert('atm', 'kPa')
Decimal("101.325")

There are several options that can be set on the conversion object. The first one is the output format, which allows you to specify the precision on the output. Of course, we then convert this output to a decimal:

>>> converter.format
>>> converter.format = '%.15g' # 15 decimal places
>>> converter.convert('atm', 'kPa')
Decimal("101.325")

Next you can specify additional unit conversion data filenames, so that custom conversions can be loaded:

>>> import os
>>> datafile = os.path.join(
...     os.path.dirname(unit.__file__), 'test-conversions.dat')
>>> converter.filenames
>>> converter.filenames = ('', datafile)
>>> converter.convert('keas', 'l')
Decimal("0.54321")
>>> converter.filenames = None

An empty name means that the default data file should be loaded as well.

The final option allows you to set whether the ‘-’ character should be treated as a multiplication operator, since it is used as such in some notations.

>>> converter.minusAsProduct
False
>>> converter.minusAsProduct = True
>>> converter.convert('m-m-m', 'l')
Decimal("1000")

Finally, let’s have a look at some error scenarios.

  1. There is no known conversion from one unit to another:

>>> converter.convert('kg', 'm')
Traceback (most recent call last):
...
UnitConversionError: ('/usr/bin/units -t -o %.15g -p "kg" "m"',
                      'conformability error')
  1. One of the units is unknown:

>>> converter.convert('kg', 'foo')
Traceback (most recent call last):
...
UnitConversionError: ('/usr/bin/units -t -o %.15g -p "kg" "foo"',
                      "Unknown unit 'foo'")
  1. One of the units contains an invalid expression:

>>> converter.convert('kg', 'm *')
Traceback (most recent call last):
...
UnitConversionError: ('/usr/bin/units -t -o %.15g -p "kg" "m *"',
                      "Error in 'm *': Parse error")

CHANGES

1.0.0 (2009-07-26)

  • Initial release.

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

keas.unit-1.0.0.tar.gz (5.3 kB view details)

Uploaded Source

File details

Details for the file keas.unit-1.0.0.tar.gz.

File metadata

  • Download URL: keas.unit-1.0.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for keas.unit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5589ff39acfe8c6a52a75ad9d80ef05e680f30466d806a17665fa55b38b2c26b
MD5 0d593ac639e5d5423d984c022bc8d681
BLAKE2b-256 7999436dd14158dc9c7a0bfd50acf802ac1c84216223bc95acf17d5b960b3c70

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page