{"id":13502189,"url":"https://github.com/emmett-framework/emmett","last_synced_at":"2026-10-19T14:35:35.863Z","repository":{"id":22153713,"uuid":"25485025","full_name":"emmett-framework/emmett","owner":"emmett-framework","description":"The web framework for inventors","archived":false,"fork":false,"pushed_at":"2026-10-08T16:09:06.000Z","size":4005,"stargazers_count":1238,"open_issues_count":42,"forks_count":74,"subscribers_count":30,"default_branch":"master","last_synced_at":"2026-10-12T22:22:01.070Z","etag":null,"topics":["asgi","asyncio","emmett","python","rsgi","web-framework"],"latest_commit_sha":null,"homepage":"","language":"Python","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":"CHANGES.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"accessibility":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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":["gi0baro"],"polar":"emmett-framework"}},"created_at":"2014-10-20T20:23:26.000Z","updated_at":"2026-10-12T04:24:21.000Z","dependencies_parsed_at":"2026-10-12T22:36:30.688Z","dependency_job_id":null,"html_url":"https://github.com/emmett-framework/emmett","commit_stats":{"total_commits":1604,"total_committers":24,"mean_commits":66.83333333333333,"dds":0.04862842892768082,"last_synced_commit":"64f0c8b23f8357eb886b5fbfad4e1e6a6847be3b"},"previous_names":["gi0baro/weppy"],"tags_count":135,"template":false,"template_full_name":null,"purl":"pkg:github/emmett-framework/emmett","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Femmett","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Femmett/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Femmett/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Femmett/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmett-framework","download_url":"https://codeload.github.com/emmett-framework/emmett/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmett-framework%2Femmett/sbom","scorecard":{"id":376029,"data":{"date":"2025-08-11","repo":{"name":"github.com/emmett-framework/emmett","commit":"4f8a35ab7622be0a7792c3bc44d7bc9979e5933a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.9,"checks":[{"name":"Maintained","score":5,"reason":"3 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 5","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":0,"reason":"Found 0/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/lint.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.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":"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":"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":"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":"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/lint.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/lint.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/emmett-framework/emmett/tests.yml/master?enable=pin","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction 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":"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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/emmett-framework/.github/SECURITY.md:1","Info: Found linked content: github.com/emmett-framework/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/emmett-framework/.github/SECURITY.md:1","Info: Found text in security policy: github.com/emmett-framework/.github/SECURITY.md:1"],"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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:8"],"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'release'"],"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 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T14:16:00.700Z","repository_id":22153713,"created_at":"2025-08-18T14:16:00.701Z","updated_at":"2025-08-18T14:16:00.701Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38358115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-19T02:00:06.414Z","response_time":53,"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"}},"keywords":["asgi","asyncio","emmett","python","rsgi","web-framework"],"created_at":"2024-07-31T22:02:05.333Z","updated_at":"2026-10-19T14:35:35.505Z","avatar_url":"https://github.com/emmett-framework.png","language":"Python","funding_links":["https://github.com/sponsors/gi0baro","https://polar.sh/emmett-framework"],"categories":["Python","Web Frameworks","Full-stack frameworks, including data layer (ORM)"],"sub_categories":[],"readme":"![Emmett](https://emmett.sh/static/img/logo-bwb-xb-xl.png)\n\nEmmett is a full-stack Python web framework designed with simplicity in mind.\n\nThe aim of Emmett is to be clearly understandable, easy to be learned and to be \nused, so you can focus completely on your product's features:\n\n```python\nfrom emmett import App, request, response\nfrom emmett.orm import Database, Model, Field\nfrom emmett.tools import service, requires\n\nclass Task(Model):\n    name = Field.string()\n    is_completed = Field.bool(default=False)\n\napp = App(__name__)\napp.config.db.uri = \"postgres://user:password@localhost/foo\"\ndb = Database(app)\ndb.define_models(Task)\napp.pipeline = [db.pipe]\n\ndef is_authenticated():\n    return request.headers.get(\"api-key\") == \"foobar\"\n    \ndef not_authorized():\n    response.status = 401\n    return {'error': 'not authorized'}\n\n@app.route(methods='get')\n@requires(is_authenticated, otherwise=not_authorized)\n@service.json\nasync def todo():\n    page = request.query_params.page or 1\n    tasks = Task.where(\n        lambda t: t.is_completed == False\n    ).select(paginate=(page, 20))\n    return {'tasks': tasks}\n```\n\n## Documentation\n\nThe documentation is available at [https://emmett.sh/docs](https://emmett.sh/docs).    \nThe sources are available under the [docs folder](https://github.com/emmett-framework/emmett/tree/master/docs).\n\n## Examples\n\nThe *bloggy* example described in the [Tutorial](https://emmett.sh/docs/latest/tutorial) is available under the [examples folder](https://github.com/emmett-framework/emmett/tree/master/examples). \n\n## Status of the project\n\nEmmett is production ready and is compatible with Python 3.9 and above versions.\n\nEmmett follows a *semantic versioning* for its releases, with a `{major}.{minor}.{patch}` scheme for versions numbers, where:\n\n- *major* versions might introduce breaking changes\n- *minor* versions usually introduce new features and might introduce deprecations\n- *patch* versions only introduce bug fixes\n\nDeprecations are kept in place for at least 3 minor versions, and the drop is always communicated in the [upgrade guide](https://emmett.sh/docs/latest/upgrading).\n\n## How can I help?\n\nWe would be very glad if you contributed to the project in one or all of these ways:\n\n* Talking about Emmett with friends and on the web\n* Adding issues and features requests here on GitHub\n* Participating in discussions about new features and issues here on GitHub\n* Improving the documentation\n* Forking the project and writing beautiful code\n\n## License\n\nEmmett is released under the BSD License.\n\nHowever, due to original license limitations, contents under [validators](https://github.com/emmett-framework/emmett/tree/master/emmett/validators) and [libs](https://github.com/emmett-framework/emmett/tree/master/emmett/libs) are included in Emmett under their original licenses. Please check the source code for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmett-framework%2Femmett","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femmett-framework%2Femmett","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmett-framework%2Femmett/lists"}