{"id":65331,"name":"pyusb","description":"Easy USB access for Python","url":"https://github.com/pyusb/pyusb","last_synced_at":"2025-09-08T13:23:44.433Z","repository":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"}},"owner":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"packages":[{"id":7632646,"name":"py3-usb-pyc","ecosystem":"alpine","description":"Precompiled Python bytecode for py3-usb","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":3,"first_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_published_at":"2025-03-14T00:08:00.000Z","latest_release_number":"1.3.1-r0","last_synced_at":"2025-08-14T07:01:44.189Z","created_at":"2023-04-23T01:50:43.894Z","updated_at":"2025-09-08T02:10:26.056Z","registry_url":"https://pkgs.alpinelinux.org/package/edge/community/x86_64/py3-usb-pyc","install_command":"apk add py3-usb-pyc","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.055Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":14.132689623958058,"stargazers_count":6.104122601951835,"forks_count":3.818323499944339,"average":6.013783931463558},"purl":"pkg:apk/alpine/py3-usb-pyc?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb-pyc","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb-pyc","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb-pyc/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb-pyc/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb-pyc/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb-pyc/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb-pyc/related_packages","maintainers":[{"uuid":"marian.buschsieweke@posteo.net","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":379,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2025-03-14T02:34:20.004Z","updated_at":"2025-03-14T02:34:20.004Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/maintainers/marian.buschsieweke@posteo.net/packages"}],"registry":{"name":"alpine-edge","url":"https://pkgs.alpinelinux.org/packages?branch=edge","ecosystem":"alpine","default":false,"packages_count":37130,"maintainers_count":822,"namespaces_count":3,"keywords_count":6489,"github":"alpinelinux","metadata":{"repos":["main","community","testing"],"funded_packages_count":2647},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.616Z","updated_at":"2025-09-08T05:01:36.044Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/namespaces"}},{"id":76163,"name":"py-pyusb","ecosystem":"spack","description":"Easy USB access from Python.\n","homepage":"https://github.com/pyusb/pyusb","licenses":"[]","normalized_licenses":["Other"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2022-04-05T09:28:20.452Z","latest_release_published_at":"2022-04-05T09:28:20.452Z","latest_release_number":"1.0.2","last_synced_at":"2025-09-07T13:27:45.334Z","created_at":"2022-04-05T09:28:20.421Z","updated_at":"2025-09-08T02:10:26.238Z","registry_url":"https://packages.spack.io/package.html?name=py-pyusb","install_command":"spack install py-pyusb","documentation_url":null,"metadata":{},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.237Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":57.27386411004586,"stargazers_count":5.4745032652494094,"forks_count":3.431985549534528,"average":16.545088231207448},"purl":"pkg:spack/py-pyusb","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/spack/py-pyusb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/spack/py-pyusb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/spack/py-pyusb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-pyusb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-pyusb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-pyusb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-pyusb/related_packages","maintainers":[{"uuid":"adamjstewart","login":"adamjstewart","name":null,"email":null,"url":"https://github.com/adamjstewart","packages_count":2170,"html_url":null,"role":null,"created_at":"2022-11-14T16:55:05.940Z","updated_at":"2022-11-14T16:55:05.940Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/maintainers/adamjstewart/packages"}],"registry":{"name":"spack.io","url":"https://packages.spack.io","ecosystem":"spack","default":true,"packages_count":8772,"maintainers_count":926,"namespaces_count":0,"keywords_count":3681,"github":"spack","metadata":{"funded_packages_count":405},"icon_url":"https://github.com/spack.png","created_at":"2022-04-04T15:19:23.514Z","updated_at":"2025-09-08T06:56:36.288Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/namespaces"}},{"id":11767262,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2025-03-14T00:08:00.000Z","latest_release_published_at":"2025-03-14T00:08:00.000Z","latest_release_number":"1.3.1-r0","last_synced_at":"2025-09-07T13:27:48.771Z","created_at":"2025-06-07T19:06:39.615Z","updated_at":"2025-09-08T02:10:25.951Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.22/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.951Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@posteo.net","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":316,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2025-06-08T17:14:21.725Z","updated_at":"2025-06-08T17:14:21.725Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/maintainers/marian.buschsieweke@posteo.net/packages"}],"registry":{"name":"alpine-v3.22","url":"https://pkgs.alpinelinux.org/packages?branch=v3.22","ecosystem":"alpine","default":false,"packages_count":26315,"maintainers_count":422,"namespaces_count":2,"keywords_count":4641,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1614},"icon_url":"https://github.com/alpinelinux.png","created_at":"2025-06-05T10:49:56.987Z","updated_at":"2025-09-08T05:33:01.089Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/namespaces"}},{"id":11767263,"name":"py3-usb-pyc","ecosystem":"alpine","description":"Precompiled Python bytecode for py3-usb","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2025-03-14T00:08:00.000Z","latest_release_published_at":"2025-03-14T00:08:00.000Z","latest_release_number":"1.3.1-r0","last_synced_at":"2025-09-07T13:27:49.372Z","created_at":"2025-06-07T19:06:39.657Z","updated_at":"2025-09-08T02:10:26.082Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.22/community/x86_64/py3-usb-pyc","install_command":"apk add py3-usb-pyc","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.082Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb-pyc?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb-pyc","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb-pyc","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb-pyc/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb-pyc/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb-pyc/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb-pyc/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/py3-usb-pyc/related_packages","maintainers":[{"uuid":"marian.buschsieweke@posteo.net","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":316,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2025-06-08T17:14:28.178Z","updated_at":"2025-06-08T17:14:28.178Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/maintainers/marian.buschsieweke@posteo.net/packages"}],"registry":{"name":"alpine-v3.22","url":"https://pkgs.alpinelinux.org/packages?branch=v3.22","ecosystem":"alpine","default":false,"packages_count":26315,"maintainers_count":422,"namespaces_count":2,"keywords_count":4641,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1614},"icon_url":"https://github.com/alpinelinux.png","created_at":"2025-06-05T10:49:56.987Z","updated_at":"2025-09-08T05:33:01.089Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/namespaces"}},{"id":7780386,"name":"py3-usb-pyc","ecosystem":"alpine","description":"Precompiled Python bytecode for py3-usb","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_number":"1.2.1-r2","last_synced_at":"2025-09-07T13:27:46.803Z","created_at":"2023-05-22T14:39:46.565Z","updated_at":"2025-09-08T02:10:25.949Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.18/community/x86_64/py3-usb-pyc","install_command":"apk add py3-usb-pyc","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.949Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":5.595730886240088,"forks_count":2.69313251209416,"docker_downloads_count":null,"average":2.072215849583562},"purl":"pkg:apk/alpine/py3-usb-pyc?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb-pyc","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb-pyc","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb-pyc/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb-pyc/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb-pyc/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb-pyc/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb-pyc/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":96,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-05-23T08:07:36.034Z","updated_at":"2023-05-23T08:07:36.034Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.18","url":"https://pkgs.alpinelinux.org/packages?branch=v3.18","ecosystem":"alpine","default":false,"packages_count":20068,"maintainers_count":367,"namespaces_count":2,"keywords_count":3625,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1084},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-05-22T10:43:30.622Z","updated_at":"2025-09-07T07:26:06.804Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/namespaces"}},{"id":6141694,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2021-12-15T19:17:47.000Z","latest_release_published_at":"2021-12-15T19:17:47.000Z","latest_release_number":"1.1.1-r3","last_synced_at":"2025-09-07T13:27:43.436Z","created_at":"2023-01-31T22:41:42.590Z","updated_at":"2025-09-08T02:10:26.081Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.16/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.081Z","dependent_packages_count":5,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":7.34284204965663,"stargazers_count":4.437400950871632,"forks_count":2.189352585549099,"average":3.49239889651934},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":92,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-02-01T13:12:41.944Z","updated_at":"2023-02-01T13:12:41.944Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.16","url":"https://pkgs.alpinelinux.org/packages?branch=v3.16","ecosystem":"alpine","default":false,"packages_count":17040,"maintainers_count":328,"namespaces_count":2,"keywords_count":2845,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":915},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.662Z","updated_at":"2025-09-08T06:51:50.317Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.16/namespaces"}},{"id":10346127,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2024-04-12T09:59:22.000Z","latest_release_published_at":"2024-04-12T09:59:22.000Z","latest_release_number":"1.2.1-r3","last_synced_at":"2025-09-07T13:27:49.821Z","created_at":"2024-06-11T10:51:55.808Z","updated_at":"2025-09-08T02:10:26.090Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.20/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.090Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":263,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2024-06-12T01:45:32.591Z","updated_at":"2024-06-12T01:45:32.591Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.20","url":"https://pkgs.alpinelinux.org/packages?branch=v3.20","ecosystem":"alpine","default":false,"packages_count":24162,"maintainers_count":405,"namespaces_count":2,"keywords_count":4237,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1365},"icon_url":"https://github.com/alpinelinux.png","created_at":"2024-06-07T11:51:39.915Z","updated_at":"2025-09-08T06:55:59.303Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/namespaces"}},{"id":6059882,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":4,"first_release_published_at":"2022-11-22T19:33:35.000Z","latest_release_published_at":"2025-03-14T00:08:00.000Z","latest_release_number":"1.3.1-r0","last_synced_at":"2025-09-07T13:27:59.235Z","created_at":"2023-01-31T19:04:13.371Z","updated_at":"2025-09-08T02:10:25.948Z","registry_url":"https://pkgs.alpinelinux.org/package/edge/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.948Z","dependent_packages_count":9,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.7748904195366312,"stargazers_count":5.819505322479649,"forks_count":3.7413901064495927,"average":2.5839464621164683},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@posteo.net","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":379,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2025-03-14T02:34:26.458Z","updated_at":"2025-03-14T02:34:26.458Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/maintainers/marian.buschsieweke@posteo.net/packages"}],"registry":{"name":"alpine-edge","url":"https://pkgs.alpinelinux.org/packages?branch=edge","ecosystem":"alpine","default":false,"packages_count":37130,"maintainers_count":822,"namespaces_count":3,"keywords_count":6489,"github":"alpinelinux","metadata":{"repos":["main","community","testing"],"funded_packages_count":2647},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.616Z","updated_at":"2025-09-08T05:01:36.044Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/namespaces"}},{"id":2891422,"name":"pyusb","ecosystem":"pypi","description":"Easy USB access for Python","homepage":"https://pyusb.github.io/pyusb","licenses":"BSD License","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":null,"versions_count":17,"first_release_published_at":"2011-11-12T23:01:32.000Z","latest_release_published_at":"2025-01-08T23:45:00.000Z","latest_release_number":"1.3.1","last_synced_at":"2025-09-07T23:31:42.032Z","created_at":"2022-04-10T12:22:47.032Z","updated_at":"2025-09-08T02:10:25.879Z","registry_url":"https://pypi.org/project/pyusb/","install_command":"pip install pyusb --index-url https://pypi.org/simple","documentation_url":"https://pyusb.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Intended Audience :: Information Technology","Intended Audience :: Manufacturing","Intended Audience :: Science/Research","Intended Audience :: System Administrators","Intended Audience :: Telecommunications Industry","License :: OSI Approved :: BSD License","Natural Language :: English","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows :: Windows 10","Operating System :: Microsoft :: Windows :: Windows 7","Operating System :: Microsoft :: Windows :: Windows Vista","Operating System :: POSIX :: BSD :: FreeBSD","Operating System :: POSIX :: BSD :: NetBSD","Operating System :: POSIX :: BSD :: OpenBSD","Operating System :: POSIX :: Linux","Operating System :: POSIX :: SunOS/Solaris","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: IronPython","Programming Language :: Python :: Implementation :: Jython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator","Topic :: Software Development :: Libraries","Topic :: Software Development :: Libraries :: Python Modules","Topic :: System :: Hardware :: Hardware Drivers"],"normalized_name":"pyusb","project_status":null},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.879Z","dependent_packages_count":136,"downloads":2138575,"downloads_period":"last-month","dependent_repos_count":3692,"rankings":{"downloads":0.3359544222491389,"dependent_repos_count":0.16854486964416113,"dependent_packages_count":0.15962715516390888,"stargazers_count":1.5796640944167044,"forks_count":1.7827481584647493,"docker_downloads_count":0.07894373285440802,"average":0.6842470721321785},"purl":"pkg:pypi/pyusb","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pyusb","docker_dependents_count":243,"docker_downloads_count":819135766,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pyusb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pyusb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyusb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyusb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyusb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyusb/related_packages","maintainers":[{"uuid":"eblot","login":"eblot","name":null,"email":null,"url":null,"packages_count":12,"html_url":"https://pypi.org/user/eblot/","role":null,"created_at":"2023-01-27T02:03:56.969Z","updated_at":"2023-01-27T02:03:56.969Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/eblot/packages"},{"uuid":"jonasmalaco","login":"jonasmalaco","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/jonasmalaco/","role":null,"created_at":"2023-01-27T02:03:56.928Z","updated_at":"2023-01-27T02:03:56.928Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jonasmalaco/packages"},{"uuid":"wander.lairson","login":"wander.lairson","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/wander.lairson/","role":null,"created_at":"2023-01-27T02:03:57.006Z","updated_at":"2023-01-27T02:03:57.006Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/wander.lairson/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726145,"maintainers_count":308800,"namespaces_count":0,"keywords_count":238245,"github":"pypi","metadata":{"funded_packages_count":50579},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-08T05:32:36.857Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},{"id":7780385,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_number":"1.2.1-r2","last_synced_at":"2025-09-07T13:27:46.551Z","created_at":"2023-05-22T14:39:46.333Z","updated_at":"2025-09-08T02:10:25.943Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.18/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.943Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":5.595730886240088,"forks_count":2.69313251209416,"docker_downloads_count":null,"average":2.072215849583562},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":96,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-05-23T08:07:34.447Z","updated_at":"2023-05-23T08:07:34.447Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.18","url":"https://pkgs.alpinelinux.org/packages?branch=v3.18","ecosystem":"alpine","default":false,"packages_count":20068,"maintainers_count":367,"namespaces_count":2,"keywords_count":3625,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1084},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-05-22T10:43:30.622Z","updated_at":"2025-09-07T07:26:06.804Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/namespaces"}},{"id":5301460,"name":"pyusb","ecosystem":"conda","description":"PyUSB offers easy USB devices communication in Python. It should work without additional code in any environment with Python \u003e= 2.4, ctypes and an pre-built usb backend library (currently, libusb 0.1.x, libusb 1.x, and OpenUSB).","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":null,"versions_count":5,"first_release_published_at":"2019-08-05T14:05:20.000Z","latest_release_published_at":"2021-07-09T11:08:08.000Z","latest_release_number":"1.2.1","last_synced_at":"2025-09-07T13:28:17.624Z","created_at":"2022-10-03T16:10:53.789Z","updated_at":"2025-09-08T02:10:25.952Z","registry_url":"https://anaconda.org/conda-forge/pyusb","install_command":"conda install -c conda-forge pyusb","documentation_url":null,"metadata":{},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.951Z","dependent_packages_count":10,"downloads":null,"downloads_period":null,"dependent_repos_count":5,"rankings":{"downloads":null,"dependent_repos_count":14.689293735962067,"dependent_packages_count":5.899675567756426,"stargazers_count":9.163963064636887,"forks_count":6.254055403044672,"docker_downloads_count":null,"average":9.001746942850012},"purl":"pkg:conda/pyusb","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/conda/pyusb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/conda/pyusb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/conda/pyusb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyusb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyusb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyusb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyusb/related_packages","maintainers":[],"registry":{"name":"conda-forge.org","url":"https://conda-forge.org","ecosystem":"conda","default":false,"packages_count":20636,"maintainers_count":0,"namespaces_count":0,"keywords_count":13414,"github":"conda-forge","metadata":{"kind":"conda-forge","key":"CondaForge","api":"https://conda.anaconda.org","funded_packages_count":2190},"icon_url":"https://github.com/conda-forge.png","created_at":"2022-10-03T15:37:08.743Z","updated_at":"2025-09-08T06:53:21.618Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/namespaces"}},{"id":8678493,"name":"py3-usb-pyc","ecosystem":"alpine","description":"Precompiled Python bytecode for py3-usb","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_number":"1.2.1-r2","last_synced_at":"2025-09-02T08:19:30.741Z","created_at":"2023-12-20T10:31:16.001Z","updated_at":"2025-09-08T02:10:26.062Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.19/community/x86_64/py3-usb-pyc","install_command":"apk add py3-usb-pyc","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.061Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb-pyc?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb-pyc","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb-pyc","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb-pyc/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb-pyc/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb-pyc/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb-pyc/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb-pyc/related_packages","maintainers":[],"registry":{"name":"alpine-v3.19","url":"https://pkgs.alpinelinux.org/packages?branch=v3.19","ecosystem":"alpine","default":false,"packages_count":23031,"maintainers_count":376,"namespaces_count":2,"keywords_count":2627,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":711},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-12-20T09:51:56.346Z","updated_at":"2025-09-08T06:55:50.087Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/namespaces"}},{"id":6224882,"name":"py3-usb","ecosystem":"alpine","description":"PyUSB offers easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2020-03-02T04:30:21.000Z","latest_release_published_at":"2020-03-02T04:30:21.000Z","latest_release_number":"1.0.2-r3","last_synced_at":"2025-09-07T13:27:46.186Z","created_at":"2023-02-01T03:57:45.204Z","updated_at":"2025-09-08T02:10:26.089Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.12/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.089Z","dependent_packages_count":5,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":4.975319282300399,"stargazers_count":3.3769489931834205,"forks_count":2.084149494632923,"average":2.6091044425291856},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":40,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-02-06T14:19:03.395Z","updated_at":"2023-02-06T14:19:03.395Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.12","url":"https://pkgs.alpinelinux.org/packages?branch=v3.12","ecosystem":"alpine","default":false,"packages_count":12763,"maintainers_count":216,"namespaces_count":2,"keywords_count":1434,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":473},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.748Z","updated_at":"2025-08-23T06:43:35.793Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.12/namespaces"}},{"id":8678492,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_published_at":"2023-04-20T11:52:45.000Z","latest_release_number":"1.2.1-r2","last_synced_at":"2025-09-02T08:26:03.031Z","created_at":"2023-12-20T10:31:15.902Z","updated_at":"2025-09-02T08:26:03.031Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.19/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":96,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2024-09-16T14:07:27.148Z","updated_at":"2024-09-16T14:07:27.148Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.19","url":"https://pkgs.alpinelinux.org/packages?branch=v3.19","ecosystem":"alpine","default":false,"packages_count":23031,"maintainers_count":376,"namespaces_count":2,"keywords_count":2627,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":711},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-12-20T09:51:56.346Z","updated_at":"2025-09-08T06:55:50.087Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/namespaces"}},{"id":11140621,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2024-06-12T08:30:09.000Z","latest_release_published_at":"2024-06-12T08:30:09.000Z","latest_release_number":"1.2.1-r3","last_synced_at":"2025-09-07T13:27:51.228Z","created_at":"2024-12-07T13:24:45.257Z","updated_at":"2025-09-08T02:10:25.951Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.21/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.951Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@posteo.net","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":305,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2024-12-09T18:24:12.619Z","updated_at":"2024-12-09T18:24:12.619Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/maintainers/marian.buschsieweke@posteo.net/packages"}],"registry":{"name":"alpine-v3.21","url":"https://pkgs.alpinelinux.org/packages?branch=v3.21","ecosystem":"alpine","default":false,"packages_count":25393,"maintainers_count":413,"namespaces_count":2,"keywords_count":2766,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1060},"icon_url":"https://github.com/alpinelinux.png","created_at":"2024-12-06T12:06:36.014Z","updated_at":"2025-09-08T06:51:38.309Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/namespaces"}},{"id":6194598,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2021-04-05T18:18:24.000Z","latest_release_published_at":"2021-04-05T18:18:24.000Z","latest_release_number":"1.1.1-r2","last_synced_at":"2025-09-07T13:27:45.632Z","created_at":"2023-02-01T01:36:25.835Z","updated_at":"2025-09-08T02:10:25.950Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.14/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.950Z","dependent_packages_count":6,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":2.9950528145473996,"stargazers_count":3.870838347372643,"forks_count":2.1727503676962163,"average":2.2596603824040646},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":83,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-02-04T18:01:57.649Z","updated_at":"2023-02-04T18:01:57.649Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.14","url":"https://pkgs.alpinelinux.org/packages?branch=v3.14","ecosystem":"alpine","default":false,"packages_count":14958,"maintainers_count":258,"namespaces_count":2,"keywords_count":2173,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":671},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.706Z","updated_at":"2025-09-06T05:02:18.055Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.14/namespaces"}},{"id":11140622,"name":"py3-usb-pyc","ecosystem":"alpine","description":"Precompiled Python bytecode for py3-usb","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2024-06-12T08:30:09.000Z","latest_release_published_at":"2024-06-12T08:30:09.000Z","latest_release_number":"1.2.1-r3","last_synced_at":"2025-09-07T13:27:53.298Z","created_at":"2024-12-07T13:24:45.542Z","updated_at":"2025-09-08T02:10:25.950Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.21/community/x86_64/py3-usb-pyc","install_command":"apk add py3-usb-pyc","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.949Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb-pyc?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb-pyc","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb-pyc","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb-pyc/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb-pyc/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb-pyc/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb-pyc/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/py3-usb-pyc/related_packages","maintainers":[{"uuid":"marian.buschsieweke@posteo.net","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":305,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2024-12-09T18:24:12.583Z","updated_at":"2024-12-09T18:24:12.583Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/maintainers/marian.buschsieweke@posteo.net/packages"}],"registry":{"name":"alpine-v3.21","url":"https://pkgs.alpinelinux.org/packages?branch=v3.21","ecosystem":"alpine","default":false,"packages_count":25393,"maintainers_count":413,"namespaces_count":2,"keywords_count":2766,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1060},"icon_url":"https://github.com/alpinelinux.png","created_at":"2024-12-06T12:06:36.014Z","updated_at":"2025-09-08T06:51:38.309Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/namespaces"}},{"id":6177581,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2021-04-05T18:18:24.000Z","latest_release_published_at":"2021-04-05T18:18:24.000Z","latest_release_number":"1.1.1-r2","last_synced_at":"2025-09-07T13:27:47.725Z","created_at":"2023-02-01T00:27:40.441Z","updated_at":"2025-09-08T02:10:26.067Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.15/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.067Z","dependent_packages_count":1,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":16.478526833575078,"stargazers_count":4.149586933215614,"forks_count":2.1946143658951884,"average":5.70568203317147},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":89,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-02-04T18:02:01.240Z","updated_at":"2023-02-04T18:02:01.240Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.15","url":"https://pkgs.alpinelinux.org/packages?branch=v3.15","ecosystem":"alpine","default":false,"packages_count":15857,"maintainers_count":287,"namespaces_count":2,"keywords_count":2456,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":780},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.684Z","updated_at":"2025-09-08T06:51:45.631Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.15/namespaces"}},{"id":4109971,"name":"github.com/pyusb/pyusb","ecosystem":"go","description":"","homepage":null,"licenses":"bsd-3-clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"github.com/pyusb","versions_count":8,"first_release_published_at":"2017-10-09T21:34:48.000Z","latest_release_published_at":"2025-01-08T23:43:11.000Z","latest_release_number":"v1.3.1","last_synced_at":"2025-09-07T13:27:42.813Z","created_at":"2022-04-12T14:01:42.124Z","updated_at":"2025-09-08T02:10:25.948Z","registry_url":"https://pkg.go.dev/github.com/pyusb/pyusb","install_command":"go get github.com/pyusb/pyusb","documentation_url":"https://pkg.go.dev/github.com/pyusb/pyusb#section-documentation","metadata":{},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.948Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.345852080216646,"dependent_packages_count":6.999148183520997,"stargazers_count":null,"forks_count":null,"average":8.172500131868823},"purl":"pkg:golang/github.com/pyusb/pyusb","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/pyusb/pyusb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/pyusb/pyusb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/pyusb/pyusb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpyusb%2Fpyusb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpyusb%2Fpyusb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpyusb%2Fpyusb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpyusb%2Fpyusb/related_packages","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":1954233,"maintainers_count":0,"namespaces_count":741771,"keywords_count":109320,"github":"golang","metadata":{"funded_packages_count":49342},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2025-09-08T05:47:38.872Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":6205159,"name":"py3-usb","ecosystem":"alpine","description":"PyUSB offers easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2020-03-02T04:30:21.000Z","latest_release_published_at":"2020-03-02T04:30:21.000Z","latest_release_number":"1.0.2-r3","last_synced_at":"2025-09-07T13:27:47.753Z","created_at":"2023-02-01T02:25:54.286Z","updated_at":"2025-09-08T02:10:25.949Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.13/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.949Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":19.522199035763112,"stargazers_count":3.842555947326761,"forks_count":2.1875224868676693,"average":6.388069367489385},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":50,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-02-04T18:01:51.494Z","updated_at":"2023-02-04T18:01:51.494Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.13","url":"https://pkgs.alpinelinux.org/packages?branch=v3.13","ecosystem":"alpine","default":false,"packages_count":13897,"maintainers_count":231,"namespaces_count":2,"keywords_count":1890,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":587},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.734Z","updated_at":"2025-09-07T05:11:47.762Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.13/namespaces"}},{"id":6097885,"name":"py3-usb","ecosystem":"alpine","description":"easy USB devices communication in Python3","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2022-07-28T22:32:10.000Z","latest_release_published_at":"2022-07-28T22:32:10.000Z","latest_release_number":"1.2.1-r0","last_synced_at":"2025-09-07T13:27:49.138Z","created_at":"2023-01-31T20:39:14.195Z","updated_at":"2025-09-08T02:10:25.950Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.17/community/x86_64/py3-usb","install_command":"apk add py3-usb","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:25.950Z","dependent_packages_count":8,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":4.45155495677557,"stargazers_count":5.759514988211519,"forks_count":2.4138318176714946,"average":3.1562254406646457},"purl":"pkg:apk/alpine/py3-usb?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/py3-usb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/py3-usb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/py3-usb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/py3-usb/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":86,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2023-02-01T07:17:29.513Z","updated_at":"2023-02-01T07:17:29.513Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.17","url":"https://pkgs.alpinelinux.org/packages?branch=v3.17","ecosystem":"alpine","default":false,"packages_count":17817,"maintainers_count":352,"namespaces_count":2,"keywords_count":3362,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1026},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.642Z","updated_at":"2025-09-07T07:26:12.220Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/namespaces"}},{"id":10346126,"name":"py3-usb-pyc","ecosystem":"alpine","description":"Precompiled Python bytecode for py3-usb","homepage":"https://github.com/pyusb/pyusb","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pyusb/pyusb","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2024-04-12T09:59:22.000Z","latest_release_published_at":"2024-04-12T09:59:22.000Z","latest_release_number":"1.2.1-r3","last_synced_at":"2025-09-07T13:27:53.577Z","created_at":"2024-06-11T10:51:55.169Z","updated_at":"2025-09-08T02:10:26.201Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.20/community/x86_64/py3-usb-pyc","install_command":"apk add py3-usb-pyc","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":39614220,"uuid":"2315698","full_name":"pyusb/pyusb","owner":"pyusb","description":"Easy USB access for Python","archived":false,"fork":false,"pushed_at":"2025-08-17T00:38:02.000Z","size":1317,"stargazers_count":2255,"open_issues_count":31,"forks_count":668,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-09-07T13:16:51.128Z","etag":null,"topics":["hardware","python","usb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyusb.png","metadata":{"files":{"readme":"README.rst","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":"2011-09-02T18:36:18.000Z","updated_at":"2025-09-05T07:56:00.000Z","dependencies_parsed_at":"2023-01-21T02:45:46.300Z","dependency_job_id":"ea5b6f6a-fa56-48ef-bce9-e14cc0382416","html_url":"https://github.com/pyusb/pyusb","commit_stats":{"total_commits":472,"total_committers":78,"mean_commits":6.051282051282051,"dds":0.5063559322033898,"last_synced_commit":"4a433a5fddd6dcbc632454d53f57e020b0b5513b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pyusb/pyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/sbom","scorecard":{"id":752482,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyusb/pyusb","commit":"81b675f1f6d31ab4e86ed549e3523b7329cc31a3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"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":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","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":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/run_tox.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tox.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pyusb/pyusb/run_tox.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: tools/setup_testenv.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/run_tox.yml:22","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: pyusb-1.3.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.1","Info: signed release artifact: pyusb-1.3.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.3.0","Info: signed release artifact: pyusb-1.2.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.1","Info: signed release artifact: pyusb-1.2.0-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.2.0","Info: signed release artifact: pyusb-1.1.1-py3-none-any.whl.asc: https://github.com/pyusb/pyusb/releases/tag/v1.1.1","Warn: release artifact v1.3.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/193806196","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/192847911","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45943338","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/45693267","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/pyusb/pyusb/releases/36638732"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:44:10.275Z","repository_id":39614220,"created_at":"2025-08-22T20:44:10.275Z","updated_at":"2025-08-22T20:44:10.275Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088574,"owners_count":25220258,"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-09-07T02:00:09.463Z","response_time":67,"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"},"owner_record":{"login":"pyusb","name":"PyUSB","uuid":"33545828","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/33545828?v=4","repositories_count":1,"last_synced_at":"2023-03-08T19:05:40.576Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyusb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:24:52.623Z","updated_at":"2023-03-08T19:05:40.604Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyusb/repositories"},"tags":[{"name":"v1.3.1","sha":"89ea84d6c9e4cb81bc6e40d7df849d0cbd7dfd47","kind":"tag","published_at":"2025-01-08T23:44:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"d7622939b45591e67edd880393ea006cb94f7c5a","kind":"tag","published_at":"2025-01-01T13:16:57.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.3.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"7f3638b7c296ac8153bbff369f8a7c0e28907153","kind":"tag","published_at":"2021-07-09T02:56:50.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"f0c513c918196c0a04d4cfa8ea5378be61cc493b","kind":"tag","published_at":"2021-07-05T05:58:07.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.2.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"a54ebc75a95fd9d6e1b1501f10d8fc0025ca8c0b","kind":"tag","published_at":"2021-01-20T06:21:18.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"0d0463f348770421db3fb77e516df966f6c9e9a1","kind":"tag","published_at":"2020-09-13T16:36:45.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.1.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.1.0/manifests"},{"name":"v1.0.2","sha":"47ca9c3f1fef944813943321f808d2db45f197f4","kind":"tag","published_at":"2017-10-12T01:16:31.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.2","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"470773b3de987d0ff70ea5412b43da57c7554985","kind":"tag","published_at":"2017-10-11T00:14:53.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/v1.0.1","html_url":"https://github.com/pyusb/pyusb/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/v1.0.1/manifests"},{"name":"1.0.0","sha":"1d54b1a4c58a5c852d66b2374fb1d40456f699f3","kind":"tag","published_at":"2016-04-30T22:40:21.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0/manifests"},{"name":"1.0.0rc1","sha":"69662f754b81e4b4787bb1600ca73e6c9663434c","kind":"tag","published_at":"2016-02-11T14:28:09.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0rc1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0rc1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0rc1/manifests"},{"name":"1.0.0b2","sha":"80f81ef34363e8b2841c8d82ce139707222563fc","kind":"tag","published_at":"2014-09-23T22:48:29.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b2/manifests"},{"name":"1.0.0b1","sha":"0546cad8980783c39f96db717005a550059b730f","kind":"tag","published_at":"2013-10-16T11:29:02.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0b1","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0b1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0b1/manifests"},{"name":"1.0.0a3","sha":"20d3094ea65d7e27b29bd450811ba2b4da434bbb","kind":"tag","published_at":"2012-09-09T17:49:40.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a3","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a3/manifests"},{"name":"1.0.0a2","sha":"6e5fd0de0e6d61e18dc0bb765ef9a866060f2908","kind":"tag","published_at":"2011-11-12T20:08:20.000Z","download_url":"https://codeload.github.com/pyusb/pyusb/tar.gz/1.0.0a2","html_url":"https://github.com/pyusb/pyusb/releases/tag/1.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pyusb/pyusb@1.0.0a2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/tags/1.0.0a2/manifests"}]},"repo_metadata_updated_at":"2025-09-08T02:10:26.200Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:apk/alpine/py3-usb-pyc?arch=x86_64","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/py3-usb-pyc","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/py3-usb-pyc","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/py3-usb-pyc/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:01:20.258Z","issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb-pyc/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb-pyc/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb-pyc/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/py3-usb-pyc/related_packages","maintainers":[{"uuid":"marian.buschsieweke@ovgu.de","login":null,"name":"Marian Buschsieweke","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","packages_count":263,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Marian Buschsieweke","role":null,"created_at":"2024-06-12T01:45:30.263Z","updated_at":"2024-06-12T01:45:30.263Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/maintainers/marian.buschsieweke@ovgu.de/packages"}],"registry":{"name":"alpine-v3.20","url":"https://pkgs.alpinelinux.org/packages?branch=v3.20","ecosystem":"alpine","default":false,"packages_count":24162,"maintainers_count":405,"namespaces_count":2,"keywords_count":4237,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1365},"icon_url":"https://github.com/alpinelinux.png","created_at":"2024-06-07T11:51:39.915Z","updated_at":"2025-09-08T06:55:59.303Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/namespaces"}}],"commits":{"id":5061,"full_name":"pyusb/pyusb","default_branch":"master","committers":[{"name":"Wander Lairson Costa","email":"wander.lairson@gmail.com","login":"walac","count":233},{"name":"Jonas Malaco","email":"jonas@protocubo.io","login":"jonasmalacofilho","count":108},{"name":"wander.costa","email":"wander.costa@igs-software.com","login":null,"count":16},{"name":"ap--","email":"andreas@poehlmann.io","login":"ap--","count":10},{"name":"Tormod Volden","email":"debian.tormod@gmail.com","login":"tormodvolden","count":7},{"name":"Alan Aguiar","email":"alanjas@hotmail.com","login":"AlanJAS","count":6},{"name":"Robert Wlodarczyk","email":"robert@simplicityguy.com","login":"SimplicityGuy","count":5},{"name":"Chapman Flack","email":"chap@anastigmatix.net","login":"jcflack","count":5},{"name":"Wander Lairson Costa","email":"wcosta@mozilla.com","login":null,"count":5},{"name":"Andrey Skvortsov","email":"andrej.skvortzov@gmail.com","login":"AndreySV","count":4},{"name":"wander.costa","email":"wander.costa@ortizgaming.com","login":null,"count":3},{"name":"Simon Norberg","email":"simon@dackbrann.net","login":"Norberg","count":3},{"name":"clach04","email":"Chris.Clark@actian.com","login":"clach04","count":3},{"name":"André Erdmann","email":"dywi@mailerd.de","login":"dywisor","count":3},{"name":"David Halter","email":"davidhalter88@gmail.com","login":"davidhalter","count":2},{"name":"Jacoby Johnson","email":"jacobyajohnson@gmail.com","login":"cobyj33","count":2},{"name":"James Rowe","email":"jnrowe@gmail.com","login":"JNRowe","count":2},{"name":"Matt","email":"matt@mattheard.net","login":"MattHeard","count":2},{"name":"Prathmesh Prabhu","email":"pprabhu@chromium.org","login":"pprabhu","count":2},{"name":"Russell Proud","email":"rproud@gmail.com","login":"russellproud","count":2},{"name":"endolith","email":"endolith@gmail.com","login":"endolith","count":2},{"name":"Peter A. Bigot","email":"bigotp@acm.org","login":"pabigot","count":2},{"name":"jaseg","email":"jaseg@jaseg.net","login":"jaseg","count":2},{"name":"Elliott Mitchell","email":"ehem+git@drgnwing.com","login":null,"count":2},{"name":"Walker Inman","email":"winman@mit.edu","login":null,"count":2},{"name":"ponty","email":"ponty@home","login":null,"count":2},{"name":"clach04","email":"clach04@toofugly.(none)","login":null,"count":2},{"name":"Richard Bryan","email":"rabryan@lucidsci.com","login":null,"count":1},{"name":"Nick Bogdanov","email":"nick.r.bogdanov@gmail.com","login":null,"count":1},{"name":"Maximilian Köhl","email":"linuxmaxi@googlemail.com","login":null,"count":1},{"name":"Jeromy Tompkins","email":"tompkins@nscl.msu.edu","login":null,"count":1},{"name":"James Dengel","email":"james.dengel@diasemi.com","login":null,"count":1},{"name":"fandeliang","email":"fandeliang@letv.com","login":null,"count":1},{"name":"Emmanuel Blot","email":"eblot.com@gmail.com","login":null,"count":1},{"name":"Fred Fettinger","email":"fettinge@motorola.com","login":null,"count":1},{"name":"Thijs Triemstra","email":"info@collab.nl","login":"thijstriemstra","count":1},{"name":"Stefano Di Martino","email":"stefano.d@gmx.net","login":"StefanoD","count":1},{"name":"Shun Hasegawa","email":"pazeshun3684@gmail.com","login":"pazeshun","count":1},{"name":"Querela","email":"ek.92@arcor.de","login":"Querela","count":1},{"name":"Robert Niederreiter","email":"office@squarewave.at","login":"rnixx","count":1},{"name":"Tim Gates","email":"tim.gates@iress.com","login":"timgates42","count":1},{"name":"Tobias Müller","email":"Tobias.Mueller9@de.bosch.com","login":"twam","count":1},{"name":"Walker Inman","email":"winman@lucidsci.com","login":"swinman","count":1},{"name":"Yawara ISHIDA","email":"ni732h.sphl@gmail.com","login":"yawara","count":1},{"name":"andygoulden","email":"69403412+andygoulden","login":"andygoulden","count":1},{"name":"jaredwelsh","email":"jareddwelsh@gmail.com","login":"jard285","count":1},{"name":"jpieper","email":"jjp@pobox.com","login":"jpieper","count":1},{"name":"kuma35","email":"sindobook@gmail.com","login":"kuma35","count":1},{"name":"mcuee","email":"xiaofanc@gmail.com","login":"mcuee","count":1},{"name":"mdxs","email":"van.wijgerden@mdxs.net","login":"mdxs","count":1},{"name":"petemyron","email":"pete.myron@gmail.com","login":"petemyron","count":1},{"name":"puddly","email":"32534428+puddly","login":"puddly","count":1},{"name":"root","email":"572488191@qq.com","login":"guyingzhao","count":1},{"name":"tuzzer","email":"matthew.tk.chan@gmail.com","login":"MattChanTK","count":1},{"name":"Holger Brunn","email":"hbrunn@therp.nl","login":"hbrunn","count":1},{"name":"Ian Thompson","email":"thepi200@gmail.com","login":"ithompson-legacy","count":1},{"name":"Jeffrey Nichols","email":"jsnichols@suprocktech.com","login":"ecejeff","count":1},{"name":"Andrii Oriekhov","email":"andriyorehov@gmail.com","login":"andriyor","count":1},{"name":"Andy Clark","email":"ajc97@cantab.net","login":"minkustree","count":1},{"name":"Antonio Vázquez Blanco","email":"antoniovazquezblanco@gmail.com","login":"antoniovazquezblanco","count":1},{"name":"Braiden Kindt","email":"braiden@braiden.org","login":"braiden","count":1},{"name":"Christian von Roques","email":"roques@mti.ag","login":"roques","count":1},{"name":"Damiano Bortolato","email":"damiano.bortolato@lnl.infn.it","login":"damib","count":1},{"name":"Domenico","email":"50798132+Domefemia","login":"Domefemia","count":1},{"name":"Ehsan Kia","email":"contact@ehsankia.com","login":"EhsanKia","count":1},{"name":"Emmanuel Blot","email":"emmanuel.blot@free.fr","login":"eblot","count":1},{"name":"Eric Wieser","email":"wieser.eric@gmail.com","login":"eric-wieser","count":1},{"name":"Harry Bock","email":"bock.harryw@gmail.com","login":"hbock","count":1},{"name":"Heinrich Schuchardt","email":"xypron.glpk@gmx.de","login":"xypron","count":1},{"name":"Karl Palsson","email":"karlp@tweak.net.au","login":"karlp","count":1},{"name":"Kenneth Lyons","email":"ixjlyons@gmail.com","login":"ixjlyons","count":1},{"name":"Leon Loeser","email":"leon.loeser@yahoo.de","login":"M3gaFr3ak","count":1},{"name":"Leonardo Rochael Almeida","email":"leorochael@gmail.com","login":"leorochael","count":1},{"name":"Martin","email":"mh.myorbit@gmail.com","login":"myorbit","count":1},{"name":"Michał Górny","email":"mgorny@gentoo.org","login":"mgorny","count":1},{"name":"Nico Elayda","email":"nico.elayda@gmail.com","login":"nicoelayda","count":1}],"total_commits":486,"total_committers":76,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":6.394736842105263,"dds":0.5205761316872428,"past_year_committers":[{"name":"Jonas Malaco","email":"jonas@protocubo.io","login":"jonasmalacofilho","count":11},{"name":"Russell Proud","email":"rproud@gmail.com","login":"russellproud","count":2},{"name":"Tobias Müller","email":"Tobias.Mueller9@de.bosch.com","login":"twam","count":1}],"past_year_total_commits":14,"past_year_total_committers":3,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":4.666666666666667,"past_year_dds":0.2142857142857143,"last_synced_at":"2025-05-14T03:39:15.998Z","last_synced_commit":"c384631d0aee97f78fa2478e8836a6a17f3ea9c7","created_at":"2023-03-07T09:22:30.483Z","updated_at":"2025-05-14T03:39:16.036Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.343Z","repositories_count":5480019,"commits_count":853389012,"contributors_count":31098138,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"pyusb/pyusb","html_url":"https://github.com/pyusb/pyusb","last_synced_at":"2025-08-31T08:01:20.258Z","status":null,"issues_count":125,"pull_requests_count":25,"avg_time_to_close_issue":8126749.742574258,"avg_time_to_close_pull_request":5839253.823529412,"issues_closed_count":101,"pull_requests_closed_count":17,"pull_request_authors_count":19,"issue_authors_count":106,"avg_comments_per_issue":5.952,"avg_comments_per_pull_request":3.84,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":269840.0,"past_year_avg_time_to_close_pull_request":986613.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":2.444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"created_at":"2023-05-10T14:54:31.210Z","updated_at":"2025-09-02T22:33:20.029Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyusb%2Fpyusb/issues","issue_labels_count":{"question":58,"enhancement":15,"windows":10,"libusb1":10,"doc":9,"linux":7,"invalid":6,"duplicate":4,"macOS":4,"isoc_transfer":4,"python3":3,"build":3,"libusb0":2,"core":2,"android":2,"CI":1,"Test":1,"Release":1},"pull_request_labels_count":{"enhancement":8,"libusb1":5,"core":4,"build":1,"android":1,"misc":1,"doc":1,"macOS":1,"Test":1,"linux":1},"issue_author_associations_count":{"NONE":109,"MEMBER":11,"CONTRIBUTOR":3},"pull_request_author_associations_count":{"NONE":15,"CONTRIBUTOR":9,"MEMBER":6},"issue_authors":{"mcuee":7,"o-murphy":3,"ap--":2,"danielhrisca":2,"jonasmalacofilho":2,"walac":2,"ibipark":2,"JartX":2,"jerome-diver":2,"torfbolt":2,"artisticfox8":2,"erikaemma":2,"emob-nordic":2,"SergeTauger":1,"cybergibbons":1,"yanghao":1,"dhingrachirag":1,"808reefer":1,"oldnapalm":1,"z7z8th":1,"Elemecca":1,"asusdisciple":1,"yohan-marchiset":1,"dtorresg":1,"ronny-rentner":1,"Gestas":1,"WhiteApfel":1,"rc14193":1,"2231puppy":1,"gsegria":1,"ddurs555":1,"pluto-dev":1,"abulka":1,"manuelm":1,"EmanueleRichiedei":1,"sasi8985":1,"kauwua":1,"Desperate4HelpIntern":1,"mikhail-ekzi":1,"EduardoNigro":1,"5tiaowu":1,"0hotpotman0":1,"KevinXuxuxu":1,"patrickmk":1,"Tigge":1,"tcoupe":1,"SamHerts":1,"sureshvv":1,"vgegok":1,"drmcnelson":1,"Devansh0210":1,"ninnypants":1,"eszb":1,"jayvdb":1,"garyfishel":1,"ravikuc":1,"robert-billing":1,"Flykoki":1,"jon7797":1,"130s":1,"cyberkryption":1,"themperek":1,"calugaruful-dotcom":1,"ponty":1,"noQuitter":1,"SengerM":1,"ahakobyan79":1,"premanandaembed":1,"simonwanghub":1,"DataconTom":1,"harryCM":1,"gauravjagtap123":1,"Querela":1,"psxpetey":1,"peplin":1,"gabri3l0":1,"karlzheng":1,"astephanh":1,"chavilaw":1,"Shimon-Guo":1,"ghost":1,"DouglasLapsley":1,"nylnx":1,"masyossi":1,"BinarSkugga":1,"MrUndead13":1,"ivankovacevic":1,"JLittleGDS96":1,"Mickey70":1,"sy211015":1,"WGH-":1,"NerosKi":1,"doronz88":1,"ChangmingTian":1,"q3w3e3":1,"WanManito":1,"sidprice":1,"huehnerhose":1,"c0debreaker":1,"alfiecg24":1,"tronchama":1,"hiteshkhanna31":1,"loriscaren":1,"fake-name":1},"pull_request_authors":{"jonasmalacofilho":6,"kauwua":3,"mikhail-ekzi":2,"AlanJAS":2,"russellproud":2,"twam":2,"o-murphy":2,"hroncok":1,"puddly":1,"andygoulden":1,"roberthartung":1,"nickrbogdanov":1,"Querela":1,"mrnuke":1,"Domefemia":1,"antoniovazquezblanco":1,"JackLilhammers":1,"andriyor":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.444Z","repositories_count":10087320,"issues_count":31306968,"pull_requests_count":96469683,"authors_count":10696025,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"core":3,"Test":1,"linux":1},"past_year_issue_author_associations_count":{"NONE":6},"past_year_pull_request_author_associations_count":{"NONE":5,"MEMBER":3,"CONTRIBUTOR":1},"past_year_issue_authors":{"astephanh":1,"BinarSkugga":1,"kauwua":1,"NerosKi":1,"nylnx":1,"SergeTauger":1},"past_year_pull_request_authors":{"jonasmalacofilho":3,"kauwua":3,"russellproud":2,"hroncok":1},"maintainers":[{"login":"jonasmalacofilho","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"},{"login":"mcuee","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mcuee"},{"login":"walac","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/walac"}],"active_maintainers":[{"login":"jonasmalacofilho","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonasmalacofilho"}]},"events":null,"keywords":["hardware","python","usb"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/run_tox.yml","sha":null,"kind":"manifest","created_at":"2023-01-21T02:45:46.290Z","updated_at":"2023-01-21T02:45:46.290Z","repository_link":"https://github.com/pyusb/pyusb/blob/master/.github/workflows/run_tox.yml","dependencies":[{"id":7072062430,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7072062431,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]}],"score":32.59166497481713,"created_at":"2025-09-08T11:18:37.474Z","updated_at":"2025-10-07T08:24:57.035Z","avatar_url":"https://github.com/pyusb.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":2138575,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["qt","tensors","kivy","optimizing-compiler","pillow","pil","test-data-generator","test-data","faker-generator","faker"],"project_url":"https://science.ecosyste.ms/api/v1/projects/65331","html_url":"https://science.ecosyste.ms/projects/65331"}