{"id":475,"name":"Pooltool","description":"Pooltool: A Python package for realistic billiards simulation - Published in JOSS (2024)","url":"https://github.com/ekiefl/pooltool","last_synced_at":"2025-09-04T16:04:00.702Z","repository":{"id":41457003,"uuid":"254259434","full_name":"ekiefl/pooltool","owner":"ekiefl","description":"A sandbox billiards game that emphasizes realistic physics","archived":false,"fork":false,"pushed_at":"2025-09-03T07:31:24.000Z","size":406145,"stargazers_count":289,"open_issues_count":4,"forks_count":50,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-09-04T09:23:45.151Z","etag":null,"topics":["billiards","eight-ball","panda3d","physics","pool","python","simulation","snooker"],"latest_commit_sha":null,"homepage":"https://pooltool.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekiefl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2020-04-09T03:13:28.000Z","updated_at":"2025-09-03T07:27:04.000Z","dependencies_parsed_at":"2025-08-27T18:56:18.734Z","dependency_job_id":null,"html_url":"https://github.com/ekiefl/pooltool","commit_stats":{"total_commits":1704,"total_committers":8,"mean_commits":213.0,"dds":"0.027582159624413127","last_synced_commit":"fb53cbaadf290efa28f934065055e584dbd85b75"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/ekiefl/pooltool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekiefl","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/sbom","scorecard":{"id":370600,"data":{"date":"2025-08-11","repo":{"name":"github.com/ekiefl/pooltool","commit":"4252c381aedd0de924a4a179e24e5b64aea759d8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Maintained","score":7,"reason":"5 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":2,"reason":"Found 8/30 approved changesets -- score normalized to 2","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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/lint-and-check.yml:1","Warn: no topLevel permission defined: .github/workflows/paper.yml:1","Warn: no topLevel permission defined: .github/workflows/test.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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.4.4 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/206076086","Warn: release artifact v0.4.3 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/205181131","Warn: release artifact v0.4.1 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/176254216","Warn: release artifact v0.4.0 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/167557164","Warn: release artifact v0.4.4 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/206076086","Warn: release artifact v0.4.3 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/205181131","Warn: release artifact v0.4.1 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/176254216","Warn: release artifact v0.4.0 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/167557164"],"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":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-33p9-3p43-82vq","Warn: Project is vulnerable to: PYSEC-2025-61 / GHSA-xg8h-j46f-w952","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-2c2j-9gv5-cj73","Warn: Project is vulnerable to: GHSA-7cx3-6m66-7c5m","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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"}},{"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/lint-and-check.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-check.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint-and-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-check.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/paper.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/paper.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/paper.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/paper.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/paper.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/paper.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction 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"}}]},"last_synced_at":"2025-08-18T12:50:20.328Z","repository_id":41457003,"created_at":"2025-08-18T12:50:20.329Z","updated_at":"2025-08-18T12:50:20.329Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273633540,"owners_count":25140778,"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-04T02:00:08.968Z","response_time":61,"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":"ekiefl","name":"Evan Kiefl","uuid":"8688665","kind":"user","description":"Bioinformatician at AbCellera. I did my PhD in Biophysical Sciences at the University of Chicago. A former member of the @merenlab.","email":"","website":"ekiefl.github.io","location":null,"twitter":"evankiefl","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8688665?u=79fcbf6c0e4a344071d8a71feb6becc1f3e0837f\u0026v=4","repositories_count":5,"last_synced_at":"2023-03-09T04:00:38.936Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ekiefl","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T17:21:58.470Z","updated_at":"2023-03-09T04:00:38.962Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekiefl","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekiefl/repositories"},"packages":[{"id":2856783,"name":"pooltool-billiards","ecosystem":"pypi","description":"A sandbox billiards game that emphasizes realistic physics.","homepage":"https://pooltool.readthedocs.io/en/latest/","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/ekiefl/pooltool","keywords_array":["simulation","physics","pool","billiards","panda3d","snooker","eight-ball"],"namespace":null,"versions_count":18,"first_release_published_at":"2021-11-28T02:07:20.000Z","latest_release_published_at":"2025-09-03T07:31:51.000Z","latest_release_number":"0.5.0","last_synced_at":"2025-09-03T22:07:08.305Z","created_at":"2022-04-10T12:05:25.849Z","updated_at":"2025-09-04T08:59:29.466Z","registry_url":"https://pypi.org/project/pooltool-billiards/","install_command":"pip install pooltool-billiards --index-url https://pypi.org/simple","documentation_url":"https://pooltool.readthedocs.io/en/latest/","metadata":{"funding":null,"documentation":"https://pooltool.readthedocs.io/en/latest/","classifiers":["License :: OSI Approved :: Apache Software License","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Topic :: Games/Entertainment :: Simulation","Topic :: Scientific/Engineering :: Physics","Topic :: Scientific/Engineering :: Visualization"],"normalized_name":"pooltool-billiards","project_status":null},"repo_metadata":{"id":41457003,"uuid":"254259434","full_name":"ekiefl/pooltool","owner":"ekiefl","description":"A sandbox billiards game that emphasizes realistic physics","archived":false,"fork":false,"pushed_at":"2025-08-28T01:07:00.000Z","size":406102,"stargazers_count":288,"open_issues_count":5,"forks_count":50,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-08-28T01:44:02.815Z","etag":null,"topics":["billiards","eight-ball","panda3d","physics","pool","python","simulation","snooker"],"latest_commit_sha":null,"homepage":"https://pooltool.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekiefl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2020-04-09T03:13:28.000Z","updated_at":"2025-08-11T14:18:00.000Z","dependencies_parsed_at":"2025-08-27T18:56:18.734Z","dependency_job_id":null,"html_url":"https://github.com/ekiefl/pooltool","commit_stats":{"total_commits":1704,"total_committers":8,"mean_commits":213.0,"dds":"0.027582159624413127","last_synced_commit":"fb53cbaadf290efa28f934065055e584dbd85b75"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/ekiefl/pooltool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekiefl","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/sbom","scorecard":{"id":370600,"data":{"date":"2025-08-11","repo":{"name":"github.com/ekiefl/pooltool","commit":"4252c381aedd0de924a4a179e24e5b64aea759d8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Maintained","score":7,"reason":"5 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":2,"reason":"Found 8/30 approved changesets -- score normalized to 2","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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/lint-and-check.yml:1","Warn: no topLevel permission defined: .github/workflows/paper.yml:1","Warn: no topLevel permission defined: .github/workflows/test.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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.4.4 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/206076086","Warn: release artifact v0.4.3 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/205181131","Warn: release artifact v0.4.1 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/176254216","Warn: release artifact v0.4.0 not signed: https://api.github.com/repos/ekiefl/pooltool/releases/167557164","Warn: release artifact v0.4.4 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/206076086","Warn: release artifact v0.4.3 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/205181131","Warn: release artifact v0.4.1 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/176254216","Warn: release artifact v0.4.0 does not have provenance: https://api.github.com/repos/ekiefl/pooltool/releases/167557164"],"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":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-33p9-3p43-82vq","Warn: Project is vulnerable to: PYSEC-2025-61 / GHSA-xg8h-j46f-w952","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-2c2j-9gv5-cj73","Warn: Project is vulnerable to: GHSA-7cx3-6m66-7c5m","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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"}},{"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/lint-and-check.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-check.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint-and-check.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-check.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/lint-and-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/paper.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/paper.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/paper.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/paper.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/paper.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/paper.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/ekiefl/pooltool/test.yml/main?enable=pin","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction 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"}}]},"last_synced_at":"2025-08-18T12:50:20.328Z","repository_id":41457003,"created_at":"2025-08-18T12:50:20.329Z","updated_at":"2025-08-18T12:50:20.329Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273517936,"owners_count":25119871,"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-03T02:00:09.631Z","response_time":76,"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":"ekiefl","name":"Evan Kiefl","uuid":"8688665","kind":"user","description":"Bioinformatician at AbCellera. I did my PhD in Biophysical Sciences at the University of Chicago. A former member of the @merenlab.","email":"","website":"ekiefl.github.io","location":null,"twitter":"evankiefl","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8688665?u=79fcbf6c0e4a344071d8a71feb6becc1f3e0837f\u0026v=4","repositories_count":5,"last_synced_at":"2023-03-09T04:00:38.936Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ekiefl","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T17:21:58.470Z","updated_at":"2023-03-09T04:00:38.962Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekiefl","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekiefl/repositories"},"tags":[{"name":"v0.4.4","sha":"3ebf456dc4fc6b3da064d75bca3e0718099ab07f","kind":"tag","published_at":"2025-03-16T08:05:07.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.4.4","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"ced3ab26196429153a8a6ee6d4d5be1bf4e09c0c","kind":"tag","published_at":"2025-03-12T03:22:43.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.4.3","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"4466c0ed37430ef92a7da66342d8da41ef11cbb2","kind":"tag","published_at":"2024-10-15T03:07:31.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.4.2","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"fb3d1cbac40405adc9cc50e003b0ff6edb088002","kind":"tag","published_at":"2024-09-22T00:03:35.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.4.1","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"cd08498eb80cb2c5f589bdf233d2225bf3a1c52c","kind":"tag","published_at":"2024-07-28T23:25:31.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.4.0","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.4.0/manifests"},{"name":"v0.3.4-alpha2","sha":"b00b1c63b39a355ff3b778a4a60e367fc4d79e32","kind":"tag","published_at":"2024-07-26T04:48:45.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.3.4-alpha2","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.3.4-alpha2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.3.4-alpha2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.4-alpha2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.4-alpha2/manifests"},{"name":"v0.3.4-alpha","sha":"4d931ad91697a6e63b50b9990f1ea014bb4b54f4","kind":"tag","published_at":"2024-07-22T04:28:38.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.3.4-alpha","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.3.4-alpha","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.3.4-alpha","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.4-alpha","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.4-alpha/manifests"},{"name":"v0.3.3","sha":"4b0a48fab3ed4442830db3b28eb270f87531230f","kind":"commit","published_at":"2024-05-10T05:41:47.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.3.3","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.3.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.3/manifests"},{"name":"v0.3.2","sha":"d9e6312d51fe92568896c95e3e93adb5de6aecf0","kind":"commit","published_at":"2024-04-19T04:11:51.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.3.2","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.2/manifests"},{"name":"v0.3.1","sha":"3d656d893162791f47f7f8223b4bf44d0eb1e090","kind":"commit","published_at":"2024-04-01T20:46:53.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.3.1","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"675c10473c5cdcf93e418f0c44d3aa9ded0a5242","kind":"commit","published_at":"2024-03-20T02:07:22.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.3.0","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.3.0/manifests"},{"name":"v0.2.2","sha":"5a0c30140fa824aba21e659eb366e9ccda7138b0","kind":"commit","published_at":"2024-01-12T08:16:44.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.2.2","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"3e371038cb992ea33c5dfc07e617b0bc71c2f928","kind":"commit","published_at":"2023-07-12T00:34:57.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.2.1","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"2bec3bb1a0cf3856822a71fc3969bb4dd616805b","kind":"commit","published_at":"2023-04-09T07:33:17.000Z","download_url":"https://codeload.github.com/ekiefl/pooltool/tar.gz/v0.2.0","html_url":"https://github.com/ekiefl/pooltool/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ekiefl/pooltool@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/tags/v0.2.0/manifests"}]},"repo_metadata_updated_at":"2025-09-04T08:59:29.465Z","dependent_packages_count":0,"downloads":218,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":28.480511279921934,"dependent_repos_count":21.669588248352305,"dependent_packages_count":10.02740418105131,"stargazers_count":7.8584424305384175,"forks_count":8.384582119881978,"docker_downloads_count":null,"average":15.28410565194919},"purl":"pkg:pypi/pooltool-billiards","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pooltool-billiards","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pooltool-billiards","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pooltool-billiards/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-09-03T16:07:30.982Z","issues_count":52,"pull_requests_count":243,"avg_time_to_close_issue":10978462.48888889,"avg_time_to_close_pull_request":198475.91914893617,"issues_closed_count":45,"pull_requests_closed_count":235,"pull_request_authors_count":10,"issue_authors_count":23,"avg_comments_per_issue":2.3653846153846154,"avg_comments_per_pull_request":0.9958847736625515,"merged_pull_requests_count":227,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":15,"past_year_pull_requests_count":124,"past_year_avg_time_to_close_issue":982082.6,"past_year_avg_time_to_close_pull_request":245500.76923076922,"past_year_issues_closed_count":10,"past_year_pull_requests_closed_count":117,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":8,"past_year_avg_comments_per_issue":1.9333333333333333,"past_year_avg_comments_per_pull_request":1.6129032258064515,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":111,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/issues","maintainers":[{"login":"ekiefl","count":228,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ekiefl"},{"login":"derek-mcblane","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derek-mcblane"},{"login":"ecneicscience","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ecneicscience"},{"login":"edoson","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/edoson"},{"login":"kerby2000","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kerby2000"}],"active_maintainers":[{"login":"ekiefl","count":97,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ekiefl"},{"login":"derek-mcblane","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derek-mcblane"},{"login":"ecneicscience","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ecneicscience"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pooltool-billiards/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pooltool-billiards/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pooltool-billiards/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pooltool-billiards/related_packages","maintainers":[{"uuid":"ekiefl","login":"ekiefl","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://pypi.org/user/ekiefl/","role":null,"created_at":"2023-02-22T18:54:03.695Z","updated_at":"2023-02-22T18:54:03.695Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ekiefl/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":724822,"maintainers_count":308208,"namespaces_count":0,"keywords_count":237984,"github":"pypi","metadata":{"funded_packages_count":50481},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-04T05:23:51.177Z","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"}}],"commits":{"id":631436,"full_name":"ekiefl/pooltool","default_branch":"main","committers":[{"name":"Evan Kiefl","email":"kiefl.evan@gmail.com","login":"ekiefl","count":1811},{"name":"Derek McBlane","email":"mcblanederek@gmail.com","login":"derek-mcblane","count":16},{"name":"Jeffrey Zitelli","email":"jeffrey.zitelli@gmail.com","login":"jzitelli","count":10},{"name":"erdo100","email":"ersin.dogan73@gmail.com","login":"erdo100","count":7},{"name":"TeXnicians","email":"zhaodong.wang.1992@gmail.com","login":"zhaodong-wang","count":3},{"name":"Sergey Lukin","email":"sergey.lukin@asml.com","login":null,"count":3},{"name":"Sergey Lukin","email":"lukin.s.v@gmail.com","login":"kerby2000","count":2},{"name":"Ido david","email":"edosond@gmail.com","login":"edoson","count":2},{"name":"Chao","email":"chaochaodev@gmail.com","login":"chaochaodev","count":1},{"name":"EC2 Default User","email":"ec2-user@ip-172-16-64-15.eu-west-1.compute.internal","login":null,"count":1}],"total_commits":1856,"total_committers":10,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":185.6,"dds":0.024245689655172376,"past_year_committers":[{"name":"Evan Kiefl","email":"kiefl.evan@gmail.com","login":"ekiefl","count":140},{"name":"Derek McBlane","email":"mcblanederek@gmail.com","login":"derek-mcblane","count":16},{"name":"Jeffrey Zitelli","email":"jeffrey.zitelli@gmail.com","login":"jzitelli","count":10},{"name":"erdo100","email":"ersin.dogan73@gmail.com","login":"erdo100","count":7}],"past_year_total_commits":173,"past_year_total_committers":4,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":43.25,"past_year_dds":0.19075144508670516,"last_synced_at":"2025-08-07T07:39:52.174Z","last_synced_commit":"4252c381aedd0de924a4a179e24e5b64aea759d8","created_at":"2023-03-09T08:23:32.034Z","updated_at":"2025-08-07T07:39:52.218Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-08-30T00:00:08.254Z","repositories_count":5479765,"commits_count":853310318,"contributors_count":31095240,"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":"ekiefl/pooltool","html_url":"https://github.com/ekiefl/pooltool","last_synced_at":"2025-09-03T16:07:30.982Z","status":null,"issues_count":52,"pull_requests_count":243,"avg_time_to_close_issue":10978462.48888889,"avg_time_to_close_pull_request":198475.91914893617,"issues_closed_count":45,"pull_requests_closed_count":235,"pull_request_authors_count":10,"issue_authors_count":23,"avg_comments_per_issue":2.3653846153846154,"avg_comments_per_pull_request":0.9958847736625515,"merged_pull_requests_count":227,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":15,"past_year_pull_requests_count":124,"past_year_avg_time_to_close_issue":982082.6,"past_year_avg_time_to_close_pull_request":245500.76923076922,"past_year_issues_closed_count":10,"past_year_pull_requests_closed_count":117,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":8,"past_year_avg_comments_per_issue":1.9333333333333333,"past_year_avg_comments_per_pull_request":1.6129032258064515,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":111,"created_at":"2023-05-14T20:25:51.195Z","updated_at":"2025-09-03T16:07:30.984Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekiefl%2Fpooltool/issues","issue_labels_count":{"enhancement":4,"installation":2,"macos":1,"windows":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":27,"OWNER":22,"COLLABORATOR":3},"pull_request_author_associations_count":{"OWNER":206,"COLLABORATOR":19,"CONTRIBUTOR":11,"NONE":7},"issue_authors":{"ekiefl":22,"st4ycool":5,"tailuge":3,"derek-mcblane":2,"saipavanc":2,"dlevesque1980":1,"wxmodz":1,"timiil":1,"lordlouckster":1,"owenhayman":1,"123omari123":1,"HorseEars":1,"edoson":1,"reynoldsnlp":1,"PSXBRosa":1,"zhaodong-wang":1,"LittleWhited01":1,"parazjx":1,"LeXXik":1,"gingerbeardman":1,"Skyfuzzball8312":1,"chardian":1,"TF3RDL":1},"pull_request_authors":{"ekiefl":206,"derek-mcblane":19,"erdo100":8,"M-Allahham":2,"ecneicscience":2,"jzitelli":2,"edoson":1,"zhaodong-wang":1,"kerby2000":1,"chaochaodev":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-03T00:00:08.273Z","repositories_count":10070570,"issues_count":31249392,"pull_requests_count":95413405,"authors_count":10689192,"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":{},"past_year_issue_author_associations_count":{"NONE":7,"OWNER":6,"COLLABORATOR":2},"past_year_pull_request_author_associations_count":{"OWNER":91,"COLLABORATOR":17,"CONTRIBUTOR":10,"NONE":6},"past_year_issue_authors":{"ekiefl":6,"derek-mcblane":2,"saipavanc":2,"dlevesque1980":1,"gingerbeardman":1,"LeXXik":1,"parazjx":1,"tailuge":1},"past_year_pull_request_authors":{"ekiefl":91,"derek-mcblane":19,"erdo100":8,"ecneicscience":2,"M-Allahham":2,"jzitelli":2},"maintainers":[{"login":"ekiefl","count":228,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ekiefl"},{"login":"derek-mcblane","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derek-mcblane"},{"login":"ecneicscience","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ecneicscience"},{"login":"edoson","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/edoson"},{"login":"kerby2000","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kerby2000"}],"active_maintainers":[{"login":"ekiefl","count":97,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ekiefl"},{"login":"derek-mcblane","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derek-mcblane"},{"login":"ecneicscience","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ecneicscience"}]},"events":{"total":{"CreateEvent":47,"ReleaseEvent":2,"IssuesEvent":20,"WatchEvent":60,"DeleteEvent":37,"MemberEvent":1,"IssueCommentEvent":146,"PushEvent":155,"PullRequestReviewCommentEvent":82,"PullRequestReviewEvent":111,"PullRequestEvent":104,"ForkEvent":16},"last_year":{"CreateEvent":47,"ReleaseEvent":2,"IssuesEvent":20,"WatchEvent":60,"DeleteEvent":37,"MemberEvent":1,"IssueCommentEvent":146,"PushEvent":155,"PullRequestReviewCommentEvent":82,"PullRequestReviewEvent":111,"PullRequestEvent":104,"ForkEvent":16}},"keywords":["billiards","eight-ball","panda3d","physics","pool","python","simulation","snooker"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/paper.yml","sha":null,"kind":"manifest","created_at":"2024-04-29T04:33:18.541Z","updated_at":"2024-04-29T04:33:18.541Z","repository_link":"https://github.com/ekiefl/pooltool/blob/main/.github/workflows/paper.yml","dependencies":[{"id":17785720053,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":17785720054,"package_name":"openjournals/openjournals-draft-action","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false},{"id":17785720055,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2024-07-26T05:53:40.637Z","updated_at":"2024-07-26T05:53:40.637Z","repository_link":"https://github.com/ekiefl/pooltool/blob/main/poetry.lock","dependencies":[{"id":19333368588,"package_name":"alabaster","ecosystem":"pypi","requirements":"0.7.13","direct":false,"kind":"runtime","optional":false},{"id":19333368589,"package_name":"appnope","ecosystem":"pypi","requirements":"0.1.4","direct":false,"kind":"runtime","optional":false},{"id":19333368590,"package_name":"astroid","ecosystem":"pypi","requirements":"3.2.3","direct":false,"kind":"runtime","optional":false},{"id":19333368591,"package_name":"asttokens","ecosystem":"pypi","requirements":"2.4.1","direct":false,"kind":"runtime","optional":false},{"id":19333368592,"package_name":"attrs","ecosystem":"pypi","requirements":"23.2.0","direct":false,"kind":"runtime","optional":false},{"id":19333368593,"package_name":"babel","ecosystem":"pypi","requirements":"2.15.0","direct":false,"kind":"runtime","optional":false},{"id":19333368594,"package_name":"backcall","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"runtime","optional":false},{"id":19333368595,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"4.12.3","direct":false,"kind":"runtime","optional":false},{"id":19333368596,"package_name":"cattrs","ecosystem":"pypi","requirements":"23.2.3","direct":false,"kind":"runtime","optional":false},{"id":19333368597,"package_name":"certifi","ecosystem":"pypi","requirements":"2024.7.4","direct":false,"kind":"runtime","optional":false},{"id":19333368598,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":19333368599,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.3.2","direct":false,"kind":"runtime","optional":false},{"id":19333368600,"package_name":"click","ecosystem":"pypi","requirements":"8.1.7","direct":false,"kind":"runtime","optional":false},{"id":19333368601,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":19333368602,"package_name":"colored","ecosystem":"pypi","requirements":"1.4.4","direct":false,"kind":"runtime","optional":false},{"id":19333368603,"package_name":"decorator","ecosystem":"pypi","requirements":"5.1.1","direct":false,"kind":"runtime","optional":false},{"id":19333368604,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.8","direct":false,"kind":"runtime","optional":false},{"id":19333368605,"package_name":"docutils","ecosystem":"pypi","requirements":"0.20.1","direct":false,"kind":"runtime","optional":false},{"id":19333368606,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":19333368607,"package_name":"executing","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"runtime","optional":false},{"id":19333368608,"package_name":"filelock","ecosystem":"pypi","requirements":"3.15.4","direct":false,"kind":"runtime","optional":false},{"id":19333368609,"package_name":"furo","ecosystem":"pypi","requirements":"2024.5.6","direct":false,"kind":"runtime","optional":false},{"id":19333368610,"package_name":"h5py","ecosystem":"pypi","requirements":"3.11.0","direct":false,"kind":"runtime","optional":false},{"id":19333368611,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.0","direct":false,"kind":"runtime","optional":false},{"id":19333368612,"package_name":"idna","ecosystem":"pypi","requirements":"3.7","direct":false,"kind":"runtime","optional":false},{"id":19333368613,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":19333368614,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"8.0.0","direct":false,"kind":"runtime","optional":false},{"id":19333368615,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":19333368616,"package_name":"ipython","ecosystem":"pypi","requirements":"8.12.3","direct":false,"kind":"runtime","optional":false},{"id":19333368617,"package_name":"jedi","ecosystem":"pypi","requirements":"0.19.1","direct":false,"kind":"runtime","optional":false},{"id":19333368618,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.4","direct":false,"kind":"runtime","optional":false},{"id":19333368619,"package_name":"llvmlite","ecosystem":"pypi","requirements":"0.41.1","direct":false,"kind":"runtime","optional":false},{"id":19333368620,"package_name":"markdown-it-py","ecosystem":"pypi","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":19333368621,"package_name":"markupsafe","ecosystem":"pypi","requirements":"2.1.5","direct":false,"kind":"runtime","optional":false},{"id":19333368622,"package_name":"matplotlib-inline","ecosystem":"pypi","requirements":"0.1.7","direct":false,"kind":"runtime","optional":false},{"id":19333368623,"package_name":"mdit-py-plugins","ecosystem":"pypi","requirements":"0.4.1","direct":false,"kind":"runtime","optional":false},{"id":19333368624,"package_name":"mdurl","ecosystem":"pypi","requirements":"0.1.2","direct":false,"kind":"runtime","optional":false},{"id":19333368625,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.0.8","direct":false,"kind":"runtime","optional":false},{"id":19333368626,"package_name":"msgpack-numpy","ecosystem":"pypi","requirements":"0.4.8","direct":false,"kind":"runtime","optional":false},{"id":19333368631,"package_name":"myst-parser","ecosystem":"pypi","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":19333368632,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":19333368633,"package_name":"numba","ecosystem":"pypi","requirements":"0.58.1","direct":false,"kind":"runtime","optional":false},{"id":19333368634,"package_name":"numpy","ecosystem":"pypi","requirements":"1.24.4","direct":false,"kind":"runtime","optional":false},{"id":19333368635,"package_name":"packaging","ecosystem":"pypi","requirements":"24.1","direct":false,"kind":"runtime","optional":false},{"id":19333368636,"package_name":"panda3d","ecosystem":"pypi","requirements":"1.11.0.dev3005","direct":false,"kind":"runtime","optional":false},{"id":19333368637,"package_name":"panda3d-gltf","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":19333368638,"package_name":"panda3d-simplepbr","ecosystem":"pypi","requirements":"0.12.0","direct":false,"kind":"runtime","optional":false},{"id":19333368639,"package_name":"pandas","ecosystem":"pypi","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":19333368640,"package_name":"parso","ecosystem":"pypi","requirements":"0.8.4","direct":false,"kind":"runtime","optional":false},{"id":19333368641,"package_name":"pexpect","ecosystem":"pypi","requirements":"4.9.0","direct":false,"kind":"runtime","optional":false},{"id":19333368642,"package_name":"pickleshare","ecosystem":"pypi","requirements":"0.7.5","direct":false,"kind":"runtime","optional":false},{"id":19333368643,"package_name":"pillow","ecosystem":"pypi","requirements":"10.4.0","direct":false,"kind":"runtime","optional":false},{"id":19333368644,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.2.2","direct":false,"kind":"runtime","optional":false},{"id":19333368645,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":19333368646,"package_name":"pprofile","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":19333368647,"package_name":"pre-commit","ecosystem":"pypi","requirements":"3.5.0","direct":false,"kind":"runtime","optional":false},{"id":19333368648,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.47","direct":false,"kind":"runtime","optional":false},{"id":19333368649,"package_name":"psutil","ecosystem":"pypi","requirements":"6.0.0","direct":false,"kind":"runtime","optional":false},{"id":19333368650,"package_name":"ptyprocess","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":19333368651,"package_name":"pure-eval","ecosystem":"pypi","requirements":"0.2.2","direct":false,"kind":"runtime","optional":false},{"id":19333368652,"package_name":"pygments","ecosystem":"pypi","requirements":"2.18.0","direct":false,"kind":"runtime","optional":false},{"id":19333368653,"package_name":"pyright","ecosystem":"pypi","requirements":"1.1.371","direct":false,"kind":"runtime","optional":false},{"id":19333368654,"package_name":"pytest","ecosystem":"pypi","requirements":"8.2.2","direct":false,"kind":"runtime","optional":false},{"id":19333368655,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.9.0.post0","direct":false,"kind":"runtime","optional":false},{"id":19333368656,"package_name":"pytz","ecosystem":"pypi","requirements":"2024.1","direct":false,"kind":"runtime","optional":false},{"id":19333368657,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.1","direct":false,"kind":"runtime","optional":false},{"id":19333368658,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":19333368659,"package_name":"ruff","ecosystem":"pypi","requirements":"0.5.2","direct":false,"kind":"runtime","optional":false},{"id":19333368660,"package_name":"scipy","ecosystem":"pypi","requirements":"1.9.3","direct":false,"kind":"runtime","optional":false},{"id":19333368661,"package_name":"six","ecosystem":"pypi","requirements":"1.16.0","direct":false,"kind":"runtime","optional":false},{"id":19333368662,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":19333368663,"package_name":"soupsieve","ecosystem":"pypi","requirements":"2.5","direct":false,"kind":"runtime","optional":false},{"id":19333368664,"package_name":"sphinx","ecosystem":"pypi","requirements":"7.1.2","direct":false,"kind":"runtime","optional":false},{"id":19333368665,"package_name":"sphinx-autoapi","ecosystem":"pypi","requirements":"3.1.2","direct":false,"kind":"runtime","optional":false},{"id":19333368666,"package_name":"sphinx-basic-ng","ecosystem":"pypi","requirements":"1.0.0b2","direct":false,"kind":"runtime","optional":false},{"id":19333368667,"package_name":"sphinx-copybutton","ecosystem":"pypi","requirements":"0.5.2","direct":false,"kind":"runtime","optional":false},{"id":19333368668,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"runtime","optional":false},{"id":19333368669,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":19333368670,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"runtime","optional":false},{"id":19333368671,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":19333368672,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false},{"id":19333368673,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"1.1.5","direct":false,"kind":"runtime","optional":false},{"id":19333368674,"package_name":"stack-data","ecosystem":"pypi","requirements":"0.6.3","direct":false,"kind":"runtime","optional":false},{"id":19333368675,"package_name":"tomli","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"runtime","optional":false},{"id":19333368676,"package_name":"traitlets","ecosystem":"pypi","requirements":"5.14.3","direct":false,"kind":"runtime","optional":false},{"id":19333368677,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.12.2","direct":false,"kind":"runtime","optional":false},{"id":19333368678,"package_name":"tzdata","ecosystem":"pypi","requirements":"2024.1","direct":false,"kind":"runtime","optional":false},{"id":19333368679,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":19333368680,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.26.3","direct":false,"kind":"runtime","optional":false},{"id":19333368681,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"runtime","optional":false},{"id":19333368682,"package_name":"zipp","ecosystem":"pypi","requirements":"3.19.2","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/lint-and-check.yml","sha":null,"kind":"manifest","created_at":"2024-08-04T00:44:39.133Z","updated_at":"2024-08-04T00:44:39.133Z","repository_link":"https://github.com/ekiefl/pooltool/blob/main/.github/workflows/lint-and-check.yml","dependencies":[{"id":19500937897,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19500937898,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19500937899,"package_name":"abatilo/actions-poetry","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":19500937900,"package_name":"actions/cache","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2024-08-04T00:44:39.174Z","updated_at":"2024-08-04T00:44:39.174Z","repository_link":"https://github.com/ekiefl/pooltool/blob/main/.github/workflows/test.yml","dependencies":[{"id":19500937901,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19500937902,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19500937903,"package_name":"abatilo/actions-poetry","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":19500937904,"package_name":"actions/cache","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-04-11T11:05:48.077Z","updated_at":"2025-04-11T11:05:48.077Z","repository_link":"https://github.com/ekiefl/pooltool/blob/main/pyproject.toml","dependencies":[{"id":22639252627,"package_name":"python","ecosystem":"pypi","requirements":"\u003e=3.9,\u003c3.13","direct":true,"kind":"runtime","optional":false},{"id":22639252631,"package_name":"panda3d","ecosystem":"pypi","requirements":"[{\"platform\" =\u003e \"darwin\", \"version\" =\u003e \"\u003e=1.10.13,\u003c1.11\"}, {\"platform\" =\u003e \"linux\", \"version\" =\u003e \"1.11.0.dev3444\", \"allow-prereleases\" =\u003e true, \"source\" =\u003e \"panda3d-archive\"}, {\"platform\" =\u003e \"win32\", \"version\" =\u003e \"1.11.0.dev3444\", \"allow-prereleases\" =\u003e true, \"source\" =\u003e \"panda3d-archive\"}]","direct":true,"kind":"runtime","optional":false},{"id":22639253939,"package_name":"panda3d-gltf","ecosystem":"pypi","requirements":"\u003e=1.2.0","direct":true,"kind":"runtime","optional":false},{"id":22639254442,"package_name":"panda3d-simplepbr","ecosystem":"pypi","requirements":"\u003e=0.12.0","direct":true,"kind":"runtime","optional":false},{"id":22639254502,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.26.0","direct":true,"kind":"runtime","optional":false},{"id":22639254503,"package_name":"numba","ecosystem":"pypi","requirements":"\u003e=0.59.0","direct":true,"kind":"runtime","optional":false},{"id":22639254504,"package_name":"scipy","ecosystem":"pypi","requirements":"\u003e=1.12.0","direct":true,"kind":"runtime","optional":false},{"id":22639254505,"package_name":"attrs","ecosystem":"pypi","requirements":"\u003e=21.3.0","direct":true,"kind":"runtime","optional":false},{"id":22639254506,"package_name":"cattrs","ecosystem":"pypi","requirements":"\u003e=22.1.0","direct":true,"kind":"runtime","optional":false},{"id":22639254507,"package_name":"msgpack","ecosystem":"pypi","requirements":"\u003e=1.0.0","direct":true,"kind":"runtime","optional":false},{"id":22639254508,"package_name":"msgpack-numpy","ecosystem":"pypi","requirements":"\u003e=0.4.8","direct":true,"kind":"runtime","optional":false},{"id":22639254774,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e=5.2","direct":true,"kind":"runtime","optional":false},{"id":22639254775,"package_name":"click","ecosystem":"pypi","requirements":"\u003e=8.0.0","direct":true,"kind":"runtime","optional":false},{"id":22639254776,"package_name":"Pillow","ecosystem":"pypi","requirements":"\u003e=6.2.0","direct":true,"kind":"runtime","optional":false},{"id":22639254777,"package_name":"h5py","ecosystem":"pypi","requirements":"\u003e=3.10","direct":true,"kind":"runtime","optional":false},{"id":22639254778,"package_name":"pytest","ecosystem":"pypi","requirements":"\u003e=8.3.2","direct":true,"kind":"develop","optional":false},{"id":22639254779,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"^5.0.0","direct":true,"kind":"develop","optional":false},{"id":22639254780,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=3.7.1","direct":true,"kind":"develop","optional":false},{"id":22639254781,"package_name":"pyright","ecosystem":"pypi","requirements":"\u003e=1.1.373","direct":true,"kind":"develop","optional":false},{"id":22639254782,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.5.5","direct":true,"kind":"develop","optional":false},{"id":22639254783,"package_name":"psutil","ecosystem":"pypi","requirements":"\u003e=6.0.0","direct":true,"kind":"develop","optional":false},{"id":22639254784,"package_name":"colored","ecosystem":"pypi","requirements":"\u003e=2.2.4","direct":true,"kind":"develop","optional":false},{"id":22639254892,"package_name":"ipython","ecosystem":"pypi","requirements":"\u003e=8.18.1","direct":true,"kind":"develop","optional":false},{"id":22639254893,"package_name":"ipdb","ecosystem":"pypi","requirements":"^0.13.13","direct":true,"kind":"develop","optional":false},{"id":22639254894,"package_name":"jupytext","ecosystem":"pypi","requirements":"\u003e=1.15.0","direct":true,"kind":"develop","optional":false},{"id":22639254895,"package_name":"jupyterlab","ecosystem":"pypi","requirements":"\u003e=4.0.0","direct":true,"kind":"develop","optional":false},{"id":22639254896,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=2","direct":true,"kind":"develop","optional":false},{"id":22639254897,"package_name":"plotly","ecosystem":"pypi","requirements":"\u003e=5","direct":true,"kind":"develop","optional":false},{"id":22639254898,"package_name":"matplotlib","ecosystem":"pypi","requirements":"\u003e=3.8","direct":true,"kind":"develop","optional":false},{"id":22639254899,"package_name":"poetry-dynamic-versioning","ecosystem":"pypi","requirements":"\u003e=1.4.0","direct":true,"kind":"develop","optional":false},{"id":22639254916,"package_name":"sphinx","ecosystem":"pypi","requirements":"\u003e=6.1.0","direct":true,"kind":"docs","optional":false},{"id":22639254917,"package_name":"sphinx-copybutton","ecosystem":"pypi","requirements":"\u003e=0.5.2","direct":true,"kind":"docs","optional":false},{"id":22639254918,"package_name":"furo","ecosystem":"pypi","requirements":"\u003e=2024.5.6","direct":true,"kind":"docs","optional":false},{"id":22639254919,"package_name":"myst-parser","ecosystem":"pypi","requirements":"\u003e=3.0.1","direct":true,"kind":"docs","optional":false},{"id":22639254920,"package_name":"sphinx-autoapi","ecosystem":"pypi","requirements":"\u003e=3.1.2","direct":true,"kind":"docs","optional":false},{"id":22639254921,"package_name":"sphinx-tabs","ecosystem":"pypi","requirements":"\u003e=3.4.5","direct":true,"kind":"docs","optional":false},{"id":22639255003,"package_name":"nbsphinx","ecosystem":"pypi","requirements":"^0.9.5","direct":true,"kind":"docs","optional":false}]},{"ecosystem":"conda","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2025-08-27T18:56:18.479Z","updated_at":"2025-08-27T18:56:18.479Z","repository_link":"https://github.com/ekiefl/pooltool/blob/main/environment.yml","dependencies":[{"id":24865034957,"package_name":"pip","ecosystem":"conda","requirements":"","direct":true,"kind":"runtime","optional":false},{"id":24865034958,"package_name":"python","ecosystem":"conda","requirements":"3.13.0","direct":true,"kind":"runtime","optional":false}]}],"score":13.376385248363476,"created_at":"2025-09-04T09:17:35.219Z","updated_at":"2025-10-07T08:04:25.368Z","avatar_url":"https://github.com/ekiefl.png","language":"Python","category":"Scientific Software","sub_category":"Peer-reviewed","monthly_downloads":218,"funding_links":[],"readme_doi_urls":["https://doi.org/10.21105/joss.07301"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/475","html_url":"https://science.ecosyste.ms/projects/475"}