PineXQ Python Client
A hypermedia-based client for the DataCybernetics PineXQ platform.
This module contains the submodules:
-
core: A generic hypermedia client (HC) to work with siren hypermedia APIs Siren on GitHub -
job_management: Specialized HC-object (HCO) implementations for the PinexQ Job-Management API (JMA).
Installation
Install from PyPI by running
pip install pinexq-client
Setup the Client
The hypermedia client uses HTTPX as a backend. To access the API you need to provide a pre-configured HTTPX-client with a valid API key for authentication. From The API key the user and permissions are derived so do not share the API key and store it securely.
To initialize the client parts must be supplied:
- The API key (as header)
- The API host as URL with port if required
from httpx import Client
from pinexq.client.job_management.enterjma import enter_jma
from pinexq.client.job_management.hcos.entrypoint_hco import EntryPointHco
client = Client(
base_url="https://myapihost.com:80",
headers={'x-api-key': '<SECRET_PAT>'}
)
# the client is now ready to be passed to function entering the API
entrypoint: EntryPointHco = enter_jma(client)
Using the API
Job-Management Interface
There is a convenience layer wrapping job-management-specific objects in interface classes for ease of use.
from pinexq.client.job_management.tool import Job
from pinexq.client.job_management.model import JobStates
job = (
Job(client)
.create(name="JobName")
.select_processing(processing_step="step_function_name")
.configure_parameters(param_name="value")
.start()
.wait_for_completion()
)
result = job.get_result()
Raw Hypermedia API
In the spirit of a hypermedia API you can also use low level calls to navigate the API, e.g. when features are not yet exposed in the convenience wrapper.
from pinexq.client.job_management.enterjma import enter_jma
from pinexq.client.job_management.hcos.entrypoint_hco import EntryPointHco
from pinexq.client.job_management.model import CreateJobParameters, SetJobTagsParameters
entrypoint: EntryPointHco = enter_jma(client)
# Get to jobs root
job_root = entrypoint.job_root_link.navigate()
# Create a new job
parameters = CreateJobParameters(name="Test Job")
job = job_root.create_job_action.execute(parameters).navigate()
# Edit the job's tags
job.edit_tags_action.execute(SetJobTagsParameters(tags=["test", ]))
...
Folder-sourced inputs (JMA API 11)
Job and template input SetFolderSource actions take a folder resource URL rather than a
folder path. The folder must exist and belong to the job/template owner. JMA stores its
current path as a snapshot; renaming the folder later does not retarget that snapshot.
from pinexq.client.job_management.model import SetDataSlotFolderSourceParameters
job.get_input_data_slots()[0].set_folder_source_action.execute(
SetDataSlotFolderSourceParameters(
folder_url=str(folder.self_link().get_url()), recursive=True
)
)
# The template helper also accepts a Folder wrapper, link, or URL.
template.set_dataslot_folder_source(0, folder, recursive=True)
Use folder_url=None (or template.set_dataslot_folder_source(0, None)) for the owner's
root. This sends explicit JSON null; omitting the field is rejected. Output-folder
settings continue to accept paths, since output folders can be created when the job runs.
Release files for pinexq-client 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pinexq_client-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / pinexq_client-2.0.0-py3-none-any.whl
| Download URL | pinexq_client-2.0.0-py3-none-any.whl |
|---|---|
| Size | 107.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c76d35b34dfafe0b78859521aa2e97ec11363243f69fbf46ea11349ae5c0bef
|
|
BLAKE2b-256 checksum How to use checksums |
05ef38863f95a3e1cfaa1fbbbda1d30070c14db06caed791845e0707e5cff258
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|