Skip to main content

Token validation utilities for Atabet systems

Project description

atabet-token

Token validation utilities packaged with Cython.

Installation

Prerequisites

  1. Conda environment (recommended):

    conda env create -f environment.yml
    conda activate atabet_token_env
    
  2. C++ Compiler (required for Windows):

    • MinGW (MSYS2) - Recommended if you have MSYS2 installed
    • Microsoft C++ Build Tools - Alternative option

Quick Start

Using MinGW (if you have MSYS2):

conda activate atabet_token_env

# Configure MinGW (one-time setup)
python configure_mingw.py

# Build and install
python setup.py build_ext --inplace --compiler=mingw32
pip install -e .[dev]

Or use the automated script:

build_with_mingw.bat

Using MSVC (default):

conda activate atabet_token_env
pip install -e .[dev]

Run Tests

pytest

GitHub Actions: wheels and PyPI

Workflow: .github/workflows/build-wheels.yml. Wheels are built with cibuildwheel; options live in pyproject.toml under [tool.cibuildwheel].

When jobs run (push): the Linux / Windows / macOS matrix runs only if the head commit message includes one of:

Tag Effect
[build ci] (or [Build CI], [BUILD CI]) Build wheels and upload per-OS artifacts; no publish.
[pub pypi] (or [Pub PyPI], [PUB PYPI]) Build wheels, then publish merged wheels to PyPI (production).
[pub test.pypi] (or [Pub test.pypi], [PUB TEST.PYPI]) Build wheels, then publish to TestPyPI.

Plain pushes (no tag above) skip the matrix so CI does not run on every commit.

Manual runs: Actions → Build wheels → Run workflow runs the build matrix only; publishing is by push with [pub pypi] or [pub test.pypi] in the commit message.

Authentication (publish): the workflow uses Trusted Publishing (OIDC) by default — no API token in GitHub secrets. Register the GitHub repo and workflow file on each index (project Manage → Publishing). See the comment block at the top of build-wheels.yml for OIDC vs API-token options.

Private repositories are supported for OIDC the same as public ones.

Troubleshooting

MinGW Compilation Issues

SIZEOF_VOID_P Enum Error (Fixed)

Problem: When compiling with MinGW, you may encounter:

error: enumerator value for '__pyx_check_sizeof_voidp' is not an integer constant

Root Cause: MinGW's GCC is stricter about constant expressions in enum initializers. The Cython-generated code includes:

enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };

MinGW doesn't always evaluate sizeof(void*) as a compile-time constant in this context, even though both values are 8.

Solution: This has been fixed in setup.py by adding the -DMS_WIN64 compiler flag, which explicitly tells GCC we're targeting 64-bit Windows. This ensures sizeof(void*) is treated as a compile-time constant.

The fix is already applied - no action needed. If you still see this error:

  1. Ensure your Python is 64-bit: python -c "import sys; print('64-bit' if sys.maxsize > 2**32 else '32-bit')"
  2. Ensure your MinGW GCC is 64-bit: gcc -v should show x86_64
  3. Both must be consistently 64-bit (no 32/64-bit mismatch)

References:

Other MinGW Issues

"mingw32 compiler not found":

  • Make sure MinGW is in PATH: gcc --version
  • Run: python configure_mingw.py
  • Check that pydistutils.cfg exists in your home directory

"gcc: command not found":

  • Add MinGW bin directory to PATH:
    set PATH=C:\msys64\mingw64\bin;%PATH%
    

MSVC Issues

"Microsoft Visual C++ 14.0 or greater is required":

General Issues

"No module named 'atabet_token'":

  • Run: pip install -e .[dev] to install the package

Build succeeds but import fails:

  • Make sure you ran: pip install -e .[dev]
  • Check that .pyd file exists in atabet_token directory
  • Try: python -c "import atabet_token.token"

Compiler Setup

Option 1: MinGW with MSYS2 (Recommended if you have MSYS2)

