Skip to main content

jyinit - scaffold Python projects (CLI)

Project description

jyinit

๐Ÿš€ Extended Python Project Scaffolder โ€“ create production-ready Python projects (apps, services, libraries, ML projects, etc.) with one command.
Includes templates, licenses, CI/CD workflows, Git setup, and interactive prompts.


โœจ Features

  • ๐Ÿ“ฆ Multiple templates: scaffold Flask, FastAPI, Django, Streamlit, ML, libraries, etc.
  • โšก Interactive mode (--interactive): prompts you for missing options.
  • ๐Ÿ”ง Per-template GitHub Actions workflows (via --ci).
  • ๐Ÿ“ Licenses included (MIT, Apache-2.0, GPL-3.0, โ€ฆ).
  • ๐Ÿ™ Git integration:
    • --git โ†’ initializes git repo(s) without remote.
    • --gitrep [url] โ†’ initializes repo(s) and optionally sets a remote + pushes initial commit.
  • ๐Ÿงช Tests scaffold: creates a tests/ folder with __init__.py.
  • ๐Ÿ Virtual environments (--venv) per subproject.
  • ๐Ÿ” Dry-run mode (--dry-run) โ€“ preview everything before creating files.

๐Ÿ“ฅ Installation

pip install jyinit

Or clone locally for development:

git clone https://github.com/nj2216/jyinit.git
cd jyinit
pip install -e .

๐Ÿš€ Usage

Show help

jyinit --help

Interactive mode

Prompts for template, license, Python version, etc.

jyinit create myproj --interactive

Non-interactive example

Create a Flask app with CI, initialize git, and push to GitHub:

jyinit create myrepo --types flask --ci --gitrep https://github.com/you/myrepo.git

Multiple templates (monorepo style)

jyinit create combo --types streamlit mlops --venv --gitrep

List available templates and licenses

jyinit list-templates

โš™๏ธ CLI Options

Option Description
--type Legacy: single template scaffold
--types One or more templates (library, flask, fastapi, django, โ€ฆ)
--dir Base directory for project
--license Choose license (default: MIT)
--author Author name (defaults to system user)
--py Minimum Python version (default: 3.8)
--git Initialize git (no remote)
--gitrep [url] Init git + set optional remote & push
--venv Create .venv per subproject
--no-tests Skip creating tests/ folder
--ci Add tailored GitHub Actions workflow
--interactive Prompt for missing values
--dry-run Preview without writing files

๐Ÿ“‚ Example Generated Project Structure

For a Flask project:

myrepo/
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ myrepo/
โ”‚   โ””โ”€โ”€ __init__.py
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ __init__.py
โ””โ”€โ”€ .github/
    โ””โ”€โ”€ workflows/
        โ””โ”€โ”€ python-package.yml

For a monorepo with streamlit + mlops, youโ€™ll get:

combo/
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ streamlit/
โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ””โ”€โ”€ tests/
โ”œโ”€โ”€ mlops/
โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ””โ”€โ”€ tests/

๐Ÿ›  Development

Clone the repo and install dev dependencies:

pip install -r requirements-dev.txt

Run tests (if you scaffolded pytest):

pytest

๐Ÿ“œ License

jyinit is licensed under the MIT License. See LICENSE for details.


๐Ÿ™Œ Acknowledgments

Inspired by Python project cookiecutters, but with interactive scaffolding, monorepo support, and built-in CI.


๐Ÿค Contributing

Contributions are welcome! ๐ŸŽ‰
Please see our CONTRIBUTING.md for guidelines on how to report issues, propose changes, and submit pull requests.


๐Ÿง‘โ€๐Ÿ’ป Code of Conduct

This project follows the Contributor Covenant Code of Conduct.
By participating, you are expected to uphold this code. Please report any unacceptable behavior to the maintainers.


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

jyinit-0.0.8.tar.gz (39.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jyinit-0.0.8-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

File details

Details for the file jyinit-0.0.8.tar.gz.

File metadata

  • Download URL: jyinit-0.0.8.tar.gz
  • Upload date:
  • Size: 39.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jyinit-0.0.8.tar.gz
Algorithm Hash digest
SHA256 54c7aa21b0fd273bd7e879c33c3eabd8e950596a204ee8391429404d0704c4ff
MD5 d5a6e841b47085f3772652479365e45f
BLAKE2b-256 2cd4d9cca30ee119d121b33c927bc1d19efd138f77ab1893ddd45867f533acb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for jyinit-0.0.8.tar.gz:

Publisher: publish.yml on nj2216/jyinit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jyinit-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: jyinit-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 37.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jyinit-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 d041bbee543f5877aba445fa3ff534130c94198bc36771b8cf1cce8709b2262f
MD5 9d14b1efee903c7a67639a6a8c92123b
BLAKE2b-256 ef53326f1b544449971693092d92ea55a4224838ba28818c1d8e42db2add8fc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for jyinit-0.0.8-py3-none-any.whl:

Publisher: publish.yml on nj2216/jyinit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page