{"id":90179,"name":null,"description":"An opinionated set of utilities / patterns for FastAPI","url":"https://github.com/adriangb/asapi","last_synced_at":"2025-09-09T00:12:33.870Z","repository":{"id":242055195,"uuid":"808555361","full_name":"adriangb/asapi","owner":"adriangb","description":"An opinionated set of utilities / patterns for FastAPI","archived":false,"fork":false,"pushed_at":"2025-02-05T16:38:08.000Z","size":138,"stargazers_count":25,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T09:50:36.973Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adriangb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-31T10:06:08.000Z","updated_at":"2025-03-24T14:45:32.000Z","dependencies_parsed_at":"2025-04-19T18:25:58.026Z","dependency_job_id":"5dc53a47-bbdd-48d4-afa6-e6b46917207f","html_url":"https://github.com/adriangb/asapi","commit_stats":{"total_commits":23,"total_committers":1,"mean_commits":23.0,"dds":0.0,"last_synced_commit":"68e598e67e620fc56c0f735716140e27ce513fa2"},"previous_names":["adriangb/asapi"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/adriangb/asapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adriangb","download_url":"https://codeload.github.com/adriangb/asapi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231109,"owners_count":25245685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"adriangb","name":"Adrian Garcia Badaracco","uuid":"1755071","kind":"user","description":"","email":"","website":null,"location":"Chicago, IL","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1755071?u=612704256e38d6ac9cbed24f10e4b6ac2da74ecb\u0026v=4","repositories_count":172,"last_synced_at":"2024-11-24T17:37:22.314Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/adriangb","funding_links":["https://github.com/sponsors/adriangb"],"total_stars":1262,"followers":501,"following":331,"created_at":"2022-11-15T09:00:30.651Z","updated_at":"2024-11-24T17:37:22.315Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adriangb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adriangb/repositories"},"packages":null,"commits":{"id":1999180,"full_name":"adriangb/asapi","default_branch":"main","committers":[{"name":"Adrian Garcia Badaracco","email":"1755071+adriangb","login":"adriangb","count":23}],"total_commits":23,"total_committers":1,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":23.0,"dds":0.0,"past_year_committers":[{"name":"Adrian Garcia Badaracco","email":"1755071+adriangb","login":"adriangb","count":23}],"past_year_total_commits":23,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":23.0,"past_year_dds":0.0,"last_synced_at":"2024-11-15T16:08:31.533Z","last_synced_commit":"68e598e67e620fc56c0f735716140e27ce513fa2","created_at":"2024-10-01T19:19:53.355Z","updated_at":"2024-11-15T16:08:31.534Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.343Z","repositories_count":5480019,"commits_count":853389012,"contributors_count":31098138,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"adriangb/asapi","html_url":"https://github.com/adriangb/asapi","last_synced_at":"2025-08-31T12:52:33.981Z","status":null,"issues_count":4,"pull_requests_count":7,"avg_time_to_close_issue":18565.5,"avg_time_to_close_pull_request":5758817.833333333,"issues_closed_count":2,"pull_requests_closed_count":6,"pull_request_authors_count":3,"issue_authors_count":2,"avg_comments_per_issue":1.0,"avg_comments_per_pull_request":0.14285714285714285,"merged_pull_requests_count":4,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":3,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":8589.0,"past_year_avg_time_to_close_pull_request":261.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.3333333333333333,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2024-10-01T19:19:53.506Z","updated_at":"2025-09-01T21:41:54.986Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriangb%2Fasapi/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":2},"issue_author_associations_count":{"NONE":5},"pull_request_author_associations_count":{"OWNER":4,"NONE":3,"CONTRIBUTOR":1},"issue_authors":{"sanmai-NL":3,"dineshbvadhia":2},"pull_request_authors":{"adriangb":4,"dependabot[bot]":2,"Kludex":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:17.013Z","repositories_count":10168397,"issues_count":32020286,"pull_requests_count":100254366,"authors_count":10730288,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":3},"past_year_pull_request_author_associations_count":{"OWNER":1,"NONE":1,"CONTRIBUTOR":1},"past_year_issue_authors":{"sanmai-NL":3},"past_year_pull_request_authors":{"Kludex":2,"adriangb":1},"maintainers":[{"login":"adriangb","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/adriangb"}],"active_maintainers":[{"login":"adriangb","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/adriangb"}]},"events":{"total":{"CreateEvent":2,"IssuesEvent":4,"ReleaseEvent":1,"WatchEvent":8,"DeleteEvent":1,"IssueCommentEvent":18,"PushEvent":35,"PullRequestReviewEvent":1,"PullRequestEvent":3,"ForkEvent":2},"last_year":{"CreateEvent":2,"IssuesEvent":4,"ReleaseEvent":1,"WatchEvent":8,"DeleteEvent":1,"IssueCommentEvent":18,"PushEvent":35,"PullRequestReviewEvent":1,"PullRequestEvent":3,"ForkEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-06-13T18:26:13.229Z","updated_at":"2024-06-13T18:26:13.229Z","repository_link":"https://github.com/adriangb/asapi/blob/main/pyproject.toml","dependencies":[{"id":18592322482,"package_name":"python","ecosystem":"pypi","requirements":"^3.8","direct":true,"kind":"runtime","optional":false},{"id":18592322484,"package_name":"fastapi","ecosystem":"pypi","requirements":"^0.111.0","direct":true,"kind":"runtime","optional":false},{"id":18592322486,"package_name":"anyio","ecosystem":"pypi","requirements":"^4.3.0","direct":true,"kind":"runtime","optional":false},{"id":18592322488,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"^4.12.0","direct":true,"kind":"runtime","optional":false},{"id":18592322490,"package_name":"uvicorn","ecosystem":"pypi","requirements":"^0.30.0","direct":true,"kind":"runtime","optional":false},{"id":18592322491,"package_name":"pytest","ecosystem":"pypi","requirements":"^8.2.0","direct":true,"kind":"develop","optional":false},{"id":18592322493,"package_name":"psycopg","ecosystem":"pypi","requirements":"^3.1.19","direct":true,"kind":"develop","optional":false},{"id":18592322494,"package_name":"coverage","ecosystem":"pypi","requirements":"^7.5.3","direct":true,"kind":"develop","optional":false},{"id":18592322496,"package_name":"ruff","ecosystem":"pypi","requirements":"^0.4.6","direct":true,"kind":"develop","optional":false},{"id":18592322498,"package_name":"pyright","ecosystem":"pypi","requirements":"^1.1.365","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yaml","sha":null,"kind":"manifest","created_at":"2024-11-08T16:02:10.742Z","updated_at":"2024-11-08T16:02:10.742Z","repository_link":"https://github.com/adriangb/asapi/blob/main/.github/workflows/ci.yaml","dependencies":[{"id":20631017036,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20631017037,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v5","direct":true,"kind":"composite","optional":false},{"id":20631017038,"package_name":"snok/install-poetry","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":20631017039,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20631017040,"package_name":"re-actors/alls-green","ecosystem":"actions","requirements":"release/v1","direct":true,"kind":"composite","optional":false},{"id":20631017041,"package_name":"ncipollo/release-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"uv.lock","sha":null,"kind":"lockfile","created_at":"2025-04-19T18:25:51.572Z","updated_at":"2025-04-19T18:25:51.572Z","repository_link":"https://github.com/adriangb/asapi/blob/main/uv.lock","dependencies":[{"id":22761548270,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":22761548271,"package_name":"anyio","ecosystem":"pypi","requirements":"4.8.0","direct":false,"kind":"runtime","optional":false},{"id":22761548272,"package_name":"asapi","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":22761548393,"package_name":"attrs","ecosystem":"pypi","requirements":"24.3.0","direct":false,"kind":"runtime","optional":false},{"id":22761548394,"package_name":"certifi","ecosystem":"pypi","requirements":"2024.12.14","direct":false,"kind":"runtime","optional":false},{"id":22761548395,"package_name":"cffi","ecosystem":"pypi","requirements":"1.17.1","direct":false,"kind":"runtime","optional":false},{"id":22761548396,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":22761548397,"package_name":"click","ecosystem":"pypi","requirements":"8.1.8","direct":false,"kind":"runtime","optional":false},{"id":22761548398,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":22761548399,"package_name":"coverage","ecosystem":"pypi","requirements":"7.6.10","direct":false,"kind":"runtime","optional":false},{"id":22761548400,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"runtime","optional":false},{"id":22761548401,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":22761548402,"package_name":"fastapi","ecosystem":"pypi","requirements":"0.115.6","direct":false,"kind":"runtime","optional":false},{"id":22761548403,"package_name":"filelock","ecosystem":"pypi","requirements":"3.17.0","direct":false,"kind":"runtime","optional":false},{"id":22761548404,"package_name":"h11","ecosystem":"pypi","requirements":"0.14.0","direct":false,"kind":"runtime","optional":false},{"id":22761548405,"package_name":"httpcore","ecosystem":"pypi","requirements":"1.0.7","direct":false,"kind":"runtime","optional":false},{"id":22761548406,"package_name":"httpx","ecosystem":"pypi","requirements":"0.28.1","direct":false,"kind":"runtime","optional":false},{"id":22761548407,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.6","direct":false,"kind":"runtime","optional":false},{"id":22761548408,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":22761548409,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":22761548410,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":22761548411,"package_name":"outcome","ecosystem":"pypi","requirements":"1.3.0.post0","direct":false,"kind":"runtime","optional":false},{"id":22761548412,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":22761548413,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.6","direct":false,"kind":"runtime","optional":false},{"id":22761548414,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":22761548415,"package_name":"pre-commit","ecosystem":"pypi","requirements":"3.8.0","direct":false,"kind":"runtime","optional":false},{"id":22761548416,"package_name":"psycopg","ecosystem":"pypi","requirements":"3.2.4","direct":false,"kind":"runtime","optional":false},{"id":22761548417,"package_name":"psycopg-binary","ecosystem":"pypi","requirements":"3.2.4","direct":false,"kind":"runtime","optional":false},{"id":22761548418,"package_name":"psycopg-pool","ecosystem":"pypi","requirements":"3.2.4","direct":false,"kind":"runtime","optional":false},{"id":22761550235,"package_name":"pycparser","ecosystem":"pypi","requirements":"2.22","direct":false,"kind":"runtime","optional":false},{"id":22761550239,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.10.5","direct":false,"kind":"runtime","optional":false},{"id":22761550242,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.27.2","direct":false,"kind":"runtime","optional":false},{"id":22761550244,"package_name":"pyright","ecosystem":"pypi","requirements":"1.1.392.post0","direct":false,"kind":"runtime","optional":false},{"id":22761550247,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.4","direct":false,"kind":"runtime","optional":false},{"id":22761550249,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"runtime","optional":false},{"id":22761550252,"package_name":"ruff","ecosystem":"pypi","requirements":"0.4.10","direct":false,"kind":"runtime","optional":false},{"id":22761550255,"package_name":"sniffio","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":22761550258,"package_name":"sortedcontainers","ecosystem":"pypi","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":22761550259,"package_name":"starlette","ecosystem":"pypi","requirements":"0.41.3","direct":false,"kind":"runtime","optional":false},{"id":22761550261,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":22761550263,"package_name":"trio","ecosystem":"pypi","requirements":"0.25.1","direct":false,"kind":"runtime","optional":false},{"id":22761550266,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.12.2","direct":false,"kind":"runtime","optional":false},{"id":22761550269,"package_name":"tzdata","ecosystem":"pypi","requirements":"2025.1","direct":false,"kind":"runtime","optional":false},{"id":22761550272,"package_name":"uvicorn","ecosystem":"pypi","requirements":"0.30.6","direct":false,"kind":"runtime","optional":false},{"id":22761550275,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.29.1","direct":false,"kind":"runtime","optional":false}]}],"score":3.332204510175204,"created_at":"2025-09-08T21:35:54.247Z","updated_at":"2025-10-07T08:29:34.626Z","avatar_url":"https://github.com/adriangb.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/90179","html_url":"https://science.ecosyste.ms/projects/90179"}