Repository Analysis

fastapi/fastapi

FastAPI framework, high performance, easy to learn, fast to code, ready for production

6.2 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of fastapi/fastapi, a Python project with 100,450 GitHub stars. SynthScan v2.0 examined 369,351 lines of code across 2770 source files, recording 1836 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 6.2 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

6.2
Adjusted Score
6.2
Raw Score
100%
Time Factor
2026-07-13
Last Push
100.5K
Stars
Python
Language
369.4K
Lines of Code
2.8K
Files
1.8K
Pattern Hits
2026-07-14
Scan Date
0.01
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 18MEDIUM 113LOW 1705

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1836 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers1414 hits · 1519 pts
SeverityFileLineSnippetContext
LOWtests/test_datastructures.py16def test_default_placeholder_equals():CODE
LOWtests/test_datastructures.py23def test_default_placeholder_bool():CODE
LOWtests/test_datastructures.py30def test_upload_file_is_closed(tmp_path: Path):CODE
LOWtests/test_starlette_exception.py23async def no_body_status_code_exception():CODE
LOWtests/test_starlette_exception.py28async def no_body_status_code_with_detail_exception():CODE
LOWtests/test_starlette_exception.py61def test_get_starlette_item_not_found():CODE
LOWtests/test_starlette_exception.py68def test_no_body_status_code_exception_handlers():CODE
LOWtests/test_starlette_exception.py74def test_no_body_status_code_with_detail_exception_handlers():CODE
LOWtests/test_multi_body_errors.py40def test_jsonable_encoder_requiring_error():CODE
LOWtests/test_multi_body_errors.py56def test_put_incorrect_body_multiple():CODE
LOWtests/test_security_http_digest_description.py19def test_security_http_digest():CODE
LOWtests/test_security_http_digest_description.py25def test_security_http_digest_no_credentials():CODE
LOWtests/test_security_http_digest_description.py32def test_security_http_digest_incorrect_scheme_credentials():CODE
LOWtests/test_union_body_discriminator_annotated.py48def test_union_body_discriminator_assignment(client: TestClient) -> None:CODE
LOWtests/test_union_body_discriminator_annotated.py54def test_union_body_discriminator_annotated(client: TestClient) -> None:CODE
LOWtests/test_security_oauth2.py64def test_strict_login_no_data():CODE
LOWtests/test_security_oauth2.py91def test_strict_login_no_grant_type():CODE
LOWtests/test_security_oauth2.py114def test_strict_login_incorrect_grant_type(grant_type: str):CODE
LOWtests/test_security_oauth2.py133def test_strict_login_correct_grant_type():CODE
LOWtests/test_security_http_basic_optional.py29def test_security_http_basic_no_credentials():CODE
LOWtests/test_security_http_basic_optional.py35def test_security_http_basic_invalid_credentials():CODE
LOWtests/test_security_http_basic_optional.py44def test_security_http_basic_non_basic_credentials():CODE
LOWtests/test_response_model_invalid.py10def test_invalid_response_model_raises():CODE
LOWtests/test_response_model_invalid.py19def test_invalid_response_model_sub_type_raises():CODE
LOWtests/test_response_model_invalid.py28def test_invalid_response_model_in_responses_raises():CODE
LOWtests/test_response_model_invalid.py37def test_invalid_response_model_sub_type_in_responses_raises():CODE
LOWtests/test_dependency_yield_scope.py54def get_named_regular_func_session(session: SessionFuncDep) -> Any:CODE
LOWtests/test_dependency_yield_scope.py128def get_regular_function_scope(sessions: RegularSessionsDep) -> Any:CODE
LOWtests/test_dependency_yield_scope.py193def test_named_function_scope() -> None:CODE
LOWtests/test_dependency_yield_scope.py201def test_regular_function_scope() -> None:CODE
LOWtests/test_dependency_yield_scope.py209def test_router_level_dep_scope_function() -> None:CODE
LOWtests/test_dependency_yield_scope.py215def test_router_level_dep_scope_request() -> None:CODE
LOWtests/test_dependency_yield_scope.py222def test_app_level_dep_scope_function() -> None:CODE
LOWtests/test_dependency_yield_scope.py235def test_app_level_dep_scope_request() -> None:CODE
LOWtests/test_multi_query_errors.py22def test_multi_query_incorrect():CODE
LOWtests/test_response_change_status_code.py23def test_dependency_set_status_code():CODE
LOWtests/test_forms_from_non_typing_sequences.py25def test_python_list_param_as_form():CODE
LOWtests/test_forms_from_non_typing_sequences.py33def test_python_set_param_as_form():CODE
LOWtests/test_forms_from_non_typing_sequences.py41def test_python_tuple_param_as_form():CODE
LOWtests/test_strict_content_type_app_level.py24def test_default_strict_rejects_no_content_type():CODE
LOWtests/test_strict_content_type_app_level.py29def test_default_strict_accepts_json_content_type():CODE
LOWtests/test_strict_content_type_app_level.py35def test_lax_accepts_no_content_type():CODE
LOWtests/test_strict_content_type_app_level.py41def test_lax_accepts_json_content_type():CODE
LOWtests/test_security_scopes_dont_propagate.py38def test_security_scopes_dont_propagate():CODE
LOWtests/test_default_response_class_router.py202def test_router_b_a_c_override():CODE
LOWtests/test_frontend.py29def test_frontend_exact_prefix_path_serves_index(tmp_path: Path):CODE
LOWtests/test_frontend.py41def test_apirouter_frontend_with_router_prefix_and_frontend_subpath(tmp_path: Path):CODE
LOWtests/test_frontend.py55def test_frontend_fallback_rejects_invalid_fallback(tmp_path: Path):CODE
LOWtests/test_frontend.py64def test_index_fallback_ignores_invalid_q_value(tmp_path: Path):CODE
LOWtests/test_frontend.py78def test_frontend_static_files_lookup_errors(monkeypatch, tmp_path: Path):CODE
LOWtests/test_frontend.py116def test_frontend_route_group_helpers(tmp_path: Path):CODE
LOWtests/test_frontend.py156def test_included_low_priority_routes_cache_is_reused():CODE
LOWtests/test_frontend.py180def test_low_priority_api_route_handles_with_context():CODE
LOWtests/test_frontend.py196def test_included_low_priority_api_route_handles_with_context():CODE
LOWtests/test_frontend.py214def test_normal_route_partial_match_returns_before_frontend(tmp_path: Path):CODE
LOWtests/test_frontend.py235def test_normal_route_partial_match_wins_before_frontend(tmp_path: Path):CODE
LOWtests/test_frontend.py270def test_app_frontend_dependencies_protect_root_asset_and_fallback(tmp_path: Path):CODE
LOWtests/test_frontend.py305def test_apirouter_frontend_dependencies_protect_prefixed_frontend(tmp_path: Path):CODE
LOWtests/test_frontend.py338def test_included_frontend_does_not_block_url_path_for(tmp_path: Path):CODE
LOWtests/test_frontend.py366def test_include_router_frontend_dependencies_apply_in_nested_order(tmp_path: Path):CODE
1354 more matches not shown…
Decorative Section Separators106 hits · 388 pts
SeverityFileLineSnippetContext
MEDIUM…s/test_request_params/test_cookie/test_required_str.py176# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_cookie/test_required_str.py282# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_cookie/test_required_str.py12# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_cookie/test_required_str.py79# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_cookie/test_optional_str.py150# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_cookie/test_optional_str.py233# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_cookie/test_optional_str.py11# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_cookie/test_optional_str.py72# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_form/test_list.py183# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_form/test_list.py294# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_form/test_list.py13# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_form/test_list.py84# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_required_str.py170# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_required_str.py277# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_required_str.py13# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_required_str.py80# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_optional_str.py148# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_optional_str.py231# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_optional_str.py12# =====================================================================================COMMENT
MEDIUM…sts/test_request_params/test_form/test_optional_str.py72# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_form/test_optional_list.py158# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_form/test_optional_list.py244# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_form/test_optional_list.py12# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_form/test_optional_list.py77# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_header/test_list.py180# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_header/test_list.py287# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_header/test_list.py12# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_header/test_list.py82# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_required_str.py170# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_required_str.py274# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_required_str.py12# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_required_str.py78# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_optional_str.py147# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_optional_str.py228# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_optional_str.py11# =====================================================================================COMMENT
MEDIUM…s/test_request_params/test_header/test_optional_str.py71# =====================================================================================COMMENT
MEDIUM…/test_request_params/test_header/test_optional_list.py159# =====================================================================================COMMENT
MEDIUM…/test_request_params/test_header/test_optional_list.py242# =====================================================================================COMMENT
MEDIUM…/test_request_params/test_header/test_optional_list.py11# =====================================================================================COMMENT
MEDIUM…/test_request_params/test_header/test_optional_list.py78# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_required.py87# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_required.py188# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_required.py300# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_required.py11# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_list.py11# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_list.py90# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_list.py194# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_list.py309# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_optional.py79# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_optional.py165# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_optional.py256# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_file/test_optional.py11# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_file/test_optional_list.py87# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_file/test_optional_list.py179# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_file/test_optional_list.py273# =====================================================================================COMMENT
MEDIUM…ts/test_request_params/test_file/test_optional_list.py11# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_body/test_list.py182# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_body/test_list.py293# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_body/test_list.py13# =====================================================================================COMMENT
MEDIUMtests/test_request_params/test_body/test_list.py85# =====================================================================================COMMENT
46 more matches not shown…
Unused Imports104 hits · 99 pts
SeverityFileLineSnippetContext
LOWtests/test_security_oauth2.py3CODE
LOWtests/test_stringified_annotation_dependency.py1CODE
LOW…pydanticv2_dataclasses_uuid_stringified_annotations.py1CODE
LOWtests/test_stringified_annotations_simple.py1CODE
LOWfastapi/responses.py5CODE
LOWfastapi/responses.py6CODE
LOWfastapi/responses.py7CODE
LOWfastapi/responses.py9CODE
LOWfastapi/responses.py10CODE
LOWfastapi/responses.py11CODE
LOWfastapi/responses.py12CODE
LOWfastapi/templating.py1CODE
LOWfastapi/websockets.py1CODE
LOWfastapi/websockets.py2CODE
LOWfastapi/websockets.py3CODE
LOWfastapi/concurrency.py8CODE
LOWfastapi/concurrency.py10CODE
LOWfastapi/__init__.py5CODE
LOWfastapi/__init__.py7CODE
LOWfastapi/__init__.py8CODE
LOWfastapi/__init__.py9CODE
LOWfastapi/__init__.py10CODE
LOWfastapi/__init__.py11CODE
LOWfastapi/__init__.py12CODE
LOWfastapi/__init__.py13CODE
LOWfastapi/__init__.py14CODE
LOWfastapi/__init__.py15CODE
LOWfastapi/__init__.py16CODE
LOWfastapi/__init__.py17CODE
LOWfastapi/__init__.py18CODE
LOWfastapi/__init__.py19CODE
LOWfastapi/__init__.py20CODE
LOWfastapi/__init__.py21CODE
LOWfastapi/__init__.py22CODE
LOWfastapi/__init__.py23CODE
LOWfastapi/__init__.py24CODE
LOWfastapi/__init__.py25CODE
LOWfastapi/types.py7CODE
LOWfastapi/staticfiles.py1CODE
LOWfastapi/utils.py23CODE
LOWfastapi/testclient.py1CODE
LOWfastapi/requests.py1CODE
LOWfastapi/requests.py2CODE
LOWfastapi/datastructures.py12CODE
LOWfastapi/datastructures.py13CODE
LOWfastapi/datastructures.py14CODE
LOWfastapi/datastructures.py16CODE
LOWfastapi/datastructures.py17CODE
LOWfastapi/middleware/gzip.py1CODE
LOWfastapi/middleware/cors.py1CODE
LOWfastapi/middleware/__init__.py1CODE
LOWfastapi/middleware/httpsredirect.py1CODE
LOWfastapi/middleware/trustedhost.py1CODE
LOWfastapi/middleware/wsgi.py1CODE
LOWfastapi/security/__init__.py1CODE
LOWfastapi/security/__init__.py2CODE
LOWfastapi/security/__init__.py3CODE
LOWfastapi/security/__init__.py4CODE
LOWfastapi/security/__init__.py5CODE
LOWfastapi/security/__init__.py6CODE
44 more matches not shown…
Fake / Example Data77 hits · 80 pts
SeverityFileLineSnippetContext
LOWtests/test_union_forms.py31 "/form-union/", data={"name": "John Doe", "email": "john@example.com"}CODE
LOWtests/test_union_forms.py35 "received": {"name": "John Doe", "email": "john@example.com"}CODE
LOWtests/test_stringified_annotation_dependency.py16 return ["John Doe", "Jane Doe"]CODE
LOWtests/test_stringified_annotation_dependency.py16 return ["John Doe", "Jane Doe"]CODE
LOWtests/test_stringified_annotation_dependency.py46 assert response.json() == ["John Doe", "Jane Doe"]CODE
LOWtests/test_stringified_annotation_dependency.py46 assert response.json() == ["John Doe", "Jane Doe"]CODE
LOWtests/test_get_model_definitions_formfeed_escape.py32 address=Address(line_1="123 Main St", city="Anytown", state_province="CA"),CODE
LOWtests/test_get_model_definitions_formfeed_escape.py45 "line_1": "123 Main St",CODE
LOW…rial/test_extra_models/test_tutorial001_tutorial002.py32 "full_name": "John Doe",CODE
LOW…rial/test_extra_models/test_tutorial001_tutorial002.py39 "full_name": "John Doe",CODE
LOWtests/test_tutorial/test_settings/test_app01.py26 monkeypatch.setenv("ADMIN_EMAIL", "admin@example.com")CODE
LOWtests/test_tutorial/test_settings/test_app01.py54 "admin_email": "admin@example.com",CODE
LOWtests/test_tutorial/test_settings/test_app03.py28 monkeypatch.setenv("ADMIN_EMAIL", "admin@example.com")CODE
LOWtests/test_tutorial/test_settings/test_app03.py31 assert settings.admin_email == "admin@example.com"CODE
LOWtests/test_tutorial/test_settings/test_app03.py36 monkeypatch.setenv("ADMIN_EMAIL", "admin@example.com")CODE
LOWtests/test_tutorial/test_settings/test_app03.py42 "admin_email": "admin@example.com",CODE
LOWtests/test_tutorial/test_settings/test_tutorial001.py10 monkeypatch.setenv("ADMIN_EMAIL", "admin@example.com")CODE
LOWtests/test_tutorial/test_settings/test_tutorial001.py21 "admin_email": "admin@example.com",CODE
LOWtests/test_tutorial/test_settings/test_app02.py33 monkeypatch.setenv("ADMIN_EMAIL", "admin@example.com")CODE
LOW…ts/test_tutorial/test_python_types/test_tutorial010.py5 assert get_person_name(Person("John Doe")) == "John Doe"CODE
LOW…ts/test_tutorial/test_python_types/test_tutorial011.py22 "id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]",CODE
LOW…rial/test_python_types/test_tutorial001_tutorial002.py18 mock_print.assert_called_with("John Doe")CODE
LOW…tutorial/test_body_multiple_params/test_tutorial002.py33 "user": {"username": "johndoe", "full_name": "John Doe"},CODE
LOW…tutorial/test_body_multiple_params/test_tutorial002.py45 "user": {"username": "johndoe", "full_name": "John Doe"},CODE
LOW…tutorial/test_body_multiple_params/test_tutorial002.py159 "user": {"full_name": "John Doe"},CODE
LOW…tutorial/test_body_multiple_params/test_tutorial002.py166 "input": {"full_name": "John Doe"},CODE
LOWtests/test_tutorial/test_security/test_tutorial002.py36 "full_name": "John Doe",CODE
LOWtests/test_tutorial/test_security/test_tutorial003.py56 "full_name": "John Doe",CODE
LOWtests/test_tutorial/test_security/test_tutorial004.py75 "full_name": "John Doe",CODE
LOWtests/test_tutorial/test_security/test_tutorial005.py96 "full_name": "John Doe",CODE
LOWdocs/zh-hant/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/zh-hant/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/zh-hant/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/ja/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/ja/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/ja/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/ru/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/ru/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/ru/docs/tutorial/security/simple-oauth2.md231 "full_name": "John Doe",CODE
LOWdocs/pt/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/pt/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/pt/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/zh/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/zh/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/zh/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/uk/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/uk/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/uk/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/hi/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/de/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/de/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/de/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/ko/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/ko/docs/tutorial/security/oauth2-jwt.md231 "full_name": "John Doe",CODE
LOWdocs/ko/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/fr/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/fr/docs/tutorial/security/oauth2-jwt.md230 "full_name": "John Doe",CODE
LOWdocs/fr/docs/tutorial/security/simple-oauth2.md247 "full_name": "John Doe",CODE
LOWdocs/es/docs/features.md55my_user: User = User(id=3, name="John Doe", joined="2018-07-19")CODE
LOWdocs/es/docs/tutorial/security/oauth2-jwt.md231 "full_name": "John Doe",CODE
17 more matches not shown…
Cross-File Repetition16 hits · 80 pts
SeverityFileLineSnippetContext
HIGH…m_response/test_tutorial002_tutorial003_tutorial004.py0<html> <head> <title>some html in here</title> </head> <body> <h1>look ma! html!</h1> </body> </html>STRING
HIGHdocs_src/custom_response/tutorial004_py310.py0<html> <head> <title>some html in here</title> </head> <body> <h1>look ma! html!</h1> </body> </html>STRING
HIGHdocs_src/custom_response/tutorial002_py310.py0<html> <head> <title>some html in here</title> </head> <body> <h1>look ma! html!</h1> </body> </html>STRING
HIGHdocs_src/custom_response/tutorial003_py310.py0<html> <head> <title>some html in here</title> </head> <body> <h1>look ma! html!</h1> </body> </html>STRING
HIGH…eration_configurations/test_tutorial003_tutorial004.py0create an item with all the information: - **name**: each item must have a name - **description**: a long description - STRING
HIGH…_src/path_operation_configuration/tutorial005_py310.py0create an item with all the information: - **name**: each item must have a name - **description**: a long description - STRING
HIGH…_src/path_operation_configuration/tutorial004_py310.py0create an item with all the information: - **name**: each item must have a name - **description**: a long description - STRING
HIGH…_operation_advanced_configuration/tutorial004_py310.py0create an item with all the information: - **name**: each item must have a name - **description**: a long description - STRING
HIGHfastapi/security/open_id_connect_url.py0security scheme description. it will be included in the generated openapi (e.g. visible at `/docs`).STRING
HIGHfastapi/security/oauth2.py0security scheme description. it will be included in the generated openapi (e.g. visible at `/docs`).STRING
HIGHfastapi/security/api_key.py0security scheme description. it will be included in the generated openapi (e.g. visible at `/docs`).STRING
HIGHfastapi/security/http.py0security scheme description. it will be included in the generated openapi (e.g. visible at `/docs`).STRING
HIGHdocs_src/request_files/tutorial002_an_py310.py0<body> <form action="/files/" enctype="multipart/form-data" method="post"> <input name="files" type="file" multiple> <inSTRING
HIGHdocs_src/request_files/tutorial003_an_py310.py0<body> <form action="/files/" enctype="multipart/form-data" method="post"> <input name="files" type="file" multiple> <inSTRING
HIGHdocs_src/request_files/tutorial002_py310.py0<body> <form action="/files/" enctype="multipart/form-data" method="post"> <input name="files" type="file" multiple> <inSTRING
HIGHdocs_src/request_files/tutorial003_py310.py0<body> <form action="/files/" enctype="multipart/form-data" method="post"> <input name="files" type="file" multiple> <inSTRING
AI Structural Patterns48 hits · 40 pts
SeverityFileLineSnippetContext
LOWtests/test_dependency_after_yield_streaming.py53CODE
LOWfastapi/params.py29CODE
LOWfastapi/params.py140CODE
LOWfastapi/params.py224CODE
LOWfastapi/params.py306CODE
LOWfastapi/params.py390CODE
LOWfastapi/params.py470CODE
LOWfastapi/params.py582CODE
LOWfastapi/params.py664CODE
LOWfastapi/applications.py58CODE
LOWfastapi/applications.py1165CODE
LOWfastapi/applications.py1295CODE
LOWfastapi/applications.py1435CODE
LOWfastapi/applications.py1640CODE
LOWfastapi/applications.py2013CODE
LOWfastapi/applications.py2391CODE
LOWfastapi/applications.py2769CODE
LOWfastapi/applications.py3142CODE
LOWfastapi/applications.py3515CODE
LOWfastapi/applications.py3888CODE
LOWfastapi/applications.py4266CODE
LOWfastapi/encoders.py129CODE
LOWfastapi/routing.py293CODE
LOWfastapi/routing.py367CODE
LOWfastapi/routing.py946CODE
LOWfastapi/routing.py1146CODE
LOWfastapi/routing.py1291CODE
LOWfastapi/routing.py2237CODE
LOWfastapi/routing.py2838CODE
LOWfastapi/routing.py2922CODE
LOWfastapi/routing.py3082CODE
LOWfastapi/routing.py3271CODE
LOWfastapi/routing.py3648CODE
LOWfastapi/routing.py4030CODE
LOWfastapi/routing.py4412CODE
LOWfastapi/routing.py4789CODE
LOWfastapi/routing.py5166CODE
LOWfastapi/routing.py5548CODE
LOWfastapi/routing.py5930CODE
LOWfastapi/param_functions.py13CODE
LOWfastapi/param_functions.py357CODE
LOWfastapi/param_functions.py701CODE
LOWfastapi/param_functions.py1018CODE
LOWfastapi/param_functions.py1323CODE
LOWfastapi/param_functions.py1653CODE
LOWfastapi/param_functions.py1968CODE
LOWfastapi/openapi/utils.py523CODE
LOW…_operation_advanced_configuration/tutorial006_py310.py41CODE
Deep Nesting32 hits · 27 pts
SeverityFileLineSnippetContext
LOWfastapi/encoders.py129CODE
LOWfastapi/routing.py367CODE
LOWfastapi/routing.py946CODE
LOWfastapi/routing.py398CODE
LOWfastapi/routing.py1701CODE
LOWfastapi/routing.py2107CODE
LOWfastapi/routing.py2760CODE
LOWfastapi/routing.py3082CODE
LOWfastapi/routing.py516CODE
LOWfastapi/routing.py551CODE
LOWfastapi/routing.py581CODE
LOWfastapi/dependencies/utils.py286CODE
LOWfastapi/dependencies/utils.py362CODE
LOWfastapi/dependencies/utils.py393CODE
LOWfastapi/dependencies/utils.py598CODE
LOWfastapi/dependencies/utils.py784CODE
LOWfastapi/dependencies/utils.py916CODE
LOWfastapi/openapi/utils.py107CODE
LOWfastapi/openapi/utils.py260CODE
LOWfastapi/openapi/utils.py523CODE
LOWfastapi/_compat/shared.py109CODE
LOWfastapi/_compat/v2.py446CODE
LOWscripts/contributors.py175CODE
LOWscripts/notify_translations.py306CODE
LOWscripts/doc_parsing_utils.py141CODE
LOWscripts/doc_parsing_utils.py482CODE
LOWscripts/doc_parsing_utils.py570CODE
LOWscripts/docs.py208CODE
LOWscripts/docs.py600CODE
LOWscripts/docs.py727CODE
LOWscripts/docs.py837CODE
LOWscripts/people.py268CODE
Excessive Try-Catch Wrapping14 hits · 18 pts
SeverityFileLineSnippetContext
LOWtests/test_ws_router.py220 except Exception as e: # pragma: no coverCODE
LOWtests/test_ws_router.py245 except Exception as e:CODE
MEDIUMtests/test_ws_router.py217def catcher(websocket, call_next):CODE
LOWtests/test_validation_error_context.py91 except Exception:CODE
LOWtests/test_validation_error_context.py104 except Exception:CODE
LOWtests/test_validation_error_context.py118 except Exception:CODE
LOWtests/test_validation_error_context.py131 except Exception:CODE
LOWtests/test_validation_error_context.py145 except Exception:CODE
LOWfastapi/concurrency.py30 except Exception as e:CODE
LOWfastapi/encoders.py346 except Exception as e:CODE
LOWfastapi/encoders.py351 except Exception as e:CODE
LOWfastapi/routing.py286 except Exception:CODE
LOWfastapi/routing.py461 except Exception as e:CODE
MEDIUMscripts/translation_fixer.py97 print(f"Error processing {path}: {e}")CODE
Structural Annotation Overuse8 hits · 12 pts
SeverityFileLineSnippetContext
LOWdocs/ja/docs/tutorial/first-steps.md384### Step 5: コンテンツの返信 { #step-5-return-the-content }COMMENT
LOWdocs/ja/docs/tutorial/first-steps.md394### Step 6: デプロイする { #step-6-deploy-it }COMMENT
LOWdocs/en/docs/tutorial/first-steps.md225### Step 1: import `FastAPI` { #step-1-import-fastapi }COMMENT
LOWdocs/en/docs/tutorial/first-steps.md239### Step 2: create a `FastAPI` "instance" { #step-2-create-a-fastapi-instance }COMMENT
LOWdocs/en/docs/tutorial/first-steps.md247### Step 3: create a *path operation* { #step-3-create-a-path-operation }COMMENT
LOWdocs/en/docs/tutorial/first-steps.md356### Step 4: define the **path operation function** { #step-4-define-the-path-operation-function }COMMENT
LOWdocs/en/docs/tutorial/first-steps.md384### Step 5: return the content { #step-5-return-the-content }COMMENT
LOWdocs/en/docs/tutorial/first-steps.md394### Step 6: Deploy it { #step-6-deploy-it }COMMENT
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHdocs_src/websockets_/tutorial002_an_py310.py35 var ws = null;CODE
HIGHdocs_src/websockets_/tutorial002_py310.py33 var ws = null;CODE
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM…s/test_tutorial/test_sql_databases/test_tutorial002.py63 # Create a heroCOMMENT
MEDIUM…s/test_tutorial/test_sql_databases/test_tutorial001.py63 # Create a heroCOMMENT
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMdocs/en/data/sponsors.yml62 # title: Learn to build high-quality web apps with best practicesCOMMENT
MEDIUMfastapi/routing.py340 # facilitate profiling endpoints, since inner functions are harder to profile.COMMENT
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/test_schema_extra_examples.py61 # def form_examples(COMMENT
LOWtests/test_request_params/test_cookie/test_list.py1# Currently, there is no way to pass multiple cookies with the same name.COMMENT
LOW…/test_request_params/test_cookie/test_optional_list.py1# Currently, there is no way to pass multiple cookies with the same name.COMMENT
LOWfastapi/applications.py1041 ),COMMENT
Modern Structural Boilerplate4 hits · 4 pts
SeverityFileLineSnippetContext
LOWfastapi/routing.py866def _update_scope(scope: Scope, child_scope: Scope) -> None:CODE
LOWscripts/docs.py421def update_languages() -> None:STRING
LOWscripts/docs.py703def update_docs_includes_py39_to_py310() -> None:STRING
LOWscripts/people.py65 def update_request_info(self, cost: int, remaining: int, reset_at: str) -> None:CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMfastapi/.agents/skills/fastapi/SKILL.md15* Dependencies: use `Annotated[..., Depends(...)]`; see [Dependency Injection](#dependency-injection) and [the dependencCOMMENT
Redundant / Tautological Comments2 hits · 2 pts
SeverityFileLineSnippetContext
LOWfastapi/dependencies/utils.py879 # Check if it's a Union type (covers both typing.Union and types.UnionType in Python 3.10+)COMMENT
LOWscripts/docs.py767 # Check if the _an counterpart (or non-_an counterpart) is referenced.STRING