# Bake a Py
This project provides a template from which you can create your own Python packages and projects.
It uses modern tools and conventions to ensure a good development experience.
- [Package Structure](#package-structure)
- [GitHub Features](#github-features)
- [Tooling](#tooling)
## Package Structure
Package structure was inspired by various templates and recommended best practices, such as:
- https://github.com/TezRomacH/python-package-template
- https://github.com/pyscaffold/pyscaffold
- https://github.com/f4str/python-package-template
- https://github.com/audreyfeldroy/cookiecutter-pypackage
- https://github.com/ionelmc/python-nameless
It provides a `src` directory, under which your own packages sit. Example files for `__init__.py`, `__main__.py` and `cli.py` are already provided.
Tests are placed under the `tests` directory, and documentation under the `docs` directory.
To start your new project, you should change its name, URL and metadata details at:
1. `README.md`
2. `CHANGELOG.md`
3. `setup.py`
4. `tests/*.py`
5. `src/*`
## GitHub Features
The `.github` directory comes with a number of files to configure certain GitHub features.
- Various Issue templates can be found under `ISSUE_TEMPLATE`.
- A Pull Request template can be found at `PULL_REQUEST_TEMPLATE.md`.
- Automatically mark issues as stale after a period of inactivity. The configuration file can be found at `.stale.yml`.
- Keep package dependencies up to date with Dependabot. The configuration file can be found at `dependabot.yml`.
- Keep Release Drafts automatically up to date with Pull Requests, using the [Release Drafter GitHub Action](https://github.com/marketplace/actions/release-drafter). The configuration file can be found at `release-drafter.yml` and the workflow at `workflows/release-drafter.yml`.
- Automatic package building and publishing when pushing a new version tag to `main`. The workflow can be found at `workflows/publish-package.yml`.
- Code quality and security analysis with CodeQL. The workflow can be found at `workflows/codeql-analysis.yml`.
## Tooling
This package sets up various `tox` environments for static checks, testing, building and publishing.
It is also configured with `pre-commit` hooks to perform static checks and automatic formatting.
If you do not use `tox`, you can build the package with `build` and install a development version with `pip`.
Assume `cd` into the repository's root.
To install the `pre-commit` hooks:
```bash
pre-commit install
```
To run type checking:
```bash
tox -e typecheck
```
To run linting tools:
```bash
tox -e lint
```
To run automatic formatting:
```bash
tox -e format
```
To run tests:
```bash
tox
```
To build the package:
```bash
tox -e build
```
To build the package (with `build`):
```bash
python -m build
```
To clean the previous build files:
```bash
tox -e clean
```
To test package publication (publish to *Test PyPI*):
```bash
tox -e publish
```
To publish the package to PyPI:
```bash
tox -e publish -- --repository pypi
```
To install an editable version:
```bash
pip install -e .
```
Raw data
{
"_id": null,
"home_page": "https://github.com/git-afsantos/bake-a-py",
"name": "bake-a-py",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8, <4",
"maintainer_email": "",
"keywords": "ros,variability,software product lines,feature models",
"author": "Andr\u00e9 Santos",
"author_email": "haros.framework@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/42/c9/1d61dbe5e91ffce076346c9d6d1d434e2bcf18dc5541d5a2c3cbd9c4fd56/bake-a-py-1.0.0.tar.gz",
"platform": null,
"description": "# Bake a Py\n\nThis project provides a template from which you can create your own Python packages and projects.\nIt uses modern tools and conventions to ensure a good development experience.\n\n- [Package Structure](#package-structure)\n- [GitHub Features](#github-features)\n- [Tooling](#tooling)\n\n## Package Structure\n\nPackage structure was inspired by various templates and recommended best practices, such as:\n\n- https://github.com/TezRomacH/python-package-template\n- https://github.com/pyscaffold/pyscaffold\n- https://github.com/f4str/python-package-template\n- https://github.com/audreyfeldroy/cookiecutter-pypackage\n- https://github.com/ionelmc/python-nameless\n\nIt provides a `src` directory, under which your own packages sit. Example files for `__init__.py`, `__main__.py` and `cli.py` are already provided.\n\nTests are placed under the `tests` directory, and documentation under the `docs` directory.\n\nTo start your new project, you should change its name, URL and metadata details at:\n\n1. `README.md`\n2. `CHANGELOG.md`\n3. `setup.py`\n4. `tests/*.py`\n5. `src/*`\n\n## GitHub Features\n\nThe `.github` directory comes with a number of files to configure certain GitHub features.\n\n- Various Issue templates can be found under `ISSUE_TEMPLATE`.\n- A Pull Request template can be found at `PULL_REQUEST_TEMPLATE.md`.\n- Automatically mark issues as stale after a period of inactivity. The configuration file can be found at `.stale.yml`.\n- Keep package dependencies up to date with Dependabot. The configuration file can be found at `dependabot.yml`.\n- Keep Release Drafts automatically up to date with Pull Requests, using the [Release Drafter GitHub Action](https://github.com/marketplace/actions/release-drafter). The configuration file can be found at `release-drafter.yml` and the workflow at `workflows/release-drafter.yml`.\n- Automatic package building and publishing when pushing a new version tag to `main`. The workflow can be found at `workflows/publish-package.yml`.\n- Code quality and security analysis with CodeQL. The workflow can be found at `workflows/codeql-analysis.yml`.\n\n## Tooling\n\nThis package sets up various `tox` environments for static checks, testing, building and publishing.\nIt is also configured with `pre-commit` hooks to perform static checks and automatic formatting.\n\nIf you do not use `tox`, you can build the package with `build` and install a development version with `pip`.\n\nAssume `cd` into the repository's root.\n\nTo install the `pre-commit` hooks:\n\n```bash\npre-commit install\n```\n\nTo run type checking:\n\n```bash\ntox -e typecheck\n```\n\nTo run linting tools:\n\n```bash\ntox -e lint\n```\n\nTo run automatic formatting:\n\n```bash\ntox -e format\n```\n\nTo run tests:\n\n```bash\ntox\n```\n\nTo build the package:\n\n```bash\ntox -e build\n```\n\nTo build the package (with `build`):\n\n```bash\npython -m build\n```\n\nTo clean the previous build files:\n\n```bash\ntox -e clean\n```\n\nTo test package publication (publish to *Test PyPI*):\n\n```bash\ntox -e publish\n```\n\nTo publish the package to PyPI:\n\n```bash\ntox -e publish -- --repository pypi\n```\n\nTo install an editable version:\n\n```bash\npip install -e .\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Variability analysis tool for ROS systems",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/git-afsantos/bake-a-py",
"Source": "https://github.com/git-afsantos/bake-a-py/",
"Tracker": "https://github.com/git-afsantos/bake-a-py/issues"
},
"split_keywords": [
"ros",
"variability",
"software product lines",
"feature models"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d13b60a0e76f7cee2f40202c4ec5131f6408e7189125d890f23d62e388d767b7",
"md5": "857c07e30c72f42b6fa04fecf4b46dbb",
"sha256": "ebe1b4f84ecee29e72e0c18b28693218288efdf0355ef3531866c50f621193c5"
},
"downloads": -1,
"filename": "bake_a_py-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "857c07e30c72f42b6fa04fecf4b46dbb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8, <4",
"size": 6096,
"upload_time": "2023-09-05T09:07:04",
"upload_time_iso_8601": "2023-09-05T09:07:04.008666Z",
"url": "https://files.pythonhosted.org/packages/d1/3b/60a0e76f7cee2f40202c4ec5131f6408e7189125d890f23d62e388d767b7/bake_a_py-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "42c91d61dbe5e91ffce076346c9d6d1d434e2bcf18dc5541d5a2c3cbd9c4fd56",
"md5": "a69701c21545d2042794dfaba9b1ef11",
"sha256": "fd7c2403148254986cdff9b495eb3becb99eac543c1c34d0b300f34e3dd7aef5"
},
"downloads": -1,
"filename": "bake-a-py-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "a69701c21545d2042794dfaba9b1ef11",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8, <4",
"size": 15947,
"upload_time": "2023-09-05T09:07:05",
"upload_time_iso_8601": "2023-09-05T09:07:05.574320Z",
"url": "https://files.pythonhosted.org/packages/42/c9/1d61dbe5e91ffce076346c9d6d1d434e2bcf18dc5541d5a2c3cbd9c4fd56/bake-a-py-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-05 09:07:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "git-afsantos",
"github_project": "bake-a-py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "bake-a-py"
}