Locate project root via custom markers.
Project description
> find-project-root
Locate project root via custom markers.
About
find-project-root is a lightweight utility that traverses up from a given path until it finds a project marker.
- Minimal dependencies — only uses project-markers (~6 KB module)
- Path flexibility — accepts strings,
Pathobjects, or current working dir - Customizable markers — provide your own or use defaults
- Multi-Python support — from Python 2.6 thru 3.15+
Installation
pip install find-project-root
API usage
import find_project_root
# Find from current dir
root = find_project_root()
print(root) # e.g. /home/user/projects/my-project
Note: Most type checkers will falsely warn find_project_root is not a callable module because they cannot analyze runtime behavior (where the module is replaced w/ a function for cleaner, direct access). You can safely suppress such warnings using # type: ignore.
Available options:
| Name | Type | Description | Default Value |
|---|---|---|---|
path |
str, Path or None |
Starting directory to search from. | None (current working dir) |
max_depth |
int |
Max levels to traverse up. | 9 |
markers |
List[str] or None |
Custom marker files to look for. | project-markers list |
Examples:
Start from specific path:
root = find_project_root(path='assets/images')
Limit search depth:
root = find_project_root(max_depth=3)
Use custom markers:
root = find_project_root(markers=['.git', 'pyproject.toml', 'requirements.txt'])
Combine options:
root = find_project_root(path='src', max_depth=5, markers=['.git'])
MIT License
Copyright © 2026 Adam Lui.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file find_project_root-1.0.1.tar.gz.
File metadata
- Download URL: find_project_root-1.0.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc0a0e8b8639d351cc5bdc65cd9dbe9d559d22260c2e8b284227f1ce56a5a518
|
|
| MD5 |
c04d81a741e76e4f27e2d2d790aa089e
|
|
| BLAKE2b-256 |
01f063ece12c4e730ba0ea04df72df0fe3620467eb726bc5f8684ec8ce8a0bc0
|
File details
Details for the file find_project_root-1.0.1-py3-none-any.whl.
File metadata
- Download URL: find_project_root-1.0.1-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62e74a4d3ea34d4a7a12665eba445b46b24046cb71a2e9ee533fdd20922a4c02
|
|
| MD5 |
8d5fa7ffd229f8768bd217a4e72dbf6c
|
|
| BLAKE2b-256 |
3e4a4eee1a641f596103ac50864a299e9b7c0ce92d4339e7b447ee5e8f211909
|