# Zenforge
A simple CLI tool for bootstrapping new Python projects fast.
## Why It Exists
I often find myself building the same types of Python projects with the same dependencies over and over again. After a while, it gets tedious repeating the same CLI commands to create a simple project.
_Zenforge_ combats this by using static configuration settings to build projects based on a single `create` command. There are 7 types of projects available:
1) **basic**: a simple project with [Pydantic](https://docs.pydantic.dev/latest/).
2) **api**: a [FastAPI](https://fastapi.tiangolo.com/) project with [Logfire](https://logfire.pydantic.dev/docs/).
3) **agents**: an AI Agent project with [PydanticAI](https://ai.pydantic.dev/) and [Logfire](https://logfire.pydantic.dev/docs/).
4) **dl**: a Deep Learning project with [PyTorch](https://pytorch.org/).
5) **api-agents**: a [FastAPI](https://fastapi.tiangolo.com/) and [PydanticAI](https://ai.pydantic.dev/) project (API and AGENTS).
6) **api-dl**: a Deep Learning API project (API and DL).
7) **all**: a Deep Learning, API, AI Agent project (DL and API-AGENTS).
The packages are always updated to their latest versions with every newly created project and are bootstrapped as a `Poetry` project.
## Test Packages
They also come configured with a set of test dependencies:
- [pytest](https://docs.pytest.org/en/stable/) - for unit tests.
- [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/) - for unit test line coverage.
- [black](https://black.readthedocs.io/en/stable/) - for code formatting.
- [flake8](https://flake8.pycqa.org/en/latest/) - for confirming Python style formatting.
- [isort](https://pycqa.github.io/isort/) - for automatic import sorting.
- [mypy](https://mypy.readthedocs.io/en/stable/) - for static type checking.
## Building a Project
1. Install the package using `pip`:
```bash
pip install zenforge
```
2. Create a new project with `zenforge create`:
```bash
zenforge create [PROJECT_NAME] [PROJECT_TYPE]
```
That's it!
The `project_type` must be one of the following options: `['basic', 'api', 'agents', 'dl', 'api-agents', 'api-dl', 'all']`. It defaults to `basic`.
There is also an optional flag for setting up a `ci` dependencies group that comes configured with `git-cliff`. You can add it with `--ci-deps` flag, like so:
```bash
zenforge create [PROJECT_NAME] api-dl --ci-deps
```
Raw data
{
"_id": null,
"home_page": null,
"name": "zenforge",
"maintainer": "Ryan Partridge",
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": "rpartridge101@gmail.com",
"keywords": "python, project-bootstrapping, cli-tool",
"author": "Ryan Partridge",
"author_email": "rpartridge101@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/dc/cc/0ab20a9d0844cddb06f8904893d052e479a5847cfd068732544ecc84e28e/zenforge-0.1.1.tar.gz",
"platform": null,
"description": "# Zenforge\n\nA simple CLI tool for bootstrapping new Python projects fast.\n\n## Why It Exists\n\nI often find myself building the same types of Python projects with the same dependencies over and over again. After a while, it gets tedious repeating the same CLI commands to create a simple project.\n\n_Zenforge_ combats this by using static configuration settings to build projects based on a single `create` command. There are 7 types of projects available:\n\n1) **basic**: a simple project with [Pydantic](https://docs.pydantic.dev/latest/).\n2) **api**: a [FastAPI](https://fastapi.tiangolo.com/) project with [Logfire](https://logfire.pydantic.dev/docs/).\n3) **agents**: an AI Agent project with [PydanticAI](https://ai.pydantic.dev/) and [Logfire](https://logfire.pydantic.dev/docs/).\n4) **dl**: a Deep Learning project with [PyTorch](https://pytorch.org/).\n5) **api-agents**: a [FastAPI](https://fastapi.tiangolo.com/) and [PydanticAI](https://ai.pydantic.dev/) project (API and AGENTS).\n6) **api-dl**: a Deep Learning API project (API and DL).\n7) **all**: a Deep Learning, API, AI Agent project (DL and API-AGENTS).\n\nThe packages are always updated to their latest versions with every newly created project and are bootstrapped as a `Poetry` project.\n\n## Test Packages\n\nThey also come configured with a set of test dependencies:\n\n- [pytest](https://docs.pytest.org/en/stable/) - for unit tests.\n- [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/) - for unit test line coverage.\n- [black](https://black.readthedocs.io/en/stable/) - for code formatting.\n- [flake8](https://flake8.pycqa.org/en/latest/) - for confirming Python style formatting.\n- [isort](https://pycqa.github.io/isort/) - for automatic import sorting.\n- [mypy](https://mypy.readthedocs.io/en/stable/) - for static type checking.\n\n## Building a Project\n\n1. Install the package using `pip`:\n\n ```bash\n pip install zenforge\n ```\n\n2. Create a new project with `zenforge create`:\n\n ```bash\n zenforge create [PROJECT_NAME] [PROJECT_TYPE]\n ```\n\nThat's it!\n\nThe `project_type` must be one of the following options: `['basic', 'api', 'agents', 'dl', 'api-agents', 'api-dl', 'all']`. It defaults to `basic`.\n\nThere is also an optional flag for setting up a `ci` dependencies group that comes configured with `git-cliff`. You can add it with `--ci-deps` flag, like so:\n\n```bash\nzenforge create [PROJECT_NAME] api-dl --ci-deps\n```\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A simple CLI tool for bootstrapping new projects fast",
"version": "0.1.1",
"project_urls": {
"homepage": "https://github.com/Achronus/zenforge",
"issues": "https://github.com/Achronus/zenforge/issues",
"repository": "https://github.com/Achronus/zenforge"
},
"split_keywords": [
"python",
" project-bootstrapping",
" cli-tool"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7d25ae6727a7a6103ab9d00fc62b0e1d8e4c5ea87a0a9b2200640f5822b49080",
"md5": "1cf62737a7a1f4430ece3db3b95d1d3e",
"sha256": "e8897ac028460f33d4301603d0d9b5442877b40b8b7ffb4ee2dc3cfd8a572ef5"
},
"downloads": -1,
"filename": "zenforge-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1cf62737a7a1f4430ece3db3b95d1d3e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 18024,
"upload_time": "2025-01-16T22:25:13",
"upload_time_iso_8601": "2025-01-16T22:25:13.932735Z",
"url": "https://files.pythonhosted.org/packages/7d/25/ae6727a7a6103ab9d00fc62b0e1d8e4c5ea87a0a9b2200640f5822b49080/zenforge-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dccc0ab20a9d0844cddb06f8904893d052e479a5847cfd068732544ecc84e28e",
"md5": "9a1e2fc1e2faf782953d4cd6416e5ba6",
"sha256": "8c433e70120bea78fcf2c94e5adaf74f3939ec58cb36a2299e96cd60004ac3e8"
},
"downloads": -1,
"filename": "zenforge-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "9a1e2fc1e2faf782953d4cd6416e5ba6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 14652,
"upload_time": "2025-01-16T22:25:16",
"upload_time_iso_8601": "2025-01-16T22:25:16.746347Z",
"url": "https://files.pythonhosted.org/packages/dc/cc/0ab20a9d0844cddb06f8904893d052e479a5847cfd068732544ecc84e28e/zenforge-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-16 22:25:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Achronus",
"github_project": "zenforge",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "zenforge"
}