Projects

Projects are detected by the presence of well-known “marker” files that identify the root of the project.

There are some default types, but you can add to it, for example:

[project_root_markers]

sphinx = ["docs/conf.py"]

(or in pyproject.toml)

[tool.ick.project_root_markers]

sphinx = ["docs/conf.py"]

These instruct ick to consider the parent of where conf.py exists to be a sphinx project (likely in addition to a python project per default config).

Projects aren’t detected within higher-level projects, so if there happens to be a pyproject.toml in the root of your repo, you might want to specify

skip_project_root_in_repo_root = true

and if the autodetection fails for you, set some of

explicit_project_dirs = [...]
ignore_project_dirs = [...]
outer_project_dirs = [...]

Note that explicit dirs still need to contain markers, so their type can be inferred.

outer_project_dirs tells ick to keep searching for projects beneath those directories even if a higher-level project was already found. This is useful for monorepos where services/ or apps/ contain their own project roots.

Project-scoped and file-scoped rules stop at nested project boundaries, so a rule for a parent project will not read or write files that belong to a child project.