Skip to main content

Unofficial Keygen SDK for Python. Integrate license activation and offline licensing. Wrapper around keygen-rs rust crate

Project description

Unofficial Keygen Python SDK

The keygen-py package allows Python programs to license using the keygen.sh service. This is a wrapper around the rust package keygen-rs (so a lot of kudos there) to provide python bindings.

Installing

Add this to your pyproject.toml:

[dependencies]
keygen-py = "0.0.1.dev1"

Config

KeygenConfig

Use KeygenConfig to configure the SDK globally. You should set this before making any API calls.

from keygen_sh import set_config, KeygenConfig

set_config(KeygenConfig(
    api_url="https://api.keygen.sh",
    api_prefix="v1",
    api_version="v1.7",
    account="YOUR_KEYGEN_ACCOUNT_ID",
    product="YOUR_KEYGEN_PRODUCT_ID",
    license_key="A_KEYGEN_LICENSE_KEY",
    public_key="YOUR_KEYGEN_PUBLIC_KEY"
))

Usage

Validate a License

To validate a license, configure KeygenConfig with your Keygen account details. Then call the validate function with a device fingerprint (you can use py-machineid for this) or keep it empty depending on your policy:

import asyncio
from keygen_sh import validate

async def amain():
    data = await validate(["YOUR_DEVICE_FINGERPRINT"], [])
    
    # License
    print(data.id, data.name, data.key, data.expiry)

if __name__ == '__main__':
    asyncio.run(amain())

Offline License Key Verification

To verify a signed license key offline:

from keygen_sh import verify, SchemeCode

data = verify(SchemeCode.Ed25519Sign, "A_KEYGEN_LICENSE_KEY")

# data encoded
print(data)

Examples

For more detailed examples, please refer to the examples directory in the repository.

Testing

When implementing a testing strategy for your licensing integration, we recommend mocking the Keygen API responses. This is especially important for CI/CD environments to prevent unnecessary load on Keygen's servers and to stay within your account's daily request limits.

Inspired by

License

This project is licensed under the MIT License.

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

keygen_py-0.0.1.dev6.tar.gz (23.8 kB view details)

Uploaded Source

Built Distributions

keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded PyPy musllinux: musl 1.2+ x86-64

keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded PyPy musllinux: musl 1.2+ i686

keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl (3.7 MB view details)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded PyPy musllinux: musl 1.2+ ARM64

keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded PyPy musllinux: musl 1.2+ x86-64

keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded PyPy musllinux: musl 1.2+ i686

keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl (3.7 MB view details)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded PyPy musllinux: musl 1.2+ ARM64

keygen_py-0.0.1.dev6-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

keygen_py-0.0.1.dev6-cp312-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12 Windows x86-64

keygen_py-0.0.1.dev6-cp312-none-win32.whl (1.3 MB view details)

Uploaded CPython 3.12 Windows x86

keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_armv7l.whl (3.7 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

keygen_py-0.0.1.dev6-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

keygen_py-0.0.1.dev6-cp312-cp312-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

keygen_py-0.0.1.dev6-cp311-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11 Windows x86-64

keygen_py-0.0.1.dev6-cp311-none-win32.whl (1.3 MB view details)

Uploaded CPython 3.11 Windows x86

keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_armv7l.whl (3.7 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

keygen_py-0.0.1.dev6-cp311-cp311-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

keygen_py-0.0.1.dev6-cp311-cp311-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

keygen_py-0.0.1.dev6-cp310-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10 Windows x86-64

keygen_py-0.0.1.dev6-cp310-none-win32.whl (1.3 MB view details)

Uploaded CPython 3.10 Windows x86

keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_armv7l.whl (3.7 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

keygen_py-0.0.1.dev6-cp310-cp310-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

keygen_py-0.0.1.dev6-cp310-cp310-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

keygen_py-0.0.1.dev6-cp39-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.9 Windows x86-64

keygen_py-0.0.1.dev6-cp39-none-win32.whl (1.3 MB view details)

Uploaded CPython 3.9 Windows x86

keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_armv7l.whl (3.7 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

keygen_py-0.0.1.dev6-cp39-cp39-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

keygen_py-0.0.1.dev6-cp39-cp39-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

File details

Details for the file keygen_py-0.0.1.dev6.tar.gz.

File metadata

  • Download URL: keygen_py-0.0.1.dev6.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for keygen_py-0.0.1.dev6.tar.gz
Algorithm Hash digest
SHA256 b9520055409484c8ec6270f001b17ad27ed93fc820c3940aa1d028646ab1a0c6
MD5 27cc45123bfa3e807fdfbd89ef88d65f
BLAKE2b-256 bb635c2ca5bc1af91d68e595d5c55fe6148e1b6b8ef0a61ea3cd82ad30da6a7a

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6d6356afdc25e0114682ac50e0e0fb0e862c5da969117849a78b7a40ce2436a1
MD5 1b357b648871170875bcc2e822c8ffe6
BLAKE2b-256 4748c1491ebee86db59b82b521ac445f33d464ebbcdd4b3291bffdb4ec8e6e8c

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 efe773743d4ed1e5d02f14cc9d96d0cc3c5150536ec22410e724a9026f994162
MD5 d441545a4ebfcc0bef2a5ab6f16ea51c
BLAKE2b-256 735cfcf538a90f16be8eee6f823bb16a3ccc82731f882a2ca08efd29a3bbc405

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3e2c2221a54cb5df33a8c6ecba9fee94a8164236ab6498bbc6e4a02125b8c402
MD5 f69ed438ee93ce80b1fe12ffa74717d6
BLAKE2b-256 b7fb0995f2f5bfb9247ff6835216c3b6aee0320eb5815bdeb46ff9cc0aacc948

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f42d75360570710afd95813e642e9860d8220344d58f1b41551accb06894b18e
MD5 0eebbed9eeaa5d9247f430b67daa748a
BLAKE2b-256 827008b660d8957536bdf3d8edb93391f8a5104d2e2275ceb3047768668c2f83

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 95f807b32f105ae60fef0a94939b8023e1724bc533dc45f72411f4784274aae4
MD5 aca95d2cf364767a269753c0a6c54e87
BLAKE2b-256 1e6aaf2bd790810d981890a1cb400689c2ccc17896fd0932a2aa31546c50f6f6

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7e38ffb20389bceaf4a79757327fd502529296250774dc4ec536354ff80a3e64
MD5 57b3d5d8dbad1a80f0cb79ae61bb198e
BLAKE2b-256 dd735af3cbccd071faa15cad929ae20ea44cefa610b386b9f1cda9b233434545

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 984145bb6184424d785bb4e958a30d2d549ace2face882ea62ae605bdad43c5f
MD5 2a0199a0c0d87cd8eb12d92c6816c6fd
BLAKE2b-256 fbfb964c04f8c385ff7c2e03a20f0c45c0330d12df118c4be01ab4e940632293

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e8129c382a46e541c3c74fdddea2ceaf01c8e7173f801a5626419abf020fd189
MD5 a1560c95def0f3a8687cd7b0cd11f0ba
BLAKE2b-256 682118f3ee278d14c208673b8f86c2b861767d67f766b4883bafc2b03b7c6bd9

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 18ae91ab56fd8eef3a4b82dee3eafaba444272eb815384389c88b18e13296da9
MD5 5e4167ba7f6938a38e730bf56868106a
BLAKE2b-256 4b4a6b7e89f4503b11f50ff3589cd03ff7991854e1be88211b9c7b21e8d3fb6d

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 79fbbeac9806fbddc9651170ec3d4ebfcfd42f3987d0ed215837c51d7b3504a3
MD5 ae80d2d69ce40afd37a21c2c2deef12d
BLAKE2b-256 df49ba2da40e00851b9340e546a7a34a013c5d35ee5316d8680e6c9661663e9c

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 26a710f0d7e348d3b5841cefada5289be1b5ca41f58d6b8d002438090c8183e6
MD5 4a001e4427582adc28f42cfc2cb21c7d
BLAKE2b-256 072d968ddc715796158bcee4abb7ecd1902012870df80aad18a7a7e3da4e1fc7

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 243e92bbcd4cb70125a2ba0f1a96a135c65020a1ace9a19c73be2f95e45dd481
MD5 16f84a109c9c73888166de5b2c5989fe
BLAKE2b-256 24aa28798c413042c0870d5dbee502128c41b96aecc6b9d0f712e8bcb0fc2a9c

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 826d98cf6623e094b4be61f30161a2dcf52714aacb65367d1cb4fa884eb56c5e
MD5 c4fdca3d7452f161a04cafadf0cec794
BLAKE2b-256 23ae798b4969ac14c2151d3644fe701aa2601921174ff3ee409bb999542c7588

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 41084e5ebea375efe626f06c3dec698b8d08512887febf1d777fee7f00dfd94e
MD5 290729d31a97891c86ec353a378864d4
BLAKE2b-256 c2d935fcefafd998f38a07da087315e1b3e2e3c8ea873de58392534e3e70a311

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-none-win32.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-none-win32.whl
Algorithm Hash digest
SHA256 36d7afe0631a33cd9cd01935f638edfe2239ea31b0376b63e9587de950d6817e
MD5 abe8f65f61b6c714e4683702dac59f00
BLAKE2b-256 d67af3191e868390928bfe248d26609c0312cfb1a7dde9af9ff38714a13089e1

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 acf9f520c39ad672fc8e45892010c27a3cde30fc9f61bb282aa7a5a3b4024e76
MD5 86742cd2e673f4a3a058a328200a43c6
BLAKE2b-256 7a7152fa438fa39dde3bc013ffee44d66e900505f7528d65b119175fcad6d51e

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5825d26624ca4c5b5c033dead0049cd3150d88e00fc54461e01fbfab860a7547
MD5 e7ab2bd734b972e7489ced5d3c16cb5e
BLAKE2b-256 89a5155fd2020d840a68f23650444dce2602e7ef10d04cd9e4100626f0188861

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 06dea0ac985f84076ab866ee4d1a36d8da19245200afb133d934fbce87157427
MD5 93df7cd9002012335eb086631f9c05f4
BLAKE2b-256 ff9036049377258dd6fec3e8387d332953aed0d5b651b236085b1c72595c5290

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 94dba7cb0273150316ee66f623c8009cce97e0247460f80bbe93e2b1acec113d
MD5 ce1e3c1ba45b4ea237eb5e97f9ebcb97
BLAKE2b-256 105f67014e21e062e566fcf7f83152e39c1461c303eb591df5be102cac589605

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9dc1ca550a59cd63865902199a68c81267b863f7595e9b6ae7ab8ce818953e36
MD5 3b84f842ec07852bd31ec2f077bbf75b
BLAKE2b-256 5a35b35687e51328e7f989223d02626007e8dadf1486feff4032197b75c0ab13

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 fcd770f6d23e6a4c2faa9d58a33d207a8cba0effcd4d323728a3ba7b092d39f2
MD5 b75d2975ca0e09fd8b3161024a4bbf70
BLAKE2b-256 70206265e32a097da021d6dc0058159e7d50a5d434c108e3093923e59a7d7c15

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 28aad47fe8fb5a2b12dec60c418117399933597c9c67dfc061f50b6a9b17fa27
MD5 708411dbe73f39cc6a3e43a5d7fe4951
BLAKE2b-256 31397f4babc41abd460249dcf9f216ab0dedee862f68fdf71cf4075008757daf

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e15d5474942c809550e39d411b8e5cdf0b5ceab6ab0a7863232cc473a2faf172
MD5 42eb56a424ad63871422101cdb340ef5
BLAKE2b-256 d9b53f8e1c7cb19725d703cfbc2282945ed34168f4d39d11e1c02774f62b39fb

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dc6b372559f2bf8c6a9322d70cb2eb71538347903bc9f734dbbfbdbd55faacb8
MD5 99df0e45764448516b6e9352b11877cb
BLAKE2b-256 fe2a770a73447d247e8ff1e7730138cea914c1b8df982895a8cef5044b3633f5

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 af1eff6e415f371d2a1365e633efc78c8efd1635690bfc0f37435ebf5c38b58e
MD5 df2481be67f09f455b2d2a153b871788
BLAKE2b-256 52b6b2e782f3f89123ef22e89e4b8d013093f34d14dac41fdca9ddef97777094

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-none-win32.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-none-win32.whl
Algorithm Hash digest
SHA256 47d5c7ddcc695bd19614df3894ed314c39788c11954f5c7741dbeb3f69be4aac
MD5 8d7aff1551cca235ebb85a99ac92fa1c
BLAKE2b-256 63197f106989111c067011aea39e5c88e515dcdec450b236701bc41608637c7b

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e02ec0f02839c73b8fa484a57afdd1501786db6096325f631d6622a5fb86d816
MD5 44c4105c528601c3f95addab4d1c7e3c
BLAKE2b-256 d0be3ddb9638e7328fa1b4358fc579d2ab5a1e0760b0ef6cbd398c8e04567028

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8446f0d1083e43b037d4528d3c22bffa10287ef44eb7988e64b477971bd2d0d6
MD5 fe97f87ef72777edff5256dde101b8cb
BLAKE2b-256 83066b42bf71d75faaf2e970bd75d1f40da5b1059995e22ef7a7b39aefb056b1

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 2181547bce5f34b27d497d3a156c81477a2e24bc2fda5dcb61ecf378aa09bbeb
MD5 70fc5caa2c4d8ef015036e1e080f9686
BLAKE2b-256 1244f7ce1799f922e8b0b8c39488586b23070f5a0660808edffe4dc7bac33542

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dc923e8f5bbe33f113ca5415d74fa203c80e330598d30dae0ccd2d22de61f2ff
MD5 570335d860d6e00f9c0f8be88aa8376e
BLAKE2b-256 d19a6c15be66033982d660e7843a10692c48679fd71bd723a4c5818fcab6b69f

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50fc5fada5e7f4284d1af4204c15dd857be5e04bef4a27deb8b51e84217ea0e4
MD5 7f10837d123a5d7b16d1ae5bd2044658
BLAKE2b-256 416dd00a86e181bd75714d2401b0c8218c295cbc58964dec3b9f44c3768c7bfd

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1ba6aa01acfc15478514ad9db07321c0403bda22410afe88f6c2521d7989d173
MD5 398df8ace0694db45086ee13f33bce91
BLAKE2b-256 da5e95acb9222b5a5919be1d839d43e0102698308627a0aa0936e82fd1620732

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d4a46ea14db88c24b70a02026cd199a8a0bcb0505a912aaae949a36ddc06b465
MD5 54e1dc32ef38a10d74513bc7b0e56104
BLAKE2b-256 11292b33af2301fe7890150abc2e4002f20efdc116997fb146cbf20f0472676e

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b1d737b4a2fd67868542615f4e9f1b7a26e94c68d647b6a140f5a0f566ff901
MD5 2c6b255db6a21a83683fa133fca4e2aa
BLAKE2b-256 d161db3a9748e249af4e373101ca4c9615632019cbf7df74e255f76fe737c03c

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dc431963207cfcc9ecd80b6562948d393426f23185a5d753cb243614130c494b
MD5 e2faddfa02b151fcd9a6813ef76d80e7
BLAKE2b-256 fd908c99842548eb1fc9f61d70c6e9688a1f6b05f4df5102ffa0293bb0da0e90

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 dc22402e47d2abf4b6f91f15a12a72181eefeea30ade748dfa71b086fa4b8bb9
MD5 1539880f0b33083d79486b275e79356d
BLAKE2b-256 7a20574a4be0aa005cf6799e691f31b7d857ba58d533c1ad229dc71be2f987f0

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-none-win32.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-none-win32.whl
Algorithm Hash digest
SHA256 9b4843a502ce7a71532d4ed35525247107ec37c03daff6672de5e53dfd6a6cae
MD5 873c489418d834983951e06a22357075
BLAKE2b-256 44bb92cf0a9d0bbc6b5f1ad07012f8cf3816a17d9b8bf117291ae7987ac39f41

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0fb9e289092c840c5921f8ea6a008b311300eb7d4b6676cacad4b2f4909dd8e7
MD5 2408d181e97811cdc6a1e819438db4b0
BLAKE2b-256 a433e305396f09f57c3fded72a950ec08b9022a741e935bdee9ac821ec392231

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 895ad4fc93add774e46a22cc7adb7919967bdc9a35a5816fa33210b62b61c43a
MD5 ecf462b9acdd5814df6971625a50abf3
BLAKE2b-256 c39a4172ae9160c0151a1c4a9885f3308902d4a9395990aca42000c0c5ff50c6

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 164aa42379fcbb4d9c4a6615d9ee2c6360d620386800a1ea71ffeddd96a8eb48
MD5 aa18cf2e9a66cbe7feb4e02673c355f8
BLAKE2b-256 09e57516ab6e2f5a4d4654c54f7a4506e7fb3f062cc4160af970ac9a69c0ae2f

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 16b1002e8a9115747ecb3b3e22c064c239a6a184e8744365335130c772ab8189
MD5 8e46aaee290392f7dde2500cb8af9e2d
BLAKE2b-256 56024cc417ca51cc3bfe867fe5c63e4b4a0938e46dfbceb4b6dc2c82b715e2b0

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec4e3aa2e42a1494790a6de7605970086d7d704eb6e16ca3c71fc8da12b46134
MD5 b2e88719d3729517b2472a86d154c7dc
BLAKE2b-256 25ffa97887b7aa98684438f52eba606d71130ec4f09e93744049d1716cbe6984

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3c47177a6e9ed73a5d93162e4d347d84d43b497f389a538e073488b4fda0ad41
MD5 e5009bdb9eecb0a8f672974a24fdc7c1
BLAKE2b-256 a51ec30815b69bc6a233d69d1503f188d298a35919773decbec5422b06dea72c

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 65de036e8bb919afc9bb24836ce25f8b93aa3d8bffb255cb040a5e972e0d40d4
MD5 1788d29253d44741e0e9db30e58a1c71
BLAKE2b-256 060f18376a173770637625e37c1e3875dd5aeeb8d25a18ff267ada81f539bbb3

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97e35a9ad83e5630689a499a33497a23dab4528319ea6bc14f226c877b4a82a3
MD5 51eae3f494da6b11cbf73a7eb4213561
BLAKE2b-256 0ac26c51ed4b266cda69132329e936f6d0b2b647f444010423214cb0d4df07c4

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f44f74c76cebcf6c46402e72bd6f818d6587ca267abcf9632b79cf328f6fd440
MD5 04f46f0a35ebc0f7c8508788acffdc5b
BLAKE2b-256 60343c8bd524b83b24fddd04ab9a14389f8afb316da174b47d92dba4bdb3b91a

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-none-win_amd64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 28e000cf5750a8db47a47728d4dfb9f381ae1a60a8b9d813618789703f7a9429
MD5 781b12a567cb85cfd62edf344470ab45
BLAKE2b-256 c360d1d6aff1f1859fd0a50a182e23931294c5366f25420d8ca2692316f09457

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-none-win32.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-none-win32.whl
Algorithm Hash digest
SHA256 45ed547e1b4e7da5149c8aeff32f9b128cf4a079846dd460a682f31a41a4b652
MD5 ed27e0883417dd5ae30afffd5377a644
BLAKE2b-256 68b55f4e3b9f2af5ad1ae00daae59f92e05af4133f420463fcad1126bbb32a2e

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 56e2168ca99053c4946d2d05c23e667f8efbdaed6b7dc68bd64f23dabdb6b65a
MD5 6f6130d1b4dc768fd14282e7657e2a2c
BLAKE2b-256 9f1eb84bf3e400efa9c233f2260c3c2d8fbd70f56230e843ef8ee592659c300a

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a0d10a67f6c6d4361019683d227abb74535921d8753ab698a765f226fe0a36b5
MD5 331656540131ac8fe24d6635fe090f79
BLAKE2b-256 d633f78c8d4c7f1722901ff12cc0fa524ce7222bc29cc8899cc79592a0f5d9b0

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ab670c4fed4868b166cab24cbaa3aaa27af73192abd2d0bf476c03b78eba3693
MD5 f7020dd7f7f4552c065ef35ed102e47e
BLAKE2b-256 e1af36146ebd7429512397d587cd79dcf97e8bef65b5a4a561b743fb7961094a

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a9530e6b38ca3bee6fb76fa81409f2504a2a1555b98edc674abebb321eb624f2
MD5 dbb3c574140b86fd06bd6c6e70bd455e
BLAKE2b-256 b8810722d286eb69215bf979f6bfec850ab420a7a2e03c4f15a159ec0735a4db

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 95289634525e69252769c6e0fa9ad4f920393b1b51b388479b766976714f5217
MD5 e42a67df5b2fd90717658c1fd9ae2cea
BLAKE2b-256 7783752b2b5c505ba2e10cadb3510d47bc32f95d91127ff9d59459c1e3fefa42

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6e4b04a9fcb0283e32880737ee06827fa0a8e9a8e0c611f5383279ab79a3d258
MD5 46654e8d4c809c11a6684092d57b196d
BLAKE2b-256 87717c7a9630e3457c5a32c0a61c0f4c56c560128eaba426b794c05eda00eaf7

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 371a120edbe0271e3b5c5455d822012b8aaffa32016962f9a9ce879cf80e1fde
MD5 d4864f8872cc4b1b12ef6520083d21e8
BLAKE2b-256 dacbb1233cc1b748a987f6e0ca175d9842d60272cbeb8e773061630609b30ffd

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e10da7c5b6700cde42763470fe317703aa7401c3fa5bd89384fd5ffb59471d75
MD5 86085170d922d4021d357e832e1efbcc
BLAKE2b-256 9b6eacb7740ef2945b8984842a3759c0b33a286754d6ec3899166ba5d394c4ef

See more details on using hashes here.

File details

Details for the file keygen_py-0.0.1.dev6-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for keygen_py-0.0.1.dev6-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ca72c48579625a64c384e8dd0937f50a03e154a4c8c295f6af06fb4113b74804
MD5 b36a3ed1c3dbf4e0f0bbb692559b6b27
BLAKE2b-256 13fe6e78fd8fa69e4b1bb0c084925262b640d12a3c31d36b8169b764d817d424

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