datavolo-io / hatch-datavolo-nar

Hatch plugin for building Apache NiFi NAR bundles
Apache License 2.0
13 stars 6 forks source link

hatch-datavolo-nar

This project provides a Builder plugin for the Hatch Python project manager that enables building packaged archives for Apache NiFi. The NAR format uses the ZIP file structure, containing a manifest and NiFi components with dependencies.

pypi python-versions build license Hatch Ruff Mypy

Integrating

This project requires the Hatch project manager for Python with a working pyproject.toml configuration.

Build System

The hatch-datavolo-nar library must be added to the build-system.requires field in a pyproject.toml configuration for Hatch to load the plugin.

[build-system]
requires = ["hatchling", "hatch-datavolo-nar"]
build-backend = "hatchling.build"

Build Packages

The hatch-datavolo-nar plugin reads the Hatch build configuration to select files for packaging.

The nar build target should be configured with a packages field that identifies the directory containing Python files to be included.

The following configuration section provides an example for a project containing a processors package using the src layout for directory organization:

[tool.hatch.build.targets.nar]
packages = ["src/processors"]

Build Command

The hatch-datavolo-nar plugin provides the nar build target, which can be invoked using the Hatch build command.

hatch build -t nar

A Python NAR with platform-specific dependencies requires building on a machine with the same architecture as the runtime system.

Developing

Run the following Hatch command to build the project:

hatch build

The Python wheel can be referenced using a file URI in a project build system.

[build-system]
requires = ["hatchling", "hatch-datavolo-nar@file:///dist/hatch_datavolo_nar-0.1.0-py3-none-any.whl"]
build-backend = "hatchling.build"

The Hatch build environment caches build plugins, which requires pruning existing environments to use a new version of the plugin.

hatch env prune

Coding Conventions

This project uses the following tools to evaluate adherence to coding conventions:

Versioning

This project follows the Semantic Versioning Specification 2.0.0.

Licensing

This project is distributed under the terms of the Apache License 2.0.