Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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

Metadata

Release files for typedunits 0.0.2.dev20251020203009

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

Built distributions (wheels)

Table of built distributions (wheels) for typedunits 0.0.2.dev20251020203009
File
typedunits-0.0.2.dev20251020203009-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
typedunits-0.0.2.dev20251020203009-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
typedunits-0.0.2.dev20251020203009-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
typedunits-0.0.2.dev20251020203009-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
typedunits-0.0.2.dev20251020203009-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
typedunits-0.0.2.dev20251020203009-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
typedunits-0.0.2.dev20251020203009-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
typedunits-0.0.2.dev20251020203009-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
typedunits-0.0.2.dev20251020203009-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
typedunits-0.0.2.dev20251020203009-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
typedunits-0.0.2.dev20251020203009-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
typedunits-0.0.2.dev20251020203009-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
typedunits-0.0.2.dev20251020203009-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
typedunits-0.0.2.dev20251020203009-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
typedunits-0.0.2.dev20251020203009-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
typedunits-0.0.2.dev20251020203009-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
typedunits-0.0.2.dev20251020203009-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
typedunits-0.0.2.dev20251020203009-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
typedunits-0.0.2.dev20251020203009-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
typedunits-0.0.2.dev20251020203009-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 30.3 MB

Release files / typedunits-0.0.2.dev20251020203009-cp313-cp313-win_amd64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp313-cp313-win_amd64.whl
Size 739.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
55220c94542d28e5d98010de411245cf93ae570e28812dbd4e36f20428aa448d
BLAKE2b-256 checksum
How to use checksums
aab22aa6d02c121feb3635b9a4f15fadfb9e8d62a1514d225774b19b576ba3bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp313-cp313-win32.whl

Download URL typedunits-0.0.2.dev20251020203009-cp313-cp313-win32.whl
Size 685.0 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
603d40fad8c93c3be821ad04e095738661fd57574faa6564e119fea2572a4638
BLAKE2b-256 checksum
How to use checksums
a5fcb1415ecbda96242ea368d7a85af6e788625f10f5e66e133813ddb5aa2294
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.7 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c4ba79c2184c4d6830890e859579dd1ba755982c70a2f7b9e4db17f82ab9d550
BLAKE2b-256 checksum
How to use checksums
f84fd78e7f8cd705cea64e9a0d2f8afac74b4e368a7d11c56179fc8b19977f16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 2.6 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fdd95a5b31fbf114abfe8492899e6ff01837b9c915407f16193404da049b58fd
BLAKE2b-256 checksum
How to use checksums
d765d8d33a50e9bf2da6e825620e6baac2f0af14fbf2b6d4f3a96d627e92b82f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp313-cp313-macosx_11_0_arm64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp313-cp313-macosx_11_0_arm64.whl
Size 757.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2e97e806c84c83f965f99fc492889682e09155133d4d2eb1987962471beb1cde
BLAKE2b-256 checksum
How to use checksums
18b4775a708efedb1975cb42cb62575203f229b9acb09c261aa91f7fd0dd42d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp312-cp312-win_amd64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp312-cp312-win_amd64.whl
Size 735.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d5a04f72e6e64f3429302c0fc8ef59ccf4456caced4ec1bd1b4986f582c56c0b
BLAKE2b-256 checksum
How to use checksums
1b4e44631875c8190730985bb4047ea6654e1ca5427ea4d19ed3d52bb0ac338c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp312-cp312-win32.whl

