{"id":80759,"name":null,"description":"🎨  Automated color contrast for text over images","url":"https://github.com/thibaudcolas/kontrasto","last_synced_at":"2025-09-08T21:53:24.336Z","repository":{"id":43224927,"uuid":"363797158","full_name":"thibaudcolas/kontrasto","owner":"thibaudcolas","description":"🎨  Automated color contrast for text over images","archived":false,"fork":false,"pushed_at":"2024-01-20T03:10:55.000Z","size":9958,"stargazers_count":29,"open_issues_count":13,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-31T06:31:51.615Z","etag":null,"topics":["color-thief","contrast-ratio","django","dominant-colors","numpy","pillow","wagtail","wcag2","wcag3"],"latest_commit_sha":null,"homepage":"https://kontrasto.netlify.app","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thibaudcolas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-03T02:27:27.000Z","updated_at":"2025-06-08T15:19:42.000Z","dependencies_parsed_at":"2024-10-23T07:32:49.222Z","dependency_job_id":null,"html_url":"https://github.com/thibaudcolas/kontrasto","commit_stats":{"total_commits":38,"total_committers":2,"mean_commits":19.0,"dds":0.1842105263157895,"last_synced_commit":"267397dce25d298ec03d720fd464dfc72e7d04fe"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thibaudcolas/kontrasto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas","download_url":"https://codeload.github.com/thibaudcolas/kontrasto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/sbom","scorecard":{"id":880940,"data":{"date":"2025-08-11","repo":{"name":"github.com/thibaudcolas/kontrasto","commit":"267397dce25d298ec03d720fd464dfc72e7d04fe"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"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":"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":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"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/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/planttrees.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"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/ci.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/planttrees.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/planttrees.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:41","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned","Info:   0 out of   1 npmCommand 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":"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 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":0,"reason":"34 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-qrpm-p2h7-hrv2","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-mv48-hcvh-8jj8","Warn: Project is vulnerable to: GHSA-353f-5xf4-qw67","Warn: Project is vulnerable to: GHSA-64vr-g452-qvp3","Warn: Project is vulnerable to: GHSA-9cwx-2883-4wfx","Warn: Project is vulnerable to: GHSA-vg6x-rcgg-rjx6","Warn: Project is vulnerable to: GHSA-x574-m823-4x7w","Warn: Project is vulnerable to: GHSA-4r4m-qw57-chr8","Warn: Project is vulnerable to: GHSA-xcj6-pq6g-qj4x","Warn: Project is vulnerable to: GHSA-356w-63v5-8wf4","Warn: Project is vulnerable to: GHSA-859w-5945-r5v3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2023-56 / GHSA-33pv-vcgh-jfg9","Warn: Project is vulnerable to: PYSEC-2023-55 / GHSA-5286-f2rf-35c2","Warn: Project is vulnerable to: PYSEC-2023-219 / GHSA-fc75-58r8-rm3h","Warn: Project is vulnerable to: PYSEC-2024-86 / GHSA-jmp3-39vp-fwg8","Warn: Project is vulnerable to: PYSEC-2021-103 / GHSA-xfrw-hxr5-ghqf","Warn: Project is vulnerable to: PYSEC-2022-13 / GHSA-xqxm-2rpm-3889","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6"],"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-24T08:10:18.365Z","repository_id":43224927,"created_at":"2025-08-24T08:10:18.365Z","updated_at":"2025-08-24T08:10:18.365Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231409,"owners_count":25245626,"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-08T02:00:09.813Z","response_time":121,"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":"thibaudcolas","name":"Thibaud Colas","uuid":"877585","kind":"user","description":"President @django, core team @wagtail, building things @torchbox. Accessibility \u0026 climate action – /tee-bo/","email":"","website":"https://thib.me/","location":"Cambridge, UK","twitter":"thibaud_colas","company":"@Torchbox","icon_url":"https://avatars.githubusercontent.com/u/877585?v=4","repositories_count":415,"last_synced_at":"2025-08-31T06:28:38.328Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/thibaudcolas","funding_links":[],"total_stars":813,"followers":575,"following":297,"created_at":"2022-11-03T21:50:14.726Z","updated_at":"2025-08-31T06:28:38.328Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas/repositories"},"packages":[{"id":2781278,"name":"kontrasto","ecosystem":"pypi","description":"🎨 Automated color contrast for text over images","homepage":"https://github.com/thibaudcolas/kontrasto","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/thibaudcolas/kontrasto","keywords_array":["kontrasto","color","colour","contrast","dominant colors","accessibility","a11y","wcag","apca"],"namespace":null,"versions_count":1,"first_release_published_at":"2021-05-03T08:22:50.000Z","latest_release_published_at":"2021-05-03T08:22:50.000Z","latest_release_number":"0.1.0","last_synced_at":"2025-09-04T17:34:43.942Z","created_at":"2022-04-10T11:25:53.245Z","updated_at":"2025-09-05T07:57:46.279Z","registry_url":"https://pypi.org/project/kontrasto/","install_command":"pip install kontrasto --index-url https://pypi.org/simple","documentation_url":"https://kontrasto.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 3 - Alpha","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Typing :: Typed"],"normalized_name":"kontrasto","project_status":null},"repo_metadata":{"id":43224927,"uuid":"363797158","full_name":"thibaudcolas/kontrasto","owner":"thibaudcolas","description":"🎨  Automated color contrast for text over images","archived":false,"fork":false,"pushed_at":"2024-01-20T03:10:55.000Z","size":9958,"stargazers_count":29,"open_issues_count":13,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-31T06:31:51.615Z","etag":null,"topics":["color-thief","contrast-ratio","django","dominant-colors","numpy","pillow","wagtail","wcag2","wcag3"],"latest_commit_sha":null,"homepage":"https://kontrasto.netlify.app","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thibaudcolas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-03T02:27:27.000Z","updated_at":"2025-06-08T15:19:42.000Z","dependencies_parsed_at":"2024-10-23T07:32:49.222Z","dependency_job_id":null,"html_url":"https://github.com/thibaudcolas/kontrasto","commit_stats":{"total_commits":38,"total_committers":2,"mean_commits":19.0,"dds":0.1842105263157895,"last_synced_commit":"267397dce25d298ec03d720fd464dfc72e7d04fe"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thibaudcolas/kontrasto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas","download_url":"https://codeload.github.com/thibaudcolas/kontrasto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/sbom","scorecard":{"id":880940,"data":{"date":"2025-08-11","repo":{"name":"github.com/thibaudcolas/kontrasto","commit":"267397dce25d298ec03d720fd464dfc72e7d04fe"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"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":"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":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"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/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/planttrees.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"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/ci.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/planttrees.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/thibaudcolas/kontrasto/planttrees.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:41","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned","Info:   0 out of   1 npmCommand 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":"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 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":0,"reason":"34 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-qrpm-p2h7-hrv2","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-mv48-hcvh-8jj8","Warn: Project is vulnerable to: GHSA-353f-5xf4-qw67","Warn: Project is vulnerable to: GHSA-64vr-g452-qvp3","Warn: Project is vulnerable to: GHSA-9cwx-2883-4wfx","Warn: Project is vulnerable to: GHSA-vg6x-rcgg-rjx6","Warn: Project is vulnerable to: GHSA-x574-m823-4x7w","Warn: Project is vulnerable to: GHSA-4r4m-qw57-chr8","Warn: Project is vulnerable to: GHSA-xcj6-pq6g-qj4x","Warn: Project is vulnerable to: GHSA-356w-63v5-8wf4","Warn: Project is vulnerable to: GHSA-859w-5945-r5v3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2023-56 / GHSA-33pv-vcgh-jfg9","Warn: Project is vulnerable to: PYSEC-2023-55 / GHSA-5286-f2rf-35c2","Warn: Project is vulnerable to: PYSEC-2023-219 / GHSA-fc75-58r8-rm3h","Warn: Project is vulnerable to: PYSEC-2024-86 / GHSA-jmp3-39vp-fwg8","Warn: Project is vulnerable to: PYSEC-2021-103 / GHSA-xfrw-hxr5-ghqf","Warn: Project is vulnerable to: PYSEC-2022-13 / GHSA-xqxm-2rpm-3889","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6"],"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-24T08:10:18.365Z","repository_id":43224927,"created_at":"2025-08-24T08:10:18.365Z","updated_at":"2025-08-24T08:10:18.365Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273728151,"owners_count":25157136,"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-05T02:00:09.113Z","response_time":402,"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":"thibaudcolas","name":"Thibaud Colas","uuid":"877585","kind":"user","description":"President @django, core team @wagtail, building things @torchbox. Accessibility \u0026 climate action – /tee-bo/","email":"","website":"https://thib.me/","location":"Cambridge, UK","twitter":"thibaud_colas","company":"@Torchbox","icon_url":"https://avatars.githubusercontent.com/u/877585?v=4","repositories_count":415,"last_synced_at":"2025-08-31T06:28:38.328Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/thibaudcolas","funding_links":[],"total_stars":813,"followers":575,"following":297,"created_at":"2022-11-03T21:50:14.726Z","updated_at":"2025-08-31T06:28:38.328Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas/repositories"},"tags":[{"name":"v0.1.0","sha":"0f76cf00cae5d2770125b826aaaca4f0832d065a","kind":"tag","published_at":"2021-12-02T22:12:01.000Z","download_url":"https://codeload.github.com/thibaudcolas/kontrasto/tar.gz/v0.1.0","html_url":"https://github.com/thibaudcolas/kontrasto/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thibaudcolas/kontrasto@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-09-05T07:57:46.279Z","dependent_packages_count":0,"downloads":26,"downloads_period":"last-month","dependent_repos_count":2,"rankings":{"downloads":75.58082595343876,"dependent_repos_count":11.909268754843684,"dependent_packages_count":7.406137391628379,"stargazers_count":12.896057219773969,"forks_count":16.97980072266279,"docker_downloads_count":null,"average":24.954418008469517},"purl":"pkg:pypi/kontrasto","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/kontrasto","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/kontrasto","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/kontrasto/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-21T14:50:38.462Z","issues_count":3,"pull_requests_count":24,"avg_time_to_close_issue":412105.0,"avg_time_to_close_pull_request":30191428.615384616,"issues_closed_count":1,"pull_requests_closed_count":13,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":0.6666666666666666,"avg_comments_per_pull_request":0.3333333333333333,"merged_pull_requests_count":3,"bot_issues_count":1,"bot_pull_requests_count":22,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/issues","maintainers":[{"login":"thibaudcolas","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thibaudcolas"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/kontrasto/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/kontrasto/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/kontrasto/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/kontrasto/related_packages","maintainers":[{"uuid":"thibaudcolas","login":"thibaudcolas","name":null,"email":null,"url":null,"packages_count":19,"html_url":"https://pypi.org/user/thibaudcolas/","role":null,"created_at":"2023-02-24T13:34:48.649Z","updated_at":"2023-02-24T13:34:48.649Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/thibaudcolas/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726290,"maintainers_count":308824,"namespaces_count":0,"keywords_count":238245,"github":"pypi","metadata":{"funded_packages_count":50579},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-08T05:32:36.857Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},{"id":1215371,"name":"kontrasto","ecosystem":"npm","description":"🎨 Automated color contrast for text over images","homepage":"https://github.com/thibaudcolas/kontrasto","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/thibaudcolas/kontrasto","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2021-05-13T04:02:46.144Z","latest_release_published_at":"2021-05-13T04:02:46.144Z","latest_release_number":"0.1.0","last_synced_at":"2025-08-21T13:47:43.650Z","created_at":"2022-04-08T13:54:48.995Z","updated_at":"2025-08-21T14:46:53.927Z","registry_url":"https://www.npmjs.com/package/kontrasto","install_command":"npm install kontrasto","documentation_url":null,"metadata":{"funding":null,"dist-tags":{"latest":"0.1.0"}},"repo_metadata":{"id":43224927,"uuid":"363797158","full_name":"thibaudcolas/kontrasto","owner":"thibaudcolas","description":"🎨  Automated color contrast for text over images","archived":false,"fork":false,"pushed_at":"2024-01-20T03:10:55.000Z","size":9958,"stargazers_count":29,"open_issues_count":13,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-09T09:38:28.899Z","etag":null,"topics":["color-thief","contrast-ratio","django","dominant-colors","numpy","pillow","wagtail","wcag2","wcag3"],"latest_commit_sha":null,"homepage":"https://kontrasto.netlify.app","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thibaudcolas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-03T02:27:27.000Z","updated_at":"2025-06-08T15:19:42.000Z","dependencies_parsed_at":"2024-10-23T07:32:49.222Z","dependency_job_id":null,"html_url":"https://github.com/thibaudcolas/kontrasto","commit_stats":{"total_commits":38,"total_committers":2,"mean_commits":19.0,"dds":0.1842105263157895,"last_synced_commit":"267397dce25d298ec03d720fd464dfc72e7d04fe"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thibaudcolas/kontrasto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas","download_url":"https://codeload.github.com/thibaudcolas/kontrasto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271497067,"owners_count":24769897,"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-21T02:00:08.990Z","response_time":74,"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":"thibaudcolas","name":"Thibaud Colas","uuid":"877585","kind":"user","description":"President @django, core team @wagtail, building things @torchbox. Accessibility \u0026 climate action – /tee-bo/","email":"","website":"https://thib.me/","location":"Cambridge, UK","twitter":"thibaud_colas","company":"@Torchbox","icon_url":"https://avatars.githubusercontent.com/u/877585?v=4","repositories_count":413,"last_synced_at":"2025-08-13T13:50:26.161Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/thibaudcolas","funding_links":[],"total_stars":812,"followers":573,"following":295,"created_at":"2022-11-03T21:50:14.726Z","updated_at":"2025-08-13T13:50:26.161Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thibaudcolas/repositories"},"tags":[{"name":"v0.1.0","sha":"0f76cf00cae5d2770125b826aaaca4f0832d065a","kind":"tag","published_at":"2021-12-02T22:12:01.000Z","download_url":"https://codeload.github.com/thibaudcolas/kontrasto/tar.gz/v0.1.0","html_url":"https://github.com/thibaudcolas/kontrasto/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thibaudcolas/kontrasto@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-08-21T14:46:53.927Z","dependent_packages_count":1,"downloads":2,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":63.728519809789105,"dependent_repos_count":10.7872356562335,"dependent_packages_count":21.380519734440238,"stargazers_count":7.797485904240825,"forks_count":9.13577469987571,"docker_downloads_count":null,"average":22.565907160915877},"purl":"pkg:npm/kontrasto","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/npm/kontrasto","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/npm/kontrasto","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/npm/kontrasto/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-10T14:12:20.077Z","issues_count":3,"pull_requests_count":24,"avg_time_to_close_issue":412105.0,"avg_time_to_close_pull_request":30191428.615384616,"issues_closed_count":1,"pull_requests_closed_count":13,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":0.6666666666666666,"avg_comments_per_pull_request":0.3333333333333333,"merged_pull_requests_count":3,"bot_issues_count":1,"bot_pull_requests_count":22,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/issues","maintainers":[{"login":"thibaudcolas","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thibaudcolas"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/kontrasto/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/kontrasto/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/kontrasto/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/kontrasto/related_packages","maintainers":[{"uuid":"thibaudcolas","login":"thibaudcolas","name":null,"email":"thibaudcolas@gmail.com","url":null,"packages_count":41,"html_url":"https://www.npmjs.com/~thibaudcolas","role":null,"created_at":"2022-11-10T18:10:14.936Z","updated_at":"2022-11-10T18:10:14.936Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/maintainers/thibaudcolas/packages"}],"registry":{"name":"npmjs.org","url":"https://registry.npmjs.org","ecosystem":"npm","default":true,"packages_count":5134724,"maintainers_count":1052545,"namespaces_count":313823,"keywords_count":730801,"github":"npm","metadata":{"funded_packages_count":155963},"icon_url":"https://github.com/npm.png","created_at":"2022-04-04T15:19:23.081Z","updated_at":"2025-09-08T06:45:00.340Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/namespaces"}}],"commits":{"id":104514,"full_name":"thibaudcolas/kontrasto","default_branch":"main","committers":[{"name":"Thibaud Colas","email":"thibaudcolas@gmail.com","login":"thibaudcolas","count":31},{"name":"Renovate Bot","email":"bot@renovateapp.com","login":"renovate-bot","count":7}],"total_commits":38,"total_committers":2,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":19.0,"dds":0.1842105263157895,"past_year_committers":[],"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2025-05-04T09:17:12.855Z","last_synced_commit":"267397dce25d298ec03d720fd464dfc72e7d04fe","created_at":"2023-03-07T21:50:41.500Z","updated_at":"2025-05-04T09:17:12.855Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:16.827Z","repositories_count":5492973,"commits_count":855737544,"contributors_count":31255717,"owners_count":912147,"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":"thibaudcolas/kontrasto","html_url":"https://github.com/thibaudcolas/kontrasto","last_synced_at":"2025-08-21T14:50:38.462Z","status":"error","issues_count":3,"pull_requests_count":24,"avg_time_to_close_issue":412105.0,"avg_time_to_close_pull_request":30191428.615384616,"issues_closed_count":1,"pull_requests_closed_count":13,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":0.6666666666666666,"avg_comments_per_pull_request":0.3333333333333333,"merged_pull_requests_count":3,"bot_issues_count":1,"bot_pull_requests_count":22,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-14T16:40:58.218Z","updated_at":"2025-08-31T22:22:08.423Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thibaudcolas%2Fkontrasto/issues","issue_labels_count":{"bug":1,"question":1},"pull_request_labels_count":{"enhancement":23},"issue_author_associations_count":{"NONE":3},"pull_request_author_associations_count":{"NONE":24,"OWNER":1},"issue_authors":{"p4535992":1,"Myndex":1,"renovate[bot]":1},"pull_request_authors":{"renovate[bot]":23,"thibaudcolas":1,"nimasmi":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:17.013Z","repositories_count":10172822,"issues_count":31938706,"pull_requests_count":100151698,"authors_count":10733238,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"thibaudcolas","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thibaudcolas"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":1},"last_year":{"WatchEvent":1}},"keywords":["color-thief","contrast-ratio","django","dominant-colors","numpy","pillow","wagtail","wcag2","wcag3"],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-01-23T10:01:09.333Z","updated_at":"2023-01-23T10:01:09.333Z","repository_link":"https://github.com/thibaudcolas/kontrasto/blob/main/requirements.txt","dependencies":[{"id":7113915548,"package_name":"wheel","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7113915550,"package_name":"wagtail","ecosystem":"pypi","requirements":"==2.13","direct":true,"kind":"runtime","optional":false},{"id":7113915560,"package_name":"django-vite","ecosystem":"pypi","requirements":"==1.1.0","direct":true,"kind":"runtime","optional":false},{"id":7113915568,"package_name":"black","ecosystem":"pypi","requirements":"==20.8b1","direct":true,"kind":"runtime","optional":false},{"id":7113915570,"package_name":"flake8","ecosystem":"pypi","requirements":"==3.9.2","direct":true,"kind":"runtime","optional":false},{"id":7113915615,"package_name":"mypy","ecosystem":"pypi","requirements":"==0.910","direct":true,"kind":"runtime","optional":false},{"id":7113915617,"package_name":"pytest","ecosystem":"pypi","requirements":"==6.2.4","direct":true,"kind":"runtime","optional":false},{"id":7113915619,"package_name":"coverage","ecosystem":"pypi","requirements":"==5.5","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-01-23T10:01:09.379Z","updated_at":"2023-01-23T10:01:09.379Z","repository_link":"https://github.com/thibaudcolas/kontrasto/blob/main/setup.py","dependencies":[{"id":7113916582,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-01-23T10:01:08.847Z","updated_at":"2023-01-23T10:01:08.847Z","repository_link":"https://github.com/thibaudcolas/kontrasto/blob/main/.github/workflows/ci.yml","dependencies":[{"id":7113914461,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7113914462,"package_name":"actions/setup-node","ecosystem":"actions","requirements":"v2-beta","direct":true,"kind":"composite","optional":false},{"id":7113914463,"package_name":"actions/cache","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7113914464,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/planttrees.yml","sha":null,"kind":"manifest","created_at":"2023-01-23T10:01:08.973Z","updated_at":"2023-01-23T10:01:08.973Z","repository_link":"https://github.com/thibaudcolas/kontrasto/blob/main/.github/workflows/planttrees.yml","dependencies":[{"id":7113914543,"package_name":"protontypes/continuous-reforestation","ecosystem":"actions","requirements":"main","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"npm","filepath":"package-lock.json","sha":null,"kind":"lockfile","created_at":"2023-01-23T10:01:09.152Z","updated_at":"2023-01-23T10:01:09.152Z","repository_link":"https://github.com/thibaudcolas/kontrasto/blob/main/package-lock.json","dependencies":[{"id":7113915070,"package_name":"@babel/code-frame","ecosystem":"npm","requirements":"7.12.11","direct":false,"kind":"development","optional":false},{"id":7113915071,"package_name":"@babel/helper-validator-identifier","ecosystem":"npm","requirements":"7.14.0","direct":false,"kind":"development","optional":false},{"id":7113915072,"package_name":"@babel/highlight","ecosystem":"npm","requirements":"7.14.0","direct":false,"kind":"development","optional":false},{"id":7113915073,"package_name":"ansi-styles","ecosystem":"npm","requirements":"3.2.1","direct":false,"kind":"development","optional":false},{"id":7113915074,"package_name":"chalk","ecosystem":"npm","requirements":"2.4.2","direct":false,"kind":"development","optional":false},{"id":7113915075,"package_name":"color-convert","ecosystem":"npm","requirements":"1.9.3","direct":false,"kind":"development","optional":false},{"id":7113915076,"package_name":"color-name","ecosystem":"npm","requirements":"1.1.3","direct":false,"kind":"development","optional":false},{"id":7113915077,"package_name":"has-flag","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915078,"package_name":"supports-color","ecosystem":"npm","requirements":"5.5.0","direct":false,"kind":"development","optional":false},{"id":7113915079,"package_name":"@eslint/eslintrc","ecosystem":"npm","requirements":"0.4.1","direct":false,"kind":"development","optional":false},{"id":7113915080,"package_name":"globals","ecosystem":"npm","requirements":"12.4.0","direct":false,"kind":"development","optional":false},{"id":7113915081,"package_name":"type-fest","ecosystem":"npm","requirements":"0.8.1","direct":false,"kind":"development","optional":false},{"id":7113915082,"package_name":"@fullhuman/postcss-purgecss","ecosystem":"npm","requirements":"3.1.3","direct":false,"kind":"development","optional":false},{"id":7113915083,"package_name":"@nodelib/fs.scandir","ecosystem":"npm","requirements":"2.1.4","direct":false,"kind":"development","optional":false},{"id":7113915084,"package_name":"@nodelib/fs.stat","ecosystem":"npm","requirements":"2.0.4","direct":false,"kind":"development","optional":false},{"id":7113915085,"package_name":"@nodelib/fs.walk","ecosystem":"npm","requirements":"1.2.6","direct":false,"kind":"development","optional":false},{"id":7113915086,"package_name":"@types/json-schema","ecosystem":"npm","requirements":"7.0.7","direct":false,"kind":"development","optional":false},{"id":7113915087,"package_name":"@typescript-eslint/eslint-plugin","ecosystem":"npm","requirements":"4.23.0","direct":false,"kind":"development","optional":false},{"id":7113915088,"package_name":"@typescript-eslint/experimental-utils","ecosystem":"npm","requirements":"4.23.0","direct":false,"kind":"development","optional":false},{"id":7113915089,"package_name":"@typescript-eslint/parser","ecosystem":"npm","requirements":"4.23.0","direct":false,"kind":"development","optional":false},{"id":7113915090,"package_name":"@typescript-eslint/scope-manager","ecosystem":"npm","requirements":"4.23.0","direct":false,"kind":"development","optional":false},{"id":7113915091,"package_name":"@typescript-eslint/types","ecosystem":"npm","requirements":"4.23.0","direct":false,"kind":"development","optional":false},{"id":7113915092,"package_name":"@typescript-eslint/typescript-estree","ecosystem":"npm","requirements":"4.23.0","direct":false,"kind":"development","optional":false},{"id":7113915093,"package_name":"@typescript-eslint/visitor-keys","ecosystem":"npm","requirements":"4.23.0","direct":false,"kind":"development","optional":false},{"id":7113915094,"package_name":"acorn","ecosystem":"npm","requirements":"7.4.1","direct":false,"kind":"development","optional":false},{"id":7113915095,"package_name":"acorn-jsx","ecosystem":"npm","requirements":"5.3.1","direct":false,"kind":"development","optional":false},{"id":7113915096,"package_name":"acorn-node","ecosystem":"npm","requirements":"1.8.2","direct":false,"kind":"development","optional":false},{"id":7113915097,"package_name":"acorn-walk","ecosystem":"npm","requirements":"7.2.0","direct":false,"kind":"development","optional":false},{"id":7113915098,"package_name":"ajv","ecosystem":"npm","requirements":"6.12.6","direct":false,"kind":"development","optional":false},{"id":7113915099,"package_name":"ansi-colors","ecosystem":"npm","requirements":"4.1.1","direct":false,"kind":"development","optional":false},{"id":7113915100,"package_name":"ansi-regex","ecosystem":"npm","requirements":"5.0.0","direct":false,"kind":"development","optional":false},{"id":7113915101,"package_name":"ansi-styles","ecosystem":"npm","requirements":"4.3.0","direct":false,"kind":"development","optional":false},{"id":7113915102,"package_name":"anymatch","ecosystem":"npm","requirements":"3.1.2","direct":false,"kind":"development","optional":false},{"id":7113915103,"package_name":"argparse","ecosystem":"npm","requirements":"1.0.10","direct":false,"kind":"development","optional":false},{"id":7113915104,"package_name":"array-union","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":7113915105,"package_name":"astral-regex","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":7113915106,"package_name":"at-least-node","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":7113915107,"package_name":"autoprefixer","ecosystem":"npm","requirements":"10.2.5","direct":false,"kind":"development","optional":false},{"id":7113915108,"package_name":"balanced-match","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":7113915109,"package_name":"binary-extensions","ecosystem":"npm","requirements":"2.2.0","direct":false,"kind":"development","optional":false},{"id":7113915110,"package_name":"brace-expansion","ecosystem":"npm","requirements":"1.1.11","direct":false,"kind":"development","optional":false},{"id":7113915111,"package_name":"braces","ecosystem":"npm","requirements":"3.0.2","direct":false,"kind":"development","optional":false},{"id":7113915112,"package_name":"browserslist","ecosystem":"npm","requirements":"4.16.6","direct":false,"kind":"development","optional":false},{"id":7113915113,"package_name":"bytes","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":7113915114,"package_name":"callsites","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":7113915115,"package_name":"camelcase-css","ecosystem":"npm","requirements":"2.0.1","direct":false,"kind":"development","optional":false},{"id":7113915116,"package_name":"caniuse-lite","ecosystem":"npm","requirements":"1.0.30001220","direct":false,"kind":"development","optional":false},{"id":7113915117,"package_name":"chalk","ecosystem":"npm","requirements":"4.1.1","direct":false,"kind":"development","optional":false},{"id":7113915118,"package_name":"chokidar","ecosystem":"npm","requirements":"3.5.1","direct":false,"kind":"development","optional":false},{"id":7113915119,"package_name":"color","ecosystem":"npm","requirements":"3.1.3","direct":false,"kind":"development","optional":false},{"id":7113915120,"package_name":"color-convert","ecosystem":"npm","requirements":"2.0.1","direct":false,"kind":"development","optional":false},{"id":7113915121,"package_name":"color-name","ecosystem":"npm","requirements":"1.1.4","direct":false,"kind":"development","optional":false},{"id":7113915122,"package_name":"color-string","ecosystem":"npm","requirements":"1.5.5","direct":false,"kind":"development","optional":false},{"id":7113915123,"package_name":"colorette","ecosystem":"npm","requirements":"1.2.2","direct":false,"kind":"development","optional":false},{"id":7113915124,"package_name":"commander","ecosystem":"npm","requirements":"6.2.1","direct":false,"kind":"development","optional":false},{"id":7113915125,"package_name":"concat-map","ecosystem":"npm","requirements":"0.0.1","direct":false,"kind":"development","optional":false},{"id":7113915126,"package_name":"cross-spawn","ecosystem":"npm","requirements":"7.0.3","direct":false,"kind":"development","optional":false},{"id":7113915127,"package_name":"css-unit-converter","ecosystem":"npm","requirements":"1.1.2","direct":false,"kind":"development","optional":false},{"id":7113915128,"package_name":"cssesc","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915129,"package_name":"debug","ecosystem":"npm","requirements":"4.3.1","direct":false,"kind":"development","optional":false},{"id":7113915130,"package_name":"deep-is","ecosystem":"npm","requirements":"0.1.3","direct":false,"kind":"development","optional":false},{"id":7113915131,"package_name":"defined","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":7113915132,"package_name":"detective","ecosystem":"npm","requirements":"5.2.0","direct":false,"kind":"development","optional":false},{"id":7113915133,"package_name":"didyoumean","ecosystem":"npm","requirements":"1.2.1","direct":false,"kind":"development","optional":false},{"id":7113915134,"package_name":"dir-glob","ecosystem":"npm","requirements":"3.0.1","direct":false,"kind":"development","optional":false},{"id":7113915135,"package_name":"dlv","ecosystem":"npm","requirements":"1.1.3","direct":false,"kind":"development","optional":false},{"id":7113915136,"package_name":"doctrine","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915137,"package_name":"electron-to-chromium","ecosystem":"npm","requirements":"1.3.725","direct":false,"kind":"development","optional":false},{"id":7113915138,"package_name":"emoji-regex","ecosystem":"npm","requirements":"8.0.0","direct":false,"kind":"development","optional":false},{"id":7113915139,"package_name":"enquirer","ecosystem":"npm","requirements":"2.3.6","direct":false,"kind":"development","optional":false},{"id":7113915140,"package_name":"esbuild","ecosystem":"npm","requirements":"0.9.7","direct":false,"kind":"development","optional":false},{"id":7113915141,"package_name":"escalade","ecosystem":"npm","requirements":"3.1.1","direct":false,"kind":"development","optional":false},{"id":7113915142,"package_name":"escape-string-regexp","ecosystem":"npm","requirements":"1.0.5","direct":false,"kind":"development","optional":false},{"id":7113915143,"package_name":"eslint","ecosystem":"npm","requirements":"7.26.0","direct":false,"kind":"development","optional":false},{"id":7113915144,"package_name":"eslint-scope","ecosystem":"npm","requirements":"5.1.1","direct":false,"kind":"development","optional":false},{"id":7113915145,"package_name":"eslint-utils","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":7113915146,"package_name":"eslint-visitor-keys","ecosystem":"npm","requirements":"1.3.0","direct":false,"kind":"development","optional":false},{"id":7113915147,"package_name":"eslint-visitor-keys","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":7113915148,"package_name":"espree","ecosystem":"npm","requirements":"7.3.1","direct":false,"kind":"development","optional":false},{"id":7113915149,"package_name":"esprima","ecosystem":"npm","requirements":"4.0.1","direct":false,"kind":"development","optional":false},{"id":7113915150,"package_name":"esquery","ecosystem":"npm","requirements":"1.4.0","direct":false,"kind":"development","optional":false},{"id":7113915151,"package_name":"estraverse","ecosystem":"npm","requirements":"5.2.0","direct":false,"kind":"development","optional":false},{"id":7113915152,"package_name":"esrecurse","ecosystem":"npm","requirements":"4.3.0","direct":false,"kind":"development","optional":false},{"id":7113915153,"package_name":"estraverse","ecosystem":"npm","requirements":"4.3.0","direct":false,"kind":"development","optional":false},{"id":7113915154,"package_name":"esutils","ecosystem":"npm","requirements":"2.0.3","direct":false,"kind":"development","optional":false},{"id":7113915155,"package_name":"fast-deep-equal","ecosystem":"npm","requirements":"3.1.3","direct":false,"kind":"development","optional":false},{"id":7113915156,"package_name":"fast-glob","ecosystem":"npm","requirements":"3.2.5","direct":false,"kind":"development","optional":false},{"id":7113915157,"package_name":"fast-json-stable-stringify","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":7113915158,"package_name":"fast-levenshtein","ecosystem":"npm","requirements":"2.0.6","direct":false,"kind":"development","optional":false},{"id":7113915159,"package_name":"fastq","ecosystem":"npm","requirements":"1.11.0","direct":false,"kind":"development","optional":false},{"id":7113915160,"package_name":"file-entry-cache","ecosystem":"npm","requirements":"6.0.1","direct":false,"kind":"development","optional":false},{"id":7113915161,"package_name":"fill-range","ecosystem":"npm","requirements":"7.0.1","direct":false,"kind":"development","optional":false},{"id":7113915162,"package_name":"flat-cache","ecosystem":"npm","requirements":"3.0.4","direct":false,"kind":"development","optional":false},{"id":7113915163,"package_name":"flatted","ecosystem":"npm","requirements":"3.1.1","direct":false,"kind":"development","optional":false},{"id":7113915164,"package_name":"fraction.js","ecosystem":"npm","requirements":"4.0.13","direct":false,"kind":"development","optional":false},{"id":7113915165,"package_name":"fs-extra","ecosystem":"npm","requirements":"9.1.0","direct":false,"kind":"development","optional":false},{"id":7113915166,"package_name":"fs.realpath","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":7113915167,"package_name":"fsevents","ecosystem":"npm","requirements":"2.3.2","direct":false,"kind":"development","optional":false},{"id":7113915168,"package_name":"function-bind","ecosystem":"npm","requirements":"1.1.1","direct":false,"kind":"development","optional":false},{"id":7113915169,"package_name":"functional-red-black-tree","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":7113915170,"package_name":"glob","ecosystem":"npm","requirements":"7.1.6","direct":false,"kind":"development","optional":false},{"id":7113915171,"package_name":"glob-base","ecosystem":"npm","requirements":"0.3.0","direct":false,"kind":"development","optional":false},{"id":7113915172,"package_name":"glob-parent","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":7113915173,"package_name":"is-extglob","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":7113915174,"package_name":"is-glob","ecosystem":"npm","requirements":"2.0.1","direct":false,"kind":"development","optional":false},{"id":7113915175,"package_name":"glob-parent","ecosystem":"npm","requirements":"5.1.2","direct":false,"kind":"development","optional":false},{"id":7113915176,"package_name":"globals","ecosystem":"npm","requirements":"13.8.0","direct":false,"kind":"development","optional":false},{"id":7113915177,"package_name":"globby","ecosystem":"npm","requirements":"11.0.3","direct":false,"kind":"development","optional":false},{"id":7113915178,"package_name":"ignore","ecosystem":"npm","requirements":"5.1.8","direct":false,"kind":"development","optional":false},{"id":7113915179,"package_name":"graceful-fs","ecosystem":"npm","requirements":"4.2.6","direct":false,"kind":"development","optional":false},{"id":7113915180,"package_name":"has","ecosystem":"npm","requirements":"1.0.3","direct":false,"kind":"development","optional":false},{"id":7113915181,"package_name":"has-flag","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":7113915182,"package_name":"html-tags","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":7113915183,"package_name":"ignore","ecosystem":"npm","requirements":"4.0.6","direct":false,"kind":"development","optional":false},{"id":7113915184,"package_name":"import-fresh","ecosystem":"npm","requirements":"3.3.0","direct":false,"kind":"development","optional":false},{"id":7113915185,"package_name":"imurmurhash","ecosystem":"npm","requirements":"0.1.4","direct":false,"kind":"development","optional":false},{"id":7113915186,"package_name":"inflight","ecosystem":"npm","requirements":"1.0.6","direct":false,"kind":"development","optional":false},{"id":7113915187,"package_name":"inherits","ecosystem":"npm","requirements":"2.0.4","direct":false,"kind":"development","optional":false},{"id":7113915188,"package_name":"is-arrayish","ecosystem":"npm","requirements":"0.3.2","direct":false,"kind":"development","optional":false},{"id":7113915189,"package_name":"is-binary-path","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":7113915190,"package_name":"is-core-module","ecosystem":"npm","requirements":"2.3.0","direct":false,"kind":"development","optional":false},{"id":7113915191,"package_name":"is-dotfile","ecosystem":"npm","requirements":"1.0.3","direct":false,"kind":"development","optional":false},{"id":7113915192,"package_name":"is-extglob","ecosystem":"npm","requirements":"2.1.1","direct":false,"kind":"development","optional":false},{"id":7113915193,"package_name":"is-fullwidth-code-point","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915194,"package_name":"is-glob","ecosystem":"npm","requirements":"4.0.1","direct":false,"kind":"development","optional":false},{"id":7113915195,"package_name":"is-number","ecosystem":"npm","requirements":"7.0.0","direct":false,"kind":"development","optional":false},{"id":7113915196,"package_name":"isexe","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":7113915197,"package_name":"js-tokens","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":7113915198,"package_name":"js-yaml","ecosystem":"npm","requirements":"3.14.1","direct":false,"kind":"development","optional":false},{"id":7113915199,"package_name":"json-schema-traverse","ecosystem":"npm","requirements":"0.4.1","direct":false,"kind":"development","optional":false},{"id":7113915200,"package_name":"json-stable-stringify-without-jsonify","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":7113915201,"package_name":"jsonfile","ecosystem":"npm","requirements":"6.1.0","direct":false,"kind":"development","optional":false},{"id":7113915202,"package_name":"levn","ecosystem":"npm","requirements":"0.4.1","direct":false,"kind":"development","optional":false},{"id":7113915203,"package_name":"lodash","ecosystem":"npm","requirements":"4.17.21","direct":false,"kind":"development","optional":false},{"id":7113915204,"package_name":"lodash.clonedeep","ecosystem":"npm","requirements":"4.5.0","direct":false,"kind":"development","optional":false},{"id":7113915205,"package_name":"lodash.toarray","ecosystem":"npm","requirements":"4.4.0","direct":false,"kind":"development","optional":false},{"id":7113915206,"package_name":"lodash.topath","ecosystem":"npm","requirements":"4.5.2","direct":false,"kind":"development","optional":false},{"id":7113915207,"package_name":"lodash.truncate","ecosystem":"npm","requirements":"4.4.2","direct":false,"kind":"development","optional":false},{"id":7113915208,"package_name":"lru-cache","ecosystem":"npm","requirements":"6.0.0","direct":false,"kind":"development","optional":false},{"id":7113915209,"package_name":"merge2","ecosystem":"npm","requirements":"1.4.1","direct":false,"kind":"development","optional":false},{"id":7113915210,"package_name":"micromatch","ecosystem":"npm","requirements":"4.0.4","direct":false,"kind":"development","optional":false},{"id":7113915211,"package_name":"minimatch","ecosystem":"npm","requirements":"3.0.4","direct":false,"kind":"development","optional":false},{"id":7113915212,"package_name":"minimist","ecosystem":"npm","requirements":"1.2.5","direct":false,"kind":"development","optional":false},{"id":7113915213,"package_name":"modern-normalize","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"development","optional":false},{"id":7113915214,"package_name":"ms","ecosystem":"npm","requirements":"2.1.2","direct":false,"kind":"development","optional":false},{"id":7113915215,"package_name":"nanoid","ecosystem":"npm","requirements":"3.1.22","direct":false,"kind":"development","optional":false},{"id":7113915216,"package_name":"natural-compare","ecosystem":"npm","requirements":"1.4.0","direct":false,"kind":"development","optional":false},{"id":7113915217,"package_name":"node-emoji","ecosystem":"npm","requirements":"1.10.0","direct":false,"kind":"development","optional":false},{"id":7113915218,"package_name":"node-releases","ecosystem":"npm","requirements":"1.1.71","direct":false,"kind":"development","optional":false},{"id":7113915219,"package_name":"normalize-path","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915220,"package_name":"normalize-range","ecosystem":"npm","requirements":"0.1.2","direct":false,"kind":"development","optional":false},{"id":7113915221,"package_name":"object-assign","ecosystem":"npm","requirements":"4.1.1","direct":false,"kind":"development","optional":false},{"id":7113915222,"package_name":"object-hash","ecosystem":"npm","requirements":"2.1.1","direct":false,"kind":"development","optional":false},{"id":7113915223,"package_name":"once","ecosystem":"npm","requirements":"1.4.0","direct":false,"kind":"development","optional":false},{"id":7113915224,"package_name":"optionator","ecosystem":"npm","requirements":"0.9.1","direct":false,"kind":"development","optional":false},{"id":7113915225,"package_name":"parent-module","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":7113915226,"package_name":"parse-glob","ecosystem":"npm","requirements":"3.0.4","direct":false,"kind":"development","optional":false},{"id":7113915227,"package_name":"path-is-absolute","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":7113915228,"package_name":"path-key","ecosystem":"npm","requirements":"3.1.1","direct":false,"kind":"development","optional":false},{"id":7113915229,"package_name":"path-parse","ecosystem":"npm","requirements":"1.0.6","direct":false,"kind":"development","optional":false},{"id":7113915230,"package_name":"path-type","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":7113915231,"package_name":"picomatch","ecosystem":"npm","requirements":"2.2.3","direct":false,"kind":"development","optional":false},{"id":7113915232,"package_name":"postcss","ecosystem":"npm","requirements":"8.2.13","direct":false,"kind":"development","optional":false},{"id":7113915233,"package_name":"postcss-functions","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915234,"package_name":"postcss","ecosystem":"npm","requirements":"6.0.23","direct":false,"kind":"development","optional":false},{"id":7113915235,"package_name":"postcss-value-parser","ecosystem":"npm","requirements":"3.3.1","direct":false,"kind":"development","optional":false},{"id":7113915236,"package_name":"postcss-js","ecosystem":"npm","requirements":"3.0.3","direct":false,"kind":"development","optional":false},{"id":7113915237,"package_name":"postcss-nested","ecosystem":"npm","requirements":"5.0.5","direct":false,"kind":"development","optional":false},{"id":7113915238,"package_name":"postcss-selector-parser","ecosystem":"npm","requirements":"6.0.5","direct":false,"kind":"development","optional":false},{"id":7113915239,"package_name":"postcss-value-parser","ecosystem":"npm","requirements":"4.1.0","direct":false,"kind":"development","optional":false},{"id":7113915240,"package_name":"prelude-ls","ecosystem":"npm","requirements":"1.2.1","direct":false,"kind":"development","optional":false},{"id":7113915241,"package_name":"prettier","ecosystem":"npm","requirements":"2.3.2","direct":false,"kind":"development","optional":false},{"id":7113915242,"package_name":"pretty-hrtime","ecosystem":"npm","requirements":"1.0.3","direct":false,"kind":"development","optional":false},{"id":7113915243,"package_name":"progress","ecosystem":"npm","requirements":"2.0.3","direct":false,"kind":"development","optional":false},{"id":7113915244,"package_name":"punycode","ecosystem":"npm","requirements":"2.1.1","direct":false,"kind":"development","optional":false},{"id":7113915245,"package_name":"purgecss","ecosystem":"npm","requirements":"3.1.3","direct":false,"kind":"development","optional":false},{"id":7113915246,"package_name":"queue-microtask","ecosystem":"npm","requirements":"1.2.3","direct":false,"kind":"development","optional":false},{"id":7113915247,"package_name":"quick-lru","ecosystem":"npm","requirements":"5.1.1","direct":false,"kind":"development","optional":false},{"id":7113915248,"package_name":"readdirp","ecosystem":"npm","requirements":"3.5.0","direct":false,"kind":"development","optional":false},{"id":7113915249,"package_name":"reduce-css-calc","ecosystem":"npm","requirements":"2.1.8","direct":false,"kind":"development","optional":false},{"id":7113915250,"package_name":"regexpp","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":7113915251,"package_name":"require-from-string","ecosystem":"npm","requirements":"2.0.2","direct":false,"kind":"development","optional":false},{"id":7113915252,"package_name":"resolve","ecosystem":"npm","requirements":"1.20.0","direct":false,"kind":"development","optional":false},{"id":7113915253,"package_name":"resolve-from","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":7113915254,"package_name":"reusify","ecosystem":"npm","requirements":"1.0.4","direct":false,"kind":"development","optional":false},{"id":7113915255,"package_name":"rimraf","ecosystem":"npm","requirements":"3.0.2","direct":false,"kind":"development","optional":false},{"id":7113915256,"package_name":"rollup","ecosystem":"npm","requirements":"2.46.0","direct":false,"kind":"development","optional":false},{"id":7113915257,"package_name":"run-parallel","ecosystem":"npm","requirements":"1.2.0","direct":false,"kind":"development","optional":false},{"id":7113915258,"package_name":"semver","ecosystem":"npm","requirements":"7.3.5","direct":false,"kind":"development","optional":false},{"id":7113915259,"package_name":"shebang-command","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":7113915260,"package_name":"shebang-regex","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915261,"package_name":"simple-swizzle","ecosystem":"npm","requirements":"0.2.2","direct":false,"kind":"development","optional":false},{"id":7113915262,"package_name":"slash","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":7113915263,"package_name":"slice-ansi","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":7113915264,"package_name":"source-map","ecosystem":"npm","requirements":"0.6.1","direct":false,"kind":"development","optional":false},{"id":7113915265,"package_name":"sprintf-js","ecosystem":"npm","requirements":"1.0.3","direct":false,"kind":"development","optional":false},{"id":7113915266,"package_name":"string-width","ecosystem":"npm","requirements":"4.2.2","direct":false,"kind":"development","optional":false},{"id":7113915267,"package_name":"strip-ansi","ecosystem":"npm","requirements":"6.0.0","direct":false,"kind":"development","optional":false},{"id":7113915268,"package_name":"strip-json-comments","ecosystem":"npm","requirements":"3.1.1","direct":false,"kind":"development","optional":false},{"id":7113915269,"package_name":"supports-color","ecosystem":"npm","requirements":"7.2.0","direct":false,"kind":"development","optional":false},{"id":7113915270,"package_name":"table","ecosystem":"npm","requirements":"6.7.0","direct":false,"kind":"development","optional":false},{"id":7113915271,"package_name":"ajv","ecosystem":"npm","requirements":"8.3.0","direct":false,"kind":"development","optional":false},{"id":7113915272,"package_name":"json-schema-traverse","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":7113915273,"package_name":"tailwindcss","ecosystem":"npm","requirements":"2.1.2","direct":false,"kind":"development","optional":false},{"id":7113915274,"package_name":"tailwindcss-rtl","ecosystem":"npm","requirements":"0.7.3","direct":false,"kind":"development","optional":false},{"id":7113915275,"package_name":"text-table","ecosystem":"npm","requirements":"0.2.0","direct":false,"kind":"development","optional":false},{"id":7113915276,"package_name":"to-regex-range","ecosystem":"npm","requirements":"5.0.1","direct":false,"kind":"development","optional":false},{"id":7113915277,"package_name":"tslib","ecosystem":"npm","requirements":"1.14.1","direct":false,"kind":"development","optional":false},{"id":7113915278,"package_name":"tsutils","ecosystem":"npm","requirements":"3.21.0","direct":false,"kind":"development","optional":false},{"id":7113915279,"package_name":"type-check","ecosystem":"npm","requirements":"0.4.0","direct":false,"kind":"development","optional":false},{"id":7113915280,"package_name":"type-fest","ecosystem":"npm","requirements":"0.20.2","direct":false,"kind":"development","optional":false},{"id":7113915281,"package_name":"typescript","ecosystem":"npm","requirements":"4.2.4","direct":false,"kind":"development","optional":false},{"id":7113915282,"package_name":"universalify","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":7113915283,"package_name":"uri-js","ecosystem":"npm","requirements":"4.4.1","direct":false,"kind":"development","optional":false},{"id":7113915284,"package_name":"util-deprecate","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":7113915285,"package_name":"v8-compile-cache","ecosystem":"npm","requirements":"2.3.0","direct":false,"kind":"development","optional":false},{"id":7113915286,"package_name":"vite","ecosystem":"npm","requirements":"2.2.4","direct":false,"kind":"development","optional":false},{"id":7113915287,"package_name":"which","ecosystem":"npm","requirements":"2.0.2","direct":false,"kind":"development","optional":false},{"id":7113915288,"package_name":"word-wrap","ecosystem":"npm","requirements":"1.2.3","direct":false,"kind":"development","optional":false},{"id":7113915289,"package_name":"wrappy","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":7113915290,"package_name":"xtend","ecosystem":"npm","requirements":"4.0.2","direct":false,"kind":"development","optional":false},{"id":7113915291,"package_name":"yallist","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false}]},{"ecosystem":"npm","filepath":"package.json","sha":null,"kind":"manifest","created_at":"2023-01-23T10:01:09.253Z","updated_at":"2023-01-23T10:01:09.253Z","repository_link":"https://github.com/thibaudcolas/kontrasto/blob/main/package.json","dependencies":[{"id":7113915322,"package_name":"@typescript-eslint/eslint-plugin","ecosystem":"npm","requirements":"^4.23.0","direct":true,"kind":"development","optional":false},{"id":7113915323,"package_name":"@typescript-eslint/parser","ecosystem":"npm","requirements":"^4.23.0","direct":true,"kind":"development","optional":false},{"id":7113915324,"package_name":"autoprefixer","ecosystem":"npm","requirements":"^10.2.5","direct":true,"kind":"development","optional":false},{"id":7113915325,"package_name":"eslint","ecosystem":"npm","requirements":"^7.26.0","direct":true,"kind":"development","optional":false},{"id":7113915326,"package_name":"prettier","ecosystem":"npm","requirements":"2.3.2","direct":true,"kind":"development","optional":false},{"id":7113915327,"package_name":"tailwindcss","ecosystem":"npm","requirements":"^2.1.2","direct":true,"kind":"development","optional":false},{"id":7113915328,"package_name":"tailwindcss-rtl","ecosystem":"npm","requirements":"^0.7.3","direct":true,"kind":"development","optional":false},{"id":7113915329,"package_name":"typescript","ecosystem":"npm","requirements":"^4.2.3","direct":true,"kind":"development","optional":false},{"id":7113915330,"package_name":"vite","ecosystem":"npm","requirements":"^2.2.3","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-10-23T20:34:22.301Z","updated_at":"2023-10-23T20:34:22.301Z","repository_link":"https://github.com/thibaudcolas/kontrasto/blob/main/pyproject.toml","dependencies":[]}],"score":7.927324360309794,"created_at":"2025-09-08T21:00:51.825Z","updated_at":"2025-10-07T08:28:27.784Z","avatar_url":"https://github.com/thibaudcolas.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":28,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/80759","html_url":"https://science.ecosyste.ms/projects/80759"}