Skip to main content

Access file paths from pyproject.toml

Project description

project-paths

Lint and Test PyPI

Access file paths from pyproject.toml

Thanks to @Madoshakalaka for the idea!

# pyproject.toml
[tool.project-paths]
readme = "README.md"
# app.py
from project_paths import paths

# paths.readme is a pathlib.Path object:
print(paths.readme.read_text())

Install

pip install project-paths

Usage

Does your application have a bunch of configurable file paths? Do you wish you just had one place to configure list them all?

Add paths to [tool.project-paths]

With this module, define your paths in your pyproject.toml file under the [tool.project-paths] table:

[tool.project-paths]
docs = "path/to/my/docs"
settings = "path/to/my/settings.py"
config = "/opt/path/to/my/config
# Add as many paths as you want!

Anything string defined with [tool.project-paths] will be made available. Relative paths are relative to pyproject.toml.

Access paths using project_paths.paths.<path name>

Now you can access all the paths listed in pyproject.toml with project_paths.paths. Every path is returned as a pathlib.Path object:

from project_paths import paths

print(paths.docs.glob("*.md"))
assert paths.config.exists()
exec(paths.settings.read_text())
# Or anything you want!

Caveats

Names in [tool.project-paths] should be a valid Python identifier and the names cannot have a leading underscore. If a name has a leading underscore, a warning is issued and the name is inaccessible:

[tool.project-paths]
# BAD: paths that start with a '_' cannot be used
_my_path = "path/to/wherever"
# GOOD: path is a valid Python identifier!
my_path = "path/to/where

License

2021 © Eddie Antonio Santos. MIT Licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

project-paths-0.1.0.post0.tar.gz (5.5 kB view hashes)

Uploaded Source

Built Distribution

project_paths-0.1.0.post0-py3-none-any.whl (5.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page