Skip to content

Commit e008207

Browse files
committed
Initial Python Project Deployer, added basic deployments, and configurations
0 parents  commit e008207

21 files changed

+2448
-0
lines changed

.gitignore

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
6+
# C extensions
7+
*.so
8+
9+
# Distribution / packaging
10+
.Python
11+
build/
12+
develop-eggs/
13+
dist/
14+
downloads/
15+
eggs/
16+
.eggs/
17+
lib/
18+
lib64/
19+
parts/
20+
sdist/
21+
var/
22+
wheels/
23+
pip-wheel-metadata/
24+
share/python-wheels/
25+
*.egg-info/
26+
.installed.cfg
27+
*.egg
28+
MANIFEST
29+
30+
# PyInstaller
31+
*.manifest
32+
*.spec
33+
34+
# Installer logs
35+
pip-log.txt
36+
pip-delete-this-directory.txt
37+
38+
# Unit test / coverage reports
39+
htmlcov/
40+
.tox/
41+
.nox/
42+
.coverage
43+
.coverage.*
44+
.cache
45+
nosetests.xml
46+
coverage.xml
47+
*.cover
48+
*.py,cover
49+
.hypothesis/
50+
.pytest_cache/
51+
52+
# Translations
53+
*.mo
54+
*.pot
55+
56+
# Django stuff:
57+
*.log
58+
local_settings.py
59+
db.sqlite3
60+
db.sqlite3-journal
61+
62+
# Flask stuff:
63+
instance/
64+
.webassets-cache
65+
66+
# Scrapy stuff:
67+
.scrapy
68+
69+
# Sphinx documentation
70+
docs/_build/
71+
72+
# PyBuilder
73+
target/
74+
75+
# Jupyter Notebook
76+
.ipynb_checkpoints
77+
78+
# IPython
79+
profile_default/
80+
ipython_config.py
81+
82+
# pyenv
83+
.python-version
84+
85+
# pipenv
86+
Pipfile.lock
87+
88+
# PEP 582
89+
__pypackages__/
90+
91+
# Celery stuff
92+
celerybeat-schedule
93+
celerybeat.pid
94+
95+
# SageMath parsed files
96+
*.sage.py
97+
98+
# Environments
99+
.env
100+
.venv
101+
env/
102+
venv/
103+
ENV/
104+
env.bak/
105+
venv.bak/
106+
107+
# Spyder project settings
108+
.spyderproject
109+
.spyproject
110+
111+
# Rope project settings
112+
.ropeproject
113+
114+
# mkdocs documentation
115+
/site
116+
117+
# mypy
118+
.mypy_cache/
119+
.dmypy.json
120+
dmypy.json
121+
122+
# Pyre type checker
123+
.pyre/
124+
125+
# IDEs
126+
.vscode/
127+
.idea/
128+
*.swp
129+
*.swo
130+
*~
131+
132+
# OS
133+
.DS_Store
134+
Thumbs.db

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Magic Man
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Python Project Deployment
2+
3+
A modern scaffolding tool for creating new Python packages with best practices built-in.
4+
5+
## Features
6+
7+
- 🚀 **Fast Setup**: Create fully-configured Python packages in seconds
8+
- 📦 **uv Integration**: Modern dependency management with `uv`
9+
-**Testing Ready**: Pre-configured `pytest` with coverage
10+
- 📚 **Documentation**: Sphinx docs with `furo` theme
11+
- 🔄 **CI/CD**: GitHub Actions workflow included
12+
- 🎯 **Best Practices**: PEP 8 compliant, type hints, proper structure
13+
14+
## Installation
15+
16+
```bash
17+
# Install with uv
18+
uv pip install -e .
19+
20+
# Or with pip
21+
pip install -e .
22+
```
23+
24+
## Usage
25+
26+
### CLI Command
27+
28+
```bash
29+
scaffold-python my_awesome_package /path/to/parent/directory
30+
```
31+
32+
### What Gets Created
33+
34+
```
35+
my_awesome_package/
36+
├── .github/
37+
│ └── workflows/
38+
│ └── ci.yaml
39+
├── docs/
40+
│ ├── conf.py
41+
│ └── index.rst
42+
├── tests/
43+
│ └── test_hello.py
44+
├── my_awesome_package/
45+
│ ├── __init__.py
46+
│ └── hello.py
47+
├── .gitignore
48+
├── LICENSE
49+
├── Makefile
50+
├── README.md
51+
├── pyproject.toml
52+
└── requirements-dev.txt
53+
```
54+
55+
### Post-Creation Steps
56+
57+
The tool automatically:
58+
1. ✅ Validates inputs
59+
2. ✅ Creates project structure
60+
3. ✅ Initializes git repository
61+
4. ✅ Sets up `uv` virtual environment
62+
5. ✅ Installs dev dependencies
63+
6. ✅ Runs initial tests
64+
7. ✅ Builds documentation
65+
66+
## Example
67+
68+
```bash
69+
# Create a new package
70+
scaffold-python data_processor /home/user/projects
71+
72+
# Navigate to the new package
73+
cd /home/user/projects/data_processor
74+
75+
# Activate the environment
76+
source .venv/bin/activate
77+
78+
# Run tests
79+
pytest
80+
81+
# Build docs
82+
sphinx-build -b html docs docs/_build/html
83+
```
84+
85+
## Development
86+
87+
```bash
88+
# Clone the repository
89+
git clone https://github.com/magicman/python-project-deployment.git
90+
cd python-project-deployment
91+
92+
# Install in development mode
93+
uv venv
94+
uv pip install -e ".[dev]"
95+
96+
# Run tests
97+
pytest
98+
99+
# Format code
100+
black .
101+
isort .
102+
103+
# Type check
104+
mypy python_project_deployment
105+
```
106+
107+
## Requirements
108+
109+
- Python 3.10+
110+
- uv (recommended) or pip
111+
112+
## License
113+
114+
MIT License - see LICENSE file for details.

0 commit comments

Comments
 (0)