{"id":15566825,"url":"https://github.com/dsfinn/roboversion","last_synced_at":"2026-05-04T03:33:35.185Z","repository":{"id":57462511,"uuid":"182487998","full_name":"dsfinn/roboversion","owner":"dsfinn","description":"Automated project versioning based on Git repository state","archived":false,"fork":false,"pushed_at":"2019-12-10T11:46:47.000Z","size":85,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-01T12:22:24.920Z","etag":null,"topics":["development-tools","git","python","python3","python36","versioning"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dsfinn.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":"2019-04-21T04:06:52.000Z","updated_at":"2019-12-07T04:29:58.000Z","dependencies_parsed_at":"2022-09-10T20:21:33.709Z","dependency_job_id":null,"html_url":"https://github.com/dsfinn/roboversion","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/dsfinn/roboversion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsfinn%2Froboversion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsfinn%2Froboversion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsfinn%2Froboversion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsfinn%2Froboversion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dsfinn","download_url":"https://codeload.github.com/dsfinn/roboversion/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsfinn%2Froboversion/sbom","scorecard":{"id":357656,"data":{"date":"2025-08-11","repo":{"name":"github.com/dsfinn/roboversion","commit":"a89a7171082e4cbb1e9cdd9ef06e1cd8ce00e862"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-18T10:01:59.184Z","repository_id":57462511,"created_at":"2025-08-18T10:01:59.184Z","updated_at":"2025-08-18T10:01:59.184Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32593943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"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":["development-tools","git","python","python3","python36","versioning"],"created_at":"2024-10-02T17:07:12.132Z","updated_at":"2026-05-04T03:33:35.170Z","avatar_url":"https://github.com/dsfinn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# roboversion\n\nAutomated project versioning based on Git repository state.\n\n[![pipeline status](https://gitlab.com/dsfinn/roboversion/badges/master/pipeline.svg)](https://gitlab.com/dsfinn/roboversion/commits/master)\n[![coverage report](https://gitlab.com/dsfinn/roboversion/badges/master/coverage.svg)](https://gitlab.com/dsfinn/roboversion/commits/master)\n\n## Author\n\nDavid Finn: dsfinn@gmail.com\n\n## Requirements\n\n* Python 3.6+\n* Git\n\n## Installation\n\n```sh\npip install roboversion\n```\n\n## Quickstart\n\nroboversion trivialises versioning for packaging in `setup.py`:\n\n```python\nfrom setuptools import setup\nfrom roboversion import get_version\n...\nsetup(\n\t...\n\tversion=str(get_version(alpha_branch='origin/my_alpha_branch')),\n\t...\n)\n```\n\nBeyond tagging release commits as normal, this might be the only time the\ndeveloper needs to touch versioning for their project at all.\n\n## Description\n\nRunning this module, or its `get_version` function, will inspect the specified\nGit repository state and construct a corresponding PEP440-compliant version.\n\nBase releases are expected to be tagged as PEP440-compliant version strings.\nIf no version tags exist, the base version will be treated as `0.0.0`, and the\nresulting development version will be targeting release `0.0.1`.\n\nIf prerelease branches are specified (e.g. alpha, beta, release candidate)\nthe output version will reflect this information based on the closest ancestor\nprerelease branch.\n\n## Use\n\nThis module can be used as an imported module or directly from the command\nline.\n\nIf no ref is specified as the target, 'HEAD' will be the target ref.\n\nIf the ref is tagged with a version, the version will correspond to\nthe tagged version.\n\nIf the current branch is a prerelease branch, the version will\nwill be a corresponding prerelease version of the next release.\n\nIf the ref is neither a tagged version nor at a prerelease branch,\nthe version will be a development version of the next upstream\nprerelease branch. If no prerelease branches are specified, the version\nwill be a development version of the next release.\n\nIf the ref is in the history of an upstream prerelease branch, the\nversion will be a local version of the last release. This is unlikely to be\nuseful, and probably the result of a misconfiguration.\n\nDetailed descriptions of parameters can be found in the method documentation\nand by running the module with `--help`.\n\n## Examples\n\n```python\nfrom roboversion import get_version\n...\nversion = get_version()\n```\n\n```python\nfrom roboversion import get_version\n...\nversion = get_version(alpha_branch='origin/my_alpha_branch')\n```\n\n```bash\n$ roboversion\n```\n\n```bash\n$ roboversion /path/to/repository\n```\n\n```bash\n$ roboversion --ref origin/master\n```\n\n```bash\n$ roboversion --alpha origin/alpha --beta origin/beta --release origin/release --no-auto-local --ref HEAD\n```\n\n```bash\n$ python -m roboversion --alpha origin/alpha --beta origin/beta --release origin/release --no-auto-local --ref HEAD\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsfinn%2Froboversion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdsfinn%2Froboversion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsfinn%2Froboversion/lists"}