Scan timing: clone 3.23s · analysis 1.64s · 3.8 MB · GitHub API rate-limit (preflight)
https://github.com/encode/starlette.git
· scanned 2026-05-24 01:21 UTC (1 week, 5 days ago)
· 10 languages
175 findings (76 legacy + 99 scanner) 84th percentile · Python · small (2-20K LoC) Scanner says 73 (higher by 9)
Last scanned 1 week, 5 days ago · v2 · 125 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
75.0 | 0.15 | 11.25 |
security_score |
94.4 | 0.25 | 23.60 |
testing_score |
100.0 | 0.20 | 20.00 |
documentation_score |
66.0 | 0.15 | 9.90 |
practices_score |
72.0 | 0.15 | 10.80 |
code_quality |
62.0 | 0.10 | 6.20 |
| Overall | 1.00 | 81.8 |
All 1381 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
error_500 |
software | healthy | tests/test_applications.py:28 |
method_not_allowed |
software | healthy | tests/test_applications.py:32 |
http_exception |
software | healthy | tests/test_applications.py:36 |
func_homepage |
software | healthy | tests/test_applications.py:40 |
async_homepage |
software | healthy | tests/test_applications.py:44 |
get |
software | healthy | tests/test_applications.py:49 |
all_users_page |
software | healthy | tests/test_applications.py:53 |
user_page |
software | healthy | tests/test_applications.py:57 |
custom_subdomain |
software | healthy | tests/test_applications.py:62 |
runtime_error |
software | healthy | tests/test_applications.py:66 |
websocket_endpoint |
software | healthy | tests/test_applications.py:373 |
websocket_raise_websocket_exception |
software | healthy | tests/test_applications.py:76 |
websocket_raise_http_exception |
software | healthy | tests/test_applications.py:81 |
websocket_raise_custom |
software | healthy | tests/test_applications.py:89 |
websocket_state |
software | healthy | tests/test_applications.py:94 |
custom_ws_exception_handler |
software | healthy | tests/test_applications.py:100 |
lifespan |
software | healthy | tests/test_applications.py:560 |
state_count |
software | healthy | tests/test_applications.py:113 |
client |
software | healthy | tests/test_applications.py:161 |
test_url_path_for |
software | healthy | tests/test_applications.py:166 |
test_func_route |
software | healthy | tests/test_applications.py:170 |
test_async_route |
software | healthy | tests/test_applications.py:180 |
test_class_route |
software | healthy | tests/test_applications.py:186 |
test_mounted_route |
software | healthy | tests/test_applications.py:192 |
test_mounted_route_path_params |
software | healthy | tests/test_applications.py:198 |
test_subdomain_route |
software | healthy | tests/test_applications.py:204 |
test_websocket_route |
software | healthy | tests/test_applications.py:212 |
test_400 |
software | healthy | tests/test_applications.py:218 |
test_405 |
software | healthy | tests/test_applications.py:224 |
test_500 |
software | healthy | tests/test_applications.py:234 |
test_request_state |
software | healthy | tests/test_applications.py:241 |
test_websocket_raise_websocket_exception |
software | healthy | tests/test_applications.py:247 |
test_websocket_state |
software | healthy | tests/test_applications.py:257 |
test_websocket_raise_http_exception |
software | healthy | tests/test_applications.py:263 |
test_websocket_raise_custom_exception |
software | healthy | tests/test_applications.py:271 |
test_middleware |
software | healthy | tests/test_applications.py:281 |
test_routes |
software | healthy | tests/test_applications.py:288 |
test_app_mount |
software | healthy | tests/test_applications.py:316 |
test_app_debug |
software | healthy | tests/test_applications.py:338 |
homepage |
software | healthy | tests/test_applications.py:357 |
test_app_add_route |
software | healthy | tests/test_applications.py:356 |
test_app_add_websocket_route |
software | healthy | tests/test_applications.py:372 |
test_app_async_cm_lifespan |
software | healthy | tests/test_applications.py:390 |
test_app_async_gen_lifespan |
software | healthy | tests/test_applications.py:422 |
test_app_sync_gen_lifespan |
software | healthy | tests/test_applications.py:444 |
test_middleware_stack_init |
software | healthy | tests/test_applications.py:465 |
__init__ |
software | healthy | tests/test_applications.py:511 |
__call__ |
software | healthy | tests/test_applications.py:515 |
get_app |
software | healthy | tests/test_applications.py:483 |
test_middleware_args |
software | healthy | tests/test_applications.py:507 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
Homepage |
software | healthy | tests/test_applications.py:48 |
CustomWSException |
software | healthy | tests/test_applications.py:85 |
CustomState |
software | healthy | tests/test_applications.py:104 |
NoOpMiddleware |
software | healthy | tests/test_applications.py:466 |
SimpleInitializableMiddleware |
software | healthy | tests/test_applications.py:473 |
MiddlewareWithArgs |
software | healthy | tests/test_applications.py:510 |
App |
software | healthy | tests/test_applications.py:556 |
OrganisationsEndpoint |
software | healthy | tests/test_schemas.py:51 |
PartialRoutes |
software | healthy | tests/test_routing.py:63 |
CustomMiddleware |
software | healthy | tests/test_routing.py:318 |
WebSocketEndpoint |
software | healthy | tests/test_routing.py:342 |
State |
software | healthy | tests/test_routing.py:649 |
Endpoint |
software | healthy | tests/test_routing.py:768 |
AddHeadersMiddleware |
software | healthy | tests/test_routing.py:799 |
NamedMiddleware |
software | healthy | tests/test_routing.py:943 |
WebsocketMiddleware |
software | healthy | tests/test_routing.py:999 |
TestClientFactory |
software | healthy | tests/types.py:26 |
BadBodyException |
software | healthy | tests/test_exceptions.py:37 |
HandledExcAfterResponse |
software | healthy | tests/test_exceptions.py:51 |
CustomHTTPException |
software | healthy | tests/test_exceptions.py:158 |
CustomWebSocketException |
software | healthy | tests/test_exceptions.py:176 |
CustomMiddleware |
software | healthy | tests/test_requests.py:657 |
CustomIterable |
software | healthy | tests/test_concurrency.py:51 |
CustomAsyncIterator |
software | healthy | tests/test_responses.py:133 |
CustomAsyncIterable |
software | healthy | tests/test_responses.py:158 |
MultipartPart |
software | healthy | tests/test_responses.py:827 |
SmallChunkSizeFileResponse |
software | healthy | tests/test_responses.py:954 |
MiddlewareException |
software | healthy | tests/test_testclient.py:180 |
BrokenMiddleware |
software | healthy | tests/test_testclient.py:183 |
Async |
software | healthy | tests/test__utils.py:55 |
Sync |
software | healthy | tests/test__utils.py:62 |
DateTimeConvertor |
software | healthy | tests/test_convertors.py:22 |
ForceMultipartDict |
software | healthy | tests/test_formparsers.py:25 |
ThreadTrackingSpooledTemporaryFile |
software | healthy | tests/test_formparsers.py:327 |
BasicAuth |
software | healthy | tests/test_authentication.py:26 |
Dashboard |
software | healthy | tests/test_authentication.py:84 |
CustomMiddleware |
software | healthy | tests/test_templates.py:85 |
Homepage |
software | healthy | tests/test_endpoints.py:14 |
Endpoint |
software | healthy | tests/test_endpoints.py:51 |
WebSocketApp |
software | healthy | tests/test_endpoints.py:171 |
CustomMiddleware |
software | healthy | tests/middleware/test_base.py:178 |
NoResponse |
software | healthy | tests/middleware/test_base.py:54 |
aMiddleware |
software | healthy | tests/middleware/test_base.py:115 |
bMiddleware |
software | healthy | tests/middleware/test_base.py:125 |
cMiddleware |
software | healthy | tests/middleware/test_base.py:136 |
CustomMiddlewareWithoutBaseHTTPMiddleware |
software | healthy | tests/middleware/test_base.py:197 |
CustomMiddlewareUsingBaseHTTPMiddleware |
software | healthy | tests/middleware/test_base.py:207 |
ContextManagerMiddleware |
software | healthy | tests/middleware/test_base.py:413 |
DiscardingMiddleware |
software | healthy | tests/middleware/test_base.py:538 |
ConsumingMiddleware |
software | healthy | tests/middleware/test_base.py:978 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
mkdocs.yml |
software | healthy | mkdocs.yml |
README.md |
software | healthy | README.md |
LICENSE.md |
software | healthy | LICENSE.md |
pyproject.toml |
software | healthy | pyproject.toml |
test_applications.py |
software | healthy | tests/test_applications.py |
test_datastructures.py |
software | healthy | tests/test_datastructures.py |
__init__.py |
software | healthy | tests/__init__.py |
conftest.py |
software | healthy | tests/conftest.py |
test_schemas.py |
software | healthy | tests/test_schemas.py |
test_routing.py |
software | healthy | tests/test_routing.py |
types.py |
software | healthy | tests/types.py |
test_exceptions.py |
software | healthy | tests/test_exceptions.py |
test_staticfiles.py |
software | healthy | tests/test_staticfiles.py |
test_requests.py |
software | healthy | tests/test_requests.py |
test_config.py |
software | healthy | tests/test_config.py |
test_concurrency.py |
software | healthy | tests/test_concurrency.py |
test_responses.py |
software | healthy | tests/test_responses.py |
test_status.py |
software | healthy | tests/test_status.py |
test_testclient.py |
software | healthy | tests/test_testclient.py |
test__utils.py |
software | healthy | tests/test__utils.py |
test_convertors.py |
software | healthy | tests/test_convertors.py |
test_formparsers.py |
software | healthy | tests/test_formparsers.py |
test_websockets.py |
software | healthy | tests/test_websockets.py |
test_background.py |
software | healthy | tests/test_background.py |
test_authentication.py |
software | healthy | tests/test_authentication.py |
test_templates.py |
software | healthy | tests/test_templates.py |
test_endpoints.py |
software | healthy | tests/test_endpoints.py |
test_gzip.py |
software | healthy | tests/middleware/test_gzip.py |
test_errors.py |
software | healthy | tests/middleware/test_errors.py |
__init__.py |
software | healthy | tests/middleware/__init__.py |
test_cors.py |
software | healthy | tests/middleware/test_cors.py |
test_session.py |
software | healthy | tests/middleware/test_session.py |
test_base.py |
software | healthy | tests/middleware/test_base.py |
test_https_redirect.py |
software | healthy | tests/middleware/test_https_redirect.py |
test_middleware.py |
software | healthy | tests/middleware/test_middleware.py |
test_wsgi.py |
software | healthy | tests/middleware/test_wsgi.py |
test_trusted_host.py |
software | healthy | tests/middleware/test_trusted_host.py |
release-notes.md |
software | healthy | docs/release-notes.md |
templates.md |
software | healthy | docs/templates.md |
third-party-packages.md |
software | healthy | docs/third-party-packages.md |
schemas.md |
software | healthy | docs/schemas.md |
graphql.md |
software | healthy | docs/graphql.md |
lifespan.md |
software | healthy | docs/lifespan.md |
requests.md |
software | healthy | docs/requests.md |
database.md |
software | healthy | docs/database.md |
server-push.md |
software | healthy | docs/server-push.md |
background.md |
software | healthy | docs/background.md |
threadpool.md |
software | healthy | docs/threadpool.md |
index.md |
software | healthy | docs/index.md |
endpoints.md |
software | healthy | docs/endpoints.md |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
middleware |
software | healthy | tests/middleware |
docs |
software | healthy | docs |
js |
software | healthy | docs/js |
css |
software | healthy | docs/css |
overrides |
software | healthy | docs/overrides |
partials |
software | healthy | docs/overrides/partials |
scripts |
software | healthy | scripts |
starlette |
software | healthy | starlette |
middleware |
software | healthy | starlette/middleware |
.github |
software | healthy | .github |
ISSUE_TEMPLATE |
software | healthy | .github/ISSUE_TEMPLATE |
workflows |
software | healthy | .github/workflows |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
cicd | healthy | .github/workflows/main.yml |
check |
cicd | healthy | .github/workflows/main.yml |
zizmor |
cicd | healthy | .github/workflows/zizmor.yml |
build |
cicd | healthy | .github/workflows/publish.yml |
pypi-publish |
cicd | healthy | .github/workflows/publish.yml |
docs-publish |
cicd | healthy | .github/workflows/publish.yml |
docs-cloudflare |
cicd | healthy | .github/workflows/publish.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8080 |
network | healthy | tests/test_datastructures.py |
port:123 |
network | healthy | tests/test_datastructures.py |
port:88 |
network | healthy | tests/test_datastructures.py |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | tests/test_datastructures.py |
192.168.0.1 |
network | healthy | tests/test_testclient.py |
134.56.78.4 |
network | healthy | tests/middleware/test_wsgi.py |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::main |
cicd | healthy | .github/workflows/main.yml |
gha::zizmor |
cicd | healthy | .github/workflows/zizmor.yml |
gha::publish |
cicd | healthy | .github/workflows/publish.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
password_literal::tests/test_datastructures.py |
security | healthy | tests/test_datastructures.py |
password_literal::starlette/datastructures.py |
security | healthy | starlette/datastructures.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-jrbiknc_ |
software | healthy | /tmp/repobility-clone-jrbiknc_ |
| Label | Layer | Status | Path |
|---|---|---|---|
postgres |
data | healthy | tests/test_config.py |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::tests/test_requests.py |
security | healthy | tests/test_requests.py |
| Label | Layer | Status | Path |
|---|---|---|---|
CLOUDFLARE_API_TOKEN |
cicd | healthy | — |
This page is publicly accessible at:
https://repobility.com/scan/ccc7a59c-b7cb-442a-a08a-1aa8791f8ad9/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/ccc7a59c-b7cb-442a-a08a-1aa8791f8ad9/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.