Pros:

  • Lightweight (~100MB)
  • Works well with Cython
  • Already installed if you have MSYS2

Setup:

# Run configuration script
python configure_mingw.py

# Or manually add to PATH
set PATH=C:\msys64\mingw64\bin;%PATH%

Option 2: Microsoft C++ Build Tools

Pros:

  • Official Microsoft compiler (best compatibility)
  • Works out of the box
  • Faster compilation

Setup:

  1. Download from: https://visualstudio.microsoft.com/visual-cpp-build-tools/
  2. Install "Desktop development with C++" workload
  3. Restart terminal

Project Structure

atabet-token/
├── atabet_token/              # Source code (Cython modules)
│   ├── __init__.py        # Package initializer
│   ├── token.pyx          # Cython source (compiled to .pyd)
│   └── licensing.py       # Python source (compiled to .pyd)
├── tests/                 # Test suite
│   ├── conftest.py        # Pytest configuration
│   ├── test_token.py      # Tests for original validation
│   └── test_licensing.py  # Tests for licensing validation
├── .github/
│   └── workflows/
│       └── build_wheels.yml  # CI/CD workflow
├── setup.py               # Build configuration (compiles all sources)
├── build_wheel.py         # Wheel protection script
├── pyproject.toml         # Modern Python packaging config
├── environment.yml        # Conda environment definition
├── MANIFEST.in            # Package manifest
├── configure_mingw.py     # MinGW configuration helper
├── build_with_mingw.bat    # MinGW build script
├── build_and_test.bat     # Build and test script
├── cleanup.bat            # Cleanup script
└── README.md              # This file

Development

Building from Source

conda activate atabet_token_env

# With MinGW
python setup.py build_ext --inplace --compiler=mingw32
pip install -e .[dev]

# With MSVC (default)
pip install -e .[dev]

Running Tests

pytest -v

Token Validation Methods

atabet-token supports two validation methods:

1. Licensing Server Validation (Default)

Validates tokens through a licensing server API. This is the default validation method.

Usage:

from atabet_token import TokenCheckMeta

# Default: uses licensing validation
class MyClass(metaclass=TokenCheckMeta(application_id="my-app-id")):
    def __init__(self, token: str):
        self.token = token

# Or explicitly specify
class MyClass(metaclass=TokenCheckMeta(
    validation_method='licensing',
    application_id="my-app-id"
)):
    def __init__(self, token: str):
        self.token = token

