{"id":18265127,"url":"https://github.com/nasa-ammos/slim-starterkit-python","last_synced_at":"2025-04-04T21:31:27.603Z","repository":{"id":64447639,"uuid":"564866727","full_name":"NASA-AMMOS/slim-starterkit-python","owner":"NASA-AMMOS","description":"Template for a basic Python application implementing build, release and publish automation.","archived":false,"fork":false,"pushed_at":"2024-10-31T22:27:12.000Z","size":74,"stargazers_count":10,"open_issues_count":1,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-20T19:27:40.181Z","etag":null,"topics":["development","python3","template"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NASA-AMMOS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.md","codeowners":null,"security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-11T17:30:15.000Z","updated_at":"2024-10-31T16:58:49.000Z","dependencies_parsed_at":"2024-10-19T23:30:36.192Z","dependency_job_id":"b594f84d-f1b7-48d5-a132-6305a0cb81a4","html_url":"https://github.com/NASA-AMMOS/slim-starterkit-python","commit_stats":null,"previous_names":[],"tags_count":3,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2Fslim-starterkit-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2Fslim-starterkit-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2Fslim-starterkit-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2Fslim-starterkit-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NASA-AMMOS","download_url":"https://codeload.github.com/NASA-AMMOS/slim-starterkit-python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247252177,"owners_count":20908637,"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":["development","python3","template"],"created_at":"2024-11-05T11:17:10.126Z","updated_at":"2025-04-04T21:31:27.337Z","avatar_url":"https://github.com/NASA-AMMOS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Header block for project --\u003e\n\u003chr\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[INSERT YOUR LOGO IMAGE HERE (IF APPLICABLE)]\n\u003c!-- ☝️ Replace with your logo (if applicable) via ![](https://uri-to-your-logo-image) ☝️ --\u003e\n\u003c!-- ☝️ If you see logo rendering errors, make sure you're not using indentation, or try an HTML IMG tag --\u003e\n\n\u003ch1 align=\"center\"\u003e[INSERT YOUR REPO / PROJ NAME HERE]\u003c/h1\u003e\n\u003c!-- ☝️ Replace with your repo name ☝️ --\u003e\n\n\u003c/div\u003e\n\n\u003cpre align=\"center\"\u003e[INSERT A SINGLE SENTENCE DESCRIBING THE PURPOSE OF YOUR REPO / PROJ]\u003c/pre\u003e\n\u003c!-- ☝️ Replace with a single sentence describing the purpose of your repo / proj ☝️ --\u003e\n\n\u003c!-- Header block for project --\u003e\n\n[INSERT YOUR BADGES HERE (SEE: https://shields.io)] [![SLIM](https://img.shields.io/badge/Best%20Practices%20from-SLIM-blue)](https://nasa-ammos.github.io/slim/)\n\u003c!-- ☝️ Add badges via: https://shields.io e.g. ![](https://img.shields.io/github/your_chosen_action/your_org/your_repo) ☝️ --\u003e\n\n[INSERT SCREENSHOT OF YOUR SOFTWARE, IF APPLICABLE]\n\u003c!-- ☝️ Screenshot of your software (if applicable) via ![](https://uri-to-your-screenshot) ☝️ --\u003e\n\n[INSERT MORE DETAILED DESCRIPTION OF YOUR REPOSITORY HERE]\n\u003c!-- ☝️ Replace with a more detailed description of your repository, including why it was made and whom its intended for.  ☝️ --\u003e\n\n[INSERT LIST OF IMPORTANT PROJECT / REPO LINKS HERE]\n\u003c!-- example links\u003e\n[Website](INSERT WEBSITE LINK HERE) | [Docs/Wiki](INSERT DOCS/WIKI SITE LINK HERE) | [Discussion Board](INSERT DISCUSSION BOARD LINK HERE) | [Issue Tracker](INSERT ISSUE TRACKER LINK HERE)\n--\u003e\n\n## Features\n\n* [INSERT LIST OF FEATURES IMPORTANT TO YOUR USERS HERE]\n* Python build tooling based on PEP-517 and PEP-518 standards\n* Build, release and publish automation takes place automatically using GitHub Actions. \n  \n\u003c!-- ☝️ Replace with a bullet-point list of your features ☝️ --\u003e\n\n## Contents\n\n* [Quick Start](#quick-start)\n* [Changelog](#changelog)\n* [FAQ](#frequently-asked-questions-faq)\n* [Contributing Guide](#contributing)\n* [License](#license)\n* [Support](#support)\n\n## Quick Start\n\nThis guide provides a quick way to get started with our project. Please see our [docs]([INSERT LINK TO DOCS SITE / WIKI HERE]) for a more comprehensive overview.\n\n### Requirements\n\n1. [INSERT LIST OF REQUIREMENTS HERE]\n  \n\u003c!-- ☝️ Replace with a numbered list of your requirements, including hardware if applicable ☝️ --\u003e\n\n#### Build System Requirements\nCertain properties and permission settings are necessary in GitHub for builds to run automatically. On local development systems builds may be tested in similar fashion with proper tooling installed.\n\n##### Required repository settings\n1. [Shared PyPi API Token](https://test.pypi.org/help#apitoken) installed in [GitHub Repository Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) named `PYPI_API_TOKEN`.\n2. Permissions to [execute GitHub Actions](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#managing-github-actions-permissions-for-your-repository) and [perform software tag and release](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/permission-levels-for-a-personal-account-repository#collaborator-access-for-a-repository-owned-by-a-personal-account).\n\u003c!-- ☝️ If necessary, update with a numbered list of your build requirements, including hardware if applicable ☝ --\u003e\n\n##### Required local tooling\n1. Build tooling modules\n```\npip3 install --upgrade build setuptools_scm twine wheel\n```\n2. Product required modules (`requirements.txt`)\n``` \npip3 --exists-action w install -r requirements.txt\n```  \n\u003c!-- ☝️ If necessary, update with a numbered list of your build requirements, including hardware if applicable ☝ --\u003e\n\n### Setup Instructions\n\n1. [INSERT STEP-BY-STEP SETUP INSTRUCTIONS HERE, WITH OPTIONAL SCREENSHOTS]\n   \n\u003c!-- ☝️ Replace with a numbered list of how to set up your software prior to running ☝️ --\u003e\n\n### Run Instructions\n\n1. [INSERT STEP-BY-STEP RUN INSTRUCTIONS HERE, WITH OPTIONAL SCREENSHOTS]\n\n\u003c!-- ☝️ Replace with a numbered list of your run instructions, including expected results ☝️ --\u003e\n\n### Usage Examples\n\n* [INSERT LIST OF COMMON USAGE EXAMPLES HERE, WITH OPTIONAL SCREENSHOTS]\n\n\u003c!-- ☝️ Replace with a list of your usage examples, including screenshots if possible, and link to external documentation for details ☝️ --\u003e\n\n### Build Instructions\nA [GitHub Action](.github/workflows/python-publish.yml) configuration specifies the series of commands to release and publish the product. Commands are staged and carried out automatically when a tagged release is published to the main branch.\n\n#### Automated Build Kickoff\n1. Edit the `[INSERT YOUR PACKAGE NAME]/version.py` file with the next release version using the web UI on GitHub `main` branch.\n2. [Perform a release](releases/new) using the web UI on GitHub `main` branch\n3. Build, packaging and release to PyPi will execute automatically using [GitHub Actions Workflows](actions)\n\n\u003c!-- ☝️ If necessary, update with a numbered list of your build instructions, including expected results / outputs with optional screenshots ☝️ --\u003e\n\n#### Manual Build\nThese instructions must be entered from the local directory checked out from source control.\n1. Manually update `[INSERT YOUR PACKAGE NAME]/version.py` with the next release version, commit and push to the `main` branch:\n``` \ngit add [INSERT YOUR PACKAGE NAME]/version.py \u0026\u0026 git commit -m \"Issue #\u003cissue_number\u003e: Updated version for release.\" \u0026\u0026 git push\n```\n2. Tag using the Git command line: \n``` \ngit tag -a -m \"Issue #\u003cissue_number\u003e: Release version \u003cversion\u003e\" \u003cversion\u003e\n```\n**Note:** The `\u003cversion\u003e` must match that in the `[INSERT YOUR PACKAGE NAME]/version.py` file.\n3. Package the product:\n- Package an `sdist` and a `tarball`: (traditional)\n``` \ngit checkout [INSERT YOUR PACKAGE NAME]/version.py \u0026\u0026 python3 -m build --wheel\n```\n- ... or package an `sdist` and a `zip` ...\n``` \npython3 -m build --wheel \u0026\u0026 python3 setup.py sdist --format=zip\n```\n4. Publish product to PyPi for public distribution by using [Twine](https://twine.readthedocs.io/en/latest/):\n``` \ntwine check dist/* \u0026\u0026 twine upload --verbose\n```\n... or as a ZIP ...\n``` \ntwine check dist/* \u0026\u0026 twine upload --verbose dist/*.whl dist/*.zip\n```\n\n\u003c!-- ☝️ If necessary, update with a numbered list of your build instructions, including expected results / outputs with optional screenshots ☝️ --\u003e\n\n### Test Instructions (if applicable)\n\n1. [INSERT STEP-BY-STEP TEST INSTRUCTIONS HERE, WITH OPTIONAL SCREENSHOTS]\n\n\u003c!-- ☝️ Replace with a numbered list of your test instructions, including expected results / outputs with optional screenshots ☝️ --\u003e\n\n#### Local Build Testing\nThese instructions must be entered from the local directory checked out from source control.\nA simplified build and release workflow is available for testing locally. Publishing directly to PyPi is not recommended as PyPi permits one upload per release version.  \n\n1. Clean application:\n``` \nrm -r build dist __pycache__ *.egg* .egg* ; git checkout [INSERT YOUR PACKAGE NAME]/version.py ; pip3 uninstall [INSERT YOUR PACKAGE NAME] -y\n```\n2. Build and install release locally:\n``` \npython3 -m build --wheel \u0026\u0026 python3 setup.py sdist --format=zip\npip3 install [INSERT YOUR PACKAGE NAME] --no-index --find-links file://${PWD}/dist/\n```  \n... alternately, install an editable build using [Pip tooling](https://pypi.org/project/pip/) ...\n``` \npip install -e\n```\n3. [Testing publication to Test PyPi](https://packaging.python.org/en/latest/guides/using-testpypi/)  \nTwine will prompt for your Test PyPi username and password.\n```\ntwine check dist/*\ntwine upload --repository testpypi --verbose dist/*\n```\n\u003c!-- ☝️ If necessary, update with numbered list of your test instructions, including expected results / outputs with optional screenshots ☝️ --\u003e\n\n## Changelog\n\nSee our [CHANGELOG.md](CHANGELOG.md) for a history of our changes.\n\nSee our [releases page]([INSERT LINK TO YOUR RELEASES PAGE]) for our key versioned releases.\n\n\u003c!-- ☝️ Replace with links to your changelog and releases page ☝️ --\u003e\n\n## Frequently Asked Questions (FAQ)\n\n[INSERT LINK TO FAQ PAGE OR PROVIDE FAQ INLINE HERE]\n\u003c!-- example link to FAQ PAGE\u003e\nQuestions about our project? Please see our: [FAQ]([INSERT LINK TO FAQ / DISCUSSION BOARD])\n--\u003e\n\n\u003c!-- example FAQ inline format\u003e\n1. Question 1\n   - Answer to question 1\n2. Question 2\n   - Answer to question 2\n--\u003e\n\n\u003c!-- example FAQ inline with no questions yet\u003e\nNo questions yet. Propose a question to be added here by reaching out to our contributors! See support section below.\n--\u003e\n\n\u003c!-- ☝️ Replace with a list of frequently asked questions from your project, or post a link to your FAQ on a discussion board ☝️ --\u003e\n\n## Contributing\n\nInterested in contributing to our project? Please see our: [CONTRIBUTING.md](CONTRIBUTING.md)\n\n\u003c!-- example inline contributing guide\u003e\n1. Create an GitHub issue ticket describing what changes you need (e.g. issue-1)\n2. [Fork](INSERT LINK TO YOUR REPO FORK PAGE HERE, e.g. https://github.com/my_org/my_repo/fork) this repo\n3. Make your modifications in your own fork\n4. Make a pull-request in this repo with the code in your fork and tag the repo owner / largest contributor as a reviewer\n\n**Working on your first pull request?** See guide: [How to Contribute to an Open Source Project on GitHub](https://kcd.im/pull-request)\n--\u003e\n\nFor guidance on how to interact with our team, please see our code of conduct located at: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)\n\n\u003c!-- ☝️ Replace with a text describing how people may contribute to your project, or link to your contribution guide directly ☝️ --\u003e\n\nFor guidance on our governance approach, including decision-making process and our various roles, please see our governance model at: [GOVERNANCE.md](GOVERNANCE.md)\n\n## License\n\nSee our: [LICENSE](LICENSE)\n\u003c!-- ☝️ Replace with the text of your copyright and license, or directly link to your license file ☝️ --\u003e\n\n## Support\n\n[INSERT CONTACT INFORMATION OR PROFILE LINKS TO MAINTAINERS AMONG COMMITTER LIST]\n\n\u003c!-- example list of contacts\u003e\nKey points of contact are: [@github-user-1](link to github profile) [@github-user-2](link to github profile)\n--\u003e\n\n\u003c!-- ☝️ Replace with the key individuals who should be contacted for questions ☝️ --\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-ammos%2Fslim-starterkit-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnasa-ammos%2Fslim-starterkit-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-ammos%2Fslim-starterkit-python/lists"}