Skip to main content

A refreshing functional take on deep learning, compatible with your favorite libraries

Project description

Thinc: A refreshing functional take on deep learning, compatible with your favorite libraries

From the makers of spaCy and Prodigy

Thinc is a lightweight deep learning library that offers an elegant, type-checked, functional-programming API for composing models, with support for layers defined in other frameworks such as PyTorch, TensorFlow and MXNet. You can use Thinc as an interface layer, a standalone toolkit or a flexible way to develop new models. Previous versions of Thinc have been running quietly in production in thousands of companies, via both spaCy and Prodigy. We wrote the new version to let users compose, configure and deploy custom models built with their favorite framework.

Azure Pipelines Current Release Version PyPi Version conda Version Python wheels Code style: black Open demo in Colab

🔥 Features

  • Type-check your model definitions with custom types and mypy plugin.
  • Wrap PyTorch, TensorFlow and MXNet models for use in your network.
  • Concise functional-programming approach to model definition, using composition rather than inheritance.
  • Optional custom infix notation via operator overloading.
  • Integrated config system to describe trees of objects and hyperparameters.
  • Choice of extensible backends.
  • Read more →

🚀 Quickstart

Thinc is compatible with Python 3.6+ and runs on Linux, macOS and Windows. The latest releases with binary wheels are available from pip. Before you install Thinc and its dependencies, make sure that your pip, setuptools and wheel are up to date. For the most recent releases, pip 19.3 or newer is recommended.

pip install -U pip setuptools wheel
pip install thinc

See the extended installation docs for details on optional dependencies for different backends and GPU. You might also want to set up static type checking to take advantage of Thinc's type system.

⚠️ If you have installed PyTorch and you are using Python 3.7+, uninstall the package dataclasses with pip uninstall dataclasses, since it may have been installed by PyTorch and is incompatible with Python 3.7+.

📓 Selected examples and notebooks

Also see the /examples directory and usage documentation for more examples. Most examples are Jupyter notebooks – to launch them on Google Colab (with GPU support!) click on the button next to the notebook name.

Notebook Description
intro_to_thinc
Open in Colab
Everything you need to know to get started. Composing and training a model on the MNIST data, using config files, registering custom functions and wrapping PyTorch, TensorFlow and MXNet models.
transformers_tagger_bert
Open in Colab
How to use Thinc, transformers and PyTorch to train a part-of-speech tagger. From model definition and config to the training loop.
pos_tagger_basic_cnn
Open in Colab
Implementing and training a basic CNN for part-of-speech tagging model without external dependencies and using different levels of Thinc's config system.
parallel_training_ray
Open in Colab
How to set up synchronous and asynchronous parameter server training with Thinc and Ray.

View more →

📖 Documentation & usage guides

Documentation Description
Introduction Everything you need to know.
Concept & Design Thinc's conceptual model and how it works.
Defining and using models How to compose models and update state.
Configuration system Thinc's config system and function registry.
Integrating PyTorch, TensorFlow & MXNet Interoperability with machine learning frameworks
Layers API Weights layers, transforms, combinators and wrappers.
Type Checking Type-check your model definitions and more.

🗺 What's where

Module Description
thinc.api User-facing API. All classes and functions should be imported from here.
thinc.types Custom types and dataclasses.
thinc.model The Model class. All Thinc models are an instance (not a subclass) of Model.
thinc.layers The layers. Each layer is implemented in its own module.
thinc.shims Interface for external models implemented in PyTorch, TensorFlow etc.
thinc.loss Functions to calculate losses.
thinc.optimizers Functions to create optimizers. Currently supports "vanilla" SGD, Adam and RAdam.
thinc.schedules Generators for different rates, schedules, decays or series.
thinc.backends Backends for numpy and cupy.
thinc.config Config parsing and validation and function registry system.
thinc.util Utilities and helper functions.

🐍 Development notes

Thinc uses black for auto-formatting, flake8 for linting and mypy for type checking. All code is written compatible with Python 3.6+, with type hints wherever possible. See the type reference for more details on Thinc's custom types.

👷‍♀️ Building Thinc from source

Building Thinc from source requires the full dependencies listed in requirements.txt to be installed. You'll also need a compiler to build the C extensions.

git clone https://github.com/explosion/thinc
cd thinc
python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install -r requirements.txt
pip install --no-build-isolation .

Alternatively, install in editable mode:

pip install -r requirements.txt
pip install --no-build-isolation --editable .

Or by setting PYTHONPATH:

export PYTHONPATH=`pwd`
pip install -r requirements.txt
python setup.py build_ext --inplace

🚦 Running tests

Thinc comes with an extensive test suite. The following should all pass and not report any warnings or errors:

python -m pytest thinc    # test suite
python -m mypy thinc      # type checks
python -m flake8 thinc    # linting

