psp (Python Scaffolding Projects)
Project description
psp (Python Scaffolding Projects)
psp is a blazing fast command line utility to scaffold your Python project, written in Rust.
- โก๏ธ 1-100x faster compared to other scaffolding tools
- ๐ ๏ธ
pyproject.tomlsupport - ๐ค Python 3.14 compatibility
- ๐ Scaffolding file and folder structures for your Python project
- ๐๏ธ Unit-test and pytest support
- ๐งช Create a virtual environment
- ๐ง Automagically dependencies installation
- ๐ช Add build and deploy dependencies to distribute the package
- ๐ tox configuration supports and remotes CI like CircleCI and TravisCI
- โจ๏ธ MkDocs and Sphinx documentation support
- ๐งฐ Initialize git repository and
gitignorefile - ๐ GitHub and Gitlab remote repository support
- ๐ Create
README,LICENSE,CONTRIBUTING,CODE_OF_CONDUCTandCHANGESfiles - ๐ณ Create
DockerfileandContainerfilefor your project - ๐ก Can use quick, simple and full argument for rapid configuration
- ๐พ Create
$HOME/.psp.envand$PWD/.envfiles with your customizations - ๐๏ธ Can use some
PSP_variables to control your defaults - ๐ฆ Support
pip,condaanduvpackage manager - ๐งฎ Support
hatch,maturinandpoetrybuilder
๐ Get Started in 30 Seconds
The result is:
$> tree wtf/ --filelimit=19 -a
wtf # Project folder
โโโ LICENSE.md # License file
โโโ pyproject.toml # Python package configuration file
โโโ README.md # Readme file
โโโ CHANGES.md # List of changes
โโโ .circleci # CI folder
โ โโโ config.yml # CI configuration file
โโโ CODE_OF_CONDUCT.md # Code of Conduct
โโโ CONTRIBUTING.md # Contributing guide lines
โโโ Containerfile # Standard container file for build image
โโโ Dockerfile # Docker container file for build image
โโโ Makefile # Makefile for command make; make help
โโโ requirements.txt # Dependencies list used by third programs
โโโ docs # Documentation folder: Sphinx/MKDocs
โ โโโ build
โ โโโ make.bat
โ โโโ Makefile
โ โโโ source
โ โโโ conf.py
โ โโโ index.rst
โ โโโ _static
โ โโโ _templates
โโโ .git # Git folder
โ โโโ branches
โ โโโ config
โ โโโ description
โ โโโ HEAD
โ โโโ hooks [14 entries exceeds filelimit, not opening dir]
โ โโโ info
โ โ โโโ exclude
โ โโโ objects
โ โ โโโ info
โ โ โโโ pack
โ โโโ refs
โ โโโ heads
โ โโโ tags
โโโ .github # Github issue and merge templates
โ โโโ ISSUE_TEMPLATE
โ โ โโโ bug.yml
โ โ โโโ config.yml
โ โ โโโ feature.yml
โ โโโ PULL_REQUEST_TEMPLATE
โ โโโ pull_request_template.md
โโโ .gitignore # Git ignore file
โโโ .dockerignore # Docker ignore file
โโโ .containerignore # Container ignore file
โโโ wtf # Python package
โ โโโ __init__.py
โโโ tests # Tests package for modules
โ โโโ __init__.py
โ โโโ test_wtf.py # Test module "test_<name_python_package>"
โโโ tox.ini # Tox configuration files
โโโ samples
โ โโโ wtf_sample.py # Sample code of package "<name_python_package>_sample"
โโโ .venv # Virtual environment
โโโ bin [33 entries exceeds filelimit, not opening dir]
โโโ include
โ โโโ python3.14
โโโ lib
โ โโโ python3.14
โ โโโ site-packages [68 entries exceeds filelimit, not opening dir]
โโโ lib64 -> lib
โโโ pyvenv.cfg
29 directories, 44 files
And git status is:
$> git status
On branch main
No commits yet
...
$> git remote get-url origin
git@github.com:MatteoGuadrini/test.git
Help
For help message, type:
$> psp help
psp (Python Scaffolding Projects), version 0.5.0
usage: psp [shortcut]
ie: psp [help|quick|simple|full]
shortcut:
help: print this help message
quick: enables a rapid setup (few options included)
simple: enables a basic setup (only Python package)
full: enables a full setup (all options)
links:
repository: https://github.com/MatteoGuadrini/psp
documentation: https://psp.readthedocs.io/
variables:
["PSP_GIT","PSP_GIT_REMOTE","PSP_GIT_USER"]
environments:
Python version: 3.14
[!NOTE] More details for shortcuts, variables and other things, available in official documentation: psp docs
Why choose psp?
psp is simple, fast, effective, declarative, and supports Python and the entire ecosystem of tools written for it. Rather than replacing it, psp seeks to integrate and provide a useful scaffold for the end user.
Differences with other tools
- cookiecutter: Users set configurations using JSON files when generating their projects.
- PyScaffold: Provides a command-line interface to set up projects, typically yielding a compliant project structure, which can limit customization when using templates from other sources.
psp asks only what you need. By configuring a few environment variables, you can automate any project; in seconds, not hours.
๐ Prerequisites
psp has four mandatory prerequisetes installed on own machine:
gitpython3pipcurl(Linux/MacOS only)
MacOS prerequisites installation
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python git
Windows prerequisites installation
winget install -e --id Git.Git
winget install -e --id Python.Python.3.14
Ubuntu based prerequisites installation
sudo apt install -y python3 python3-pip git curl
Red Hat based prerequisites installation
sudo dnf install -y python3 python3-pip git curl
Arch based prerequisites installation
sudo pacman -Qi python3 python3-pip git curl
๐ฟ Installation
๐ Python
To install with pip:
pip install psp-scaffold
Binary file
To install compiled file into your machine, download it:
Linux
For all users (required root access):
sudo -i
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.5.0/psp_linux -o /usr/bin/psp
chmod +x /usr/bin/psp
For current user:
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.5.0/psp_linux -o $HOME/.local/bin/psp
chmod +x $HOME/.local/bin/psp
MacOS
sudo su -
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.5.0/psp_macos -o /usr/bin/psp
chmod +x /usr/bin/psp
Windows
For all users (required Administrator):
iwr -OutFile "C:\Windows\system32\psp.exe" "https://github.com/MatteoGuadrini/psp/releases/download/v0.5.0/psp_windows"
For current user:
mkdir "$($Env:USERPROFILE)\bin"
[System.Environment]::SetEnvironmentVariable("PATH", $Env:PATH + ";$($Env:USERPROFILE)\bin","USER")
iwr -OutFile "$($Env:USERPROFILE)\bin\psp.exe" "https://github.com/MatteoGuadrini/psp/releases/download/v0.5.0/psp_windows"
Packages
If you want to install OS package, follow instructions for your Operating System:
For Debian/Ubuntu:
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.5.0/psp.deb -o psp.deb
sudo dpkg -i psp.deb
For Fedora/Mageia/OpenSuse:
sudo rpm -i https://github.com/MatteoGuadrini/psp/releases/download/v0.5.0/psp.rpm
Compile as your own
Instead, if you compile this project as own, follow this steps:
git clone https://github.com/MatteoGuadrini/psp.git
cd psp && cargo build --release && sudo cp -v target/release/psp /usr/bin/psp && chmod +x /usr/bin/psp
or build with script:
git clone https://github.com/MatteoGuadrini/psp.git
cd psp
# Build
./build_psp.sh
# Copy binary
sudo cp -v target/release/psp /usr/bin/psp && chmod +x /usr/bin/psp
# Install rpm
sudo rpm -i /tmp/psp_rpm/psp.rpm
# Instal deb
sudo dpkg -i /tmp/psp_deb/psp.deb
Docker/Podman
If you want to use psp in a containerized environment, follow this:
# Clone...
git clone https://github.com/MatteoGuadrini/psp.git
# Build...
cd psp && docker build . -t psp:latest
# Run...
docker run -it --rm -v ~/python_projects:/psp:z localhost/psp:latest
You can use .env files and environment variables:
# .env file
docker run -it --rm -v ~/python_projects:/psp:z -v ~/python_projects/.env:/psp/.env localhost/psp:latest
# PSP_ environment variables
docker run -it --rm -v ~/python_projects:/psp:z -e "PSP_GIT=true" -e "PSP_PYVER=1.0.0" localhost/psp:latest
๐งฐ Next features
-
windowsoperating system support - Container support for psp program
-
condaanduvsupport -
hatch,maturinandpoetrybuild support -
docker-composeandkubernetessupport - updating/merging project
- templating folder support
- command line flags support
- YAML configuration file
Open source
psp is an open source project. Any contribution, It's welcome.
A great thanks.
For donations, press this
For me
For Telethon
The Telethon Foundation is a non-profit organization recognized by the Ministry of University and Scientific and Technological Research. They were born in 1990 to respond to the appeal of patients suffering from rare diseases. Come today, we are organized to dare to listen to them and answers, every day of the year.
Licence
This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest youโll be creating employment for local families and restoring wildlife habitats.
Acknowledgments
Thanks to Jim Blandy, Jason Orendorff and Nora Tindall for writing the Programming Rust book that make up my Rust foundation.
Thanks to Tim McNamara for writing the Rust in Action book.
Thanks to Zed IDE and for license of RustRover offered by Jetbrains.
Special thanks go to my wife, who understood the hours of absence for this development. Thanks to my children, for the daily inspiration they give me and to make me realize, that life must be simple.
Thanks, Rust Community!
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
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 psp_scaffold-0.5.0.tar.gz.
File metadata
- Download URL: psp_scaffold-0.5.0.tar.gz
- Upload date:
- Size: 74.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
875cc80b92bb9943ee60fcca5957a44dbd2a50e5e10be15f5eb0a7ad9a972ba0
|
|
| MD5 |
7b17a079bd2b4f9fc8139efcd1d1ae23
|
|
| BLAKE2b-256 |
dac99306872f29f08e4f28da6d3c4364b64928400d684e1159a1ed78326f01cf
|
File details
Details for the file psp_scaffold-0.5.0-py3-none-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: psp_scaffold-0.5.0-py3-none-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36399e59094deb4668ed0e112d7b60c810d0bcf09d6d56fc75246fce465f057d
|
|
| MD5 |
37907352ec8a937f204f5e28263641fb
|
|
| BLAKE2b-256 |
664e9fd03529a0376cd754f78dc40108b09fd7e09cda33a7a179db1671584e3d
|