Skip to main content

No project description provided

Project description

kraken-core

The kraken.core package provides the primitives of describing a build and deriving build tasks.

Aside from the kraken.core package, this package also provides the kraken.api module that is used only at runtime by Kraken build scripts and the kraken.testing module for Pytest fixtures.

How does it work?

Kraken uses tasks to describe units of work that can be chained and establish dependencies between each other. Each task has a schema that defines its input and output properties. When an output property is linked to the input property of another task, this established as dependency between the tasks.

from kraken.std.docker_gen import generate_dockerfile
from kraken.std.docker_build import build_docker_image
dockerfile = generate_dockerfile(source_file="Dockerfile.yml")
build_docker_image(dockerfile=dockerfile.path, tags=["example:latest"], load=True)

This populates the project with two tasks and connects the computed output property of one to the other, allowing the tasks that will run for build_docker_image() to pick up the dynamically generated Dockerfile that is written into a location in the build directory by the generate_dockerfile() task.

Core API

Kraken tasks are described with a schema. Each schema field has a type and may be an input or output parameter. Output parameters are only available once a resource is executed; Kraken will that a proper execution order is established such that output properties are hydrated before another resource tries to access them as an input.

from kraken.core.task import Context, Task, Property, Output, task_factory
from typing_extensions import Annotated

class GenerateDockerfileTask(Task):
    source_file: Property[str]
    path: Annotated[Property[str], Output]

    def execute(self, ctx: Context) -> None:
        path = Path(self.path.setdefault(str(ctx.build_directory / "Dockerfile")))
        path.write_text(render_dockerfile(Path(self.source_file.get()).read_text()))

generate_dockerfile = task_factory(GenerateDockerfileTask)

Project details


Release history Release notifications | RSS feed

This version

0.2.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kraken-core-0.2.4.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

kraken_core-0.2.4-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file kraken-core-0.2.4.tar.gz.

File metadata

  • Download URL: kraken-core-0.2.4.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.12.0 keyring/23.6.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.10.2

File hashes

Hashes for kraken-core-0.2.4.tar.gz
Algorithm Hash digest
SHA256 852ac6e1999f223b0848b6e326512e0de7bff78931d265571a2f403c3a94afe0
MD5 1a83df7d4709c3dcd032adb8500c36f8
BLAKE2b-256 6d484db43c27f0fbb73bf10fca6fc01d751d8a60ef4a20e70b951d5aca95cef1

See more details on using hashes here.

File details

Details for the file kraken_core-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: kraken_core-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.12.0 keyring/23.6.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.10.2

File hashes

Hashes for kraken_core-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4197e50f4ae9f85c4aebd04800b2564c800deb9460163bdc93532131bc73aadc
MD5 15f63d35eeff799a7c5213049d07bd21
BLAKE2b-256 bb3d17e9d6486acb18fc606b36c61c584159477f30b04b285b0b377fdf4cbe09

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page