{"id":22066412,"url":"https://github.com/daun-io/pushpin","last_synced_at":"2026-06-10T05:32:08.923Z","repository":{"id":57699361,"uuid":"502145464","full_name":"daun-io/pushpin","owner":"daun-io","description":"Git hooks for python 📌","archived":false,"fork":false,"pushed_at":"2022-06-11T06:36:43.000Z","size":59,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-03T19:42:00.154Z","etag":null,"topics":["commit","git","hooks","pre-commit"],"latest_commit_sha":null,"homepage":"https://nyanye.com/pushpin/","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/daun-io.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}},"created_at":"2022-06-10T18:36:31.000Z","updated_at":"2022-06-11T14:21:58.000Z","dependencies_parsed_at":"2022-09-26T21:12:16.599Z","dependency_job_id":null,"html_url":"https://github.com/daun-io/pushpin","commit_stats":null,"previous_names":["nyanye/pushpin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/daun-io/pushpin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daun-io%2Fpushpin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daun-io%2Fpushpin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daun-io%2Fpushpin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daun-io%2Fpushpin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daun-io","download_url":"https://codeload.github.com/daun-io/pushpin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daun-io%2Fpushpin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34139178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"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":["commit","git","hooks","pre-commit"],"created_at":"2024-11-30T19:28:02.598Z","updated_at":"2026-06-10T05:32:08.905Z","avatar_url":"https://github.com/daun-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003epushpin\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://raw.githubusercontent.com/nyanye/pushpin/main/docs/pushpin.png\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/nyanye/pushpin/main/docs/pushpin.png\"\u003e\u003c/a\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/nyanye/pushpin/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/nyanye/pushpin/actions/workflows/ci.yml/badge.svg\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/pushpin/\"\u003e\u003cimg src=\"https://badge.fury.io/py/pushpin.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/pushpin/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/dm/ansicolortags.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nGit hooks for python 📌\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\nPushpin improves your python commits and more.\u003cbr\u003e\nYou can use it to run toolings like pytest, pylint, isort, black, etc\u003cbr\u003e\nwhenever you commit or push. pushpin supports all Git hooks.\u003cbr\u003e\nIt's basically \u003ca href=\"https://typicode.github.io/husky/\"\u003ehusky\u003c/a\u003e but for modern python toolings\n\u003c/p\u003e\n\n\n# Install\n\n```bash\n# For poetry users\npoetry add -D pushpin\n\n# For traditional pip users\npip install pushpin\n```\n\n# Usage\n\n```bash\n# prepare your repo\npushpin install\n\n# add a hook\npushpin add .pushpin/pre-commit \"pytest\"\n```\n\n## Recommended Hooks\n\n```bash\n# pylint - strictly manage your code quality\npushpin add .pushpin/pre-commit \"pylint --fail-under=8 .\"\n\n# isort - sort your import orders\npushpin add .pushpin/pre-commit \"isort .\"\n\n# black - get some uncompromising styles\npushpin add .pushpin/pre-commit \"black .\"\n```\n\n# Used by\n\npushpin will be used by these awesome python projects.\n\n- list yours.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaun-io%2Fpushpin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaun-io%2Fpushpin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaun-io%2Fpushpin/lists"}