genvi
is a tool to start new Python projects.
It doesn't have versioning as it's expected to be used in a fire-and-forget fashion; generate the Python project and code on.
There isn't much anything special about genvi
, it's just another Python project
template among many others. Different strokes for different folks.
Other project templates you might want to check out:
- https://github.com/cjolowicz/cookiecutter-hypermodern-python
- https://github.com/wemake-services/wemake-python-package
- https://github.com/rochacbruno/python-project-template
- https://github.com/pyscaffold/pyscaffold
-
Why not using
cookiecutter
? -
We don't need thousands of lines of code to
mv
a couple of files. - Why mangle the source repository itself to create a new project?
-
Mainly for DRY.
Conceptually, if you were to create a project that generated a "perfect" project, shouldn't
the generator project follow exactly the same rules and conventions? The downside
is some extra clutter in the
genvi
repository. - Why does the template include building/distributing/server start/command line usage/etc.?
- It is more robust to automatically set up everything and commit them to a version control before removing them. This way, if you ever need the features in the future, you can get them from the version control history.
-
Some
pre-commit
hooks disable the isolated environment withlanguage: system
, why? -
Some tools like
mypy
won't work on their full potential if the rest of the dependencies are missing from the environment; and it makes little sense to reinstall the full the development setup.
You might want to integrate some tools (e.g.ruff
,mypy
) with your IDE, in which case the extra duplication becomes unnecessary. -
Who uses
make
anymore? Why not usinginvoke
,nox
ortox
for task management? -
make
is already available on most systems, and if not, it's easy to install. It is more coherent to get all the initial project requirements from a single interface where you are probably already getting Python and Git.
When working on multitude of project in different languages, it reduces the mental burden if you have a single way of managing projects. You don't want to require Python on your Go project just for the development tooling, for example. The answer to "How was testing done in this context?" is alwaysmake test
- Having an 100% test coverage requirement gives false sense-of-security. Isn't that an overkill?
- Yes.