Skip to content

0.1.0

Choose a tag to compare

@forman forman released this 08 May 14:14
· 88 commits to main since this release
16368c7

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 configure usability (#59):

    • Added client_id, client_secret, and grant_type fields to AuthConfig
      with corresponding --client-id / --client-secret CLI options.
    • Added automatic token refresh: when a refresh_token is available,
      cuiman refreshes 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 during cuiman configure. This allows admins to pre-configure
      fields like EOZILLA_API_URL, EOZILLA_AUTH_URL, EOZILLA_CLIENT_ID,
      and EOZILLA_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_secret optional for OAuth2 public clients that do not
      require a client secret.
  • 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.
  • Enhanced the Appligator package with Dockerfile generation and
    improved Airflow DAG generation:

    • Added appligator.airflow.gen_dockerfile.generate for 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
      via base_image (default: debian:bookworm-slim).
    • Added --skip-build flag to the appligator CLI to skip Docker image
      building and only generate DAG files, using the provided --image-name directly.
      Skipping the build is now the default; use --no-skip-build to opt in to building.
    • Updated appligator.airflow.run_step with coerce_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-name option 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_path mounts a PersistentVolumeClaim.
      • --config-map-mount name:config_map_name:mount_path[:sub_path] mounts a
        ConfigMap, with optional sub_path for single-file mounts.
    • Added --config-file PATH option to load all Kubernetes options from an
      appligator-config.yaml file (image_name, dag_name, secret_names,
      resource fields, pvc_mounts, config_map_mounts). CLI flags take
      precedence over file values.
  • 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.Client and cuiman.AsyncClient.
    • Applications can customize how job results are opened by
      adding their application-specific openers using the new
      register_job_result_opener(opener) in class cuiman.ClientConfig.
    • Added a new notebooks/cuiman-openers.ipynb that demonstrates a
      custom opener.
    • Added a new section in Cuiman usage documentation.
    • Added some default openers for xarray.Dataset,
      pandas.DataFrame, and geopandas.GeoDataFrame
      given that a respective job result is a link.
  • The model classes that correspond to the OGC API - Processes in
    gavicore.models are no longer generated and have been adjusted to
    be more user-friendly (#71):

    • InlineValue is now a simple type alias instead of a pydantic.RootModel.
    • Same for InlineValueOrRef which has also been renamed to JobResult.
    • Replaced type of optional fields Optional[T] by T | None.
    • The following models are now extendable, e.g., using "x-" prefixed fields:
      • gavicore.models.Schema
      • gavicore.models.InputDescription
      • gavicore.models.OutputDescription
      • gavicore.models.JobStatus (extra "x-traceback")
      • gavicore.models.ApiError (extra "x-traceback")
    • Replaced one-element enums JobType, MaxOccurs by 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 in processes mode. (#97)

Other changes

  • Dropped utility function additional_parameters() in procodile
    as usage of additionalParameters in input descriptions
    is and was discouraged.
  • Lifted some mypy restrictions and enabled mypy pydantic plugin.
  • Pinned zarr >=3.1,<3.2 in dev environment due to regression in zarr 3.2,
    where xarray.open_zarr() (and xarray.open_dataset()) can no longer open
    Windows file URIs, like file:///C:/<path>.zarr.
  • Added GitHub workflow for publication to PyPI. (#91)

Full Changelog: v0.0.9...v0.1.0

New Contributors