{"id":29131481,"url":"https://github.com/smartmonkey-git/robinson-group-python-template","last_synced_at":"2026-02-25T19:34:36.556Z","repository":{"id":301542820,"uuid":"1009578065","full_name":"SmartMonkey-git/robinson-group-python-template","owner":"SmartMonkey-git","description":"A template for python projects build in the Robinson Group of the BIH","archived":false,"fork":false,"pushed_at":"2025-08-09T15:46:27.000Z","size":304,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-28T15:47:20.961Z","etag":null,"topics":["cd","ci","conda","pypi","python","ruff","template-project"],"latest_commit_sha":null,"homepage":"https://robinsongroup.github.io/","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/SmartMonkey-git.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-27T11:06:04.000Z","updated_at":"2025-09-15T11:26:53.000Z","dependencies_parsed_at":"2025-06-27T12:29:32.413Z","dependency_job_id":"67bbf77f-ce09-44ef-9f12-d725ae902e5f","html_url":"https://github.com/SmartMonkey-git/robinson-group-python-template","commit_stats":null,"previous_names":["smartmonkey-git/robinson-group-python-template"],"tags_count":1,"template":true,"template_full_name":null,"purl":"pkg:github/SmartMonkey-git/robinson-group-python-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartMonkey-git%2Frobinson-group-python-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartMonkey-git%2Frobinson-group-python-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartMonkey-git%2Frobinson-group-python-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartMonkey-git%2Frobinson-group-python-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SmartMonkey-git","download_url":"https://codeload.github.com/SmartMonkey-git/robinson-group-python-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartMonkey-git%2Frobinson-group-python-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29836314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T19:08:47.527Z","status":"ssl_error","status_checked_at":"2026-02-25T18:59:04.705Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cd","ci","conda","pypi","python","ruff","template-project"],"created_at":"2025-06-30T05:33:46.657Z","updated_at":"2026-02-25T19:34:36.529Z","avatar_url":"https://github.com/SmartMonkey-git.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## How to use this template\nTo the top right-hand side of this repository, you will find a button labeled $${\\color{green}Use \\space this \\space Template}$$. Press it and then click on ``Create a new repository``. This will copy the contents of the repository to your account.\n## Robinson Group Python Template\nThis repo serves as a template for python projects in the [Robinson Group](https://robinsongroup.github.io/) of the BIH.\nTo get started copy or fork this project and follow the steps below.\n## Install conda\nIf you not already have conda, miniconda or Anaconda installed. Check out the [miniconda installation guide](https://www.anaconda.com/docs/getting-started/miniconda/install#quickstart-install-instructions).\n\n### Setup env\nOpen `requirements/environment.yml` and adjust `\u003cProject-Name\u003e`.\n\nTo create and activate the env execute:\n\n```\nconda env create -f requirements/environment.yml\nconda activate \u003cProject-Name\u003e\n```\n\n## Basic Setup\nAs this is a template project, some of the directories and setting have generic names. To ensure the project is set up, that it aligns with your intended name please:\n\n1. Rename the folder inside of src\n2. Open the pyproject.toml\n   - Rename all variables in the sections ``[project]`` and ``[project.urls]``\n3. Depending on your needs, you should change the LICENSE of this repository. Default is MIT.\n\n## Ruff Linting and Formatting\nRuff helps to maintain the same code style and prevent the most common bugs in our code base. Keeping the code style uniform simplifies the collaboration - it is much easier to review a pull request without hundreds of whitespace changes.\n\nPlease take a moment to learn how to use the IDE plugins. In PyCharm, the formatting action can be invoked with right-clicking at any code location and the same applies for VS Code. The keyboard shortcuts are also available. However, it is recommended to format and lint on saving a file.\n\nBesides the IDE, Ruff can also be run as a command line tool. Assuming that the virtual environment is active, the following command will format/lint the entire project:\n\n**Formatting**\n```bash\nruff format\n```\n**Linting**\n```bash\nruff check\n```\nWe recommend to run commit the resulting changes before opening a PR, because the unformatted code will fail the Continuous Integration (CI) pipeline. A PR cannot be merged until the code passes the CI.\n\n### Ruff Plugins\nThis section will explain how to set up ruff for your choosen IDE.\n#### Pycharm\nTo get ruff automatically running install the following Plugin:\n- [Pycharm - Ruff Plugin](https://plugins.jetbrains.com/plugin/20574-ruff)\n\nTo use the plugin, make sure that PyCharm has the environment assigned that contains the ruff installation.\n\n##### **Configs:**\n\n![img.png](readme_images/ruff_config.png)\n\nYou can find out if ruff works by violating one of the rules. Should you do so, you will see a yellow squirrelly line. An easy way to violate one of the rules is to put a \n``print`` statement somewhere.\n\nThen you will see something like this:\n\n![img.png](readme_images/ruff_violation.png)\n\n#### VSCode\nTo get ruff automatically running install the following Plugin:\n- [VSCode - Ruff Plugin](https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff)\n\n\n## Testing\n\nA test suite of a typical Python package consists of unit, integration, and documentation tests\n(i.e. the code snippets embedded in the documentation).\nIt is important to write tests to ensure that your code works as intended.\n\nThis template provides a minimal setup for testing. Tests can be executed by invoking Pytest:\n\n```shell\npytest\n```\n\nThe runner looks for tests in `src` and `tests` folders. On top of that, the Python code\nin the top-level `README.md` file is also executed.\nIf `README.md` shows a snippet like this:\n\n```python\n\u003e\u003e\u003e from project_name.foo import foo\n\u003e\u003e\u003e foo()\nTrue\n\n```\n\nPytest will execute the snippet to ensure that invoking `foo()` in fact returns `True`.\n\nThe snippets in `README.md` can document the typical use cases of the package.\nSince the snippets are executed, any code changes that render the documentation obsolete will be picked up, forcing a documentation update.\n\n\n## Continuous Delivery\nYou've done it, your package is at a state, where you want other to use it. Luckily, this repository features a CD-Pipeline,\nthat will build and upload your packages to Pypi for you. To get the CD running you need to first follow these [instructions](https://docs.pypi.org/trusted-publishers/adding-a-publisher/). The pipeline uses [OIDC](https://openid.net/developers/how-connect-works/) to authenticate on Pypi. Make sure your [pyproject.toml](pyproject.toml) is set up correctly, which means take care of 2. of the section **Basic Setup**.\n\nThen open your repository page on Github. To the right you should find **Create new Release**. Press it!\n\nYou will find this page:\n![img.png](readme_images/release_page.png)\n\nCreate a new Tag for your release, add a title and a description. If you are still unsure what to do check out the [github release how-to](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release). Press **Publish release**, watch the CD launch in the **Actions Tab** and enjoy your well deserved coffee. ☕\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmartmonkey-git%2Frobinson-group-python-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmartmonkey-git%2Frobinson-group-python-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmartmonkey-git%2Frobinson-group-python-template/lists"}