Download URL typedunits-0.0.2.dev20251020203009-cp312-cp312-win32.whl
Size 685.9 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
db2df23918a903fc7fe21b6d645d17d7044536ab7922a3f62db560ea9c8bb8cf
BLAKE2b-256 checksum
How to use checksums
fafda671502685740e247849976e8bb843724cda667fa9699343c538c90cf3c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
758bd1d3f2a1eab14ab3f6bf5e687ab21da174000c2908b39e7bbd1d4a10244e
BLAKE2b-256 checksum
How to use checksums
7aadfbdbd3bb8046a8c3371afeb2b31daeb6961ed69bd026b3adcefc2491caff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 2.6 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f7d4027e0109c93b21bbacef9abcf48e5691ab995348fbb01eef0c288f21541b
BLAKE2b-256 checksum
How to use checksums
ffe23a8d273d29c335098599e5c60e5f61117f988bc6d814d0b169d0d7fd87e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp312-cp312-macosx_11_0_arm64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp312-cp312-macosx_11_0_arm64.whl
Size 756.9 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
86e001d3cdbcacd1a4e9da320482f55bca44c40fe9504f5f148d4d07c2693dd1
BLAKE2b-256 checksum
How to use checksums
a1c4584f409cf1d778763305c88d4245938b67da97ffc7380f10f3b0fc950aaa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp311-cp311-win_amd64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp311-cp311-win_amd64.whl
Size 816.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
39ddaa1f1699724d313c77d1405f3e621d5a0aa45e904b31cfd469a005612b9e
BLAKE2b-256 checksum
How to use checksums
cb33d4a7d67808db70c2192bb039d51ca5080e3fbe92ff62f4f27d9ef26d1598
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp311-cp311-win32.whl

Download URL typedunits-0.0.2.dev20251020203009-cp311-cp311-win32.whl
Size 750.4 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
2df5b3d68c73e0d925fa015df17a0d07d59a72b4015f66d5aab1ad557a83ec68
BLAKE2b-256 checksum
How to use checksums
fe7480993b4b0e51743b78fa050ec30a6e7fd88443156aaeb639d3d7eb2085e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4a1b393d5dda2cf437632572976d187fd672613b50165c6f611a1416e97a7440
BLAKE2b-256 checksum
How to use checksums
b67d90e87053c3415e42e588f48a2abba80a615fcc0265f50cd1efffa8f44f6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 2.7 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
7bb6be8514b26c29f12b82ec4d6c73c49c28089b180bd3a4151d4738517081ef
BLAKE2b-256 checksum
How to use checksums
21783dbbc125642a46b385aa9c96fbefe8605f564594e7abe2eb6a6b2d687bb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp311-cp311-macosx_11_0_arm64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp311-cp311-macosx_11_0_arm64.whl
Size 784.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b593e1f85170b6e8a4eec6afe55a80b2a421580079dacf5e2f2d72db81459072
BLAKE2b-256 checksum
How to use checksums
a3b803b090205d91f738d1e3c3f9a31b73414da9cfbadb4de045a3984be60d44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp310-cp310-win_amd64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp310-cp310-win_amd64.whl
Size 815.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
590ab0d2d59424901a48c062cd79b53608ddeaf0e4d065d28c647af9628325d8
BLAKE2b-256 checksum
How to use checksums
3dd69aabc200aeb97842a7a9850fd07d835b4b5000b5ff9cbcd2db54abf8dc0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp310-cp310-win32.whl

Download URL typedunits-0.0.2.dev20251020203009-cp310-cp310-win32.whl
Size 720.8 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
8acac3d821df719ddd49e05fdc4ea9188aeb0509e229a8f96071ffb57dee3fca
BLAKE2b-256 checksum
How to use checksums
8a124de589b6ea2ddfa95f25dc91aa9caaad688414c592a2ec05a15014c3648d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.7 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e0f19e97420c83c7bf74a979925e89a2f650a631a419483a249a3bd3c0d5bd2d
BLAKE2b-256 checksum
How to use checksums
715ed45af9cf6dcd5774ad1e611e21edc8f149f0277ba00a916c2d3fd486b87f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 2.6 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e44db1a6a6947b93f7e34d41481638224c67311b9e040181f73f161870772991
BLAKE2b-256 checksum
How to use checksums
6c76004cc5ad0b16ab901b2026978bdf85de0f626b84164ee54966b6e67bfaf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release files / typedunits-0.0.2.dev20251020203009-cp310-cp310-macosx_11_0_arm64.whl

Download URL typedunits-0.0.2.dev20251020203009-cp310-cp310-macosx_11_0_arm64.whl
Size 747.0 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4026c6fcbded191cc0d806973f425be13d7cad563fc2b3baa0a34d1edddcb342
BLAKE2b-256 checksum
How to use checksums
df0c8156c16fb0da316be47b133cbead6ab2224da6754ca3eeaca1f6eff60781
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.24

Release history Release notifications | RSS feed

0.0.2

30 release files

This release

0.0.1

24 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