From b3de03cf269e8bfd73c32c96ce845e9f2cb2c231 Mon Sep 17 00:00:00 2001 From: Ankita Katiyar <110245118+ankatiyar@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:15:43 +0530 Subject: [PATCH] Add documentation about `pyproject.toml` (#2427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * first draft pyproject.toml Signed-off-by: Ankita Katiyar * Update docs/source/kedro_project_setup/settings.md Co-authored-by: Juan Luis Cano Rodríguez * Apply suggestions from code review Co-authored-by: Jo Stichbury * lint + fix rtd build Signed-off-by: Ankita Katiyar * Fix linting errors introduced by merge from FAQ changes Signed-off-by: Jo Stichbury --------- Signed-off-by: Ankita Katiyar Signed-off-by: Jo Stichbury Co-authored-by: Juan Luis Cano Rodríguez Co-authored-by: Jo Stichbury Signed-off-by: Jannic Holzer --- docs/source/kedro_project_setup/settings.md | 23 ++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/source/kedro_project_setup/settings.md b/docs/source/kedro_project_setup/settings.md index b4c5761d9f..3a115feaf9 100644 --- a/docs/source/kedro_project_setup/settings.md +++ b/docs/source/kedro_project_setup/settings.md @@ -1,9 +1,11 @@ # Project settings +## Application settings + A Kedro project's `settings.py` file contains the application settings for the project, including registration of Hooks and library components. This page explains how settings work, and which settings are available. ```{note} -Application settings is distinct from [run time configuration](configuration.md), which is stored in the `conf` folder and can vary by configuration environment, and according to the contents of `pyproject.toml`, which provides project metadata such as `package_name`, `project_name` and `project_version` (the version of Kedro with which the project was generated). +Application settings is distinct from [run time configuration](configuration.md), which is stored in the `conf` folder and can vary by configuration environment, and [pyproject.toml](#project-metadata) , which provides project metadata and build configuration. ``` By default, all code in `settings.py` is commented out. When settings are not supplied, Kedro chooses sensible default values. You only need to edit `settings.py` if you wish to change to values other than the defaults. @@ -19,3 +21,22 @@ By default, all code in `settings.py` is commented out. When settings are not su | `CONFIG_LOADER_CLASS` | `kedro.config.ConfigLoader` | Customise how project configuration is handled. | | `CONFIG_LOADER_ARGS` | `dict()` | Keyword arguments for the `CONFIG_LOADER_CLASS` constructor. | | `DATA_CATALOG_CLASS` | `kedro.io.DataCatalog` | Customise how the [Data Catalog](../data/data_catalog.md) is handled. | + +## Project metadata +The `pyproject.toml` file is the standard way to store build metadata and tool settings for Python projects. +Every Kedro project comes with a default pre-populated `pyproject.toml` file in your project root directory with the following keys specified under the `[tool.kedro]` section: + +```toml +[tool.kedro] +package_name = package_name +project_name = project_name +kedro_init_version = kedro_version +``` + +The `package_name` should be a [valid Python package name](https://peps.python.org/pep-0423/) and the `project_name` should be a human-readable name. They are both mandatory keys for your project. +`kedro_init_version` specifies the version of Kedro the project was created with. When you upgrade to a newer Kedro version, +this value should also be updated. + +You can also use `pyproject.toml` to specify settings for functionalities such as [micro-packaging](../nodes_and_pipelines/micro_packaging.md). +You can also store the settings for the other tools you've used in your project, such as [`pytest` for automated testing](../development/automated_testing.md). +Consult the respective documentation for the tools you have used to check how you can configure the settings with the `pyproject.toml` file for your project.