hymmalm — Python wrapper
Python (ctypes) binding for license-management-core. All licensing
behavior — JWS verification, status rules, machine fingerprint, REST flow,
retry policy, clock-tamper resistance — lives in the native hymmalm
library; this package only marshals. See the repository root README for the
architecture.
Usage
from hymmalm import LicenseClient, LicenseStatus
client = LicenseClient(
product_id="PRD_01KWWPEPM0N070BDAHJ7G09RGV",
client_api_key="PUB_...", # never a MST_ key
jwks_json=open("signingkeys.json").read(), # GET /api/signingkeys.json
license_path="~/.myapp/license.lic",
)
status = client.check() # trial bootstrap on first run
if status == LicenseStatus.INVALID_TRIAL:
client.activate(input("Receipt code: "))
Offline verification only (no network, e.g. checking a provisioned file):
import hymmalm
status = hymmalm.verify(jws_string, jwks_json)
Installing
pip install hymmalm
Release wheels bundle the native library per platform (manylinux x86_64 / aarch64, macOS arm64 / x86_64, Windows x64) — nothing else to install.
From a source checkout (or the sdist), build the core once
(cmake -S . -B build && cmake --build build at the repo root) and either
place libhymmalm.so / libhymmalm.dylib / hymmalm.dll next to the
hymmalm package, on the loader path, or point HYMMALM_LIB at the full
path.
Publishing
CI publishes to PyPI on v* release tags (the pypi job): it drops each
platform's freshly built library into the package, builds a
py3-none-<platform> wheel per OS/arch (linux wheels retagged and vetted
by auditwheel), plus a pure sdist, and uploads with PYPI_API_TOKEN.
Tests
cd wrappers/python
HYMMALM_LIB=$PWD/../../build/libhymmalm.so python -m unittest discover -s tests -v
tests/test_vectors.py replays the same signed vectors as the C suite;
tests/test_flow.py runs the full client flow (trial → activate → offline
cache → deactivate, plus error classification) against a local mock API.
Metadata
Release files for hymmalm 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| hymmalm-0.2.0.tar.gz | 11.1 kB | Without provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| hymmalm-0.2.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| hymmalm-0.2.0-py3-none-manylinux_2_34_x86_64.whl | Python 3 | none | Linux glibc 2.34+ x86-64 | Details |
| hymmalm-0.2.0-py3-none-manylinux_2_34_aarch64.whl | Python 3 | none | Linux glibc 2.34+ ARM64 | Details |
| hymmalm-0.2.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| hymmalm-0.2.0-py3-none-macosx_10_15_x86_64.whl | Python 3 | none | macOS 10.15+ x86-64 | Details |
Total release size: 253.7 kB
Release files / hymmalm-0.2.0.tar.gz
| Download URL | hymmalm-0.2.0.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64526d181aad4df7b97ab20a821d4e21ba53434d302325deda03ae1e5e7b8548
|
|
BLAKE2b-256 checksum How to use checksums |
983e9427240d3eab26bf219cb2e4d0e348f9f29616a1d5d7e4dcd73c32f702f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / hymmalm-0.2.0-py3-none-win_amd64.whl
| Download URL | hymmalm-0.2.0-py3-none-win_amd64.whl |
|---|---|
| Size | 47.6 kB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6bdb83ea6c9ac4c6b0572d6c07460fef6eb7d9536c6d5dea166456e028909518
|
|
BLAKE2b-256 checksum How to use checksums |
14d09a2bf7e11be3d8f915558393274c1c48f3457d148cb5c68bb9d65e3665ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / hymmalm-0.2.0-py3-none-manylinux_2_34_x86_64.whl
| Download URL | hymmalm-0.2.0-py3-none-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 54.3 kB |
| Tags | Linux glibc 2.34+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
b4ad0221978c5106aa7e213dd0ebb30222f4275a8af70d816a7e793af6ffa8b4
|
|
BLAKE2b-256 checksum How to use checksums |
1aaea8d7313e553aa7b4a590713ceae6bc8238d44a0f77454e6cbfef3824cb12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / hymmalm-0.2.0-py3-none-manylinux_2_34_aarch64.whl
| Download URL | hymmalm-0.2.0-py3-none-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 53.0 kB |
| Tags | Linux glibc 2.34+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
50d832fbe2bdc6ea0ac2dd061ce82e15984c3d04085ad9d37f1a1f182d4d8052
|
|
BLAKE2b-256 checksum How to use checksums |
2f069c2fb56b78b35ddc973e0747bf946852a0b50f54ee7d66efbe35703f9906
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / hymmalm-0.2.0-py3-none-macosx_11_0_arm64.whl
| Download URL | hymmalm-0.2.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 42.8 kB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
03f663d4d9f9396b4f6792bfccd8a84244f4a0ecbc89696d4ee44bbfa51e5301
|
|
BLAKE2b-256 checksum How to use checksums |
9d25ff9d4520f384e9bd4aa06d988a44d3700b1d387decb76e36edb71bdb5b32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / hymmalm-0.2.0-py3-none-macosx_10_15_x86_64.whl
| Download URL | hymmalm-0.2.0-py3-none-macosx_10_15_x86_64.whl |
|---|---|
| Size | 44.9 kB |
| Tags | Python 3 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
fafd588cbaa16409a2dcfbbbf9aaa24fa4ee289c842e150c1a58192c041a621b
|
|
BLAKE2b-256 checksum How to use checksums |
a5a4fc02550936cceb8dba53b18010a05e3cdd7bfb1074e6a8ff6be0b4527ca3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Security for hymmalm 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.