Configuration:

  • Set LICENSING_SERVER_URL environment variable (default: http://39.101.65.167:5001/; production reference: http://api.atabet.com:5001)
  • Provide application_id in TokenCheckMeta (checked against the server response)
  • Optional: device_name, session_token, licensing_server_url
  • Legacy aliases: client_identifierdevice_name, session_idsession_token

Session flow:

  1. First validation: POST /validate with Authorization: Bearer <license JWT> registers a new session.
  2. The server returns a session_token (UUID). It is saved automatically to ~/.atabet/session.json (override with ATABET_SESSION_STORE).
  3. Subsequent validations reuse the stored session_token via X-Session-Token to heartbeat the existing session.
  4. Call logout_session(session_token) or rely on server stale-session cleanup to free a slot.
from atabet_token import validate_token_with_licensing, logout_session

result = validate_token_with_licensing(
    token=license_jwt,
    application_id="com.atabet.data",
    device_name="my-macbook",
)
session_token = result["session_token"]

# Optional: end session explicitly
logout_session(session_token, application_id="com.atabet.data")

Requirements:

  • Licensing server must be running and accessible
  • Token must be a valid JWT token issued by the licensing server
  • requests package (automatically installed)

2. Original HMAC-SHA256 Validation

Validates tokens using the original HMAC-SHA256 method (monthly token rotation).

Usage:

from atabet_token import TokenCheckMeta

# Explicitly use original validation
class MyClass(metaclass=TokenCheckMeta(
    validation_method='original',
    token_key="my-token-key"
)):
    def __init__(self, token: str):
        self.token = token

Configuration:

  • Provide token_key in TokenCheckMeta
  • Optional: current_time (for testing only)

Note: The original validation method is still fully supported and works exactly as before. Use validation_method='original' to explicitly enable it.

Source Code Protection

atabet-token implements comprehensive source code protection to prevent reverse engineering. All source files are compiled and removed from distribution wheels.

File Type Differences

.pyc Files (Python Bytecode)

  • What they are: Compiled Python bytecode files
  • Security: ⚠️ NOT SECURE - Can be easily decompiled back to Python source
  • Tools to decompile: uncompyle6, decompyle3, pycdc
  • When used: Created from .py files by Python's standard compiler

.pyd Files (Compiled C Extensions)

  • What they are: Compiled C extensions (Windows) / .so files (Linux/Mac)
  • Security: ✅ SECURE - Much harder to reverse engineer (requires disassembling machine code)
  • Tools to decompile: Very difficult, requires advanced reverse engineering skills
  • When used: Created from .pyx files (Cython source) or .py files compiled with Cython

Protection Strategy

Compilation Behavior:

  • .pyx files → Compiled to .pyd/.so (C extension) - SECURE
  • .py files (including __init__.py) → Compiled to .pyd/.so (C extension) - SECURE
  • All .pyc files are removed - They can be decompiled, so they are not included in distributions

Note on __init__.py:

  • __init__.py files are compiled to .pyd/.so via Cython (same as other .py files)
  • All .pyc files are removed from the distribution for security
  • Python's import system works with compiled extensions (.pyd/.so) just as well as with source files

Source File Removal:

  • After compilation, all source files (.py, .pyx, .c) are removed from wheel distributions
  • All .pyc files are also removed (they can be decompiled back to source code)
  • Only compiled C extensions (.pyd/.so) remain - these are secure and cannot be easily decompiled
  • Package functions identically - users can import and use it normally
  • Source code is completely hidden from end users

Security Comparison

Format Security Level Decompilation Difficulty
.py (source) ❌ None N/A
.pyc (bytecode) ⚠️ Low Easy (tools available)
.pyd (C extension) ✅ High Very Hard (requires reverse engineering)

Implementation

The protection is implemented in:

  1. setup.py: Compiles .py files as Cython extensions
  2. build_wheel.py: Post-processes wheels to remove source files
  3. GitHub Actions: Automatically protects wheels during CI/CD

Verification

To verify protection:

  1. Build a wheel: python setup.py bdist_wheel
  2. Extract the wheel: unzip dist/atabet_token-*.whl
  3. Check contents: Should see only .pyd/.so files, no .py, .pyx, .pyc, or __pycache__ directories

License

Proprietary - All Rights Reserved

Project details


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.

atabet_token-1.2.0-cp312-cp312-win_amd64.whl (127.5 kB view details)

Uploaded CPython 3.12Windows x86-64

atabet_token-1.2.0-cp312-cp312-win32.whl (111.0 kB view details)

Uploaded CPython 3.12Windows x86

atabet_token-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (892.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

atabet_token-1.2.0-cp312-cp312-musllinux_1_2_i686.whl (875.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

atabet_token-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (886.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

atabet_token-1.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (857.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

atabet_token-1.2.0-cp312-cp312-macosx_11_0_arm64.whl (140.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

atabet_token-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl (142.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

atabet_token-1.2.0-cp311-cp311-win_amd64.whl (128.9 kB view details)

Uploaded CPython 3.11Windows x86-64

atabet_token-1.2.0-cp311-cp311-win32.whl (112.9 kB view details)

Uploaded CPython 3.11Windows x86

atabet_token-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (867.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

atabet_token-1.2.0-cp311-cp311-musllinux_1_2_i686.whl (856.1 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

atabet_token-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (856.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

atabet_token-1.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (837.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

atabet_token-1.2.0-cp311-cp311-macosx_11_0_arm64.whl (140.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

atabet_token-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl (142.0 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

atabet_token-1.2.0-cp310-cp310-win_amd64.whl (129.4 kB view details)

Uploaded CPython 3.10Windows x86-64

atabet_token-1.2.0-cp310-cp310-win32.whl (113.5 kB view details)

Uploaded CPython 3.10Windows x86

atabet_token-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (825.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

atabet_token-1.2.0-cp310-cp310-musllinux_1_2_i686.whl (810.0 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

atabet_token-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

atabet_token-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (795.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

atabet_token-1.2.0-cp310-cp310-macosx_11_0_arm64.whl (141.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

atabet_token-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl (143.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

atabet_token-1.2.0-cp39-cp39-win_amd64.whl (129.9 kB view details)

Uploaded CPython 3.9Windows x86-64

atabet_token-1.2.0-cp39-cp39-win32.whl (114.0 kB view details)

Uploaded CPython 3.9Windows x86

atabet_token-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl (824.1 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

atabet_token-1.2.0-cp39-cp39-musllinux_1_2_i686.whl (807.9 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

atabet_token-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

atabet_token-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (792.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

atabet_token-1.2.0-cp39-cp39-macosx_11_0_arm64.whl (142.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

atabet_token-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl (144.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file atabet_token-1.2.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 95bfe8c5484ed71c9ed9098a229a830362dc3918e1f0ab51fdda5614627227fa
MD5 2d1bfe90ede1ea505f37e4945ea5f2ee
BLAKE2b-256 15aac0df6de4780d29c0c9e82937ba37cc5de5059d90dbbf5733a7d65f84d783

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-win_amd64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: atabet_token-1.2.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 111.0 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 2b2d0564e9b316019b05806094b5ff6076ffc7e7a12f2035175dd80608bbab2a
MD5 05e14012fd8b1ae7e4d81a03e06f46ca
BLAKE2b-256 7f9ae39f1c1919320cf985c79252673f433814fc089654900fb55d6232a7b102

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-win32.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7209655e3ab870ebde8e8065b862e2cb595b2d5f684d460cb874203553cbd536
MD5 aaf098244883aadfbf80ec1d7e262f4f
BLAKE2b-256 1477e91e38f553d513aff6b8c8d3882dc9746cda2cce9fbb8305db1646567a6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8cb6a551f9fc79d9ba4535e8e3588758e28788863b5d95811cc1aab65934b2d1
MD5 f07ee982e79587e894a877ab06fb8523
BLAKE2b-256 180b80aa2fe623390175156cc7724d23105edac94661bb9ea3bacb7652f4d319

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7babe172b0ce635f8be0780804bf6084ab087386772380e213af6af46df511e8
MD5 0acb40f0a4727d125bc56c0a67757c28
BLAKE2b-256 90ebd9b2a8622d1594f8fe8117ea2b921837e17d383e0b84915124b942adda38

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 25d00ca217a0ad691131d84c257e2bf447eddbe8c3d8525e3644dea8d6d80148
MD5 182a2d498354e22be54373942da81ad4
BLAKE2b-256 e2c374754b39407e2ecc7e3d3bb748475d9cf73d55c07adf6c7db9b3e2969667

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 35738882099dbae1bbe0f94382aa304df95f0a287c3fbd4211f11c3fa5d59ddd
MD5 399facad04dec4fa78bbb630951c0a3c
BLAKE2b-256 cd6919123fbf41c28135c3bcf88e42cf4c244b071fde6cb945b5976b22058488

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 033b974980e3fddc30de3a0170a02201bfea2264ceca899bc9afad7b46b809fc
MD5 d61701497bc77428f6316b7f2e135278
BLAKE2b-256 a43141770c5ccfd680a2fd4b783667c30247f5ccda14a66522ca4138b797be0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 958fc90b87a2468c2d3c254869acb37493d7a0ef0312b30285a2412a7d5386a0
MD5 15e4c063c1527e00977600bf0b3ee4f4
BLAKE2b-256 47a58b9aaf38258ce90250ff53eba336b5d75e9166e71455f8d470a27ef34bfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-win_amd64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: atabet_token-1.2.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 112.9 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 08e5307ddfb32d7f4861b310e683861f3a1c8cea0e4b894ff8b7c62d3f8f8bc3
MD5 52b0ca8fa48b1856eb574baa1dd768fa
BLAKE2b-256 80c9d54d85a7989af9fed825d644ba0c1393b26a4decabbd7860d4ab8b7253e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-win32.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c99afc503a7f699be72b5c5a22dd842e359ca5dbcb698c0c9cd60b3a306790be
MD5 99bf75fa8888ba25781d3accbeaf2399
BLAKE2b-256 93af284d0faa9471e669abf1b55b98131c5258cdfc37ea44048df275a1942ab0

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d56b1385dde563a636d58b627fc28b86af980e4e3f20a0bc89c22d4b89d207f3
MD5 15147bdac2cda4e8e499c56cd6b91510
BLAKE2b-256 3f6b2778a5963eb2db43e4d390df3014f1ac293e2678fea4dc5b3d1872078203

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f66b09e3580a5f9cb043af0ee406967adfddc52e491154a46f11243454c9b86
MD5 c31974bee5788fa6c6dd277f236deea1
BLAKE2b-256 aba7b6ea9f877a6781a677a2162ece67f8dc516344ef4ffd1fa99a9e5c492530

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 08d4ffa5f2da7fd2dc8c283317fdd64cb06577ec9aa64198e53c3a92833a1392
MD5 e9baa5212953af99fbc8e30db1efddf6
BLAKE2b-256 d6618d69580f070bbb4531bba84815f9224ee56cb10ff263b63e2e117fe8d05a

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4d723e6bd03b1b9c85e579dd926ad70c86180464cff0d0d03765f2c6adbd9a6
MD5 c82abecc3cf536a96220ca7253afcd6a
BLAKE2b-256 37b7a63d3835898fbda99669d8c13f0244512208015991a509418e63ef307e1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d9dc6cbc296d671aac097dc7f174348b4aa4557506cf233942372b0de9f92a05
MD5 f098aaa98ac7d0f9dcdbdbe0257431e4
BLAKE2b-256 44ad26d56b8016dfcde15aaf0cbd3720969eaad93c7724e99bb6833baf1c3782

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7e9e966d68900023114fcaa87c998943974fc1140cd086cb5e90dd92d32537b2
MD5 a65e837bf1736d2c5500668a8e29095a
BLAKE2b-256 69aa564d1cef05d9c2d18a37491e0593c86c91e9c261dc78cddbf402e9181d75

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-win_amd64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: atabet_token-1.2.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 113.5 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 e589f25681adb7e3e5f32c114937a66f2c269624f2e85f03d5138ff34788866a
MD5 3ba4bf8b2ddf13b76d80af41549a5215
BLAKE2b-256 b4062507e051ca06541d2ca60f9b9a26673a699aa899bae2220607e5a37337d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-win32.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 22f24e27ae4d7a63e436cca6686248421cf93ceee1011187bd0801245f2fc301
MD5 e956269f36b3cae4adaf2ef5f75e2ab5
BLAKE2b-256 60779beda41ec8280c78700a367cb69a163c41b2418bd7270b823e1e15da1d62

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 09df38b5abb60ea3ffc1787ade0aaafa76f5dba566a4434c4e2afcbec884951c
MD5 bd7efe90aaca55df34cf200ba9c70090
BLAKE2b-256 ba0eb540d4185b358319a44e32e1f6193acea7b658bb709b3f0013b64764db5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2739ec3b49d0e806230814708d83c5b3a935c61175c8aa28840c96641f090cab
MD5 be94da12d0445dbfea1b0c276ee2d760
BLAKE2b-256 834de435938ef77292627014919619d1410f73d8a3aae5d230da00a90ba6f240

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 361a2cfe15070ac14f513f0bff7e84ba3debe88b0dac2b007ba274d771f9f7e9
MD5 21d1ba6ba2415cd720cced2f733d99eb
BLAKE2b-256 6caa28e7f994600250b26fd6b7b88a2f5792bf264d64ef567103f3eca4c51cb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0476b3fc07f0e4a52f28dd08b5a85215c8fb46adc63791c0ca205f6c7e55ad7
MD5 45d669badde210cadd55c82d083af4f2
BLAKE2b-256 fc4bf5f162dffa6769d87ffecc5eb76544b2c72c7caec58802dbfc32dad69a00

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6cef91f981bb6ef7a3f97bbd0d11b3db33ef68c9ede51f1410dd7bc2cbaebaff
MD5 8c1c7318ad44d40345a9b7b5d5480ff4
BLAKE2b-256 6fa0683eb30f1c32b83b26778be41b52b7d9cf5010db92997562b08e1d823a76

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: atabet_token-1.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 129.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fc41038d0995ab1fdee8cb9c36cc66fe3dc48a40015fb61a0792bf629d71a7e3
MD5 dbd25fb0db44c0e6285157f185eb15cc
BLAKE2b-256 b2c7b763e829f895db7cdb57b7c06212c28048609ca79a8b25a1cca827c4d4b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-win_amd64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: atabet_token-1.2.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 114.0 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 21e3ffd08c4bb1aa25f1440cc3b861aebf6260182af6a237951136d6a2f954f9
MD5 4ac78d8b24dde9df669280f61ed6f3e9
BLAKE2b-256 c178a21b79c4e975cd18852e3001ef5351a831e79b642373ca24ad3e36fc32d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-win32.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 99705726a7da61297c21243fdf1f00914a4ce78c770e615569bc29938acfc9ea
MD5 271c1eed53637e3dfbb6958381d46c3c
BLAKE2b-256 b58b7e156784517d06cc98b8548287e547a60141ceec16931241c9b98fa97c6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a3d6b96211e86fcb53f51c00e7245468bfd9e3f50b9254fa6aac9063369cb345
MD5 ee89ba5c47b2355616b39de432415e96
BLAKE2b-256 4c3dda33152b0aa5625fe8f243868b68092ad7de5c5c4e2c854f866a59db99d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-musllinux_1_2_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3970a44e77a10e300b1af2f6c30525b8fd2b7c1f2fbe8b1bca58ae7d57814366
MD5 4083ce7afc9d09ac3e045a69f74cf47f
BLAKE2b-256 5346add2a84441f2bd76188e36b3127652821ba11c61cdd6f52b5ef60f1299d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c0dce209c3ca372c0f212f1cccd8b02948d59b0eb866323e9fdae9f57ad3f726
MD5 cf15748351bbbc0cb0c4507f4e93789a
BLAKE2b-256 010ee422272e0af46efae1b6538b3283694e67721b6cda27720e1c723c034df1

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ab7a7941596abd03711aecae3c8b58cd98d25c78fd1476d896707ef95a4463f5
MD5 20177af85e04c3d0167258d3e1b21d38
BLAKE2b-256 258bbd684b9e0a4dcf5dcd66288a836153e9350f22e8088c1f3540cb9b2d7f52

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atabet_token-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for atabet_token-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 83426e8f8115a7ce73d68a10bdfd8617ef11acd23d8992cdc4a182ec455a75c1
MD5 e372758f714988647f2afd67908c272a
BLAKE2b-256 4b1d6df2fa8eae756ccb8ee947add0246bd92f3ee8d00f3f547aec59453c508c

See more details on using hashes here.

Provenance

The following attestation bundles were made for atabet_token-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: build-wheels.yml on josephchenhk/atabet-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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