{"id":1818,"name":"python-cmethods","description":"Serves as a collection of different scale- and distribution-based bias correction techniques for climatic research.","url":"https://github.com/btschwertfeger/python-cmethods","last_synced_at":"2026-04-04T21:30:24.870Z","repository":{"id":56860371,"uuid":"496160109","full_name":"btschwertfeger/python-cmethods","owner":"btschwertfeger","description":"A collection of bias correction techniques written in Python - for climate sciences.","archived":false,"fork":false,"pushed_at":"2026-03-01T12:00:34.000Z","size":9545,"stargazers_count":81,"open_issues_count":2,"forks_count":14,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-03-08T10:52:30.241Z","etag":null,"topics":["bias-adjustment","bias-correction","cdf","climate-data","climate-data-analysis","climate-science","delta-change-method","delta-method","detrended-quantile-mapping","linear-scaling","python","python-module","quantile-delta-mapping","quantile-mapping","reanalysis","variance-scaling"],"latest_commit_sha":null,"homepage":"https://python-cmethods.readthedocs.io/en/stable","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btschwertfeger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION","codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-25T09:13:43.000Z","updated_at":"2026-03-01T12:00:37.000Z","dependencies_parsed_at":"2023-01-22T22:30:55.754Z","dependency_job_id":"53c1bf7f-9554-4b8e-a892-f435dbd61c6b","html_url":"https://github.com/btschwertfeger/python-cmethods","commit_stats":{"total_commits":162,"total_committers":4,"mean_commits":40.5,"dds":"0.42592592592592593","last_synced_commit":"1b0071cf34ca9e80da7d6f9b622259bb37afcbec"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/btschwertfeger/python-cmethods","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/sbom","scorecard":{"id":1238464,"data":{"date":"2025-10-03T19:37:32Z","repo":{"name":"github.com/btschwertfeger/python-cmethods","commit":"5cb26f1e4cd285b8f6edf3089a02f4259a22b9f8"},"scorecard":{"version":"v5.3.0","commit":"c22063e786c11f9dd714d777a687ff7c4599b600"},"score":5.5,"checks":[{"name":"Maintained","score":2,"reason":"3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#maintained"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yaml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dependency-update-tool"}},{"name":"Code-Review","score":0,"reason":"Found 0/8 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: .github/SECURITY.md:1","Info: Found linked content: .github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: .github/SECURITY.md:1","Info: Found text in security policy: .github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/_codeql.yaml:29","Info: jobLevel 'contents' permission set to 'read': .github/workflows/_codeql.yaml:30","Info: topLevel permissions set to 'read-all': .github/workflows/_build.yaml:23","Info: topLevel permissions set to 'read-all': .github/workflows/_build_doc.yaml:22","Info: topLevel permissions set to 'read-all': .github/workflows/_codecov.yaml:23","Info: topLevel 'actions' permission set to 'read': .github/workflows/_codeql.yaml:20","Info: topLevel 'contents' permission set to 'read': .github/workflows/_codeql.yaml:21","Warn: topLevel 'security-events' permission set to 'write': .github/workflows/_codeql.yaml:22","Info: topLevel permissions set to 'read-all': .github/workflows/_pre_commit.yaml:15","Info: topLevel permissions set to 'read-all': .github/workflows/_pypi_publish.yaml:19","Info: topLevel permissions set to 'read-all': .github/workflows/_pypi_test_publish.yaml:19","Info: topLevel permissions set to 'read-all': .github/workflows/_test.yaml:22","Warn: no topLevel permission defined: .github/workflows/cicd.yaml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/dependabot_auto_approve.yaml:18","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18","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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#token-permissions"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_build.yaml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_codeql.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_codeql.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_codeql.yaml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_codeql.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_codeql.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_codeql.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_pypi_publish.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_publish.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_pypi_publish.yaml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_publish.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_pypi_test_publish.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_test_publish.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_pypi_test_publish.yaml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_test_publish.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot_auto_approve.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/dependabot_auto_approve.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/_build.yaml:41","Warn: pipCommand not pinned by hash: .github/workflows/_build.yaml:42","Warn: pipCommand not pinned by hash: .github/workflows/_build_doc.yaml:38","Warn: pipCommand not pinned by hash: .github/workflows/_build_doc.yaml:39","Warn: pipCommand not pinned by hash: .github/workflows/_build_doc.yaml:40","Warn: pipCommand not pinned by hash: .github/workflows/_codecov.yaml:48","Warn: pipCommand not pinned by hash: .github/workflows/_codecov.yaml:51","Warn: pipCommand not pinned by hash: .github/workflows/_test.yaml:39","Warn: pipCommand not pinned by hash: .github/workflows/_test.yaml:42","Info:  13 out of  19 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of   6 third-party GitHubAction dependencies pinned","Info:   1 out of  10 pipCommand 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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":5,"reason":"badge detected: Passing","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":0,"reason":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: PYSEC-2015-24 / GHSA-4vwq-x64q-j4cj","Warn: Project is vulnerable to: PYSEC-2017-46 / GHSA-66gw-5xpf-gfp5","Warn: Project is vulnerable to: PYSEC-2015-25 / GHSA-92mr-v722-f48m","Warn: Project is vulnerable to: PYSEC-2022-12 / GHSA-pq7m-3gw7-gq5x","Warn: Project is vulnerable to: PYSEC-2017-47","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2021-387 / GHSA-j8fq-86c5-5v2r","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#sast"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md","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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#branch-protection"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#fuzzing"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#packaging"}},{"name":"Contributors","score":10,"reason":"project has 3 contributing companies or organizations -- score normalized to 10","details":["Info: found contributions from: ProjectPepperHSB, conda-forge, cslab"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#contributors"}},{"name":"CI-Tests","score":9,"reason":"29 out of 30 merged PRs checked by a CI test -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#ci-tests"}}]},"last_synced_at":"2025-10-04T05:46:55.855Z","repository_id":56860371,"created_at":"2025-10-04T05:46:55.856Z","updated_at":"2025-10-04T05:46:55.856Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31205534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-30T15:24:02.938Z","status":"ssl_error","status_checked_at":"2026-03-30T15:23:44.804Z","response_time":138,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"btschwertfeger","name":"Benjamin T. Schwertfeger","uuid":"51495182","kind":"user","description":"Quality Manager in Software Development","email":"","website":"https://b-schwertfeger.de","location":"Germany","twitter":null,"company":"CONTACT Software GmbH","icon_url":"https://avatars.githubusercontent.com/u/51495182?u=215810374de81d3b9066d64901ec17d873190ae0\u0026v=4","repositories_count":7,"last_synced_at":"2023-03-09T23:00:55.655Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/btschwertfeger","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-19T14:09:23.821Z","updated_at":"2023-03-09T23:00:55.775Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger/repositories"},"packages":[{"id":5183988,"name":"python-cmethods","ecosystem":"pypi","description":"A collection of bias correction techniques written in Python - for climate sciences.","homepage":"https://github.com/btschwertfeger/python-cmethods","licenses":"GPL-3.0-or-later","normalized_licenses":["GPL-3.0-or-later"],"repository_url":"https://github.com/btschwertfeger/python-cmethods","keywords_array":["climate-science","bias","bias-correction","bias-adjustment","climate-reanalysis","reanalysis","linear-scaling","variance-scaling","delta-method","delta-change-method","quantile-mapping","quantile-delta-mapping"],"namespace":null,"versions_count":29,"first_release_published_at":"2022-08-19T08:42:10.000Z","latest_release_published_at":"2025-11-14T05:49:32.000Z","latest_release_number":"2.3.2","last_synced_at":"2026-03-10T09:02:45.060Z","created_at":"2022-08-19T08:53:00.195Z","updated_at":"2026-03-10T09:02:45.061Z","registry_url":"https://pypi.org/project/python-cmethods/","install_command":"pip install python-cmethods --index-url https://pypi.org/simple","documentation_url":"https://python-cmethods.readthedocs.io/en/stable/","metadata":{"funding":null,"documentation":"https://python-cmethods.readthedocs.io/en/stable/","classifiers":["Intended Audience :: Science/Research","Natural Language :: English","Operating System :: MacOS","Operating System :: Unix","Programming Language :: Python","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.14","Programming Language :: Python :: 3.9","Topic :: Scientific/Engineering","Topic :: Software Development :: Libraries :: Python Modules","Topic :: Utilities"],"normalized_name":"python-cmethods","project_status":null},"repo_metadata":{"id":56860371,"uuid":"496160109","full_name":"btschwertfeger/python-cmethods","owner":"btschwertfeger","description":"A collection of bias correction techniques written in Python - for climate sciences.","archived":false,"fork":false,"pushed_at":"2024-05-17T14:32:21.000Z","size":9355,"stargazers_count":45,"open_issues_count":1,"forks_count":12,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-19T14:16:28.898Z","etag":null,"topics":["bias-adjustment","bias-correction","cdf","climate-data","climate-data-analysis","climate-science","delta-change-method","delta-method","detrended-quantile-mapping","linear-scaling","python","python-module","quantile-delta-mapping","quantile-mapping","reanalysis","variance-scaling"],"latest_commit_sha":null,"homepage":"https://python-cmethods.readthedocs.io/en/stable","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btschwertfeger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-25T09:13:43.000Z","updated_at":"2024-05-28T05:01:46.436Z","dependencies_parsed_at":"2023-01-22T22:30:55.754Z","dependency_job_id":"53c1bf7f-9554-4b8e-a892-f435dbd61c6b","html_url":"https://github.com/btschwertfeger/python-cmethods","commit_stats":{"total_commits":127,"total_committers":4,"mean_commits":31.75,"dds":0.2913385826771654,"last_synced_commit":"8a55556582cfe1a926bb74b28532d8e4710596b7"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217526371,"owners_count":16190855,"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","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":"btschwertfeger","name":"Benjamin T. Schwertfeger","uuid":"51495182","kind":"user","description":"Quality Manager in Software Development","email":"","website":"https://b-schwertfeger.de","location":"Germany","twitter":null,"company":"CONTACT Software GmbH","icon_url":"https://avatars.githubusercontent.com/u/51495182?u=215810374de81d3b9066d64901ec17d873190ae0\u0026v=4","repositories_count":7,"last_synced_at":"2023-03-09T23:00:55.655Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/btschwertfeger","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-19T14:09:23.821Z","updated_at":"2023-03-09T23:00:55.775Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger/repositories"},"tags":[{"name":"v2.2.5","sha":"3e928f4dc2f8c42fdce87f0197585ef73ed2b1be","kind":"commit","published_at":"2024-05-28T03:29:06.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.5","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.5/manifests"},{"name":"v2.2.4","sha":"435569568eaddfac010fa75b6399251e42b34123","kind":"commit","published_at":"2024-05-20T08:35:09.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.4","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.4/manifests"},{"name":"v2.2.3","sha":"8a55556582cfe1a926bb74b28532d8e4710596b7","kind":"commit","published_at":"2024-05-17T14:25:32.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.3/manifests"},{"name":"v2.2.2","sha":"80ea299b301be24ea0f1466e424bdcf4e63b3d34","kind":"commit","published_at":"2024-05-07T05:30:27.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.2/manifests"},{"name":"v2.2.1","sha":"9ab4de962f2a5b379cad411ad333e800d039c03f","kind":"commit","published_at":"2024-04-10T14:32:19.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"433c676ac21b9e35655ff35fdb908557db72a3da","kind":"commit","published_at":"2024-04-09T17:21:43.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.0/manifests"},{"name":"v2.1.0","sha":"15f78c1729c1be03509d5e77eb7a899065fdf783","kind":"commit","published_at":"2024-03-10T06:06:22.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.1.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.1.0/manifests"},{"name":"v2.0.2","sha":"445d2c42a47971e0258f8768381fd638a799be13","kind":"commit","published_at":"2024-02-02T15:23:20.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.0.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.2/manifests"},{"name":"v2.0.1","sha":"de397391e3c62244dde1735fe552ba472ae580b9","kind":"commit","published_at":"2024-02-01T16:22:42.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.0.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.1/manifests"},{"name":"v2.0.0","sha":"6500e942376c9f306268e36c333222e828379f9f","kind":"commit","published_at":"2024-01-23T16:48:05.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.0.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.0/manifests"},{"name":"v1.0.3","sha":"9878005e1586997a8f0653cc94ed2cb755a17094","kind":"commit","published_at":"2023-08-09T14:26:08.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"095f052058932f944c760e9b4af525540eeba114","kind":"commit","published_at":"2023-06-18T07:06:20.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"da71d88b590e04a3835d456dec688ba8aa1eb008","kind":"commit","published_at":"2023-04-17T17:25:21.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"ec505e16909601b5fbeeb45ea0df4d9cbd6314b0","kind":"commit","published_at":"2023-04-10T18:51:02.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.0/manifests"},{"name":"v0.6.3","sha":"1203a06d551bfa724c2232ed1ebbb315f3281fe5","kind":"commit","published_at":"2023-03-22T18:53:28.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.3/manifests"},{"name":"v0.6.2","sha":"f21ae590c64629fec205aa95660468defd1f6a4a","kind":"commit","published_at":"2023-03-14T17:28:56.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.2/manifests"},{"name":"v0.6.1","sha":"a9f8356968f6b1101ffa869d35f3f157dcfc9d7e","kind":"commit","published_at":"2022-12-02T13:20:31.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.1/manifests"},{"name":"v0.6","sha":"87277dec489f7c60c317a6fceea39333e7807612","kind":"commit","published_at":"2022-11-28T08:14:39.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6/manifests"},{"name":"v0.5.4.2","sha":"b253fd4100093f20cdefa60f246e208b29b2885f","kind":"commit","published_at":"2022-11-14T10:37:36.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.4.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4.2/manifests"},{"name":"0.5.4.1","sha":"9a52b98da50dc933a1440e3560d08ead440183f1","kind":"commit","published_at":"2022-11-09T18:23:25.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/0.5.4.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/0.5.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/0.5.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/0.5.4.1/manifests"},{"name":"v0.5.4","sha":"a55582099f349101c3606cc6ffd458fbc242b369","kind":"commit","published_at":"2022-11-05T07:05:13.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.4","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4/manifests"},{"name":"v0.5.3","sha":"7fe5d3d1a42f7d5fc988d480e957f207a8387633","kind":"commit","published_at":"2022-10-26T10:05:32.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.3/manifests"},{"name":"v0.5.2","sha":"9ae86de468631c71be2442e5db255b25a3ea8fc3","kind":"commit","published_at":"2022-10-14T11:39:19.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"fca91c0571f7fe487022a78f361ef6eb6f492027","kind":"commit","published_at":"2022-08-19T09:38:28.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.1/manifests"},{"name":"v0.5","sha":"72a66b8bf4a12bdbc72e3fd43d8617c8122c1402","kind":"commit","published_at":"2022-08-19T09:10:19.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5/manifests"}]},"repo_metadata_updated_at":"2024-09-07T20:56:51.184Z","dependent_packages_count":0,"downloads":340,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":20.166914393208145,"dependent_repos_count":22.23250655214879,"dependent_packages_count":7.373338280337238,"stargazers_count":13.122182662172083,"forks_count":13.357563936018574,"docker_downloads_count":null,"average":15.250501164776967},"purl":"pkg:pypi/python-cmethods","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/python-cmethods","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/python-cmethods","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/python-cmethods/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-09-07T20:02:06.307Z","issues_count":24,"pull_requests_count":79,"avg_time_to_close_issue":3252196.9565217393,"avg_time_to_close_pull_request":274785.48,"issues_closed_count":23,"pull_requests_closed_count":75,"pull_request_authors_count":3,"issue_authors_count":5,"avg_comments_per_issue":0.5,"avg_comments_per_pull_request":0.27848101265822783,"merged_pull_requests_count":68,"bot_issues_count":0,"bot_pull_requests_count":37,"past_year_issues_count":10,"past_year_pull_requests_count":61,"past_year_avg_time_to_close_issue":1135257.0,"past_year_avg_time_to_close_pull_request":320216.70175438595,"past_year_issues_closed_count":9,"past_year_pull_requests_closed_count":57,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":0.2786885245901639,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":37,"past_year_merged_pull_requests_count":50,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/issues","maintainers":[{"login":"btschwertfeger","count":61,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/btschwertfeger"}],"active_maintainers":[{"login":"btschwertfeger","count":29,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/btschwertfeger"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/python-cmethods/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/python-cmethods/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/python-cmethods/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/python-cmethods/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/python-cmethods/codemeta","maintainers":[{"uuid":"btschwertfeger","login":"btschwertfeger","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/btschwertfeger/","role":null,"created_at":"2022-11-28T04:01:00.098Z","updated_at":"2022-11-28T04:01:00.098Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/btschwertfeger/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":816441,"maintainers_count":347738,"namespaces_count":0,"keywords_count":0,"github":"pypi","metadata":{"funded_packages_count":52868},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-03-16T05:30:40.453Z","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":11729315,"name":"github.com/btschwertfeger/python-cmethods","ecosystem":"go","description":null,"homepage":null,"licenses":"gpl-3.0","normalized_licenses":["GPL-3.0"],"repository_url":"https://github.com/btschwertfeger/python-cmethods","keywords_array":[],"namespace":null,"versions_count":24,"first_release_published_at":"2022-08-19T09:38:28.000Z","latest_release_published_at":"2025-11-13T08:08:27.000Z","latest_release_number":"v2.3.2+incompatible","last_synced_at":"2026-03-10T09:02:47.051Z","created_at":"2025-06-04T10:54:31.116Z","updated_at":"2026-03-10T09:02:47.052Z","registry_url":"https://pkg.go.dev/github.com/btschwertfeger/python-cmethods","install_command":"go get github.com/btschwertfeger/python-cmethods","documentation_url":"https://pkg.go.dev/github.com/btschwertfeger/python-cmethods#section-documentation","metadata":{},"repo_metadata":{"id":56860371,"uuid":"496160109","full_name":"btschwertfeger/python-cmethods","owner":"btschwertfeger","description":"A collection of bias correction techniques written in Python - for climate sciences.","archived":false,"fork":false,"pushed_at":"2025-10-02T05:21:38.000Z","size":9525,"stargazers_count":73,"open_issues_count":2,"forks_count":13,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-11T07:32:02.407Z","etag":null,"topics":["bias-adjustment","bias-correction","cdf","climate-data","climate-data-analysis","climate-science","delta-change-method","delta-method","detrended-quantile-mapping","linear-scaling","python","python-module","quantile-delta-mapping","quantile-mapping","reanalysis","variance-scaling"],"latest_commit_sha":null,"homepage":"https://python-cmethods.readthedocs.io/en/stable","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btschwertfeger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION","codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-25T09:13:43.000Z","updated_at":"2025-10-09T06:15:10.000Z","dependencies_parsed_at":"2023-01-22T22:30:55.754Z","dependency_job_id":"53c1bf7f-9554-4b8e-a892-f435dbd61c6b","html_url":"https://github.com/btschwertfeger/python-cmethods","commit_stats":{"total_commits":162,"total_committers":4,"mean_commits":40.5,"dds":"0.42592592592592593","last_synced_commit":"1b0071cf34ca9e80da7d6f9b622259bb37afcbec"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/btschwertfeger/python-cmethods","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/sbom","scorecard":{"id":1238464,"data":{"date":"2025-10-03T19:37:32Z","repo":{"name":"github.com/btschwertfeger/python-cmethods","commit":"5cb26f1e4cd285b8f6edf3089a02f4259a22b9f8"},"scorecard":{"version":"v5.3.0","commit":"c22063e786c11f9dd714d777a687ff7c4599b600"},"score":5.5,"checks":[{"name":"Maintained","score":2,"reason":"3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#maintained"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yaml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dependency-update-tool"}},{"name":"Code-Review","score":0,"reason":"Found 0/8 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: .github/SECURITY.md:1","Info: Found linked content: .github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: .github/SECURITY.md:1","Info: Found text in security policy: .github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/_codeql.yaml:29","Info: jobLevel 'contents' permission set to 'read': .github/workflows/_codeql.yaml:30","Info: topLevel permissions set to 'read-all': .github/workflows/_build.yaml:23","Info: topLevel permissions set to 'read-all': .github/workflows/_build_doc.yaml:22","Info: topLevel permissions set to 'read-all': .github/workflows/_codecov.yaml:23","Info: topLevel 'actions' permission set to 'read': .github/workflows/_codeql.yaml:20","Info: topLevel 'contents' permission set to 'read': .github/workflows/_codeql.yaml:21","Warn: topLevel 'security-events' permission set to 'write': .github/workflows/_codeql.yaml:22","Info: topLevel permissions set to 'read-all': .github/workflows/_pre_commit.yaml:15","Info: topLevel permissions set to 'read-all': .github/workflows/_pypi_publish.yaml:19","Info: topLevel permissions set to 'read-all': .github/workflows/_pypi_test_publish.yaml:19","Info: topLevel permissions set to 'read-all': .github/workflows/_test.yaml:22","Warn: no topLevel permission defined: .github/workflows/cicd.yaml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/dependabot_auto_approve.yaml:18","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18","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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#token-permissions"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_build.yaml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_codeql.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_codeql.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_codeql.yaml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_codeql.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_codeql.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_codeql.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_pypi_publish.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_publish.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_pypi_publish.yaml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_publish.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_pypi_test_publish.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_test_publish.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_pypi_test_publish.yaml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/_pypi_test_publish.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot_auto_approve.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/btschwertfeger/python-cmethods/dependabot_auto_approve.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/_build.yaml:41","Warn: pipCommand not pinned by hash: .github/workflows/_build.yaml:42","Warn: pipCommand not pinned by hash: .github/workflows/_build_doc.yaml:38","Warn: pipCommand not pinned by hash: .github/workflows/_build_doc.yaml:39","Warn: pipCommand not pinned by hash: .github/workflows/_build_doc.yaml:40","Warn: pipCommand not pinned by hash: .github/workflows/_codecov.yaml:48","Warn: pipCommand not pinned by hash: .github/workflows/_codecov.yaml:51","Warn: pipCommand not pinned by hash: .github/workflows/_test.yaml:39","Warn: pipCommand not pinned by hash: .github/workflows/_test.yaml:42","Info:  13 out of  19 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of   6 third-party GitHubAction dependencies pinned","Info:   1 out of  10 pipCommand 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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":5,"reason":"badge detected: Passing","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":0,"reason":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: PYSEC-2015-24 / GHSA-4vwq-x64q-j4cj","Warn: Project is vulnerable to: PYSEC-2017-46 / GHSA-66gw-5xpf-gfp5","Warn: Project is vulnerable to: PYSEC-2015-25 / GHSA-92mr-v722-f48m","Warn: Project is vulnerable to: PYSEC-2022-12 / GHSA-pq7m-3gw7-gq5x","Warn: Project is vulnerable to: PYSEC-2017-47","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2021-387 / GHSA-j8fq-86c5-5v2r","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#sast"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md","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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#branch-protection"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#fuzzing"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#packaging"}},{"name":"Contributors","score":10,"reason":"project has 3 contributing companies or organizations -- score normalized to 10","details":["Info: found contributions from: ProjectPepperHSB, conda-forge, cslab"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#contributors"}},{"name":"CI-Tests","score":9,"reason":"29 out of 30 merged PRs checked by a CI test -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#ci-tests"}}]},"last_synced_at":"2025-10-04T05:46:55.855Z","repository_id":56860371,"created_at":"2025-10-04T05:46:55.856Z","updated_at":"2025-10-04T05:46:55.856Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009687,"owners_count":26084645,"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-10-11T02:00:06.511Z","response_time":55,"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":"btschwertfeger","name":"Benjamin T. Schwertfeger","uuid":"51495182","kind":"user","description":"Quality Manager in Software Development","email":"","website":"https://b-schwertfeger.de","location":"Germany","twitter":null,"company":"CONTACT Software GmbH","icon_url":"https://avatars.githubusercontent.com/u/51495182?u=215810374de81d3b9066d64901ec17d873190ae0\u0026v=4","repositories_count":7,"last_synced_at":"2023-03-09T23:00:55.655Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/btschwertfeger","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-19T14:09:23.821Z","updated_at":"2023-03-09T23:00:55.775Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger/repositories"},"tags":[{"name":"v2.3.1","sha":"3f444343a9a5d77af3933474d6eab88fde41037d","kind":"commit","published_at":"2025-04-01T11:21:04.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.3.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.3.1/manifests"},{"name":"v2.3.0","sha":"61a30793e3ecd4d9539941605fbbcf64a8902d4a","kind":"commit","published_at":"2024-06-19T14:00:12.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.3.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.3.0/manifests"},{"name":"v2.2.5","sha":"3e928f4dc2f8c42fdce87f0197585ef73ed2b1be","kind":"commit","published_at":"2024-05-28T03:29:06.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.5","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.2.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.5/manifests"},{"name":"v2.2.4","sha":"435569568eaddfac010fa75b6399251e42b34123","kind":"commit","published_at":"2024-05-20T08:35:09.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.4","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.2.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.4/manifests"},{"name":"v2.2.3","sha":"8a55556582cfe1a926bb74b28532d8e4710596b7","kind":"commit","published_at":"2024-05-17T14:25:32.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.3/manifests"},{"name":"v2.2.2","sha":"80ea299b301be24ea0f1466e424bdcf4e63b3d34","kind":"commit","published_at":"2024-05-07T05:30:27.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.2/manifests"},{"name":"v2.2.1","sha":"9ab4de962f2a5b379cad411ad333e800d039c03f","kind":"commit","published_at":"2024-04-10T14:32:19.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"433c676ac21b9e35655ff35fdb908557db72a3da","kind":"commit","published_at":"2024-04-09T17:21:43.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.2.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.2.0/manifests"},{"name":"v2.1.0","sha":"15f78c1729c1be03509d5e77eb7a899065fdf783","kind":"commit","published_at":"2024-03-10T06:06:22.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.1.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.1.0/manifests"},{"name":"v2.0.2","sha":"445d2c42a47971e0258f8768381fd638a799be13","kind":"commit","published_at":"2024-02-02T15:23:20.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.0.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.2/manifests"},{"name":"v2.0.1","sha":"de397391e3c62244dde1735fe552ba472ae580b9","kind":"commit","published_at":"2024-02-01T16:22:42.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.0.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.1/manifests"},{"name":"v2.0.0","sha":"6500e942376c9f306268e36c333222e828379f9f","kind":"commit","published_at":"2024-01-23T16:48:05.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v2.0.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v2.0.0/manifests"},{"name":"v1.0.3","sha":"9878005e1586997a8f0653cc94ed2cb755a17094","kind":"commit","published_at":"2023-08-09T14:26:08.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"095f052058932f944c760e9b4af525540eeba114","kind":"commit","published_at":"2023-06-18T07:06:20.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"da71d88b590e04a3835d456dec688ba8aa1eb008","kind":"commit","published_at":"2023-04-17T17:25:21.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"ec505e16909601b5fbeeb45ea0df4d9cbd6314b0","kind":"commit","published_at":"2023-04-10T18:51:02.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v1.0.0","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v1.0.0/manifests"},{"name":"v0.6.3","sha":"1203a06d551bfa724c2232ed1ebbb315f3281fe5","kind":"commit","published_at":"2023-03-22T18:53:28.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.6.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.3/manifests"},{"name":"v0.6.2","sha":"f21ae590c64629fec205aa95660468defd1f6a4a","kind":"commit","published_at":"2023-03-14T17:28:56.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.6.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.2/manifests"},{"name":"v0.6.1","sha":"a9f8356968f6b1101ffa869d35f3f157dcfc9d7e","kind":"commit","published_at":"2022-12-02T13:20:31.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6.1/manifests"},{"name":"v0.6","sha":"87277dec489f7c60c317a6fceea39333e7807612","kind":"commit","published_at":"2022-11-28T08:14:39.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.6","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.6/manifests"},{"name":"v0.5.4.2","sha":"b253fd4100093f20cdefa60f246e208b29b2885f","kind":"commit","published_at":"2022-11-14T10:37:36.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.4.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.5.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4.2/manifests"},{"name":"0.5.4.1","sha":"9a52b98da50dc933a1440e3560d08ead440183f1","kind":"commit","published_at":"2022-11-09T18:23:25.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/0.5.4.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/0.5.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@0.5.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/0.5.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/0.5.4.1/manifests"},{"name":"v0.5.4","sha":"a55582099f349101c3606cc6ffd458fbc242b369","kind":"commit","published_at":"2022-11-05T07:05:13.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.4","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.5.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.4/manifests"},{"name":"v0.5.3","sha":"7fe5d3d1a42f7d5fc988d480e957f207a8387633","kind":"commit","published_at":"2022-10-26T10:05:32.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.3","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.3/manifests"},{"name":"v0.5.2","sha":"9ae86de468631c71be2442e5db255b25a3ea8fc3","kind":"commit","published_at":"2022-10-14T11:39:19.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.2","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"fca91c0571f7fe487022a78f361ef6eb6f492027","kind":"commit","published_at":"2022-08-19T09:38:28.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5.1","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5.1/manifests"},{"name":"v0.5","sha":"72a66b8bf4a12bdbc72e3fd43d8617c8122c1402","kind":"commit","published_at":"2022-08-19T09:10:19.000Z","download_url":"https://codeload.github.com/btschwertfeger/python-cmethods/tar.gz/v0.5","html_url":"https://github.com/btschwertfeger/python-cmethods/releases/tag/v0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/btschwertfeger/python-cmethods@v0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/tags/v0.5/manifests"}]},"repo_metadata_updated_at":"2025-11-03T19:08:54.231Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.764254255794306,"dependent_packages_count":5.401293307900869,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.582773781847587},"purl":"pkg:golang/github.com/btschwertfeger/python-cmethods","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/btschwertfeger/python-cmethods","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/btschwertfeger/python-cmethods","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/btschwertfeger/python-cmethods/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-02T08:01:26.279Z","issues_count":30,"pull_requests_count":208,"avg_time_to_close_issue":2875314.269230769,"avg_time_to_close_pull_request":322451.1041666667,"issues_closed_count":26,"pull_requests_closed_count":192,"pull_request_authors_count":4,"issue_authors_count":8,"avg_comments_per_issue":0.36666666666666664,"avg_comments_per_pull_request":0.24519230769230768,"merged_pull_requests_count":170,"bot_issues_count":1,"bot_pull_requests_count":125,"past_year_issues_count":4,"past_year_pull_requests_count":76,"past_year_avg_time_to_close_issue":875.5,"past_year_avg_time_to_close_pull_request":287740.5507246377,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":69,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.15789473684210525,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":56,"past_year_merged_pull_requests_count":63,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/issues","maintainers":[{"login":"btschwertfeger","count":102,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/btschwertfeger"}],"active_maintainers":[{"login":"btschwertfeger","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/btschwertfeger"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbtschwertfeger%2Fpython-cmethods/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbtschwertfeger%2Fpython-cmethods/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbtschwertfeger%2Fpython-cmethods/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbtschwertfeger%2Fpython-cmethods/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbtschwertfeger%2Fpython-cmethods/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2071383,"maintainers_count":0,"namespaces_count":775453,"keywords_count":0,"github":"golang","metadata":{"funded_packages_count":53246},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-03-16T07:29:47.444Z","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"}}],"commits":{"id":1318839,"full_name":"btschwertfeger/python-cmethods","default_branch":"master","total_commits":197,"total_committers":2,"total_bot_commits":60,"total_bot_committers":1,"mean_commits":98.5,"dds":0.30456852791878175,"past_year_total_commits":18,"past_year_total_committers":2,"past_year_total_bot_commits":11,"past_year_total_bot_committers":1,"past_year_mean_commits":9.0,"past_year_dds":0.38888888888888884,"last_synced_at":"2026-03-10T09:02:31.665Z","last_synced_commit":"2134d1db53264cce65b3a360aa548300cd7c9e40","created_at":"2023-09-11T14:34:29.055Z","updated_at":"2026-03-10T09:02:31.422Z","committers":[{"name":"Benjamin Thomas Schwertfeger","email":"development@b-schwertfeger.de","login":"btschwertfeger","count":137},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":60}],"past_year_committers":[{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":11},{"name":"Benjamin T. Schwertfeger","email":"contact@b-schwertfeger.de","login":"btschwertfeger","count":7}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-16T00:00:25.424Z","repositories_count":6204039,"commits_count":934830760,"contributors_count":36184035,"owners_count":1149371,"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":"btschwertfeger/python-cmethods","html_url":"https://github.com/btschwertfeger/python-cmethods","last_synced_at":"2026-03-01T14:01:15.059Z","status":null,"issues_count":30,"pull_requests_count":212,"avg_time_to_close_issue":2875314.269230769,"avg_time_to_close_pull_request":317501.0102564102,"issues_closed_count":26,"pull_requests_closed_count":195,"pull_request_authors_count":4,"issue_authors_count":8,"avg_comments_per_issue":0.36666666666666664,"avg_comments_per_pull_request":0.25471698113207547,"merged_pull_requests_count":173,"bot_issues_count":1,"bot_pull_requests_count":126,"past_year_issues_count":1,"past_year_pull_requests_count":22,"past_year_avg_time_to_close_issue":1725.0,"past_year_avg_time_to_close_pull_request":7870.578947368421,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":19,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.13636363636363635,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":11,"past_year_merged_pull_requests_count":19,"created_at":"2023-05-15T04:35:51.615Z","updated_at":"2026-03-01T14:01:15.060Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-cmethods/issues","issue_labels_count":{"Feature":13,"Bug":7,"Should":5,"Breaking":3,"Must":3,"Documentation":3,"Could":2,"Question":1,"Technical Dept":1,"dependencies":1,"github_actions":1},"pull_request_labels_count":{"dependencies":126,"github_actions":115,"Documentation":15,"Feature":7,"python":7,"Bug":6,"Project setup and configuration":4,"Breaking":3,"Technical Dept":3,"Should":2,"Could":1},"issue_author_associations_count":{"OWNER":23,"NONE":6,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":125,"OWNER":82,"NONE":5},"issue_authors":{"btschwertfeger":23,"mlago01":1,"markpayneatwork":1,"msw09090":1,"dependabot[bot]":1,"zhongwangwei":1,"aierfulz":1,"riley-brady":1},"pull_request_authors":{"dependabot[bot]":126,"btschwertfeger":82,"andrew":2,"colligant":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-02T00:00:10.048Z","repositories_count":13534887,"issues_count":34992971,"pull_requests_count":114042160,"authors_count":11177837,"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":{"Technical Dept":1},"past_year_pull_request_labels_count":{"dependencies":11,"github_actions":11,"Technical Dept":3,"Documentation":2,"Project setup and configuration":2},"past_year_issue_author_associations_count":{"OWNER":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":11,"OWNER":11},"past_year_issue_authors":{"btschwertfeger":1},"past_year_pull_request_authors":{"btschwertfeger":11,"dependabot[bot]":11},"maintainers":[{"login":"btschwertfeger","count":105,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/btschwertfeger"}],"active_maintainers":[{"login":"btschwertfeger","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/btschwertfeger"}]},"events":{"total":{"ReleaseEvent":2,"DeleteEvent":34,"PullRequestEvent":77,"ForkEvent":3,"IssuesEvent":11,"WatchEvent":11,"IssueCommentEvent":13,"PushEvent":46,"PullRequestReviewEvent":28,"CreateEvent":34},"last_year":{"ReleaseEvent":2,"DeleteEvent":12,"PullRequestEvent":33,"ForkEvent":2,"IssuesEvent":7,"WatchEvent":5,"IssueCommentEvent":1,"PushEvent":19,"PullRequestReviewEvent":7,"CreateEvent":10}},"keywords":["bias-adjustment","bias-correction","cdf","climate-data","climate-data-analysis","climate-science","delta-change-method","delta-method","detrended-quantile-mapping","linear-scaling","python","python-module","quantile-delta-mapping","quantile-mapping","reanalysis","variance-scaling"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/codeql.yml","sha":null,"kind":"manifest","created_at":"2023-01-22T22:30:55.490Z","updated_at":"2023-01-22T22:30:55.490Z","repository_link":"https://github.com/btschwertfeger/python-cmethods/blob/master/.github/workflows/codeql.yml","dependencies":[{"id":7103581559,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7103581560,"package_name":"github/codeql-action/init","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7103581561,"package_name":"github/codeql-action/autobuild","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7103581562,"package_name":"github/codeql-action/analyze","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/python-package.yml","sha":null,"kind":"manifest","created_at":"2023-01-22T22:30:55.573Z","updated_at":"2023-01-22T22:30:55.573Z","repository_link":"https://github.com/btschwertfeger/python-cmethods/blob/master/.github/workflows/python-package.yml","dependencies":[{"id":7103581794,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7103581795,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-01-22T22:30:55.625Z","updated_at":"2023-01-22T22:30:55.625Z","repository_link":"https://github.com/btschwertfeger/python-cmethods/blob/master/requirements.txt","dependencies":[{"id":7103581888,"package_name":"xarray","ecosystem":"pypi","requirements":"\u003e=2022.11.0","direct":true,"kind":"runtime","optional":false},{"id":7103581889,"package_name":"netCDF4","ecosystem":"pypi","requirements":"\u003e=1.6.1","direct":true,"kind":"runtime","optional":false},{"id":7103581890,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7103581891,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":10.946798525419148,"created_at":"2023-09-11T14:25:32.507Z","updated_at":"2026-04-04T21:30:24.879Z","avatar_url":"https://github.com/btschwertfeger.png","language":"Python","category":"Climate Change","sub_category":"Climate Data Processing and Analysis","monthly_downloads":340,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"# python-cmethods\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub](https://badgen.net/badge/icon/github?icon=github\u0026label)](https://github.com/btschwertfeger/python-cmethods)\n[![Generic badge](https://img.shields.io/badge/python-3.9_|_3.10_|_3.11|_3.12|_3.13-blue.svg)](https://shields.io/)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-orange.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![PyPI Downloads](https://pepy.tech/badge/python-cmethods)](https://pepy.tech/project/python-cmethods)\n\n[![CI/CD](https://github.com/btschwertfeger/python-cmethods/actions/workflows/cicd.yaml/badge.svg?branch=master)](https://github.com/btschwertfeger/python-cmethods/actions/workflows/cicd.yaml)\n[![codecov](https://codecov.io/github/btschwertfeger/python-cmethods/branch/master/graph/badge.svg?token=OSO4PAABPD)](https://codecov.io/github/btschwertfeger/python-cmethods)\n\n[![OpenSSF ScoreCard](https://img.shields.io/ossf-scorecard/github.com/btschwertfeger/python-cmethods?label=openssf%20scorecard\u0026style=flat)](https://securityscorecards.dev/viewer/?uri=github.com/btschwertfeger/python-cmethods)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8666/badge)](https://www.bestpractices.dev/projects/8666)\n\n![release](https://shields.io/github/release-date/btschwertfeger/python-cmethods)\n![release](https://shields.io/github/v/release/btschwertfeger/python-cmethods?display_name=tag)\n[![DOI](https://zenodo.org/badge/496160109.svg)](https://zenodo.org/badge/latestdoi/496160109)\n[![Documentation Status](https://readthedocs.org/projects/python-cmethods/badge/?version=stable)](https://python-cmethods.readthedocs.io/en/latest/?badge=stable)\n\n\u003c/div\u003e\n\nWelcome to python-cmethods, a powerful Python package designed for bias\ncorrection and adjustment of climate data. Built with a focus on ease of use and\nefficiency, python-cmethods offers a comprehensive suite of functions tailored\nfor applying bias correction methods to climate model simulations and\nobservational datasets via command-line interface and API.\n\nIf you use this project, cite it as described in\nhttps://zenodo.org/doi/10.5281/zenodo.7652755.\n\n## Table of Contents\n\n1. [ About ](#about)\n2. [ Available Methods ](#methods)\n3. [ Installation ](#installation)\n4. [ Usage and Examples ](#examples)\n5. [ Notes ](#notes)\n6. [ Contribution ](#contribution)\n7. [ References ](#references)\n\n\u003ca name=\"about\"\u003e\u003c/a\u003e\n\n## 1. About\n\nBias correction in climate research involves the adjustment of systematic errors\nor biases present in climate model simulations or observational datasets to\nimprove their accuracy and reliability, ensuring that the data better represents\nactual climate conditions. This process typically involves statistical methods\nor empirical relationships to correct for biases caused by factors such as\ninstrument calibration, spatial resolution, or model deficiencies.\n\n\u003cfigure\u003e\n  \u003cimg\n  src=\"doc/_static/images/biasCdiagram.png?raw=true\"\n  alt=\"Schematic representation of a bias adjustment procedure\"\n  style=\"background-color: white; border-radius: 7px\"\u003e\n  \u003cfigcaption\u003eFigure 1: Schematic representation of a bias adjustment procedure\u003c/figcaption\u003e\n\u003c/figure\u003e\n\npython-cmethods empowers scientists to effectively address those biases in\nclimate data, ensuring greater accuracy and reliability in research and\ndecision-making processes. By leveraging cutting-edge techniques and seamless\nintegration with popular libraries like [xarray](https://xarray.dev/) and\n[Dask](https://docs.dask.org/en/stable/), this package simplifies the process\nof bias adjustment, even when dealing with large-scale climate simulations and\nextensive spatial domains.\n\nIn this way, for example, modeled data, which on average represent values that\nare too cold, can be easily bias-corrected by applying any adjustment procedure\nincluded in this package.\n\nFor instance, modeled data can report values that are way colder than the those\ndata reported by reanalysis time-series. To address this issue, an adjustment\nprocedure can be employed. The figure below illustrates the observed, modeled,\nand adjusted values, revealing that the delta-adjusted time series\n($T^{*DM}_{sim,p}$) is significantly more similar to the observational data\n($T{obs,p}$) than the raw model output ($T_{sim,p}$).\n\n\u003cfigure\u003e\n  \u003cimg\n  src=\"doc/_static/images/dm-doy-plot.png?raw=true\"\n  alt=\"Temperature per day of year in modeled, observed and bias-adjusted climate data\"\n  style=\"background-color: white; border-radius: 7px\"\u003e\n  \u003cfigcaption\u003eFigure 2: Temperature per day of year in observed, modeled, and bias-adjusted climate data\u003c/figcaption\u003e\n\u003c/figure\u003e\n\nThe mathematical foundations supporting each bias correction technique\nimplemented in python-cmethods are integral to the package, ensuring\ntransparency and reproducibility in the correction process. Each method is\naccompanied by references to trusted publications, reinforcing the reliability\nand rigor of the corrections applied.\n\n\u003ca name=\"methods\"\u003e\u003c/a\u003e\n\n## 2. Available Methods\n\npython-cmethods provides the following bias correction techniques:\n\n- Linear Scaling\n- Variance Scaling\n- Delta Method\n- Quantile Mapping\n- Detrended Quantile Mapping\n- Quantile Delta Mapping\n\nPlease refer to the official documentation for more information about these\nmethods as well as sample scripts:\nhttps://python-cmethods.readthedocs.io/en/stable/\n\n## Best Practices and important Notes\n\n- The training data should have the same temporal resolution.\n\n- Except for the variance scaling, all methods can be applied on stochastic and\n  non-stochastic climate variables. Variance scaling can only be applied on\n  non-stochastic climate variables.\n  - Non-stochastic climate variables are those that can be predicted with\n    relative certainty based on factors such as location, elevation, and season.\n    Examples of non-stochastic climate variables include air temperature, air\n    pressure, and solar radiation.\n\n  - Stochastic climate variables, on the other hand, are those that exhibit a\n    high degree of variability and unpredictability, making them difficult to\n    forecast accurately. Precipitation is an example of a stochastic climate\n    variable because it can vary greatly in timing, intensity, and location due\n    to complex atmospheric and meteorological processes.\n\n- Except for the detrended quantile mapping (DQM) technique, all methods can be\n  applied to 1- and 3-dimensional data sets. The implementation of DQM to\n  3-dimensional data is still in progress.\n\n- Except for DQM, all methods can be applied using `cmethods.adjust`. Chunked\n  data for computing e.g. in a dask cluster is possible as well.\n\n- For any questions -- please open an issue at\n  https://github.com/btschwertfeger/python-cmethods/issues\n\n\u003ca name=\"installation\"\u003e\u003c/a\u003e\n\n## 3. Installation\n\n\u003e If the installation fails due to missing HDF5 headers, ensure that 'hdf5' and\n\u003e 'netcdf' are pre-installed, e.g. on macOS using: `brew install hdf5 netcdf`.\n\n```bash\npython3 -m pip install python-cmethods\n```\n\nThe package is also available via conda-forge. See\n[conda-forge/python_cmethods](https://anaconda.org/conda-forge/python_cmethods)\nfor more information.\n\n\u003ca name=\"examples\"\u003e\u003c/a\u003e\n\n## 4. CLI Usage\n\nThe python-cmethods package provides a command-line interface for applying\nvarious bias correction methods out of the box.\n\nKeep in mind that due to the various kinds of data and possibilities to\npre-process those, the CLI only provides a basic application of the implemented\ntechniques. For special parameters, adjustments, and data preparation, please\nuse programming interface.\n\nListing the parameters and their requirements is available by passing the\n`--help` option:\n\n```bash\ncmethods --help\n```\n\nApplying the cmethods tool on the provided example data using the linear scaling\napproach is shown below:\n\n```bash\ncmethods \\\n  --obs examples/input_data/observations.nc \\\n  --simh examples/input_data/control.nc \\\n  --simp examples/input_data/scenario.nc \\\n  --method linear_scaling \\\n  --kind add \\\n  --variable tas \\\n  --group time.month \\\n  --output linear_scaling.nc\n\n2024/04/08 18:11:12     INFO | Loading data sets ...\n2024/04/08 18:11:12     INFO | Data sets loaded ...\n2024/04/08 18:11:12     INFO | Applying linear_scaling ...\n2024/04/08 18:11:15     INFO | Saving result to linear_scaling.nc ...\n```\n\nFor applying a distribution-based bias correction technique, the following\nexample may help:\n\n```bash\ncmethods \\\n  --obs examples/input_data/observations.nc \\\n  --simh examples/input_data/control.nc \\\n  --simp examples/input_data/scenario.nc \\\n  --method quantile_delta_mapping \\\n  --kind add \\\n  --variable tas \\\n  --quantiles 1000 \\\n  --output quantile_delta_mapping.nc\n\n2024/04/08 18:16:34     INFO | Loading data sets ...\n2024/04/08 18:16:35     INFO | Data sets loaded ...\n2024/04/08 18:16:35     INFO | Applying quantile_delta_mapping ...\n2024/04/08 18:16:35     INFO | Saving result to quantile_delta_mapping.nc ...\n```\n\n## 5. Programming Interface Usage and Examples\n\n```python\nimport xarray as xr\nfrom cmethods import adjust\n\nobsh = xr.open_dataset(\"input_data/observations.nc\")\nsimh = xr.open_dataset(\"input_data/control.nc\")\nsimp = xr.open_dataset(\"input_data/scenario.nc\")\n\n# adjust only one grid cell\nls_result = adjust(\n    method=\"linear_scaling\",\n    obs=obsh[\"tas\"][:, 0, 0],\n    simh=simh[\"tas\"][:, 0, 0],\n    simp=simp[\"tas\"][:, 0, 0],\n    kind=\"+\",\n    group=\"time.month\",\n)\n\n# adjust all grid cells\nqdm_result = adjust(\n    method=\"quantile_delta_mapping\",\n    obs=obsh[\"tas\"],\n    simh=simh[\"tas\"],\n    simp=simp[\"tas\"],\n    n_quantiles=1000,\n    kind=\"+\",\n)\n\n# to calculate the relative rather than the absolute change,\n# '*' can be used instead of '+' (this is preferred when adjusting\n# stochastic variables like precipitation)\n```\n\nIt is also possible to adjust chunked data sets. Feel free to have a look into\n`tests/test_zarr_dask_compatibility.py` to get a starting point.\n\nNotes:\n\n- For the multiplicative techniques a maximum scaling factor of 10 is defined.\n  This can be changed by passing the optional parameter `max_scaling_factor`.\n- Except for detrended quantile mapping, all implemented techniques can be\n  applied to single and multi-dimensional data sets by executing the\n  `cmethods.adjust` function.\n- A Jupyter notebook applying all those methods is provided here:\n  `/examples/examples.ipynb`\n- The example data is located at: `/examples/input_data/*.nc`\n\n\u003ca name=\"notes\"\u003e\u003c/a\u003e\n\n## 5. Notes\n\n- Computation in Python takes some time, so this is only for demonstration. When\n  adjusting large datasets, you should either use chunked data using for example\n  a dask cluster or to apply the command-line tool\n  [BiasAdjustCXX](https://github.com/btschwertfeger/BiasAdjustCXX).\n- Formulas and references can be found in the implementations of the\n  corresponding functions, on the bottom of the README.md and in the\n  [documentation](https://python-kraken-sdk.readthedocs.io/en/stable/).\n\n### Space for improvements\n\n- Since the scaling methods implemented so far scale by default over the mean\n  values of the respective months, unrealistic long-term mean values may occur\n  at the month transitions. This can be prevented either by selecting\n  `group='time.dayofyear'`. Alternatively, it is possible not to scale using\n  long-term mean values, but using a 31-day interval, which takes the 31\n  surrounding values over all years as the basis for calculating the mean\n  values. This is not yet implemented, because even the computation for this\n  takes so much time, that it is not worth implementing it in python - but this\n  is available in\n  [BiasAdjustCXX](https://github.com/btschwertfeger/BiasAdjustCXX).\n\n\u003ca name=\"contribution\"\u003e\u003c/a\u003e\n\n## 6. 🆕 Contributions\n\n… are welcome but:\n\n- First check if there is an existing issue or PR that addresses your\n  problem/solution. If not - create one first - before creating a PR.\n- Typo fixes, project configuration, CI, documentation or style/formatting PRs\n  will be rejected. Please create an issue for that.\n- PRs must provide a reasonable, easy to understand and maintain solution for an\n  existing problem. You may want to propose a solution when creating the issue\n  to discuss the approach before creating a PR.\n- There is currently no need for the implementation of further bias correction\n  methods.\n\n\u003ca name=\"references\"\u003e\u003c/a\u003e\n\n## 7. References\n\n- Schwertfeger, Benjamin Thomas and Lohmann, Gerrit and Lipskoch, Henrik (2023) _\"Introduction of the BiasAdjustCXX command-line tool for the application of fast and efficient bias corrections in climatic research\"_, SoftwareX, Volume 22, 101379, ISSN 2352-7110, (https://doi.org/10.1016/j.softx.2023.101379)\n- Schwertfeger, Benjamin Thomas (2022) _\"The influence of bias corrections on variability, distribution, and correlation of temperatures in comparison to observed and modeled climate data in Europe\"_ (https://epic.awi.de/id/eprint/56689/)\n- Linear Scaling and Variance Scaling based on: Teutschbein, Claudia and Seibert, Jan (2012) _\"Bias correction of regional climate model simulations for hydrological climate-change impact studies: Review and evaluation of different methods\"_ (https://doi.org/10.1016/j.jhydrol.2012.05.052)\n- Delta Method based on: Beyer, R. and Krapp, M. and Manica, A.: _\"An empirical evaluation of bias correction methods for palaeoclimate simulations\"_ (https://doi.org/10.5194/cp-16-1493-2020)\n- Quantile and Detrended Quantile Mapping based on: Alex J. Cannon and Stephen R. Sobie and Trevor Q. Murdock _\"Bias Correction of GCM Precipitation by Quantile Mapping: How Well Do Methods Preserve Changes in Quantiles and Extremes?\"_ (https://doi.org/10.1175/JCLI-D-14-00754.1)\n- Quantile Delta Mapping based on: Tong, Y., Gao, X., Han, Z. et al. _\"Bias correction of temperature and precipitation over China for RCM simulations using the QM and QDM methods\"_. Clim Dyn 57, 1425–1443 (2021). (https://doi.org/10.1007/s00382-020-05447-4)\n- I'd like to express my gratitude to @riley-brady for initiating and\n  contributing to the discussion on\n  https://github.com/btschwertfeger/python-cmethods/issues/47. I appreciate all\n  the valuable suggestions provided throughout the implementation of the\n  subsequent changes.\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.1016/j.softx.2023.101379","https://doi.org/10.1016/j.jhydrol.2012.05.052","https://doi.org/10.5194/cp-16-1493-2020","https://doi.org/10.1175/JCLI-D-14-00754.1","https://doi.org/10.1007/s00382-020-05447-4"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["optimize","transforms","measur","archiving","compose","observation","conversion","projection","animals","generic"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/1818","html_url":"https://ost.ecosyste.ms/projects/1818"}