or register flavors.my_flavor.MyOrchestratorFlavorZenML resolves the flavor class by taking the path where you initialized zenml (via zenml init) as the starting point of resolution. Therefore, please ensure you follow the best practice of initializing zenml at the root of your repository.

If ZenML does not find an initialized ZenML repository in any parent directory, it will default to the current working directory, but usually it's better to not have to rely on this mechanism, and initialize zenml at the root.

Afterward, you should see the new flavor in the list of available flavors:

zenml orchestrator flavor list

See the docs on extensibility of the different components here or get inspired by the many integrations that are already implemented such as the MLflow experiment tracker.

Step 3: Create an integration class

Once you are finished with your flavor implementations, you can start the process of packaging them into your integration and ultimately the base ZenML package. Follow this checklist to prepare everything:

1. Clone Repo

Once your stack components work as a custom flavor, you can now clone the main zenml repository and follow the contributing guide to set up your local environment for develop.

2. Create the integration directory

All integrations live within src/zenml/integrations/ in their own sub-folder. You should create a new folder in this directory with the name of your integration.

An example integration directory would be structured as follows:

/src/zenml/integrations/                        <- ZenML integration directory

<example-integration>                       <- Root integration directory

├── artifact-stores                     <- Separated directory for

|      ├── __init_.py                      every type

|      └── <example-artifact-store>     <- Implementation class for the

|                                          artifact store flavor

├── flavors

|      ├── __init_.py

|      └── <example-artifact-store-flavor>  <- Config class and flavor