Internal API

Sources

Dependeny sources - i.e. ways we can depend on a project

class ska_rt.gitlab.GitlabHelmChartDep(*args, **kwargs)

Helm chart built from source code on GitLab

Parameters:

  • dep_type: Should be 'gitlab:helm-chart'

  • project: Gitlab project name (e.g. ska-telescope/sdp/ska-sdp-integration)

  • branch: (List of) branch names in priority order (e.g. [ "{branch}", "main", "master" ])

  • tag: (List of) tags in priority order (e.g. [ "1.2.1" ]) - overrides branch

  • job: Job name to look for (e.g. [ 'helm-chart-build' ])

  • chart_name: Name of chart (if multiple charts are published)

  • repository: Repository where helm chart can be obtained from (optional). Only used if it cannot be determined from CI job

classmethod dep_type_name()

Dependency name, used in configuration files

parse_trace(gl_job, trace)

Abstract method that extracts dependency properties from Gitlab job trace in subclasses

class ska_rt.gitlab.GitlabOciImageDep(*args, **kwargs)

OCI image built from source code on GitLab

Parameters:

  • dep_type: Should be 'gitlab:oci-image'

  • project: Gitlab project name (e.g. ska-telescope/sdp/ska-sdp-proccontrol)

  • branch: (List of) branch names in priority order (e.g. [ "{branch}", "main", "master" ])

  • tag: (List of) tags in priority order (e.g. [ "1.2.1" ]) - overrides branch

  • job: Job name to look for (e.g. [ 'oci-image-build' ])

classmethod dep_type_name()

Dependency name, used in configuration files

parse_trace(gl_job, trace)

Abstract method that extracts dependency properties from Gitlab job trace in subclasses

class ska_rt.gitlab.GitlabPythonDep(*args, **kwargs)

Python package with source code on GitLab

Parameters:

  • dep_type: Should be 'gitlab:python'

  • project: Gitlab project name (e.g. ska-telescope/sdp/ska-sdp-config)

  • branch: (List of) branch names in priority order (e.g. [ "{branch}", "main", "master" ])

  • tag: (List of) tags in priority order (e.g. [ "1.2.1" ]) - overrides branch

  • job: Job name to look for (e.g. [ 'python-build-for-publication', 'python-build-for-development' ])

classmethod dep_type_name()

Dependency name, used in configuration files

parse_trace(gl_job, trace)

Abstract method that extracts dependency properties from Gitlab job trace in subclasses

class ska_rt.gitlab.GitlabTraceDep(config, dep_name, dep_type, project, branch=('{branch}', 'main', 'master'), tag=None, job=('oci-image-build',), sink=(), **extra_args)

GitLab dependency that extracts information from a job trace

abstract classmethod dep_type_name()

Dependency name, used in configuration files

abstract parse_trace(gl_job, trace)

Abstract method that extracts dependency properties from Gitlab job trace in subclasses

Sinks

Dependency sinks for more or less generic YAML configuration files

class ska_rt.yaml.HelmDependencySink(config, sink_name, sink_type, file, **extra_args)

Update a Helm dependency

Parameters:

  • file: Path of Chart.yaml to update (e.g. "charts/ska-mid/Chart.yaml")

Required dependency data:

  • name: Name of dependency / package

  • repository: Helm repository to pull from

  • version: Version of package to use

classmethod sink_type_name()

Dependency sink name, used in configuration files

class ska_rt.yaml.YamlSink(config, sink_name, sink_type, file, updates, **extra_args)

Update a YAML file

Parameters:

  • file: Path of file to update (e.g. "pyproject.yaml")

  • updates: List of updates – each a dictionary with values:

    • path: .-separated JSON path to update (allow data substitution)

    • value: Value to set (allows data substituation, e.g. "{version}")

Required dependency data: Only to cover substitutions

classmethod sink_type_name()

Dependency sink name, used in configuration files

update(data)

Updates target YAML file with data from the parameter dictionary.

Dependency sinks for Python packages

class ska_rt.python.GenericPythonPoetrySink(config, sink_name, sink_type, dependency='{name}', file='pyproject.toml', section='tool.poetry.dependencies', version_only=False, **extra_args)

Generic sink for Poetry sinks. See subclasses for expected parameters.

abstract classmethod sink_type_name()

Dependency sink name, used in configuration files

update(data)

Set dependency properties of Python package

Updates pyproject.toml as appropriate for dependency data passed in parameter.

if version_only = True:

do not add a new poetry source for updated dependency

class ska_rt.python.PythonPoetrySink(config, sink_name, sink_type, dependency='{name}', file='pyproject.toml', section='tool.poetry.dependencies', version_only=False, **extra_args)
Update pyproject.toml for injecting Python dependency to Poetry

(by custom source)

Parameters:

  • file: Target file path (e.g. "pyproject.toml")

  • section: Dependency section to update (e.g.

    "tool.poetry.dependencies")

  • dependency: Name of dependency (e.g. "{name}" to derive from dependency)

Required dependency data:

  • name: Package name

  • version: Package version

  • pypi_url: PyPI-compatible repository URL

classmethod sink_type_name()

Dependency sink name, used in configuration files

class ska_rt.python.PythonPoetrySinkURL(config, sink_name, sink_type, dependency='{name}', file='pyproject.toml', section='tool.poetry.dependencies', version_only=False, **extra_args)

Update pyproject.toml for injecting Python dependency to Poetry (by URL)

Parameters:

  • file: Target file path (e.g. "pyproject.toml")

  • section: Dependency section to update (e.g. "tool.poetry.dependencies")

  • dependency: Name of dependency (e.g. "{name}" to derive from dependency)

Required dependency data:

  • wheel_url: URL to download wheel

classmethod sink_type_name()

Dependency sink name, used in configuration files