/maize-contrib

Contributed and additional nodes for maize

Primary LanguagePythonApache License 2.0Apache-2.0

Maturity level-1

This is a namespace package for custom nodes and subgraphs for maize. Place custom nodes in an appropriate subfolder under maize/steps/, following the provided template.

Installation

Due to current issues with installing dependencies from internal GitHub repositories, maize-contrib currently bundles a recent version of the maize core. To install, simply clone this repository and run:

conda env create -f env-users.yml
conda activate maize
pip install --no-deps ./

If you want to keep up-to-date with the latest changes to the core, clone maize, switch to the directory, and run (in the same conda environment):

pip install --no-deps ./

If you plan on developing, you should use env-dev.yml instead and use the -e flag for pip. If you encounter slow installs or dependency resolution, consider using mamba as a drop-in conda replacement.

Usage

Simply import the relevant steps from the subpackage:

from maize.steps.mai.example import Example

See the documentation for details on the included steps and utilities.

Development

Follow the development guidelines for maize.

Because this is a namespace package, some development tools (especially linters) can have problems. I have switched from pylint to ruff which seems to handle these environments with no problems. For mypy it is important to specify MYPY_PATH and explicit-package-bases (see also this issue). If you're using VSCode, you will want to point Pylance to both the maize and maize-contrib package directories, or it will be unable to find utilities subpackages.

Status

Maize and this repository for contributions are considered to be in a pre-production stage. The core feature set is complete, but there may be some occasional problems running certain workflows, and there are probably many unknown edge cases.