{"id":18221787,"url":"https://github.com/karlicoss/pymplate","last_synced_at":"2025-09-11T05:06:00.349Z","repository":{"id":40560038,"uuid":"256717290","full_name":"karlicoss/pymplate","owner":"karlicoss","description":"My Python project template","archived":false,"fork":false,"pushed_at":"2025-07-19T13:20:53.000Z","size":49,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-19T17:37:17.780Z","etag":null,"topics":["boilerplate","ci","github-actions","mypy","pylint","template","tox"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karlicoss.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-04-18T09:44:20.000Z","updated_at":"2025-07-19T13:20:54.000Z","dependencies_parsed_at":"2025-05-28T23:04:58.443Z","dependency_job_id":"fb9e80b6-9cb8-4a7e-a2d3-3c87ca5f6c2e","html_url":"https://github.com/karlicoss/pymplate","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/karlicoss/pymplate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlicoss%2Fpymplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlicoss%2Fpymplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlicoss%2Fpymplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlicoss%2Fpymplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karlicoss","download_url":"https://codeload.github.com/karlicoss/pymplate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlicoss%2Fpymplate/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268659220,"owners_count":24285867,"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","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["boilerplate","ci","github-actions","mypy","pylint","template","tox"],"created_at":"2024-11-03T22:04:25.060Z","updated_at":"2025-08-04T06:43:02.763Z","avatar_url":"https://github.com/karlicoss.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"My (somewhat opinionated) Python project template\n\n- minimal configuration in [[file:setup.py]], only setting the required fields\n \n  No one cares about PyPi keywords, descriptions etc.\n\n  - there is also an example =pyproject.toml= configuration in [[file:misc/pyproject.toml]]\n\n- uses =pytest= and =mypy= (+coverage) for checks\n- uses =ruff= with some ignore directives to prevent it from being too annoying about the code style\n- relies on [[file:tox.ini][tox]] for running tests and checks in isolation\n- uses Github Actions for CI\n\n  - make sure you can run CI against pull requests from other people (=pull_request= trigger)\n    Note that people who fork it need to go to \"Actions\" tab on their fork and click \"I understand my workflows, go ahead and enable them\".\n  - build matrix for multiple python versions\n  - trying to keep as little as possible in the CI configuration\n   \n    Because [[https://beepb00p.xyz/configs-suck.html][fuck]] yaml configs and learning yet another templating syntax\n- automatic PyPi deployments on new tags\n\n* CI\n- see [[file:.github/workflows/main.yml][the config]]\n- running CI locally: use [[https://github.com/nektos/act][=act=]] (e.g. try with =act -l=)\n\n* PyPi releases\n\n#+begin_src python :results output drawer :exports results\nimport imp\nm = imp.load_source('release', '.ci/release')\nprint(m.__doc__)\n#+end_src\n\n#+RESULTS:\n:results:\n\nRun [[file:scripts/release][scripts/release]] to deploy Python package onto [[https://pypi.org][PyPi]] and [[https://test.pypi.org][test PyPi]].\n\nThe script expects =TWINE_PASSWORD= environment variable to contain the [[https://pypi.org/help/#apitoken][PyPi token]] (not the password!).\n\nThe script can be run manually.\nIt's also running as =pypi= job in [[file:.github/workflows/main.yml][Github Actions config]]. Packages are deployed on:\n- every master commit, onto test pypi\n- every new tag, onto production pypi\n\nYou'll need to set =TWINE_PASSWORD= and =TWINE_PASSWORD_TEST= in [[https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets][secrets]]\nfor Github Actions deployment to work.\n\n:end:\n\n# TODO maybe generate github actions config and have a literal readme?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarlicoss%2Fpymplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarlicoss%2Fpymplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarlicoss%2Fpymplate/lists"}