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.