Skip to main content

A fast units and dimensions library with support for static dimensionality checking and protobuffer serialization.

Project description

TUnits - Fast Python Units

Continuous Integration

Implements unit of measurement arithmetic, where a number is associated with a product of powers of base units and values with compatible units can be added.

The library is written in Cython for speed. The library provides the ability to statically check dimensionality type (see below) and a limited protobuffer serialization support for select units (see below). Contributions to extend support for more units are welcome.

A precompiled wheel can be installed using pip install typedunits [--pre].

Example

>> import tunits
>> from tunits.units import meter, km, N, MHz

>> print(3*MHz)
Frequency(3, 'MHz')

>> print(5*meter + km)
Length(1005.0, 'm')

>> print(N/meter)
N/m

>> print((N/meter).in_base_units())
kg/s^2

>> print(2*km / tunits.Value(3, 's'))
0.666666666667 km/s

Static Type Check

TypedUnits provides the ability to statically check the dimensionality of variables and parameters. For example mypy would complain about incompatible types for the following code.

from tunits import Frequency, LengthArray
from tunits.units import meter, km, MHz

def frequency_fn(f: Frequency) -> Frequency:
    return 3*f

x = 2 * meter
x_arr = LengthArray([1, 2], km)
y = 3 * km
f = 7 * MHz

# okay
print(frequency_fn(f))
print(x + y)
print(x_arr - y)

# not okay
print(frequency_fn(x))
print(f + x)
print(x - f)
frequency_fn(x_arr)
$ mypy my_code.py
my_code.py:18: error: Argument 1 to "frequency_fn" has incompatible type "Length"; expected "Frequency"  [arg-type]
my_code.py:19: error: No overload variant of "__add__" of "Value" matches argument type "Length"  [operator]
my_code.py:19: note: Possible overload variants:
my_code.py:19: note:     def __add__(self, int | float | complex | number[Any], /) -> Frequency
my_code.py:19: note:     def __add__(self, ValueArray | list[Any] | tuple[Any] | ndarray[Any, dtype[Any]], /) -> ValueArray
my_code.py:19: note:     def __add__(self, Frequency, /) -> Frequency
my_code.py:20: error: No overload variant of "__sub__" of "Value" matches argument type "Frequency"  [operator]
my_code.py:20: note: Possible overload variants:
my_code.py:20: note:     def __sub__(self, int | float | complex | number[Any], /) -> Length
my_code.py:20: note:     def __sub__(self, list[Any] | tuple[Any] | ndarray[Any, dtype[Any]], /) -> ValueArray
my_code.py:20: note:     def __sub__(self, Length, /) -> Length
my_code.py:21: error: Argument 1 to "frequency_fn" has incompatible type "LengthArray"; expected "Frequency"  [arg-type]
Found 4 errors in 1 file (checked 1 source file)

Serialization support

TypedUnits provides protobuffer serialization support for selected units. Contributions are welcome to increase serialization coverage.

>> from tunits import Frequency
>> from tunits.units import MHz
>>
>> v = 3*MHz
>> msg = v.to_proto()
>> print(msg)
units {
  unit: HERTZ
  scale: MEGA
}
real_value: 3

>> Frequency.from_proto(msg)
Frequency(3.0, 'MHz')

Installation

  1. To install a precompiled wheel (add --pre for prelease version)

    pip install typedunits # [--pre] 
    
  2. To locally build the latest version from the main branch

    pip install git+https://github.com/quantumlib/TypedUnits
    
  3. For a local editable copy

    git clone https://github.com/quantumlib/TypedUnits
    cd TypedUnits
    pip install -e .
    

Development and Testing

  1. Clone the repository.

    git clone https://github.com/quantumlib/TypedUnits
    
    cd TypedUnits
    

    All future steps assume you are in the repository's directory.

  2. Install dev environment dependencies.

    pip install -r dev_tools/dev.env.txt
    
  3. Install TUnits

    pip install -e .
    
  4. Test.

    pytest
    

Formatting

dev_tools/format.sh  # to format
dev_tools/format.sh --check  # to verify format

Note: This is not an officially supported Google product

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

typedunits-0.0.2.dev20250925010001-cp313-cp313-win_amd64.whl (738.8 kB view details)

Uploaded CPython 3.13Windows x86-64

typedunits-0.0.2.dev20250925010001-cp313-cp313-win32.whl (684.4 kB view details)

Uploaded CPython 3.13Windows x86

typedunits-0.0.2.dev20250925010001-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

typedunits-0.0.2.dev20250925010001-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

