Skip to main content

Python SDK for Axint — define Apple App Intents, Views, Widgets, and Apps in Python.

Project description

axint — Python SDK for Axint

Python 3.11+ License: Apache-2.0

Define Apple App Intents, SwiftUI views, WidgetKit widgets, and full apps in Python. Compile to native Swift through the same open-source compiler pipeline that powers the TypeScript SDK.

The Python SDK includes a native Swift generator — no Node.js dependency required. Parse, validate, and compile entirely from Python.

Install

pip install axint

Or install from source for development:

git clone https://github.com/agenticempire/axint.git
cd axint/python
pip install -e '.[dev]'

Define an intent

from axint import define_intent, param

create_event = define_intent(
    name="CreateCalendarEventIntent",
    title="Create Calendar Event",
    description="Creates a new event on the user's calendar",
    domain="productivity",
    params={
        "event_title": param.string("Title of the event"),
        "start_date": param.date("When the event starts"),
        "duration_minutes": param.int("Length of the event in minutes"),
        "is_all_day": param.boolean("Whether the event is all-day", optional=True, default=False),
    },
    entitlements=["com.apple.developer.calendars"],
    info_plist_keys={
        "NSCalendarsUsageDescription": "Create and edit calendar events you request.",
    },
)

Compile it

The Python SDK installs a CLI at axint-py (the TypeScript compiler owns the axint name on npm).

# Parse and inspect the IR
axint-py parse intents/create_event.py
axint-py parse intents/create_event.py --json

# Compile Python → Swift (native, no Node.js needed)
axint-py compile intents/create_event.py --stdout
axint-py compile intents/create_event.py --out ios/Intents/

# With companion fragments
axint-py compile intents/create_event.py --out ios/Intents/ --emit-info-plist --emit-entitlements

# Validate without generating Swift
axint-py validate intents/create_event.py

# Machine-readable output
axint-py compile intents/create_event.py --json

Use it as a library

from axint import define_intent, param, generate_swift, validate_intent

intent = define_intent(
    name="SendMessage",
    title="Send Message",
    description="Sends a message",
    domain="messaging",
    params={"body": param.string("Message text")},
)

ir = intent.to_ir()
diagnostics = validate_intent(ir)
swift_code = generate_swift(ir)

Cross-language bridge

The Python SDK produces compatible IR JSON that the TypeScript compiler can consume. You can pipe it in for additional validation and Swift generation:

axint-py parse intent.py --json | axint compile - --from-ir --stdout

Why Python?

Every language-agnostic analysis layer in Axint — the IR, the validator, the generator — works with a stable JSON schema. The Python SDK implements the full pipeline natively, unlocking a massive population of developers who shouldn't have to learn TypeScript to build Siri integrations.

The Python parser never runs your code. It walks the Python AST the same way the TypeScript compiler walks the TS AST, so axint compile is deterministic, sandboxable, and reproducible.

Parity with the TypeScript SDK

Feature TypeScript Python
define_intent / defineIntent
define_entity / defineEntity
define_view / defineView
define_widget / defineWidget
define_app / defineApp
param.string/int/double/...
entitlements, infoPlistKeys
isDiscoverable
Multi-intent files
Swift codegen (native)
EntityQuery codegen
IR validation
Info.plist fragment
Entitlements fragment
CLI (parse/compile/validate)
Return-type inference
MCP server

Development

pip install -e '.[dev]'
pytest -v
ruff check .
mypy axint

License

Apache 2.0 — see LICENSE.

Part of the Axint project by Agentic Empire.

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

axint-0.4.29.tar.gz (61.9 kB view details)

Uploaded Source

Built Distribution

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

axint-0.4.29-py3-none-any.whl (53.0 kB view details)

Uploaded Python 3

File details

Details for the file axint-0.4.29.tar.gz.

File metadata

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

File hashes

Hashes for axint-0.4.29.tar.gz
Algorithm Hash digest
SHA256 dca8395715bb0164fb3aba52876cfa0321f9f6fdab4ad5e7da86a60545912df5
MD5 25b5df0bc27a9a922a536b16125b5e41
BLAKE2b-256 dfa5f73ec3771e18d6463d9b560ea876886037cb08a31cca7bab917ed08c71c9

See more details on using hashes here.

File details

Details for the file axint-0.4.29-py3-none-any.whl.

File metadata

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

File hashes

Hashes for axint-0.4.29-py3-none-any.whl
Algorithm Hash digest
SHA256 b13afe485dff940b94b90fe14eebc0f4d85e411645db98f432decf6577bcf450
MD5 55b221d5ed6a52e2e87593d1785e6095
BLAKE2b-256 9df05bd9000f850f9ad37c6a174e3a424f7ad32d3fc363e2d497d9b9a99f452b

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