{"id":18438685,"url":"https://github.com/seapagan/py-maker","last_synced_at":"2025-04-07T21:31:58.470Z","repository":{"id":177579553,"uuid":"660595591","full_name":"seapagan/py-maker","owner":"seapagan","description":"A fully customizable Python application to bootstrap Poetry-based boilerplate for you to start developing your Python applications quicker! Includes linting and Pytest libraries.","archived":false,"fork":false,"pushed_at":"2024-05-01T11:27:05.000Z","size":3329,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-02T01:21:46.374Z","etag":null,"topics":["boilerplate","poetry","poetry-python","project-generator","project-template","python"],"latest_commit_sha":null,"homepage":"http://py-maker.seapagan.net/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seapagan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["seapagan"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.buymeacoffee.com/seapagan"]}},"created_at":"2023-06-30T11:14:04.000Z","updated_at":"2024-05-07T11:02:32.826Z","dependencies_parsed_at":"2024-03-02T14:45:30.208Z","dependency_job_id":"f6ed46ff-33c6-4852-b4f8-5d4939bc8984","html_url":"https://github.com/seapagan/py-maker","commit_stats":null,"previous_names":["seapagan/py-maker"],"tags_count":28,"template":false,"template_full_name":"seapagan/poetry-dev-setup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fpy-maker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fpy-maker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fpy-maker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fpy-maker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seapagan","download_url":"https://codeload.github.com/seapagan/py-maker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247704579,"owners_count":20982299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boilerplate","poetry","poetry-python","project-generator","project-template","python"],"created_at":"2024-11-06T06:21:07.681Z","updated_at":"2025-04-07T21:31:57.881Z","avatar_url":"https://github.com/seapagan.png","language":"Python","funding_links":["https://github.com/sponsors/seapagan","https://www.buymeacoffee.com/seapagan"],"categories":["Python"],"sub_categories":[],"readme":"# Python Project Generation Tool \u003c!-- omit in toc --\u003e\n\n[![PyPI version](https://badge.fury.io/py/pyproject-maker.svg)](https://badge.fury.io/py/pyproject-maker)\n[![Codacy\nBadge](https://app.codacy.com/project/badge/Grade/7c86940f816b455ab171dc8126476849)](https://app.codacy.com/gh/seapagan/py-maker/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n[![CodeQL](https://github.com/seapagan/py-maker/actions/workflows/codeql.yml/badge.svg)](https://github.com/seapagan/py-maker/actions/workflows/codeql.yml)\n![PyPI - License](https://img.shields.io/pypi/l/pyproject-maker)\n[![Weekly Downloads](https://static.pepy.tech/personalized-badge/pyproject-maker?period=week\u0026units=international_system\u0026left_color=black\u0026right_color=green\u0026left_text=Weekly%20Downloads)](https://pepy.tech/project/pyproject-maker)\n[![Total Downloads](https://static.pepy.tech/personalized-badge/pyproject-maker?period=total\u0026units=international_system\u0026left_color=black\u0026right_color=green\u0026left_text=Total%20Downloads)](https://pepy.tech/project/pyproject-maker)\n\nA fully customizable Python application to bootstrap\n[Poetry](https://python-poetry.org/)-based boilerplate for you to start\ndeveloping your Python applications quicker! Includes linting and Pytest\nlibraries, a task runner, pre-commit hooks, and optionally create a git\nrepository and upload to GitHub. you can also fully customize the template used.\n\n\u003e [!NOTE]\n\u003e\n\u003e I have migrated the project (and my own workflow) to use\n\u003e [uv](https://docs.astral.sh/uv/) as my dependency management and more, so all\n\u003e new projects I create will use that instead of Poetry. For now, I will keep\n\u003e the Poetry support as default in this project, but I will probably add a `uv`\n\u003e option in the future to create new projects using that instead.\n\nFull documentation for this project with usage examples is available at\n\u003chttps://py-maker.seapagan.net/\u003e\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Linting](#linting)\n  - [Customise](#customise)\n  - [Task Runner](#task-runner)\n  - [Pre-commit](#pre-commit)\n- [GitHub Actions and Configuration](#github-actions-and-configuration)\n- [Contributing to Py-Maker](#contributing-to-py-maker)\n- [License](#license)\n\n## Installation\n\nIt is best to install this package globally, rather than in a virtual\nenvironment, as it is intended to be used to create new projects.\n\nInstall the package globally using pip:\n\n```console\n$ pip install pyproject-maker\n```\n\nIf you cannot install globally due to permissions, you can install it to your\nuser install directory:\n\n```console\n$ pip install --user pyproject-maker\n```\n\nor use [pipx](https://pypa.github.io/pipx/) (recommended)\n\n```console\n$ pipx install pyproject-maker\n```\n\n## Usage\n\nTo create a new project, run the following command:\n\n```console\n$ pymaker new \u003cproject-folder\u003e\n```\n\nThis will create a new directory with the name you provide, and run the steps\nneeded to get you started quickly:\n\n1. Copy the template files into the new directory\n2. Initialise a git repository\n3. Commit the boilerplate to Git\n\nYou will be asked a series of questions to customise the new project.\n\nWhen it asks \"Package Name?\" you can choose two variants :\n\n1. If you wish for a standard Python package that can optionally be uploaded to\n   \u003chttp://pypi.org\u003e, enter a package name here. Note that underscores (\"_\")\n   must be used as opposed to dashes (\"-\") to comply with Python package naming\n   rules.\n2. Enter '-' (a dash) to instruct the tool that you are not creating any\n   package, just a standalone app, and then the `main.py` will just be placed in\n   the project root. The `pyproject.toml` file will not include any package\n   information and Poetry will never try to install or publish the package.\n\nYou should now change into the new directory, install dependencies and activate\nthe virtual environment:\n\n```console\n$ cd \u003cproject-folder\u003e\n$ poetry install\n$ poetry shell\n```\n\nNow, you can start developing :smile:\n\n### Linting\n\nThe generated project includes [Ruff](https://docs.astral.sh/ruff/) for linting\nand formatting. [Mypy](http://mypy-lang.org/) is installed for type checking.\n\n### Customise\n\nFor a 'package' project, the `pyproject.toml` file is set up to put the code in\na sub-folder with the same name as chosen for the 'Package Name'. You can change\nthis to whatever you require, just remember to update the `pyproject.toml` file\nto match.\n\nYou can also modify the template used to generate the new project.\n\nCheck the documentation at \u003chttps://py-maker.seapagan.net/\u003e for more details.\n\n### Task Runner\n\nThe task-runner [Poe the Poet](https://github.com/nat-n/poethepoet) is installed\nas a development dependency which allows us to run simple tasks (similar to\n`npm` scripts).\n\nThese are run (from within the virtual environment) using the `poe` command and\nthen the script name, for example:\n\n```console\n$ poe pre\n```\n\nSee the [Task Runner](https://py-maker.seapagan.net/tasks/) section in the\ndocumentation for more details and a list of available tasks.\n\nThese are defined in the `pyproject.toml` file in the `[tool.poe.tasks]`\nsection. Take a look at this file if you want to add or remove tasks.\n\n### Pre-commit\n\nThe generated project uses [pre-commit](https://pre-commit.com/) to run some\nchecks on the code before it is committed.  This is a great tool to help keep\nyour code clean.\n\nTo install pre-commit, run the following command from inside your venv:\n\n```console\n$ pre-commit install\npre-commit installed at .git/hooks/pre-commit\n```\n\n## GitHub Actions and Configuration\n\nBy default the generated project includes a GitHub Actions workflow to run\n[Dependabot](https://dependabot.com/) to keep your dependencies up to date.\nThere are also standard templates for Pull Request and Issues.\n\nThe plan is to add more workflows in the future, for example running tests and\nmore.\n\n## Contributing to Py-Maker\n\nAll contributions, bug reports, bug fixes, documentation improvements,\nenhancements, and ideas are welcome.\n\nA detailed overview on how to contribute can be found in the **[contributing\nguide](CONTRIBUTING.md)** and on the\n[website](http://py-maker.seapagan.net/contributing/).\n\nIf you are simply looking to start working with the codebase, navigate to the\n[GitHub \"issues\" tab](https://github.com/seapagan/py-maker/issues) and start\nlooking through interesting issues. There may be issues listed under\n[documentation](https://github.com/seapagan/py-maker/issues?labels=documentation\u0026sort=updated\u0026state=open)\nand [good first\nissue](https://github.com/seapagan/py-maker/issues?labels=good+first+issue\u0026sort=updated\u0026state=open)\nwhere you could start out.\n\nYou can also triage issues which may include reproducing bug reports, or asking\nfor vital information such as version numbers or reproduction instructions.\n\nMaybe through using Py-Maker you have an idea of your own or are looking for\nsomething in the documentation and thinking ‘this can be improved’...you can do\nsomething about it!\n\nAs contributors and maintainers to this project, you are expected to abide by\nour code of conduct. More information can be found at: [Contributor Code of\nConduct](https://github.com/seapagan/py-maker/blob/main/CODE_OF_CONDUCT.md)\n\n## License\n\nThis project is licensed under the terms of the MIT license.\n\n```pre\nMIT License\n\nCopyright (c) 2023 Grant Ramsay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseapagan%2Fpy-maker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseapagan%2Fpy-maker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseapagan%2Fpy-maker/lists"}