typedunits-0.0.2.dev20250925010001-cp313-cp313-macosx_11_0_arm64.whl (756.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

typedunits-0.0.2.dev20250925010001-cp313-cp313-macosx_10_13_x86_64.whl (799.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

typedunits-0.0.2.dev20250925010001-cp312-cp312-win_amd64.whl (735.3 kB view details)

Uploaded CPython 3.12Windows x86-64

typedunits-0.0.2.dev20250925010001-cp312-cp312-win32.whl (685.5 kB view details)

Uploaded CPython 3.12Windows x86

typedunits-0.0.2.dev20250925010001-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

typedunits-0.0.2.dev20250925010001-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

typedunits-0.0.2.dev20250925010001-cp312-cp312-macosx_11_0_arm64.whl (756.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

typedunits-0.0.2.dev20250925010001-cp312-cp312-macosx_10_13_x86_64.whl (805.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

typedunits-0.0.2.dev20250925010001-cp311-cp311-win_amd64.whl (815.5 kB view details)

Uploaded CPython 3.11Windows x86-64

typedunits-0.0.2.dev20250925010001-cp311-cp311-win32.whl (749.9 kB view details)

Uploaded CPython 3.11Windows x86

typedunits-0.0.2.dev20250925010001-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

typedunits-0.0.2.dev20250925010001-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

typedunits-0.0.2.dev20250925010001-cp311-cp311-macosx_11_0_arm64.whl (783.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

typedunits-0.0.2.dev20250925010001-cp311-cp311-macosx_10_9_x86_64.whl (850.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

typedunits-0.0.2.dev20250925010001-cp310-cp310-win_amd64.whl (815.5 kB view details)

Uploaded CPython 3.10Windows x86-64

typedunits-0.0.2.dev20250925010001-cp310-cp310-win32.whl (720.3 kB view details)

Uploaded CPython 3.10Windows x86

typedunits-0.0.2.dev20250925010001-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

typedunits-0.0.2.dev20250925010001-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

typedunits-0.0.2.dev20250925010001-cp310-cp310-macosx_11_0_arm64.whl (746.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

typedunits-0.0.2.dev20250925010001-cp310-cp310-macosx_10_9_x86_64.whl (812.3 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d039562a73f5427b30aa1779e560ba970c587ea44f90ed46501cbeffe9ffd568
MD5 9c90bd4dc6f0028326df546df74820e6
BLAKE2b-256 e8174328a4ffc6031da61a9c16e7d523bcf58cb23042976e33d5c9b647cbe95b

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp313-cp313-win32.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 da98125c9dc951ddfb0f666373af12111ba644d090e94d038784df47b01eb87e
MD5 9cc51a600f5953dad057c7ba87a122e6
BLAKE2b-256 14fcd633f8cdfca6e4c12b6408adb416917221971343d84441087bd2d1915137

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 995b5cfa5a877985ee2db4131718368e706214afedb8b2b4c27b54c5c21a349e
MD5 8cc093b27546686a3a9c62505f068e65
BLAKE2b-256 aa7647883b2a8c615ba64777e3c281f1acc8f5b918d9c20145f79b1c6a368e8e

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 726cbba7dde18837bcb26f24a6da4f387276bfed83726e2fe07251b38c3515dc
MD5 f8d4dbcd8d07f5446830a64858d6f14b
BLAKE2b-256 a95b01158f8682d523809c05119dddaef49ce51a0c535937abf50dc01ce9d98f

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76779dab7ff6f0440feb3f25ffa64a0d314d8ff5f7078ef9732ca51a3163300e
MD5 0acbf56bdad919a54d8dd20c29fbe7e1
BLAKE2b-256 18f82db967b0788c746f83429a475fcb7e4a73d25c9add13cf99b6cf30d508e5

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 588072d952669c5eebc4ba9402d733bb36e53dc80dbef9dd2f04cfc6da019afa
MD5 90e6b25c62fc40d72df10fcdeb7c9bbc
BLAKE2b-256 a87157ab36f5c2e8e2777776853b43dc2e679c334d66f2750ca533f2f20b54d1

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a891d000bc7d95d3bb31046c5f4a6cc83e6154fe1e613e5961ac3e19f10df0bf
MD5 8a2936ba706e00764c6bd3a6f723ae81
BLAKE2b-256 1d76fce4802325880c693b80a06bd539c02b3ae3b309152e98975305a73f9389

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 25b32238ff34cc460a23659a73fa9a6b8041ce777e298c5b3b7bf759da5d6ee8
MD5 dc9dd43e1574a9959535bc6642d98a37
BLAKE2b-256 fbe600b669b6069ebcb4b65a1e1bc670295445dbcd5bff3a2173848831e2204d

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 be8ac65e3d6723e56139f032db898700dc70fba62093a2a95afc4fdd87366da4
MD5 f09353da5416d23cd5e4e97e4c611d87
BLAKE2b-256 542eca161ba74f0144f2e729fda4e862e74b9875e9db69d88d49d723548c5298

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 770d16cb7b9e6a807f8da4d289c3a5d4507f99db063c2672f6eac19836c6357f
MD5 9b2e4730aa58879979bf648dbee5e512
BLAKE2b-256 0bae6c149d2bd77408ef05ea12cf7e5854e68af6696f9c5c74275e1288af29b8

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10691d3fe35b245b051fdda5b07ccc39c7c98572f785609a904ecf5b28a8cce2
MD5 743141ef89f4ee2823107bf0a50d95fe
BLAKE2b-256 c174fb7ccf198537ef83b62de1eac33b5d7c6da50aff36a3a42659577e969bab

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d0153ada7f803af067d635ef1132af7a21c187518be5896ccdf72c9474899c4f
MD5 ee4c38ab5b0c016266d61e6ba677d6c2
BLAKE2b-256 2bb1c2466c106eb0d166c8b6ef771bb13a2f72cc317952dbdaba70f91a682cb5

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 076f8fff85de5a085a3f0bfbd04ca3ca474f49e2caeb55d4bbd31d493aa47d34
MD5 e93751831b1179b62b8933e18da7a404
BLAKE2b-256 8cf7dd8b334e3a05bd9e24aa96d8a59a00fde7c827188d3969561da7eed5909d

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 599cc72a5c597eb01cdfff4499fe9b850b71218072f3c62a8db92a14822e4076
MD5 8487e36b34cc039d91867a073cba268c
BLAKE2b-256 79c8157dc17f4d244aa64329386cf68609bd283e92e8bb8f51be4dda51d167a9

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 382ac55ced1f7d3d14a7c164e59c3b162e5ce76e86eacfe3b7b77b717a41f87d
MD5 961efa6fbe73c0e2c6ca38a124f03106
BLAKE2b-256 4b825eb80353e8952678ba14518471622b52ec4bae9da09574118e77faf854e1

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a15e769b6ad9203ffd7a3ce996edac15adce89970d79b7e6418e0640818608e8
MD5 1bb909816b0159a0f56ef8f7ee842948
BLAKE2b-256 10347661c38677d63f5195a797d219c7b15cfd654ec64f5ae8bd9927c4923dc6

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3c93c6f28fc4602af2b2f038d6d059f955367c67a08aefa080aa7785c3c5ebd
MD5 f54e874e36af0de98ad2a2738e605641
BLAKE2b-256 b8eccc5c0f623b21ac3a67cbfb2fb5207340839ffeb8d88ed366dfd9b2552d48

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cc15146ce28e6026f4b3059ae30ceb6b2b7640de8578363730231fb9df340adf
MD5 fc7f45c0078abeae6f5f99565895b12d
BLAKE2b-256 79cfa4becf578c07aa0f34b2c8906354b89d7d2d6b30cab8372a8943703afbc0

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3413589c3d48cdbcbe384cc6568ebf0da23d6ce9d2d50a8d6b2ea7af02af3e4e
MD5 fb39943e2c7ceae43ee8411011efed60
BLAKE2b-256 0477d5a627e16bfda40a173ff5996a5c47abb1035aad140e2f1522fb94d3b8cc

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 0c73691783109a3827015cc86ff199ebe6f2c1d4806867a07f8b905ccefff4ba
MD5 a50f8347970ae6f374a30e36342a02b3
BLAKE2b-256 ac204da594a994bd1f4eece2461b49168288f2ea718c2b7d85e42e3af7d5f20f

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e3bb28b47c13bbbef89ec8ea8a166a6d3d77311127e877dc90422cad6fd75099
MD5 ca307651b46e9762d408d60510d73426
BLAKE2b-256 bfc526e30a6ccd35c6f84b8f826bdec28e4b57638031f913b053375408f0d1c9

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ed1f30f68d53f16362edec898cc1cbe9660a09ef19798b5e231557e0bcbd498b
MD5 7e97beba1767b270636702034107d4e2
BLAKE2b-256 ababb2fc6c7ec4e00f2d7ae06b1e548100751da8e73c3ff245e0a2bc0ea6a69c

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ba5a4a9c3525565ae39d96df2c4e5c37850d810fe74fb890bd64e01deebbf3f
MD5 1399c9f1b68523eade01427ebe25afa6
BLAKE2b-256 e7502bcd7487e74089221567daa29ba1290a41475eac66f2f66243f4b786c057

See more details on using hashes here.

File details

Details for the file typedunits-0.0.2.dev20250925010001-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for typedunits-0.0.2.dev20250925010001-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1ab0b140f528ce994f29f18e21082ab6524c56ffcf2e31208eb3641c0415e173
MD5 a77da93d2a2fed5ab5726e0071baa66f
BLAKE2b-256 2c2bf2802bf23ef7bbe0ec08f8eaa4a739290e4a0064e554710f6718130af6f0

See more details on using hashes here.

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