0.1.0
Changes in version 0.1.0
Enhancements
-
Enhanced Cuiman authentication with full OAuth2 Resource Owner Password
Credentials (ROPC) support, including automatic token refresh and improved
cuiman configureusability (#59):- Added
client_id,client_secret, andgrant_typefields toAuthConfig
with corresponding--client-id/--client-secretCLI options. - Added automatic token refresh: when a
refresh_tokenis available,
cuimanrefreshes expired access tokens on 401 responses and retries the
request, for both sync and async clients. Refresh tokens are persisted to
the config file alongside access tokens. - Environment variables (prefixed
EOZILLA_) are now surfaced as pre-filled
defaults duringcuiman configure. This allows admins to pre-configure
fields likeEOZILLA_API_URL,EOZILLA_AUTH_URL,EOZILLA_CLIENT_ID,
andEOZILLA_USE_BEARER(e.g. via Kubernetes secrets in JupyterHub
deployments), so users only need to confirm or override the values and
provide their password. - Made
client_secretoptional for OAuth2 public clients that do not
require a client secret.
- Added
-
The Gavicore package has been enhanced by a new UI generator which
converts OGC API - Process descriptions (or OpenAPI Schema) into user
interfaces for editing input parameters:- Added a new extendable UI generation framework in
gavicore.ui. - The framework itself does not enforce a dedicated widget library,
but it can be configured to output UIs for any Python widget library. - Support for UI generated with the Panel
library is inbuilt as it is used in the Cuiman GUI. - Dropped subpackage
cuiman.gui.component. - Added a pixi tool to demonstrate and debug generated UIs from
OpenAPI Schema:pixi run schema2ui.
- Added a new extendable UI generation framework in
-
Enhanced the Appligator package with Dockerfile generation and
improved Airflow DAG generation:- Added
appligator.airflow.gen_dockerfile.generatefor Jinja2-template-based
Dockerfile generation. Produces a two-stage pixi build with support for
non-editable local package installs. The runtime base image is configurable
viabase_image(default:debian:bookworm-slim). - Added
--skip-buildflag to theappligatorCLI to skip Docker image
building and only generate DAG files, using the provided--image-namedirectly.
Skipping the build is now the default; use--no-skip-buildto opt in to building. - Updated
appligator.airflow.run_stepwithcoerce_inputs(casts Airflow
Jinja string params to their declared types) and_XComEncoder(serialises
Pydantic models and other non-JSON-native objects for XCom output). - Added
--secret-nameoption to inject Kubernetes secrets as environment
variables into every generated pod (repeatable). - Added resource requests and limits support via four new CLI options
(--cpu-request,--memory-request,--cpu-limit,--memory-limit). - Added volume support via two new model types (
PvcMount,ConfigMapMount) and
two new repeatable CLI options:--pvc-mount name:claim_name:mount_pathmounts a PersistentVolumeClaim.--config-map-mount name:config_map_name:mount_path[:sub_path]mounts a
ConfigMap, with optionalsub_pathfor single-file mounts.
- Added
--config-file PATHoption to load all Kubernetes options from an
appligator-config.yamlfile (image_name,dag_name,secret_names,
resource fields,pvc_mounts,config_map_mounts). CLI flags take
precedence over file values.
- Added
-
The Cuiman client package has been enhanced by job result openers,
which ease working with the results of a process job (#65):- Client classes now have a method
open_job_result(job_id, **options)that is used to open the results
of a job. Both sync and async versions of the method are available in
cuiman.Clientandcuiman.AsyncClient. - Applications can customize how job results are opened by
adding their application-specific openers using the new
register_job_result_opener(opener)in classcuiman.ClientConfig. - Added a new
notebooks/cuiman-openers.ipynbthat demonstrates a
custom opener. - Added a new section in Cuiman usage documentation.
- Added some default openers for
xarray.Dataset,
pandas.DataFrame, andgeopandas.GeoDataFrame
given that a respective job result is a link.
- Client classes now have a method
-
The model classes that correspond to the OGC API - Processes in
gavicore.modelsare no longer generated and have been adjusted to
be more user-friendly (#71):InlineValueis now a simple type alias instead of apydantic.RootModel.- Same for
InlineValueOrRefwhich has also been renamed toJobResult. - Replaced type of optional fields
Optional[T]byT | None. - The following models are now extendable, e.g., using
"x-"prefixed fields:gavicore.models.Schemagavicore.models.InputDescriptiongavicore.models.OutputDescriptiongavicore.models.JobStatus(extra "x-traceback")gavicore.models.ApiError(extra "x-traceback")
- Replaced one-element enums
JobType,MaxOccursby string literals. - Replaced
Union[]by|operator.
Fixes
- Fixed Wraptile's local service implementation
(wraptile.services.local.local_service.LocalService) to reliably work
on Linux OSes when run inprocessesmode. (#97)
Other changes
- Dropped utility function
additional_parameters()inprocodile
as usage ofadditionalParametersin input descriptions
is and was discouraged. - Lifted some
mypyrestrictions and enabled mypy pydantic plugin. - Pinned
zarr >=3.1,<3.2in dev environment due to regression inzarr 3.2,
wherexarray.open_zarr()(andxarray.open_dataset()) can no longer open
Windows file URIs, likefile:///C:/<path>.zarr. - Added GitHub workflow for publication to PyPI. (#91)
Full Changelog: v0.0.9...v0.1.0