Skip to main content

A client library for generating images through the flix-imagen API

Project description

Imagen SDK

A proprietary client library for generating images through the flix-imagen API.

Authorized Flixstock users only. A signed runtime license file is required before the SDK can be used.

Python compatibility

  • Supported: Python 3.9 through 3.14 (CPython and PyPy)
  • Wheel: one universal py3-none-any wheel works across all supported versions
  • Floor: Python 3.9 (required by the cryptography dependency)

Test locally across versions (requires tox and multiple Python installs):

pip install -e ".[dev]"
tox

CI runs the test suite on Python 3.9–3.13 via bitbucket-pipelines.yml.

Installation

pip install imagen-sdk

Runtime license file

Before creating a client, obtain an RSA-signed license file from Flixstock. The SDK verifies signatures using a public key bundled in the package; the private key never ships with the SDK.

The SDK checks for a license in this order:

  1. license_path argument to ImagenClient
  2. IMAGEN_SDK_LICENSE environment variable
  3. ./imagen-sdk.license or ./license.json in the working directory
  4. ~/.config/imagen-sdk/license.json

Example license format: see license.example.json.

Allowed email domains: @flixstock.com, @imageedit.ai.

Key setup (Flixstock admins, one-time)

Generate an RSA key pair. The public key is committed to the repo; the private key stays local.

pip install cryptography
python scripts/generate_keys.py
  • Public key: src/imagen_sdk/keys/license_public.pem (bundled in the wheel)
  • Private key: keys/license_private.pem (gitignored — store securely)

Issue a license (Flixstock admins)

python scripts/issue_license.py \
  --licensee "Jane Doe" \
  --email "jane.doe@flixstock.com" \
  --output imagen-sdk.license

Optional: --private-key /path/to/license_private.pem or set IMAGEN_SDK_PRIVATE_KEY.

Usage

from imagen_sdk import ImagenClient, LicenseError

try:
    client = ImagenClient(
        base_url="https://imagen-api.flixstock.com",
        api_key="your-api-key",
        license_path="/path/to/imagen-sdk.license",
    )
except LicenseError as exc:
    print(exc)

Or set the environment variable:

export IMAGEN_SDK_LICENSE=/path/to/imagen-sdk.license
from imagen_sdk import ImagenClient

client = ImagenClient(
    base_url="https://imagen-api.flixstock.com",
    api_key="your-api-key",
)

Development

python -m venv .venv
.venv\Scripts\activate          # Windows
# source .venv/bin/activate     # macOS/Linux

pip install -e ".[dev]"
python scripts/generate_keys.py   # if keys do not exist yet
python scripts/issue_license.py --licensee "Dev User" --email "dev@flixstock.com"
pytest

Publishing to PyPI

CI/CD (Bitbucket Pipelines)

Releases are published automatically when you push a version tag.

  1. Bump version in pyproject.toml and __version__ in src/imagen_sdk/__init__.py.
  2. Commit and push.
  3. Create and push a matching tag:
git tag v0.0.2
git push origin v0.0.2

The v* tag pipeline runs tests, verifies the tag matches the package version, builds, and uploads to PyPI.

Manual TestPyPI publish: Pipelines → Run pipeline → publish-testpypi.

Bitbucket repository variables

Add these under Repository settings → Pipelines → Repository variables:

Variable Secured Value
TWINE_USERNAME No __token__
TWINE_PASSWORD Yes Production PyPI API token (full value, including pypi- prefix)
TESTPYPI_TWINE_PASSWORD Yes TestPyPI API token (only needed for the publish-testpypi custom pipeline)

Create tokens at:

Scope tokens to the imagen-sdk project when possible.

Manual publish

Follow the Python Packaging User Guide.

1. Install build tools

pip install --upgrade pip build twine

2. Bump the version

Update version in pyproject.toml and __version__ in src/imagen_sdk/__init__.py. PyPI does not allow re-uploading the same version.

3. Build distribution archives

# Windows PowerShell
Remove-Item -Recurse -Force dist, build -ErrorAction SilentlyContinue
python -m build

This produces in dist/:

  • imagen_sdk-<version>.tar.gz — source distribution
  • imagen_sdk-<version>-py3-none-any.whl — wheel

4. Test on TestPyPI (recommended)

  1. Register at test.pypi.org and verify your email.
  2. Create an API token at test.pypi.org/manage/account/#api-tokens.
  3. Upload:
python -m twine upload --repository testpypi dist/*

When prompted:

  • Username: __token__
  • Password: your API token (including the pypi- prefix)
  1. Verify install:
pip install --index-url https://test.pypi.org/simple/ --no-deps imagen-sdk
  1. Check: https://test.pypi.org/project/imagen-sdk/

5. Publish to PyPI

  1. Register at pypi.org (separate from TestPyPI).
  2. Confirm imagen-sdk is available on pypi.org.
  3. Create a production API token at pypi.org/manage/account/#api-tokens.
  4. Upload:
python -m twine upload dist/*
  1. Install from PyPI:
pip install imagen-sdk

Optional: store credentials in .pypirc

[distutils]
index-servers =
    pypi
    testpypi

[pypi]
username = __token__
password = pypi-...

[testpypi]
repository = https://test.pypi.org/legacy/
username = __token__
password = pypi-...

Never commit .pypirc or API tokens to version control.

License

Proprietary — see LICENSE. Unauthorized use, copying, or distribution is prohibited.

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

imagen_sdk-0.0.3.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

imagen_sdk-0.0.3-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file imagen_sdk-0.0.3.tar.gz.

File metadata

  • Download URL: imagen_sdk-0.0.3.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for imagen_sdk-0.0.3.tar.gz
Algorithm Hash digest
SHA256 4b84da61d67470e88e10c9e315de3833e9b62364829238e5a7a07cf8f5987810
MD5 accbdf47585dffe4de89e01d9614a5b9
BLAKE2b-256 dee84aa161e218ce31b0a2d2dac6c90d5251b9d045016ad285d088c0ec18cf4c

See more details on using hashes here.

File details

Details for the file imagen_sdk-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: imagen_sdk-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for imagen_sdk-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aca0d8006f1e1aa2d2af6a7d90bda2231e86561cb9b24a016ff7306e68a740ef
MD5 0c99410e757c7f7be81dc199673f16ac
BLAKE2b-256 4fdef8039e04f77b2d049a0219f916ef8572f005b830c178d1b0fb229c083f0a

See more details on using hashes here.

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