{"id":371614,"url":"https://github.com/peterbe/premailer","last_synced_at":"2026-08-25T14:03:45.599Z","repository":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1084,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-08-14T10:54:25.858Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-08-07T17:14:25.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36646944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-14T02:00:06.934Z","response_time":54,"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":"peterbe","name":"Peter Bengtsson","uuid":"26739","kind":"user","description":"Full-stack web dev working on GitHub Docs. Formerly Mozilla, MDN. \r\nLoves Python, PWAs, Postgres, Node, Search, and wants to learn everything. \r\n","email":"","website":"https://www.peterbe.com","location":"South Carolina, USA","twitter":"peterbe","company":"GitHub","icon_url":"https://avatars.githubusercontent.com/u/26739?u=511ab747cb7c4bb783cf3f6ff1185c29b16bb376\u0026v=4","repositories_count":280,"last_synced_at":"2024-04-13T00:13:52.471Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/peterbe","funding_links":[],"total_stars":4797,"followers":1152,"following":111,"created_at":"2022-11-02T17:41:54.635Z","updated_at":"2024-04-13T00:14:28.670Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe/repositories"},"packages":[{"id":14154804,"name":"python313Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-03-31T07:49:43.616Z","latest_release_published_at":"2026-03-31T07:49:43.616Z","latest_release_number":"3.10.0","last_synced_at":"2026-03-31T07:49:43.964Z","created_at":"2026-03-31T07:49:43.504Z","updated_at":"2026-08-14T12:50:04.307Z","registry_url":"https://search.nixos.org/packages?channel=unstable\u0026query=python313Packages.premailer","install_command":"nix-env -iA nixpkgs.python313Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/python-modules/premailer/default.nix#L39","metadata":{"nix_attribute":"python3.13-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:39","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","aarch64-darwin","aarch64-windows","x86_64-windows","i686-windows","i686-freebsd","x86_64-freebsd","aarch64-freebsd"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.306Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python313Packages.premailer?channel=unstable","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python313Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python313Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python313Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python313Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python313Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python313Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python313Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python313Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python313Packages.premailer/codemeta","maintainers":[{"uuid":"linsui","login":null,"name":"linsui","email":"linsui555@gmail.com","url":"https://github.com/linsui","packages_count":42,"html_url":null,"role":null,"created_at":"2026-03-31T07:49:44.656Z","updated_at":"2026-03-31T07:49:44.656Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/maintainers/linsui/packages"}],"registry":{"name":"nixpkgs-unstable","url":"https://channels.nixos.org/nixos-unstable","ecosystem":"nixpkgs","default":true,"packages_count":153806,"maintainers_count":4905,"namespaces_count":0,"keywords_count":3257,"github":"NixOS","metadata":{"funded_packages_count":5996},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:52.762Z","updated_at":"2026-08-24T05:00:11.845Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/namespaces"}},{"id":12830766,"name":"python311Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes ","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-01-26T19:52:15.432Z","latest_release_published_at":"2026-01-26T19:52:15.432Z","latest_release_number":"3.10.0","last_synced_at":"2026-04-14T13:00:20.683Z","created_at":"2026-01-26T19:52:15.283Z","updated_at":"2026-08-14T12:50:04.235Z","registry_url":"https://search.nixos.org/packages?channel=23.05\u0026query=python311Packages.premailer","install_command":"nix-env -iA nixpkgs.python311Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/development/python-modules/premailer/default.nix#L19","metadata":{"nix_attribute":"python3.11-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:19","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mipsel-linux","mips64el-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","i686-darwin","aarch64-darwin","armv7a-darwin"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.235Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python311Packages.premailer?channel=23.05\u0026repository_url=https://channels.nixos.org/nixos-23.05","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python311Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python311Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python311Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python311Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python311Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python311Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python311Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python311Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python311Packages.premailer/codemeta","maintainers":[],"registry":{"name":"nixpkgs-23.05","url":"https://channels.nixos.org/nixos-23.05","ecosystem":"nixpkgs","default":false,"packages_count":101092,"maintainers_count":2622,"namespaces_count":0,"keywords_count":613,"github":"NixOS","metadata":{"funded_packages_count":2146},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:53.882Z","updated_at":"2026-08-24T05:04:28.515Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/namespaces"}},{"id":13305584,"name":"python311Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes ","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-02-02T07:03:17.019Z","latest_release_published_at":"2026-02-02T07:03:17.019Z","latest_release_number":"3.10.0","last_synced_at":"2026-03-07T10:35:41.150Z","created_at":"2026-02-02T07:03:16.301Z","updated_at":"2026-08-14T12:50:04.256Z","registry_url":"https://search.nixos.org/packages?channel=23.11\u0026query=python311Packages.premailer","install_command":"nix-env -iA nixpkgs.python311Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/development/python-modules/premailer/default.nix#L19","metadata":{"nix_attribute":"python3.11-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:19","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","i686-darwin","aarch64-darwin","armv7a-darwin","i686-cygwin","x86_64-cygwin","x86_64-windows","i686-windows"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.256Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python311Packages.premailer?channel=23.11\u0026repository_url=https://channels.nixos.org/nixos-23.11","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python311Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python311Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python311Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python311Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python311Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python311Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python311Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python311Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python311Packages.premailer/codemeta","maintainers":[],"registry":{"name":"nixpkgs-23.11","url":"https://channels.nixos.org/nixos-23.11","ecosystem":"nixpkgs","default":false,"packages_count":108178,"maintainers_count":2997,"namespaces_count":0,"keywords_count":569,"github":"NixOS","metadata":{"funded_packages_count":3080},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:53.577Z","updated_at":"2026-08-24T05:04:51.596Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/namespaces"}},{"id":13297920,"name":"python310Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes ","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-02-02T06:32:24.832Z","latest_release_published_at":"2026-02-02T06:32:24.832Z","latest_release_number":"3.10.0","last_synced_at":"2026-04-10T23:01:22.223Z","created_at":"2026-02-02T06:32:23.394Z","updated_at":"2026-08-14T12:50:04.305Z","registry_url":"https://search.nixos.org/packages?channel=23.11\u0026query=python310Packages.premailer","install_command":"nix-env -iA nixpkgs.python310Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/development/python-modules/premailer/default.nix#L19","metadata":{"nix_attribute":"python3.10-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:19","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","i686-darwin","aarch64-darwin","armv7a-darwin","i686-cygwin","x86_64-cygwin","x86_64-windows","i686-windows"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.304Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python310Packages.premailer?channel=23.11\u0026repository_url=https://channels.nixos.org/nixos-23.11","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python310Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python310Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python310Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python310Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python310Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python310Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python310Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python310Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages/python310Packages.premailer/codemeta","maintainers":[],"registry":{"name":"nixpkgs-23.11","url":"https://channels.nixos.org/nixos-23.11","ecosystem":"nixpkgs","default":false,"packages_count":108178,"maintainers_count":2997,"namespaces_count":0,"keywords_count":569,"github":"NixOS","metadata":{"funded_packages_count":3080},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:53.577Z","updated_at":"2026-08-24T05:04:51.596Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.11/namespaces"}},{"id":13197621,"name":"python311Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes ","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-02-02T00:35:27.060Z","latest_release_published_at":"2026-02-02T00:35:27.060Z","latest_release_number":"3.10.0","last_synced_at":"2026-05-11T17:12:01.383Z","created_at":"2026-02-02T00:35:09.071Z","updated_at":"2026-08-14T12:50:04.312Z","registry_url":"https://search.nixos.org/packages?channel=24.05\u0026query=python311Packages.premailer","install_command":"nix-env -iA nixpkgs.python311Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/development/python-modules/premailer/default.nix#L39","metadata":{"nix_attribute":"python3.11-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:39","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","i686-darwin","aarch64-darwin","armv7a-darwin","i686-cygwin","x86_64-cygwin","x86_64-windows","i686-windows"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.312Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python311Packages.premailer?channel=24.05\u0026repository_url=https://channels.nixos.org/nixos-24.05","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python311Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python311Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python311Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python311Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python311Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python311Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python311Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python311Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python311Packages.premailer/codemeta","maintainers":[],"registry":{"name":"nixpkgs-24.05","url":"https://channels.nixos.org/nixos-24.05","ecosystem":"nixpkgs","default":false,"packages_count":116156,"maintainers_count":3383,"namespaces_count":0,"keywords_count":654,"github":"NixOS","metadata":{"funded_packages_count":3165},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:53.309Z","updated_at":"2026-08-24T05:01:24.965Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/namespaces"}},{"id":13205884,"name":"python312Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes ","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-02-02T01:04:12.848Z","latest_release_published_at":"2026-02-02T01:04:12.848Z","latest_release_number":"3.10.0","last_synced_at":"2026-05-19T16:11:39.957Z","created_at":"2026-02-02T01:04:10.893Z","updated_at":"2026-08-14T12:50:04.370Z","registry_url":"https://search.nixos.org/packages?channel=24.05\u0026query=python312Packages.premailer","install_command":"nix-env -iA nixpkgs.python312Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/development/python-modules/premailer/default.nix#L39","metadata":{"nix_attribute":"python3.12-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:39","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","i686-darwin","aarch64-darwin","armv7a-darwin","i686-cygwin","x86_64-cygwin","x86_64-windows","i686-windows"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.369Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python312Packages.premailer?channel=24.05\u0026repository_url=https://channels.nixos.org/nixos-24.05","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python312Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python312Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python312Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python312Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python312Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python312Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python312Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python312Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages/python312Packages.premailer/codemeta","maintainers":[],"registry":{"name":"nixpkgs-24.05","url":"https://channels.nixos.org/nixos-24.05","ecosystem":"nixpkgs","default":false,"packages_count":116156,"maintainers_count":3383,"namespaces_count":0,"keywords_count":654,"github":"NixOS","metadata":{"funded_packages_count":3165},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:53.309Z","updated_at":"2026-08-24T05:01:24.965Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.05/namespaces"}},{"id":14154820,"name":"python314Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-03-31T07:50:04.768Z","latest_release_published_at":"2026-03-31T07:50:04.768Z","latest_release_number":"3.10.0","last_synced_at":"2026-03-31T07:50:04.909Z","created_at":"2026-03-31T07:50:04.678Z","updated_at":"2026-08-14T12:50:04.416Z","registry_url":"https://search.nixos.org/packages?channel=unstable\u0026query=python314Packages.premailer","install_command":"nix-env -iA nixpkgs.python314Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/python-modules/premailer/default.nix#L39","metadata":{"nix_attribute":"python3.14-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:39","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","aarch64-darwin","aarch64-windows","x86_64-windows","i686-windows","i686-freebsd","x86_64-freebsd","aarch64-freebsd"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.416Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python314Packages.premailer?channel=unstable","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python314Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python314Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python314Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python314Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python314Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python314Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python314Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python314Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/python314Packages.premailer/codemeta","maintainers":[{"uuid":"linsui","login":null,"name":"linsui","email":"linsui555@gmail.com","url":"https://github.com/linsui","packages_count":42,"html_url":null,"role":null,"created_at":"2026-03-31T07:50:05.361Z","updated_at":"2026-03-31T07:50:05.361Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/maintainers/linsui/packages"}],"registry":{"name":"nixpkgs-unstable","url":"https://channels.nixos.org/nixos-unstable","ecosystem":"nixpkgs","default":true,"packages_count":153806,"maintainers_count":4905,"namespaces_count":0,"keywords_count":3257,"github":"NixOS","metadata":{"funded_packages_count":5996},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:52.762Z","updated_at":"2026-08-24T05:00:11.845Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/namespaces"}},{"id":12818334,"name":"python310Packages.premailer","ecosystem":"nixpkgs","description":"Turns CSS blocks into style attributes ","homepage":"https://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["python"],"namespace":null,"versions_count":1,"first_release_published_at":"2026-01-26T17:38:23.865Z","latest_release_published_at":"2026-01-26T17:38:23.865Z","latest_release_number":"3.10.0","last_synced_at":"2026-04-18T07:04:53.677Z","created_at":"2026-01-26T17:38:23.707Z","updated_at":"2026-08-14T12:50:04.476Z","registry_url":"https://search.nixos.org/packages?channel=23.05\u0026query=python310Packages.premailer","install_command":"nix-env -iA nixpkgs.python310Packages.premailer","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/development/python-modules/premailer/default.nix#L19","metadata":{"nix_attribute":"python3.10-premailer-3.10.0","position":"pkgs/development/python-modules/premailer/default.nix:19","platforms":["aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mipsel-linux","mips64el-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","x86_64-darwin","i686-darwin","aarch64-darwin","armv7a-darwin"],"broken":false,"insecure":false,"unfree":false,"outputs":["dist","out"],"upstream_ecosystem":"pypi","upstream_name":"premailer","upstream_purl":"pkg:pypi/premailer"},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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"}},"repo_metadata_updated_at":"2026-08-14T12:50:04.476Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/python310Packages.premailer?channel=23.05\u0026repository_url=https://channels.nixos.org/nixos-23.05","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/python310Packages.premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/python310Packages.premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/python310Packages.premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python310Packages.premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python310Packages.premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python310Packages.premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python310Packages.premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python310Packages.premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages/python310Packages.premailer/codemeta","maintainers":[],"registry":{"name":"nixpkgs-23.05","url":"https://channels.nixos.org/nixos-23.05","ecosystem":"nixpkgs","default":false,"packages_count":101092,"maintainers_count":2622,"namespaces_count":0,"keywords_count":613,"github":"NixOS","metadata":{"funded_packages_count":2146},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:53.882Z","updated_at":"2026-08-24T05:04:28.515Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-23.05/namespaces"}},{"id":5290014,"name":"premailer","ecosystem":"conda","description":null,"homepage":"http://github.com/peterbe/premailer","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":[],"namespace":null,"versions_count":8,"first_release_published_at":"2022-10-03T15:48:35.351Z","latest_release_published_at":"2021-10-10T21:53:57.000Z","latest_release_number":"3.10.0","last_synced_at":"2026-03-26T05:26:44.265Z","created_at":"2022-10-03T15:48:35.345Z","updated_at":"2026-08-14T12:50:04.492Z","registry_url":"https://anaconda.org/conda-forge/premailer","install_command":"conda install -c conda-forge premailer","documentation_url":null,"metadata":{},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1085,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-07-23T14:20:40.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-05-29T08:04:59.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36328363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"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":"peterbe","name":"Peter Bengtsson","uuid":"26739","kind":"user","description":"Full-stack web dev working on GitHub Docs. Formerly Mozilla, MDN. \r\nLoves Python, PWAs, Postgres, Node, Search, and wants to learn everything. \r\n","email":"","website":"https://www.peterbe.com","location":"South Carolina, USA","twitter":"peterbe","company":"GitHub","icon_url":"https://avatars.githubusercontent.com/u/26739?u=511ab747cb7c4bb783cf3f6ff1185c29b16bb376\u0026v=4","repositories_count":280,"last_synced_at":"2024-04-13T00:13:52.471Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/peterbe","funding_links":[],"total_stars":4797,"followers":1152,"following":111,"created_at":"2022-11-02T17:41:54.635Z","updated_at":"2024-04-13T00:14:28.670Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-08-14T12:50:04.492Z","dependent_packages_count":1,"downloads":null,"downloads_period":null,"dependent_repos_count":1,"rankings":{"downloads":null,"dependent_repos_count":24.412395828135136,"dependent_packages_count":28.988472478666598,"stargazers_count":12.53555566645042,"forks_count":13.324018164579071,"docker_downloads_count":null,"average":19.815110534457805},"purl":"pkg:conda/premailer?repository_url=https://conda-forge.org","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/conda/premailer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/conda/premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/conda/premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/premailer/codemeta","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":13549,"github":"conda-forge","metadata":{"kind":"conda-forge","key":"CondaForge","api":"https://conda.anaconda.org","funded_packages_count":2348},"icon_url":"https://github.com/conda-forge.png","created_at":"2022-10-03T15:37:08.743Z","updated_at":"2026-08-23T05:06:09.364Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/namespaces"}},{"id":2858475,"name":"premailer","ecosystem":"pypi","description":"Turns CSS blocks into style attributes","homepage":"http://github.com/peterbe/premailer","licenses":"Python","normalized_licenses":["Python-2.0"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["html","lxml","email","mail","style"],"namespace":null,"versions_count":66,"first_release_published_at":"2009-07-15T13:16:14.000Z","latest_release_published_at":"2021-08-02T20:32:52.000Z","latest_release_number":"3.10.0","last_synced_at":"2026-08-24T13:34:19.947Z","created_at":"2022-04-10T12:06:17.181Z","updated_at":"2026-08-24T13:34:19.948Z","registry_url":"https://pypi.org/project/premailer/","install_command":"pip install premailer --index-url https://pypi.org/simple","documentation_url":"https://premailer.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Environment :: Other Environment","Environment :: Web Environment","Intended Audience :: Developers","License :: OSI Approved :: Python Software Foundation License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.5","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Communications","Topic :: Internet :: WWW/HTTP","Topic :: Other/Nonlisted Topic","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"premailer","project_status":null},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1084,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-08-14T10:54:25.858Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-08-07T17:14:25.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36646944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-14T02:00:06.934Z","response_time":54,"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":"peterbe","name":"Peter Bengtsson","uuid":"26739","kind":"user","description":"Full-stack web dev working on GitHub Docs. Formerly Mozilla, MDN. \r\nLoves Python, PWAs, Postgres, Node, Search, and wants to learn everything. \r\n","email":"","website":"https://www.peterbe.com","location":"South Carolina, USA","twitter":"peterbe","company":"GitHub","icon_url":"https://avatars.githubusercontent.com/u/26739?u=511ab747cb7c4bb783cf3f6ff1185c29b16bb376\u0026v=4","repositories_count":280,"last_synced_at":"2024-04-13T00:13:52.471Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/peterbe","funding_links":[],"total_stars":4797,"followers":1152,"following":111,"created_at":"2022-11-02T17:41:54.635Z","updated_at":"2024-04-13T00:14:28.670Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-08-23T14:40:15.108Z","dependent_packages_count":41,"downloads":4975573,"downloads_period":"last-month","dependent_repos_count":1333,"rankings":{"downloads":0.3531836878152578,"dependent_repos_count":0.3125267167596014,"dependent_packages_count":0.4227281449549058,"stargazers_count":2.0011209164917214,"forks_count":3.70690621751516,"docker_downloads_count":0.9062324856798168,"average":1.283783028202744},"purl":"pkg:pypi/premailer","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/premailer","docker_dependents_count":111,"docker_downloads_count":401337,"usage_url":"https://repos.ecosyste.ms/usage/pypi/premailer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/premailer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-08-23T13:03:23.445Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer/codemeta","maintainers":[{"uuid":"peterbe","login":"peterbe","name":null,"email":null,"url":null,"packages_count":40,"html_url":"https://pypi.org/user/peterbe/","role":null,"created_at":"2022-12-07T20:16:31.196Z","updated_at":"2022-12-07T20:16:31.196Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/peterbe/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":930488,"maintainers_count":399697,"namespaces_count":0,"keywords_count":311773,"github":"pypi","metadata":{"funded_packages_count":58574,"rate_limit":2},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-08-24T05:05:47.334Z","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":2858467,"name":"premailer_cspw","ecosystem":"pypi","description":"Turns CSS blocks into style attributes","homepage":"http://github.com/peterbe/premailer","licenses":"Python","normalized_licenses":["Python-2.0"],"repository_url":"https://github.com/peterbe/premailer","keywords_array":["html","lxml","email","mail","style"],"namespace":null,"versions_count":1,"first_release_published_at":"2013-08-07T15:48:08.000Z","latest_release_published_at":"2013-08-07T15:48:08.000Z","latest_release_number":"1.2.2","last_synced_at":"2026-08-24T13:39:32.404Z","created_at":"2022-04-10T12:06:16.956Z","updated_at":"2026-08-24T13:39:32.404Z","registry_url":"https://pypi.org/project/premailer_cspw/","install_command":"pip install premailer_cspw --index-url https://pypi.org/simple","documentation_url":"https://premailer_cspw.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Environment :: Other Environment","Environment :: Web Environment","Intended Audience :: Developers","License :: OSI Approved :: Python Software Foundation License","Operating System :: OS Independent","Programming Language :: Python","Topic :: Communications","Topic :: Internet :: WWW/HTTP","Topic :: Other/Nonlisted Topic","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"premailer-cspw","project_status":null},"repo_metadata":{"id":613604,"uuid":"251729","full_name":"peterbe/premailer","owner":"peterbe","description":"Turns CSS blocks into style attributes","archived":false,"fork":false,"pushed_at":"2023-12-16T17:54:12.000Z","size":636,"stargazers_count":1084,"open_issues_count":73,"forks_count":185,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-08-14T10:54:25.858Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://premailer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zeebo/gostbook","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterbe.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2009-07-15T10:59:28.000Z","updated_at":"2026-08-07T17:14:25.000Z","dependencies_parsed_at":"2024-01-17T08:44:49.124Z","dependency_job_id":"fa1b4623-714c-41ca-aed8-e1d03fc79079","html_url":"https://github.com/peterbe/premailer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterbe/premailer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","download_url":"https://codeload.github.com/peterbe/premailer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/sbom","scorecard":{"id":728707,"data":{"date":"2025-08-11","repo":{"name":"github.com/peterbe/premailer","commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"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":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python.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":"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":"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":"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":"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/python.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/peterbe/premailer/python.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/python.yml:28","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-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 'master'"],"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 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T13:44:16.328Z","repository_id":613604,"created_at":"2025-08-22T13:44:16.328Z","updated_at":"2025-08-22T13:44:16.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36646944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-14T02:00:06.934Z","response_time":54,"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":"peterbe","name":"Peter Bengtsson","uuid":"26739","kind":"user","description":"Full-stack web dev working on GitHub Docs. Formerly Mozilla, MDN. \r\nLoves Python, PWAs, Postgres, Node, Search, and wants to learn everything. \r\n","email":"","website":"https://www.peterbe.com","location":"South Carolina, USA","twitter":"peterbe","company":"GitHub","icon_url":"https://avatars.githubusercontent.com/u/26739?u=511ab747cb7c4bb783cf3f6ff1185c29b16bb376\u0026v=4","repositories_count":280,"last_synced_at":"2024-04-13T00:13:52.471Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/peterbe","funding_links":[],"total_stars":4797,"followers":1152,"following":111,"created_at":"2022-11-02T17:41:54.635Z","updated_at":"2024-04-13T00:14:28.670Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterbe/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-08-16T09:43:14.576Z","dependent_packages_count":0,"downloads":8,"downloads_period":"last-month","dependent_repos_count":2,"rankings":{"downloads":61.19472170400964,"dependent_repos_count":11.513731659769485,"dependent_packages_count":10.141135697755281,"stargazers_count":1.9993883106546027,"forks_count":3.70690621751516,"docker_downloads_count":null,"average":17.711176717940834},"purl":"pkg:pypi/premailer-cspw","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/premailer_cspw","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/premailer_cspw","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/premailer_cspw/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-13T15:02:56.527Z","issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"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":1,"past_year_avg_comments_per_issue":1.0,"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/peterbe%2Fpremailer/issues","maintainers":[{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer_cspw/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer_cspw/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer_cspw/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer_cspw/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer_cspw/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/premailer_cspw/codemeta","maintainers":[{"uuid":"Pavel.Paulau","login":"Pavel.Paulau","name":null,"email":null,"url":null,"packages_count":15,"html_url":"https://pypi.org/user/Pavel.Paulau/","role":null,"created_at":"2023-02-25T01:38:14.714Z","updated_at":"2023-02-25T01:38:14.714Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/Pavel.Paulau/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":930488,"maintainers_count":399697,"namespaces_count":0,"keywords_count":311773,"github":"pypi","metadata":{"funded_packages_count":58574,"rate_limit":2},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-08-24T05:05:47.334Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":16333,"full_name":"peterbe/premailer","default_branch":"master","total_commits":294,"total_committers":71,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":4.140845070422535,"dds":0.5884353741496599,"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":"2026-08-19T11:03:16.819Z","last_synced_commit":"f4ded0b9701c4985e7ff5c5beda83324c264ea62","created_at":"2023-03-07T11:32:21.507Z","updated_at":"2026-08-19T11:03:15.983Z","committers":[{"name":"Peter Bengtsson","email":"mail@peterbe.com","login":"peterbe","count":121},{"name":"Michael JasonSmith","email":"mpj17@onlinegroups.net","login":"mpj17","count":40},{"name":"Peter Bengtsson","email":"peter@fry-it.com","login":null,"count":16},{"name":"Peter Bengtsson","email":"peterbe@mozilla.com","login":null,"count":13},{"name":"Nguyen Van Nhu","email":"nguyen.van.nhu@vnmedia.se","login":"vanng822","count":9},{"name":"Mario César Señoranis Ayala","email":"mariocesar@creat1va.com","login":"mariocesar","count":4},{"name":"Victor Lin","email":"bornstub@gmail.com","login":"fangpenlin","count":4},{"name":"Michael Krens","email":"mkrens@gmail.com","login":"michi88","count":4},{"name":"Sergey Lavrinenko","email":"s@lavr.me","login":"lavr","count":3},{"name":"Remigiusz Dymecki","email":"remigiusz@gmail.com","login":"remik","count":3},{"name":"Ryan Butterfield","email":"git@ryanbutterfield.com","login":null,"count":3},{"name":"Paul Craciunoiu","email":"paul@sowink.com","login":null,"count":3},{"name":"Adam Bogdal","email":"adam@bogdal.pl","login":"bogdal","count":2},{"name":"majortom731","email":"sewenig@arcor.de","login":"majortom731","count":2},{"name":"Theron Luhn","email":"theron@luhn.com","login":"luhn","count":2},{"name":"Russell Davis","email":"russell.davis@gmail.com","login":"russelldavis","count":2},{"name":"Peter Schmidt","email":"peter@peterjs.com","login":"pzrq","count":2},{"name":"Matt Molyneaux","email":"moggers87+git@moggers87.co.uk","login":"moggers87","count":2},{"name":"Thomas Grainger","email":"tagrain@gmail.com","login":"graingert","count":2},{"name":"Julien Bouquillon","email":"julien@bouquillon.com","login":"revolunet","count":2},{"name":"Ian Beck","email":"ian@onecrayon.com","login":"onecrayon","count":2},{"name":"Josh Owen","email":"josh@openfolio.com","login":null,"count":2},{"name":"Alek Kowalczyk","email":"alex@offiserv.com","login":null,"count":2},{"name":"Benjamin Wohlwend","email":"bw@piquadrat.ch","login":"beniwohli","count":2},{"name":"Bradley Ayers","email":"bradley.ayers@gmail.com","login":"bradleyayers","count":1},{"name":"Artur Juraszek","email":"artur@juraszek.xyz","login":"Asgavar","count":1},{"name":"Sandor Weisz","email":"santheo@mac.com","login":null,"count":1},{"name":"Grégoire Cachet","email":"gregoire@hackintosh-gc.local","login":null,"count":1},{"name":"Heston Liebowitz","email":"heston@heston-macbookpro.local","login":null,"count":1},{"name":"machinewu","email":"machine74159","login":null,"count":1},{"name":"Vipul","email":"finn02@disroot.org","login":null,"count":1},{"name":"Pavel Tyslyatsky","email":"pavel.tyslyatsky@gmail.com","login":null,"count":1},{"name":"Nick Fenwick","email":"nick@winwebconnect.com","login":null,"count":1},{"name":"Mariano Benedettini","email":"mariano@glide.com","login":null,"count":1},{"name":"Jon Bretman","email":"jonbretman@lyst.com","login":null,"count":1},{"name":"Albin Jacobsson","email":"albin@emarketeer.com","login":null,"count":1},{"name":"Povilas Kanapickas","email":"povilas@radix.lt","login":"p12tic","count":1},{"name":"Raphael Gaschignard","email":"r.gaschignard@gmail.com","login":"rtpg","count":1},{"name":"Sandeep Aggarwal","email":"asandeep.me@gmail.com","login":"asandeep","count":1},{"name":"Jack Guy","email":"jack@sketchleague.com","login":"jack-guy","count":1},{"name":"Sean Lynch","email":"techniq35@gmail.com","login":"techniq","count":1},{"name":"Sebastian Rahlf","email":"basti@redtoad.de","login":"redtoad","count":1},{"name":"Shahriar Tajbakhsh","email":"sh.tajbakhsh@gmail.com","login":"s16h","count":1},{"name":"Simeon Visser","email":"svisser","login":"svisser","count":1},{"name":"Simon Litchfield","email":"simon@s29.com.au","login":"litchfield","count":1},{"name":"Theo Spears","email":"theo@theos.me.uk","login":"theospears","count":1},{"name":"Tim Hobson","email":"hoserdude","login":"hoserdude","count":1},{"name":"Tobias Zanke","email":"TZanke","login":"TZanke","count":1},{"name":"calixteman","email":"cdenizet@mozilla.com","login":"calixteman","count":1},{"name":"gabn88","email":"gerben_m88@hotmail.com","login":"gabn88","count":1},{"name":"mokibit","email":"37383410+mokibit","login":"mokibit","count":1},{"name":"nicoechaniz","email":"nico@rakar.com","login":"nicoechaniz","count":1},{"name":"thenewguy","email":"wgordonw1@gmail.com","login":"thenewguy","count":1},{"name":"Chet Corcos","email":"ccorcos@gmail.com","login":"ccorcos","count":1},{"name":"Chris Lamb","email":"chris@chris-lamb.co.uk","login":"lamby","count":1},{"name":"Craig White","email":"craigwhiteofficial@gmail.com","login":"CraigRobertWhite","count":1},{"name":"David Barbarisi","email":"davidbarbarisi@gmail.com","login":"dbarbar","count":1},{"name":"Eli Dickinson","email":"eli@industrydive.com","login":"elidickinson","count":1},{"name":"Gustav Tiger","email":"gustav@tiger.name","login":"Tigge","count":1},{"name":"Ionel Cristian Mărieș","email":"contact@ionelmc.ro","login":"ionelmc","count":1},{"name":"James Howe","email":"james@howeswho.co.uk","login":"OrangeDog","count":1},{"name":"Jarid Margolin","email":"jaridmargolin@gmail.com","login":"jaridmargolin","count":1},{"name":"Javier Santacruz","email":"javier.santacruz.lc@gmail.com","login":"jvrsantacruz","count":1},{"name":"Jocelyn Delalande","email":"jdelalande@oasiswork.fr","login":"JocelynDelalande","count":1},{"name":"Jon Bretman","email":"jon.bretman@gmail.com","login":"jonbretman","count":1},{"name":"Michal Proszek","email":"michal.proszek@gmail.com","login":"poxip","count":1},{"name":"Nate","email":"loudnate@gmail.com","login":"loudnate","count":1},{"name":"Nicholas Rempel","email":"nbrempel@gmail.com","login":"nrempel","count":1},{"name":"Nikita Shenkman","email":"nikita.shenkman@gmail.com","login":"nshenkman","count":1},{"name":"Pamela","email":"pamela@openbsd.org","login":"pmosetc","count":1},{"name":"viernullvier","email":"hannes.breul+github@gmail.com","login":"viernullvier","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-08-20T00:00:10.776Z","repositories_count":6752313,"commits_count":978410056,"contributors_count":41242979,"owners_count":1359078,"committers_count":3353170,"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":{"table":{"full_name":"peterbe/premailer","html_url":"https://github.com/peterbe/premailer","last_synced_at":"2026-08-24T13:33:28.160Z","status":null,"issues_count":52,"pull_requests_count":61,"avg_time_to_close_issue":33456170.53846154,"avg_time_to_close_pull_request":26398759.645833332,"issues_closed_count":26,"pull_requests_closed_count":48,"pull_request_authors_count":38,"issue_authors_count":49,"avg_comments_per_issue":3.230769230769231,"avg_comments_per_pull_request":3.0491803278688523,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"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-10T21:01:00.485Z","updated_at":"2026-08-24T13:33:28.160Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterbe%2Fpremailer/issues","issue_labels_count":{"table":{}},"pull_request_labels_count":{"table":{}},"issue_author_associations_count":{"table":{"NONE":36,"CONTRIBUTOR":13,"OWNER":3}},"pull_request_author_associations_count":{"table":{"CONTRIBUTOR":24,"NONE":20,"OWNER":17}},"issue_authors":{"table":{"peterbe":3,"TZanke":2,"asandeep":1,"ghost":1,"dov":1,"joseleperez":1,"majortom731":1,"pzrq":1,"piyush-moengage":1,"maximallain":1,"Samlibardi":1,"jiehan1029":1,"elidickinson":1,"thenewguy":1,"skyler":1,"earshinov":1,"Hammy27":1,"CraigRobertWhite":1,"ngmaibulat":1,"woodz-":1,"skrhlm":1,"msert29":1,"IwanBurg":1,"norbertcyran":1,"rbq":1,"adambullmer":1,"jack-guy":1,"nag5000":1,"mikicz":1,"toxinu":1,"onecrayon":1,"pavel-mikhadyuk-redshelf":1,"lavr":1,"Just7778":1,"chaitanyagupta":1,"vnktsh":1,"evanwall-carta":1,"dablak":1,"hoIIer":1,"Stephane-Ag":1,"Rijoanul-Shanto":1,"letitfly":1,"ankan1811":1,"davidfwatson":1,"Cediddi":1,"ccorcos":1,"viernullvier":1,"Chryogenic":1,"brakai295":1}},"pull_request_authors":{"table":{"peterbe":17,"onecrayon":3,"calixteman":2,"pyrox0":2,"majortom731":2,"zvikagart":2,"mrsone40":2,"bonya":1,"shadchin":1,"asandeep":1,"mokibit":1,"tirkarthi":1,"OrangeDog":1,"JordanP":1,"IwanBurg":1,"earshinov":1,"etanot":1,"pmosetc":1,"Asgavar":1,"Eboreg":1,"CraigRobertWhite":1,"gabn88":1,"p12tic":1,"viernullvier":1,"kengruven":1,"pzrq":1,"browniebroke":1,"jack-guy":1,"rclmenezes":1,"dunkmann00":1,"nshenkman":1,"jhutchins":1,"strugee":1,"thenewguy":1,"mbenedettini":1,"fuhrysteve":1,"TZanke":1,"lavr":1}},"host":{"table":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-08-25T00:00:09.459Z","repositories_count":16328808,"issues_count":42398313,"pull_requests_count":135865593,"authors_count":11520402,"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":{"table":{}},"past_year_pull_request_labels_count":{"table":{}},"past_year_issue_author_associations_count":{"table":{}},"past_year_pull_request_author_associations_count":{"table":{}},"past_year_issue_authors":{"table":{}},"past_year_pull_request_authors":{"table":{}},"maintainers":[{"table":{"login":"peterbe","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/peterbe"}}],"active_maintainers":[]}},"events":{"total":{"IssuesEvent":2,"WatchEvent":24,"IssueCommentEvent":5,"PullRequestReviewCommentEvent":1,"PullRequestReviewEvent":1},"last_year":{"WatchEvent":2,"IssueCommentEvent":3}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-08-16T10:31:16.859Z","updated_at":"2022-08-16T10:31:16.859Z","repository_link":"https://github.com/peterbe/premailer/blob/master/setup.py","dependencies":[{"id":1851466462,"package_name":"lxml","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/python.yml","sha":null,"kind":"manifest","created_at":"2023-01-13T10:31:27.819Z","updated_at":"2023-01-13T10:31:27.819Z","repository_link":"https://github.com/peterbe/premailer/blob/master/.github/workflows/python.yml","dependencies":[{"id":6875550312,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6875550313,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]}],"score":26.814168953659234,"created_at":"2026-05-04T06:49:04.950Z","updated_at":"2026-08-25T14:03:45.599Z","avatar_url":"https://github.com/peterbe.png","language":"Python","codemeta":null,"publiccode":null,"project_url":"https://summary.ecosyste.ms/api/v1/projects/371614","html_url":"https://summary.ecosyste.ms/projects/371614"}