{"id":188584,"name":null,"description":"Common utilities to ease the development of Python packages","url":"https://github.com/cokelaer/easydev","last_synced_at":"2025-09-10T03:20:37.772Z","repository":{"id":19760787,"uuid":"23018351","full_name":"cokelaer/easydev","owner":"cokelaer","description":"Common utilities to ease the development of Python packages","archived":false,"fork":false,"pushed_at":"2025-06-10T10:38:25.000Z","size":704,"stargazers_count":12,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-30T06:57:37.295Z","etag":null,"topics":["logging","packages","profiling","progressbar","swapdict"],"latest_commit_sha":null,"homepage":"http://easydev-python.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cokelaer.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-08-16T13:18:41.000Z","updated_at":"2025-01-10T10:30:13.000Z","dependencies_parsed_at":"2024-04-28T13:38:30.024Z","dependency_job_id":"abc5c8f6-1276-423b-b963-554cfd177a56","html_url":"https://github.com/cokelaer/easydev","commit_stats":{"total_commits":273,"total_committers":3,"mean_commits":91.0,"dds":0.0073260073260073,"last_synced_commit":"3ccace60b830ea0b55d345ecf23deb2b52e39f1b"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/cokelaer/easydev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/sbom","scorecard":{"id":299067,"data":{"date":"2025-08-11","repo":{"name":"github.com/cokelaer/easydev","commit":"59cb5b0dff727b15b59b4de5efdb8591808eec47"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 3/13 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/pypi.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:38","Warn: pipCommand not pinned by hash: .github/workflows/pypi.yml:21","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   3 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/pypi.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T20:13:36.286Z","repository_id":19760787,"created_at":"2025-08-17T20:13:36.287Z","updated_at":"2025-08-17T20:13:36.287Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274407223,"owners_count":25279267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"cokelaer","name":"Thomas Cokelaer","uuid":"778821","kind":"user","description":"Bioinformatician, Scientific Software Developer, Python developer","email":"","website":"http://thomas-cokelaer.info/","location":"Paris, France","twitter":"ThomasCokelaer","company":"Institut Pasteur","icon_url":"https://avatars.githubusercontent.com/u/778821?u=98261b55bf73d849b5087fff9327bb667f36f5ce\u0026v=4","repositories_count":62,"last_synced_at":"2024-03-14T21:04:40.355Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/cokelaer","funding_links":[],"total_stars":1012,"followers":null,"following":null,"created_at":"2022-11-08T16:54:17.716Z","updated_at":"2024-03-14T21:04:48.893Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer/repositories"},"packages":[{"id":2718958,"name":"easydev","ecosystem":"pypi","description":"Common utilities to ease development of Python packages","homepage":"https://easydev.readthedocs.io","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/cokelaer/easydev","keywords_array":["config","decorators","development"],"namespace":null,"versions_count":85,"first_release_published_at":"2013-01-17T09:20:49.000Z","latest_release_published_at":"2025-01-10T10:33:04.000Z","latest_release_number":"0.13.3","last_synced_at":"2025-08-30T06:49:13.682Z","created_at":"2022-04-10T10:50:44.879Z","updated_at":"2025-08-30T06:57:39.716Z","registry_url":"https://pypi.org/project/easydev/","install_command":"pip install easydev --index-url https://pypi.org/simple","documentation_url":"https://easydev.readthedocs.io","metadata":{"funding":null,"documentation":"https://easydev.readthedocs.io","classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Intended Audience :: Education","Intended Audience :: End Users/Desktop","Intended Audience :: Science/Research","License :: OSI Approved :: BSD License","Operating System :: POSIX :: Linux","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Topic :: Scientific/Engineering :: Bio-Informatics","Topic :: Scientific/Engineering :: Information Analysis","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"easydev","project_status":null},"repo_metadata":{"id":19760787,"uuid":"23018351","full_name":"cokelaer/easydev","owner":"cokelaer","description":"Common utilities to ease the development of Python packages","archived":false,"fork":false,"pushed_at":"2025-06-10T10:38:25.000Z","size":704,"stargazers_count":12,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-20T11:12:25.493Z","etag":null,"topics":["logging","packages","profiling","progressbar","swapdict"],"latest_commit_sha":null,"homepage":"http://easydev-python.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cokelaer.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-08-16T13:18:41.000Z","updated_at":"2025-01-10T10:30:13.000Z","dependencies_parsed_at":"2024-04-28T13:38:30.024Z","dependency_job_id":"abc5c8f6-1276-423b-b963-554cfd177a56","html_url":"https://github.com/cokelaer/easydev","commit_stats":{"total_commits":273,"total_committers":3,"mean_commits":91.0,"dds":0.0073260073260073,"last_synced_commit":"3ccace60b830ea0b55d345ecf23deb2b52e39f1b"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/cokelaer/easydev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/sbom","scorecard":{"id":299067,"data":{"date":"2025-08-11","repo":{"name":"github.com/cokelaer/easydev","commit":"59cb5b0dff727b15b59b4de5efdb8591808eec47"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 3/13 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/pypi.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/cokelaer/easydev/pypi.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:38","Warn: pipCommand not pinned by hash: .github/workflows/pypi.yml:21","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   3 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/pypi.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T20:13:36.286Z","repository_id":19760787,"created_at":"2025-08-17T20:13:36.287Z","updated_at":"2025-08-17T20:13:36.287Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272815834,"owners_count":24997662,"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-08-30T02:00:09.474Z","response_time":77,"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":"cokelaer","name":"Thomas Cokelaer","uuid":"778821","kind":"user","description":"Bioinformatician, Scientific Software Developer, Python developer","email":"","website":"http://thomas-cokelaer.info/","location":"Paris, France","twitter":"ThomasCokelaer","company":"Institut Pasteur","icon_url":"https://avatars.githubusercontent.com/u/778821?u=98261b55bf73d849b5087fff9327bb667f36f5ce\u0026v=4","repositories_count":62,"last_synced_at":"2024-03-14T21:04:40.355Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/cokelaer","funding_links":[],"total_stars":1012,"followers":null,"following":null,"created_at":"2022-11-08T16:54:17.716Z","updated_at":"2024-03-14T21:04:48.893Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer/repositories"},"tags":[{"name":"v0.13.3","sha":"59cb5b0dff727b15b59b4de5efdb8591808eec47","kind":"commit","published_at":"2025-01-10T10:29:56.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.13.3","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.13.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.13.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.13.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.13.3/manifests"},{"name":"v0.13.2","sha":"73bb489cd3598a0bd463619f5f516f4c67ccd148","kind":"commit","published_at":"2024-04-28T19:15:56.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.13.2","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.13.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.13.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.13.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.13.2/manifests"},{"name":"v0.13.0","sha":"502fc34fc940a02c5dedaa102259ba0c288a533e","kind":"commit","published_at":"2024-02-12T15:20:55.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.13.0","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.13.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.13.0/manifests"},{"name":"v0.12.2","sha":"a7da3fe6f69779c53c2f5a318126a2320692ba22","kind":"commit","published_at":"2024-02-11T22:43:35.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.12.2","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.12.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.12.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.12.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.12.2/manifests"},{"name":"v0.12.1","sha":"3ccace60b830ea0b55d345ecf23deb2b52e39f1b","kind":"commit","published_at":"2023-02-01T22:37:32.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.12.1","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.12.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.12.1/manifests"},{"name":"v0.12.0","sha":"a66254c74458dcc8d667a0bbc26b29951e839264","kind":"commit","published_at":"2021-09-09T16:00:23.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.12.0","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.12.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.12.0/manifests"},{"name":"v0.11.2","sha":"89fe33f80b6dc88b721421d004e42e9582c20e42","kind":"commit","published_at":"2021-08-25T20:14:43.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.11.2","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.11.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.11.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.11.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.11.2/manifests"},{"name":"v0.11.0","sha":"1c1ff16f44e127e6f365354b6f25ce2f341664d1","kind":"commit","published_at":"2021-02-06T17:44:15.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.11.0","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.11.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.11.0/manifests"},{"name":"v0.10.1","sha":"1b8299bc98c8cff7d7ffc3d0b6c6aeda07015d06","kind":"commit","published_at":"2020-09-11T15:54:15.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.10.1","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.10.1/manifests"},{"name":"0.9.38","sha":"2e79ae584e418056dd6da276a599c1f687156269","kind":"commit","published_at":"2019-08-23T08:53:30.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/0.9.38","html_url":"https://github.com/cokelaer/easydev/releases/tag/0.9.38","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@0.9.38","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/0.9.38","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/0.9.38/manifests"},{"name":"v0.9.9","sha":"c2d095e4b3b9f18b63682d8de10c5ba9ba2fef0c","kind":"commit","published_at":"2016-01-12T21:21:08.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.9.9","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.9.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.9.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.9.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.9.9/manifests"},{"name":"v0.9.8","sha":"e324a61fd725bf487f50f757de0e659a7437c99a","kind":"commit","published_at":"2016-01-12T21:03:33.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.9.8","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.9.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.9.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.9.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.9.8/manifests"},{"name":"v0.9.7","sha":"b79cd99b7b072b4db4248ea086dc9acb495ddf48","kind":"commit","published_at":"2015-11-30T20:10:48.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.9.7","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.9.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/cokelaer/easydev@v0.9.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.9.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags/v0.9.7/manifests"}]},"repo_metadata_updated_at":"2025-08-30T06:57:39.715Z","dependent_packages_count":15,"downloads":84834,"downloads_period":"last-month","dependent_repos_count":179,"rankings":{"downloads":1.3902978528660233,"dependent_repos_count":1.139163266084436,"dependent_packages_count":0.9594252224477647,"stargazers_count":16.57216770195815,"forks_count":15.37514976228814,"docker_downloads_count":1.1784447580183823,"average":6.1024414272771494},"purl":"pkg:pypi/easydev","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/easydev","docker_dependents_count":7,"docker_downloads_count":513,"usage_url":"https://repos.ecosyste.ms/usage/pypi/easydev","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/easydev/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-30T06:57:38.192Z","issues_count":22,"pull_requests_count":16,"avg_time_to_close_issue":10913111.363636363,"avg_time_to_close_pull_request":5004724.666666667,"issues_closed_count":22,"pull_requests_closed_count":15,"pull_request_authors_count":5,"issue_authors_count":9,"avg_comments_per_issue":0.7272727272727273,"avg_comments_per_pull_request":0.875,"merged_pull_requests_count":15,"bot_issues_count":0,"bot_pull_requests_count":8,"past_year_issues_count":0,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":10747108.666666666,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":3,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/issues","maintainers":[{"login":"cokelaer","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cokelaer"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/easydev/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/easydev/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/easydev/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/easydev/related_packages","maintainers":[{"uuid":"cokelaer","login":"cokelaer","name":null,"email":null,"url":null,"packages_count":50,"html_url":"https://pypi.org/user/cokelaer/","role":null,"created_at":"2023-02-24T03:21:37.055Z","updated_at":"2023-02-24T03:21:37.055Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/cokelaer/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726791,"maintainers_count":308893,"namespaces_count":0,"keywords_count":238369,"github":"pypi","metadata":{"funded_packages_count":50594},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-09T06:31:19.922Z","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":5284626,"name":"easydev","ecosystem":"conda","description":null,"homepage":"http://packages.python.org/easydev/","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/cokelaer/easydev","keywords_array":[],"namespace":null,"versions_count":7,"first_release_published_at":"2022-10-03T15:41:07.527Z","latest_release_published_at":"2021-11-16T09:01:14.000Z","latest_release_number":"0.12.0","last_synced_at":"2025-08-18T14:05:56.693Z","created_at":"2022-10-03T15:41:07.518Z","updated_at":"2025-08-18T14:05:56.693Z","registry_url":"https://anaconda.org/conda-forge/easydev","install_command":"conda install -c conda-forge easydev","documentation_url":null,"metadata":{},"repo_metadata":{"uuid":"23018351","full_name":"cokelaer/easydev","owner":"cokelaer","description":"Common utilities to ease the development of Python packages","archived":false,"fork":false,"pushed_at":"2023-02-01T22:38:17.000Z","size":374,"stargazers_count":10,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-03-21T10:50:01.356Z","etag":null,"topics":["logging","packages","profiling","progressbar","swapdict"],"latest_commit_sha":null,"homepage":"http://easydev-python.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"logo_url":null,"metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-16T13:18:41.000Z","updated_at":"2023-03-16T08:33:35.000Z","dependencies_parsed_at":"2023-02-17T11:45:32.217Z","dependency_job_id":null,"html_url":"https://github.com/cokelaer/easydev","commit_stats":null,"repository_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev","tags_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/tags","manifests_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/manifests","owner_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":108921946,"host_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names"},"owner_record":{"login":"cokelaer","name":"Thomas Cokelaer","uuid":"778821","kind":"user","description":"Bioinformatician, Scientific Software Developer, Python developer","email":"","website":"http://thomas-cokelaer.info/","location":"Paris, France","twitter":"ThomasCokelaer","company":"Institut Pasteur","avatar_url":"https://avatars.githubusercontent.com/u/778821?u=98261b55bf73d849b5087fff9327bb667f36f5ce\u0026v=4","repositories_count":23,"last_synced_at":"2023-02-25T01:10:28.225Z","metadata":{"has_sponsors_listing":false},"owner_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cokelaer"},"tags":[{"name":"v0.12.1","sha":"3ccace60b830ea0b55d345ecf23deb2b52e39f1b","kind":"commit","published_at":"2023-02-01T22:37:32.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.12.1","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.12.1"},{"name":"v0.12.0","sha":"a66254c74458dcc8d667a0bbc26b29951e839264","kind":"commit","published_at":"2021-09-09T16:00:23.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.12.0","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.12.0"},{"name":"v0.11.2","sha":"89fe33f80b6dc88b721421d004e42e9582c20e42","kind":"commit","published_at":"2021-08-25T20:14:43.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.11.2","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.11.2"},{"name":"v0.11.0","sha":"1c1ff16f44e127e6f365354b6f25ce2f341664d1","kind":"commit","published_at":"2021-02-06T17:44:15.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.11.0","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.11.0"},{"name":"v0.10.1","sha":"1b8299bc98c8cff7d7ffc3d0b6c6aeda07015d06","kind":"commit","published_at":"2020-09-11T15:54:15.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.10.1","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.10.1"},{"name":"0.9.38","sha":"2e79ae584e418056dd6da276a599c1f687156269","kind":"commit","published_at":"2019-08-23T08:53:30.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/0.9.38","html_url":"https://github.com/cokelaer/easydev/releases/tag/0.9.38"},{"name":"v0.9.9","sha":"c2d095e4b3b9f18b63682d8de10c5ba9ba2fef0c","kind":"commit","published_at":"2016-01-12T21:21:08.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.9.9","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.9.9"},{"name":"v0.9.8","sha":"e324a61fd725bf487f50f757de0e659a7437c99a","kind":"commit","published_at":"2016-01-12T21:03:33.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.9.8","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.9.8"},{"name":"v0.9.7","sha":"b79cd99b7b072b4db4248ea086dc9acb495ddf48","kind":"commit","published_at":"2015-11-30T20:10:48.000Z","download_url":"https://codeload.github.com/cokelaer/easydev/tar.gz/v0.9.7","html_url":"https://github.com/cokelaer/easydev/releases/tag/v0.9.7"}]},"repo_metadata_updated_at":"2023-03-22T07:24:18.872Z","dependent_packages_count":4,"downloads":null,"downloads_period":null,"dependent_repos_count":5,"rankings":{"downloads":null,"dependent_repos_count":14.736264284644943,"dependent_packages_count":12.495633514646439,"stargazers_count":54.8430560407206,"forks_count":59.12470682169769,"docker_downloads_count":null,"average":35.29991516542742},"purl":"pkg:conda/easydev","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/conda/easydev","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/conda/easydev","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/conda/easydev/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2023-08-09T02:57:12.204Z","issues_count":20,"pull_requests_count":2,"avg_time_to_close_issue":6658038.166666667,"avg_time_to_close_pull_request":103059.0,"issues_closed_count":18,"pull_requests_closed_count":2,"pull_request_authors_count":2,"issue_authors_count":7,"avg_comments_per_issue":0.6,"avg_comments_per_pull_request":1.5,"merged_pull_requests_count":2,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":180.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/easydev/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/easydev/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/easydev/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/easydev/related_packages","maintainers":[],"registry":{"name":"conda-forge.org","url":"https://conda-forge.org","ecosystem":"conda","default":false,"packages_count":20636,"maintainers_count":0,"namespaces_count":0,"keywords_count":13420,"github":"conda-forge","metadata":{"kind":"conda-forge","key":"CondaForge","api":"https://conda.anaconda.org","funded_packages_count":2190},"icon_url":"https://github.com/conda-forge.png","created_at":"2022-10-03T15:37:08.743Z","updated_at":"2025-09-09T06:53:47.128Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/namespaces"}}],"commits":{"id":27296,"full_name":"cokelaer/easydev","default_branch":"main","committers":[{"name":"Thomas Cokelaer","email":"cokelaer@gmail.com","login":null,"count":289},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":3},{"name":"Alexandre Detiste","email":"alexandre.detiste@gmail.com","login":null,"count":2},{"name":"Marc Gouw","email":"marc.gouw@embl.de","login":null,"count":1},{"name":"Thomas Cokelaer","email":"cokelaer@master2016pc4.sig.pasteur.fr","login":null,"count":1}],"total_commits":296,"total_committers":5,"total_bot_commits":3,"total_bot_committers":1,"mean_commits":59.2,"dds":0.023648648648648685,"past_year_committers":[{"name":"Thomas Cokelaer","email":"cokelaer@gmail.com","login":null,"count":18},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":3},{"name":"Alexandre Detiste","email":"alexandre.detiste@gmail.com","login":null,"count":2}],"past_year_total_commits":23,"past_year_total_committers":3,"past_year_total_bot_commits":3,"past_year_total_bot_committers":1,"past_year_mean_commits":7.666666666666667,"past_year_dds":0.21739130434782605,"last_synced_at":"2024-10-23T05:13:35.142Z","last_synced_commit":"5b83cc320dc7f8c9f898e178026f0b6f03d83b26","created_at":"2023-03-07T16:34:42.573Z","updated_at":"2024-10-23T05:13:35.143Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/cokelaer%2Feasydev/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-10T00:25:43.995Z","repositories_count":5542330,"commits_count":876473636,"contributors_count":32366993,"owners_count":919566,"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":null,"events":{"total":{"ReleaseEvent":1,"DeleteEvent":4,"IssueCommentEvent":2,"PushEvent":7,"PullRequestEvent":7,"ForkEvent":1,"CreateEvent":1},"last_year":{"ReleaseEvent":1,"DeleteEvent":4,"IssueCommentEvent":2,"PushEvent":7,"PullRequestEvent":7,"ForkEvent":1,"CreateEvent":1}},"keywords":["logging","packages","profiling","progressbar","swapdict"],"dependencies":[{"ecosystem":"pypi","filepath":"doc/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-25T01:31:14.413Z","updated_at":"2022-08-25T01:31:14.413Z","repository_link":"https://github.com/cokelaer/easydev/blob/main/doc/requirements.txt","dependencies":[{"id":2608481612,"package_name":"colorama","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2608481613,"package_name":"pexpect","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2608481614,"package_name":"mock","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2608481615,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/main.yml","sha":null,"kind":"manifest","created_at":"2023-02-17T11:45:32.146Z","updated_at":"2023-02-17T11:45:32.146Z","repository_link":"https://github.com/cokelaer/easydev/blob/main/.github/workflows/main.yml","dependencies":[{"id":7739678159,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7739678160,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pypi.yml","sha":null,"kind":"manifest","created_at":"2023-02-17T11:45:32.182Z","updated_at":"2023-02-17T11:45:32.182Z","repository_link":"https://github.com/cokelaer/easydev/blob/main/.github/workflows/pypi.yml","dependencies":[{"id":7739678164,"package_name":"actions/checkout","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false},{"id":7739678165,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7739678166,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2024-02-11T23:39:23.539Z","updated_at":"2024-02-11T23:39:23.539Z","repository_link":"https://github.com/cokelaer/easydev/blob/main/poetry.lock","dependencies":[{"id":16174969289,"package_name":"alabaster","ecosystem":"pypi","requirements":"0.7.13","direct":false,"kind":"develop","optional":false},{"id":16174969290,"package_name":"babel","ecosystem":"pypi","requirements":"2.14.0","direct":false,"kind":"develop","optional":false},{"id":16174969291,"package_name":"certifi","ecosystem":"pypi","requirements":"2024.2.2","direct":false,"kind":"develop","optional":false},{"id":16174969292,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.3.2","direct":false,"kind":"develop","optional":false},{"id":16174969293,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":16174969294,"package_name":"colorlog","ecosystem":"pypi","requirements":"6.8.2","direct":false,"kind":"runtime","optional":false},{"id":16174969295,"package_name":"coverage","ecosystem":"pypi","requirements":"6.5.0","direct":false,"kind":"develop","optional":false},{"id":16174969296,"package_name":"coveralls","ecosystem":"pypi","requirements":"3.3.1","direct":false,"kind":"develop","optional":false},{"id":16174969297,"package_name":"docopt","ecosystem":"pypi","requirements":"0.6.2","direct":false,"kind":"develop","optional":false},{"id":16174969298,"package_name":"docutils","ecosystem":"pypi","requirements":"0.20.1","direct":false,"kind":"develop","optional":false},{"id":16174969299,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":"develop","optional":false},{"id":16174969300,"package_name":"execnet","ecosystem":"pypi","requirements":"2.0.2","direct":false,"kind":"develop","optional":false},{"id":16174969301,"package_name":"flaky","ecosystem":"pypi","requirements":"3.7.0","direct":false,"kind":"develop","optional":false},{"id":16174969302,"package_name":"idna","ecosystem":"pypi","requirements":"3.6","direct":false,"kind":"develop","optional":false},{"id":16174969303,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"develop","optional":false},{"id":16174969304,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"7.0.1","direct":false,"kind":"develop","optional":false},{"id":16174969305,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":16174969306,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.3","direct":false,"kind":"develop","optional":false},{"id":16174969307,"package_name":"markupsafe","ecosystem":"pypi","requirements":"2.1.5","direct":false,"kind":"develop","optional":false},{"id":16174969308,"package_name":"mock","ecosystem":"pypi","requirements":"5.1.0","direct":false,"kind":"develop","optional":false},{"id":16174969309,"package_name":"packaging","ecosystem":"pypi","requirements":"23.2","direct":false,"kind":"develop","optional":false},{"id":16174969310,"package_name":"pexpect","ecosystem":"pypi","requirements":"4.9.0","direct":false,"kind":"runtime","optional":false},{"id":16174969311,"package_name":"pillow","ecosystem":"pypi","requirements":"10.2.0","direct":false,"kind":"develop","optional":false},{"id":16174969312,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":16174969313,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"develop","optional":false},{"id":16174969314,"package_name":"profiler","ecosystem":"pypi","requirements":"0.1.0","direct":false,"kind":"runtime","optional":false},{"id":16174969315,"package_name":"ptyprocess","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":16174969316,"package_name":"pygments","ecosystem":"pypi","requirements":"2.17.2","direct":false,"kind":"develop","optional":false},{"id":16174969317,"package_name":"pytest","ecosystem":"pypi","requirements":"7.4.4","direct":false,"kind":"develop","optional":false},{"id":16174969318,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":"develop","optional":false},{"id":16174969319,"package_name":"pytest-mock","ecosystem":"pypi","requirements":"3.12.0","direct":false,"kind":"develop","optional":false},{"id":16174969320,"package_name":"pytest-runner","ecosystem":"pypi","requirements":"6.0.1","direct":false,"kind":"develop","optional":false},{"id":16174969321,"package_name":"pytest-timeout","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"develop","optional":false},{"id":16174969322,"package_name":"pytest-xdist","ecosystem":"pypi","requirements":"3.5.0","direct":false,"kind":"develop","optional":false},{"id":16174969323,"package_name":"pytz","ecosystem":"pypi","requirements":"2024.1","direct":false,"kind":"develop","optional":false},{"id":16174969324,"package_name":"requests","ecosystem":"pypi","requirements":"2.31.0","direct":false,"kind":"develop","optional":false},{"id":16174969325,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"develop","optional":false},{"id":16174969326,"package_name":"sphinx","ecosystem":"pypi","requirements":"7.1.2","direct":false,"kind":"develop","optional":false},{"id":16174969327,"package_name":"sphinx-gallery","ecosystem":"pypi","requirements":"0.15.0","direct":false,"kind":"develop","optional":false},{"id":16174969328,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":16174969329,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"develop","optional":false},{"id":16174969330,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"1.0.2","direct":false,"kind":"develop","optional":false},{"id":16174969331,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"develop","optional":false},{"id":16174969332,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"develop","optional":false},{"id":16174969333,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"develop","optional":false},{"id":16174969334,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"1.0.3","direct":false,"kind":"develop","optional":false},{"id":16174969335,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"1.1.5","direct":false,"kind":"develop","optional":false},{"id":16174969336,"package_name":"tomli","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"develop","optional":false},{"id":16174969337,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"develop","optional":false},{"id":16174969338,"package_name":"zipp","ecosystem":"pypi","requirements":"3.17.0","direct":false,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-02-11T23:39:24.370Z","updated_at":"2024-02-11T23:39:24.370Z","repository_link":"https://github.com/cokelaer/easydev/blob/main/pyproject.toml","dependencies":[{"id":16174969339,"package_name":"python","ecosystem":"pypi","requirements":"^3.8","direct":true,"kind":"runtime","optional":false},{"id":16174969340,"package_name":"colorama","ecosystem":"pypi","requirements":"^0.4.6","direct":true,"kind":"runtime","optional":false},{"id":16174969341,"package_name":"colorlog","ecosystem":"pypi","requirements":"^6.8.2","direct":true,"kind":"runtime","optional":false},{"id":16174969342,"package_name":"pexpect","ecosystem":"pypi","requirements":"^4.9.0","direct":true,"kind":"runtime","optional":false},{"id":16174969343,"package_name":"platformdirs","ecosystem":"pypi","requirements":"^4.2.0","direct":true,"kind":"runtime","optional":false},{"id":16174969344,"package_name":"profiler","ecosystem":"pypi","requirements":"^0.1.0","direct":true,"kind":"runtime","optional":false},{"id":16174969345,"package_name":"pytest","ecosystem":"pypi","requirements":"^7.4.4","direct":true,"kind":"develop","optional":false},{"id":16174969346,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"^4.1.0","direct":true,"kind":"develop","optional":false},{"id":16174969347,"package_name":"pytest-xdist","ecosystem":"pypi","requirements":"^3.5.0","direct":true,"kind":"develop","optional":false},{"id":16174969348,"package_name":"pytest-mock","ecosystem":"pypi","requirements":"^3.12.0","direct":true,"kind":"develop","optional":false},{"id":16174969349,"package_name":"pytest-timeout","ecosystem":"pypi","requirements":"^2.2.0","direct":true,"kind":"develop","optional":false},{"id":16174969350,"package_name":"pytest-runner","ecosystem":"pypi","requirements":"^6.0.1","direct":true,"kind":"develop","optional":false},{"id":16174969351,"package_name":"coveralls","ecosystem":"pypi","requirements":"^3.3.1","direct":true,"kind":"develop","optional":false},{"id":16174969352,"package_name":"flaky","ecosystem":"pypi","requirements":"^3.7.0","direct":true,"kind":"develop","optional":false},{"id":16174969353,"package_name":"mock","ecosystem":"pypi","requirements":"^5.1.0","direct":true,"kind":"develop","optional":false},{"id":16174969354,"package_name":"sphinx","ecosystem":"pypi","requirements":"\u003e3","direct":true,"kind":"doc","optional":false},{"id":16174969355,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"^2.0.0","direct":true,"kind":"doc","optional":false},{"id":16174969356,"package_name":"sphinx-gallery","ecosystem":"pypi","requirements":"^0.15.0","direct":true,"kind":"doc","optional":false}]}],"score":15.5313370574097,"created_at":"2025-09-09T02:43:46.315Z","updated_at":"2025-10-07T08:42:07.755Z","avatar_url":"https://github.com/cokelaer.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":84834,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["projection","archival","generic","sequences","interactive","docstring","serializer","genomics","distribution","voxel"],"project_url":"https://science.ecosyste.ms/api/v1/projects/188584","html_url":"https://science.ecosyste.ms/projects/188584"}