A command line app to create a Python project skeleton.
Project description
Python Project Generation Tool
A fully customizable Python application to bootstrap Poetry-based boilerplate for you to start developing your Python applications quicker! Includes linting and Pytest libraries.
It will create a new directory for your project (or use the current directory), initialise a git repository, create a virtual environment, and install some basic dependencies for Testing, Linting and more.
Full documentation for this project with usage examples is available at https://py-maker.seapagan.net/
Installation
It is best to install this package globally, rather than in a virtual environment, as it is intended to be used to create new projects.
Install the package globally using pip:
$ pip install pyproject-maker
If you cannot install globally due to permissions, you can install it to your user install directory:
$ pip install --user pyproject-maker
or use pipx (recommended)
$ pipx install pyproject-maker
Usage
To create a new project, run the following command:
$ pymaker new <project-folder>
This will create a new directory with the name you provide, and run the steps needed to get you started quickly:
- Copy the template files into the new directory
- Initialise a git repository
- Commit the boilerplate to Git
You will be asked a series of questions to customise the new project.
When it asks "Package Name?" you can choose two variants :
- If you wish for a standard Python package that can optionally be uploaded to http://pypi.org, enter a package name here. Note that underscores ("_") must be used as opposed to dashes ("-") to comply with Python package naming rules.
- Enter '-' to instruct the tool that you are not creating any package, just a
standalone app, and then the
main.py
will just be placed in the project root.
You should now change into the new directory, install dependencies and activate the virtual environment:
$ cd <project-folder>
$ poetry install
$ poetry shell
Now, you can start developing :smile:
Linting
The generated project includes flake8 (with several plugins) for linting and Black for formatting. Mypy is installed for type checking. isort, Pylint and tyrceratops are also installed as standard.
Customise
For a 'package' project, the pyproject.toml
file is set up to put the code in
a sub-folder with the same name as chosen for the 'Package Name'. You can change
this to whatever you require, just remember to update the pyproject.toml
file
to match.
You can also modify the template used to generate the new project.
Check the documentation at https://py-maker.seapagan.net/ for more details.
Task Runner
The task-runner Poe the Poet is installed
as a development dependency which allows us to run simple tasks (similar to npm
scripts
).
These are run (from within the virtual environment) using the poe
command and
then the script name, for example:
$ poe pre
You can define your own, but there are 8 specific ones provided with the script.
-
pre
: Runpre-commit run --all-files
-
pylint
: Run Pylint on all Python files in the project. -
mypy
= Run MyPy type-checker on all Python files in the project. -
flake8
= Run Flake8 linter on all Python files in the project. -
black
= Run Black code formatter on all Python files in the project. -
try
= Run Tryceratops linter on all Python files in the project. -
markdown
= Run pymarkdown on all markdown files in the project. -
lint
= Runs black, flake8, mypy, try, and pylint in sequence
These are defined in the pyproject.toml
file in the [tool.poe.tasks]
section. Take a look at this file if you want to add or remove tasks.
Pre-commit
The generated project uses pre-commit to run some checks on the code before it is committed. This is a great tool to help keep your code clean.
To install pre-commit, run the following command from inside your venv:
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit
License
This project is licensed under the terms of the MIT license.
MIT License
Copyright (c) 2023 Grant Ramsay
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
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
Hashes for pyproject_maker-0.4.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0af7a70f6e5edf6fe4f95455bad83e98f9a50fb0a6078cb93fd746094f6b14b7 |
|
MD5 | 4eb1844c8042f2ddd3ae4e16f2900ace |
|
BLAKE2b-256 | 6a901e6b2d6f92c7fa99e9f5979a9327ca76b9a0996ca51a51de32a57a824cdb |