To view test coverage, you can run python -m pytest thinc --cov=thinc. We aim for a 100% test coverage. This doesn't mean that we meticulously write tests for every single line – we ignore blocks that are not relevant or difficult to test and make sure that the tests execute all code paths.

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 Distribution

thinc-8.1.2.tar.gz (180.4 kB view details)

Uploaded Source

Built Distributions

thinc-8.1.2-cp310-cp310-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.10 Windows x86-64

thinc-8.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (804.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

thinc-8.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (759.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

thinc-8.1.2-cp310-cp310-macosx_11_0_arm64.whl (688.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

thinc-8.1.2-cp310-cp310-macosx_10_9_x86_64.whl (759.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

thinc-8.1.2-cp39-cp39-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.9 Windows x86-64

thinc-8.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

thinc-8.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (768.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

thinc-8.1.2-cp39-cp39-macosx_11_0_arm64.whl (692.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

thinc-8.1.2-cp39-cp39-macosx_10_9_x86_64.whl (766.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

thinc-8.1.2-cp38-cp38-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.8 Windows x86-64

thinc-8.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (817.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

thinc-8.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (769.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

thinc-8.1.2-cp38-cp38-macosx_11_0_arm64.whl (683.4 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

thinc-8.1.2-cp38-cp38-macosx_10_9_x86_64.whl (752.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

thinc-8.1.2-cp37-cp37m-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.7m Windows x86-64

thinc-8.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (804.2 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

thinc-8.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (762.4 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

thinc-8.1.2-cp37-cp37m-macosx_10_9_x86_64.whl (746.3 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

thinc-8.1.2-cp36-cp36m-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.6m Windows x86-64

thinc-8.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (807.3 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

thinc-8.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (764.9 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

File details

Details for the file thinc-8.1.2.tar.gz.

File metadata

  • Download URL: thinc-8.1.2.tar.gz
  • Upload date:
  • Size: 180.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.9

File hashes

Hashes for thinc-8.1.2.tar.gz
Algorithm Hash digest
SHA256 147dd04bc5a87f9d48d44292632663dee064d6e199a47dfaa3bb9a2a668f31b5
MD5 484944b5abeddf035103dd205ebf4467
BLAKE2b-256 84471d75eaf0ed82176bd559fc3db74939244ebc31f5efa01ab1b4f3b3650df1

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: thinc-8.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.9

File hashes

Hashes for thinc-8.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1da80e4bb09604e422a21be24abf6f496573b096bbd146049a2081b15e9fdc04
MD5 b39a96434aa7aae0972e2ef6c6766fc8
BLAKE2b-256 502b72bc50925d8f113ede4e07714d086550c8e1f57bb0b9b370a9a5046ae077

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0af471505d04ea1d2e788ce14d76925492cacfaa38eceeba54f318dc0876fdfb
MD5 cda846838d683afb4af10cd6b6e5683f
BLAKE2b-256 6180f59ee2cbd4150acf90390e65fe5fd3e337c708fea7ab81c18ece09eff637

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 91da35a2a529720bb1cd85f7b821972908931283a495d3ce7bd6b2bd191d830d
MD5 0c0c221353e08189f11b480f4e7c09c5
BLAKE2b-256 42a0740871e0977fd32df3d3402233a0f365add7e8d8eb7142eefe7e9303e907

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 adaab1c4838e1ddbd8618593cd86c01ff1c1d614b6004cf8139ae4434a4ac096
MD5 755b41f29a5d31a6ef5c40b72fda04d1
BLAKE2b-256 f55e5b49456663275cd23c7d2498d901c23702193b6bac36f2a288c3fd380aff

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b23e9ae90cdd368de5da802472ca893ef06b8874a5d5c9e058978b975bdaabc8
MD5 543625a8413b4ef4302d3719801798f3
BLAKE2b-256 34508ed7a50dde40ac3968c861237402dd46546c62fade5b4da6fd8c92b4566a

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: thinc-8.1.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.9

File hashes

Hashes for thinc-8.1.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c9f2393d25e4b90b24226329fa561ae6e034a6e3721590bcb2c46f82a67a091d
MD5 c4e81e00d0b16ed933aefb8ff288a9ee
BLAKE2b-256 cedb02249dcc4fadf18eff3fa5fc39f0b55fcb82b71b5e8d73bce59bd9515bbd

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c8aa54fb0a10b95f6e050dee52af385804d359673ebe9557fe9f3675aa3225b
MD5 9f02d267b9877ef732b9440ab8d0f670
BLAKE2b-256 adcc8b6d08b9745ac26d2404d82b9f6863de4f9519ce5fde3de92554d452b3e4

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a8612f4b28746b6eea910f85dfed131b9cc6bf0ae76d1a8521e0b3f30b0493bd
MD5 d3f426a180ef87a87fb56a9e5975a176
BLAKE2b-256 3267de1406e8a9b9e9d146c9c1b366dfb0e88ebd7968e675c302896c2fecf422

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14abcbbc4b76b79aa39ae8922128574bba6cfe88734412922d1581ec30e69219
MD5 860ee1e5512942cd69ee30adf78b4bf4
BLAKE2b-256 59b955ee041dc2d46316fe5e8b29a63686c19558ce5b2c5a17171d93636023e8

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 10ee209aed8870bccca0e88996e8c8fafb4853cb5c704ca2addfe48c2072f369
MD5 395c99e07e484dd8b078a7d2318ac0ee
BLAKE2b-256 59c84d32d36eea130ff9e1b671b20cfa0604fddd1b1df5100b6b4ac03ff4294b

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: thinc-8.1.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.9

File hashes

Hashes for thinc-8.1.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5f24ce11d7f7c87173d0c90c20a31548e28fc46d09bea16c6e00f40f15e0aa01
MD5 c7d4e0bffb03bd08a55aae903fe1ce60
BLAKE2b-256 6a9c012eefcbcb2b227d7eba4515e8f11ee69dadcf1953d2baeb438dae5d8e9b

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f27f4ef150e82847615984f9eff90f83f438093b9b1f6e5fcdaf37ece95b4e8
MD5 7955ea0a77b4c4aea34a607a9c3e3bf0
BLAKE2b-256 2260610318f9a7aa89197ecefa5263baabdc32191dfea293d6847f5c90d5c821

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c6088e8d61b17419a2ea963cacb32f8a7df2100f48af668edc820cf0709a7e28
MD5 438061e648c3bda5baffcd4f98bcce8b
BLAKE2b-256 4d74e550107de2de599b280d162b6ac32d91644c43549556047cbf6b391d8003

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9bc5d5bf543c9357c555d34bcfdb84ce50807443072e31088c23d3401dcd35ed
MD5 fde7d85f3a2cf4f1ea4879afff6d1d91
BLAKE2b-256 aa82c7f944a28b0fef5a58fe3f12b1cdc8a5abddc7cc3be4143b6c3e7bf13893

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3f74963cbc4c8b9dd4a0903452d422cf19c1460edc3c64efe708473833fa8210
MD5 78409301f5be55c3b8730d174ad1db29
BLAKE2b-256 a5e32370c27c8238ff157f09bb50de965744299e4ce9862e5ba1129b6b3da9ed

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: thinc-8.1.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.9

File hashes

Hashes for thinc-8.1.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7816f843be58b6d645b990d9638bc345a0d2fee7657bb1b1e8956a8b14d5c61a
MD5 004d619a81685fe034cecfa972034e8b
BLAKE2b-256 5132711711ed31c8be4dc4d776e26d049569a3c0a2fa39cfc021d707919e51ef

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02efa62df57106f31021cc7dc0554bb4012ab156abf41ba93b303ec91da6b60f
MD5 1c805b8bd9ccebde51b38b33db00ecc9
BLAKE2b-256 f033ef7e57e86ca4d411e6914ed9dd52a6a9269d0c51c293b150b580013e37cf

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ebaf5676cb8ee05734534e2dda6a3d657e625ab60635be052b4164a444189625
MD5 410cde2c359f857d17c0d0d0945b824e
BLAKE2b-256 ca3bde9a6a4882adbd361a77e1ac4dceb5b767d1631044ef2a13a1529bd16c92

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f35a286bc614fc43ea11ded38fc6163225155144f593604aab243594e11fd442
MD5 21d53dd9ed65c61f448daa7f8baa069d
BLAKE2b-256 415b442eda46ddf3c162b2546a04589ae2f1db6d839b4a6f59a3cf98a3773398

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: thinc-8.1.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.9

File hashes

Hashes for thinc-8.1.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 e2dea427e0e05901ce481dd78adac78abf5f971f0e41b284da5163f41a964631
MD5 31ab578126781fc234e2e22fcb61b368
BLAKE2b-256 c3ca358365b56988c485b3c24615358b849803396d28dcad50e573bc7d027e6b

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3e12f270ac15d7e9676f1312d2e9217b4e9366de4bbff13cbafe310dc06f539
MD5 e838d0461ce7d12ae6747d643514dea8
BLAKE2b-256 2b4b1116bf7896e635fafa44f616d70d880c3005f75dc3ed6cf417bb88a74bf6

See more details on using hashes here.

File details

Details for the file thinc-8.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for thinc-8.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 499bc871d6710cbd950b972a0155dbadcffc5995fafdf6a8b1a3794fb5c55521
MD5 7b7fa7fcae92ce637184a835452878c3
BLAKE2b-256 8ceaf86745505787de98fc93c190469b114fefc11ab73eda774344106076b555

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