Catalog PyPI
Back to packageRELEASE DETAILS

4.11.0

PyPI

acex-client

ACE-X CLIENT - Client for ACE-X

automationcontrol
Published15 Oct 2026
Direct dependencies3
Transitive dependenciesNot calculated

README

Version 4.11.0 documentation

ACE-X Client

Synchronous Python client for the ACE-X backend.

Installation

pip install acex-client

Quick start

from acex_client import Acex

with Acex(base_url="https://acex.local") as client:
    result = client.inventory.sites.query(name="stockholm")
    for site in result:
        print(site.id, site.name)

Auth is auto-detected from /auth/config. Override via env vars:

  • ACEX_BASE_URL — backend URL
  • ACEX_ISSUER_URL, ACEX_CLIENT_ID, ACEX_CLIENT_SECRET — OIDC override
  • ACEX_VERIFY_SSL=false — disable TLS verification

or inject an AuthProvider directly:

from acex_client.auth import ClientCredentialsAuth

auth = ClientCredentialsAuth(client_id="...", client_secret="...", issuer_url="...", verify_ssl=True)
with Acex(base_url="...", auth=auth) as client:
    ...

Namespaces

NamespaceResources / actions
client.inventorysites, regions, region_assignments, contacts, contact_assignments, assets, asset_clusters, collection_agents, credentials, logical_nodes, management_connections, node_instances, node_credentials(node_id), site_credentials(site_name)
client.observabilityagents (with bound outputs, rules, nodes), grafana
client.operationscompliance (.check(), .site()), config_history.list_changes(), lldp (.upload(), .topology(), .by_site(), .get(), .reverse())
client.config_componentscatalog(), generate(), reconcile(), drivers(), translate()
client.nedslist(), get(), download()
client.aiask(), analyze() (SSE-streamed) — None if backend has no ai_ops mounted
client.systemauth_config(), health_node(), health_site()

CRUD pattern

Each resource inherits the mixins for the verbs it supports. All mutations return a LiveInstance proxy that holds the Pydantic model; .save() diffs against the original and PATCHes only changed fields, .delete() removes the resource:

site = client.inventory.sites.create(name="stockholm", city="SE")
site.display_name = "Stockholm HQ"
site.save()  # PATCH /inventory/sites/{id} with {display_name: ...}
site.delete()  # DELETE /inventory/sites/{id}

get, update, create, delete all raise AcexNotFoundError on HTTP 404 rather than returning None — wrap in try/except for "if exists" flows.

Actions and sub-resources

Action methods use @action(method, path_template):

client.inventory.collection_agents.manifest(id=1)
client.inventory.collection_agents.ack(id=1, payload=CollectionAgentAck(config_revision=5))

Bound sub-resources are accessed via .parent_or_id:

client.inventory.collection_agents.rules(1).create(region="eu")

Via a LiveInstance, the bound sub-resource is exposed as an attribute:

agent = client.observability.agents.get(1)
agent.rules.create(region="eu")

Errors

from acex_client import (
    AcexNotFoundError,
    AcexValidationError,
    AcexAuthError,
    AcexPermissionError,
    AcexServerError,
    AcexTimeoutError,
    AcexConnectionError,
)

All errors inherit from AcexError. HTTP errors carry status_code and body attributes.

Examples

See examples/crud.py and examples/observe.py.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 3

Native requirements
3 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
acex-devkit
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
acex-devkit<3,>=2runtime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.27.0runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.12.5runtime

Distribution files

2 collected
acex_client-4.11.0-py3-none-any.whl

bdist_wheel · 36.67 KB · Python py3

Source file
acex_client-4.11.0.tar.gz

sdist · 21.82 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:11 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:86298bb9169e60351b5b4e20fbfa61b447c3fcba03c2a2c2d7360188e3c02f32

Other collected versions

View all collected versions →