Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
File renamed without changes.
15 changes: 15 additions & 0 deletions docs/about/philosophy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Philosophy

usethis targets the Python ecosystem in a particular way. It's not trying to be a package manager: that's well covered by `uv`. It's also not trying to provide absolutely all the functionality a developer might want, e.g. CI, editor, and LLM configuration. Instead, usethis focuses on the Python-specific aspects of Python developer tooling and project configuration.

One of the significant motivations for usethis is to make it easier for developers to avail themselves of the rich and powerful ecosystem of Python developer tooling. In the age of LLM-powered development, the benefits of these tools are more significant than ever.

## Why not CI Configuration?

Until v0.19.0, usethis provided a `usethis ci` command, but this was deprecated for removal. It's worth giving some of the rationale for why, since it helps to clarify the philosophy of usethis.

- There are many different CI providers, external services, and configurations that people might want to use. That variety is in tension with the usethis philosophy of generally providing a single, opinionated way to do things. There's often an element of setting up broader infrastructure, API keys, etc. and altogether this makes it very difficult to automate effectively.

- CI configuration has important security implications to consider. It's not something that is necessary sensible to try and automate compared to Python developer tooling and project configuration.

- Directing dev tooling through tools for managing hooks like [prek](https://prek.j178.dev/) and [pre-commit](https://pre-commit.com/) limits the value in also configuring CI, since the CI configuration is generally just invoking these tools.
File renamed without changes.
671 changes: 37 additions & 634 deletions docs/pipeweld.md

Large diffs are not rendered by default.

12 changes: 8 additions & 4 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@ nav:
- CLI Reference:
- Overview: cli/overview.md
- Reference: cli/reference.md
- With Other Frameworks: frameworks.md
- Similar Projects: similar-projects.md
- FAQ: faq.md
- License: about-license.md
- Usage With Other Frameworks: frameworks.md
- About:
- Philosophy: about/philosophy.md
- Similar Projects: about/similar-projects.md
- FAQ: about/faq.md
- License: about/about-license.md
- Internal Utilities:
- Pipeweld: pipeweld.md

theme:
name: material
Expand Down
6 changes: 4 additions & 2 deletions tests/docs/test_readme.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,14 @@ def test_assemble_readme_from_docs(usethis_dev_dir: Path):
)
)
parts.append(
_get_doc_file(usethis_dev_dir / "docs" / "similar-projects.md").replace(
_get_doc_file(
usethis_dev_dir / "docs" / "about" / "similar-projects.md"
).replace(
"](frameworks.md)",
"](https://usethis.readthedocs.io/en/stable/frameworks)",
)
)
parts.append(_get_doc_file(usethis_dev_dir / "docs" / "about-license.md"))
parts.append(_get_doc_file(usethis_dev_dir / "docs" / "about" / "about-license.md"))

content = (
(usethis_dev_dir / "README.md")
Expand Down
Loading