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.
Release files for hymmalm 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hymmalm-0.1.5.tar.gz | 9.0 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| hymmalm-0.1.5-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| hymmalm-0.1.5-py3-none-manylinux_2_34_x86_64.whl | Python 3 | none | Linux glibc 2.34+ x86-64 | Details |
| hymmalm-0.1.5-py3-none-manylinux_2_34_aarch64.whl | Python 3 | none | Linux glibc 2.34+ ARM64 | Details |
| hymmalm-0.1.5-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| hymmalm-0.1.5-py3-none-macosx_10_15_x86_64.whl | Python 3 | none | macOS 10.15+ x86-64 | Details |
Total release size: 230.6 kB
Release files / hymmalm-0.1.5.tar.gz
| Download URL | hymmalm-0.1.5.tar.gz |
|---|---|
| Size | 9.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b2a1565fd59fc77f3ffd91dedcc52f9f8613aadd8d148edecabd7829eb92dba3
|
|
BLAKE2b-256 checksum How to use checksums |
a499e52a9e6b38eb342c101aa4602e8a783bfa1ae14b7898dedf390e30cf9ca5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / hymmalm-0.1.5-py3-none-win_amd64.whl
| Download URL | hymmalm-0.1.5-py3-none-win_amd64.whl |
|---|---|
| Size | 43.7 kB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9db0e41de69e73017c59f72c41c36f91490432d8d18729a074366643d15e263e
|
|
BLAKE2b-256 checksum How to use checksums |
2f9bdf34386bfb6e08cd77823d6894f479ed34a18db843e0f75be52facaa5038
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / hymmalm-0.1.5-py3-none-manylinux_2_34_x86_64.whl
| Download URL | hymmalm-0.1.5-py3-none-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 49.8 kB |
| Tags | Linux glibc 2.34+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
13c2e05c9038d38d59d854b142e93d9beee7d52def83cb5c5e61a1a02871e7e5
|
|
BLAKE2b-256 checksum How to use checksums |
9360b056002f9788bddfdbbd5cb042fbb5f683b2c882bb2844309f080550a143
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / hymmalm-0.1.5-py3-none-manylinux_2_34_aarch64.whl
| Download URL | hymmalm-0.1.5-py3-none-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 48.5 kB |
| Tags | Linux glibc 2.34+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
e544d0eea967c87291193546ee7984782811f4b2e72df267197d857980f0a1b9
|
|
BLAKE2b-256 checksum How to use checksums |
d012058ca6c21847d9fdbbe891b335e4f5a88843923ab7f4dd9538f9f8e5b2e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / hymmalm-0.1.5-py3-none-macosx_11_0_arm64.whl
| Download URL | hymmalm-0.1.5-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 38.8 kB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3ab147367b85a4efd38071374529e0ae5adf8ec638bd2e547823cf8a3eea1b27
|
|
BLAKE2b-256 checksum How to use checksums |
b912b295e86671e6bcc3048d717b868895822efef461e1a196ea1a85d4a30b1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / hymmalm-0.1.5-py3-none-macosx_10_15_x86_64.whl
| Download URL | hymmalm-0.1.5-py3-none-macosx_10_15_x86_64.whl |
|---|---|
| Size | 40.9 kB |
| Tags | Python 3 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
3be89d34d6a4e394b378aa147075f8804bae8940ef6c79082e8be7469027e158
|
|
BLAKE2b-256 checksum How to use checksums |
1abbaabaeb1f723bcac8ebaacdb1d195392eb6edf4191a462a6b9c4881837310
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|