Scan timing: clone 1.24s · analysis 3.28s · 0.3 MB · GitHub API rate-limit (preflight)
https://github.com/modern-python/modern-di
· scanned 2026-06-05 12:52 UTC (5 days, 10 hours ago)
· 10 languages
131 raw signals (73 security + 58 graph) 84th percentile · Python · small (2-20K LoC) System graph score 98 (lower by 16)
Last scanned 5 days, 10 hours ago · v2 · 64 actionable findings from 2 signal sources. 38 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
75.0 | 0.15 | 11.25 |
security_score |
100.0 | 0.25 | 25.00 |
testing_score |
87.0 | 0.20 | 17.40 |
documentation_score |
62.0 | 0.15 | 9.30 |
practices_score |
72.0 | 0.15 | 10.80 |
code_quality |
79.0 | 0.10 | 7.90 |
| Overall | 1.00 | 81.7 |
All 426 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 |
|---|---|---|---|
test_group_cannot_be_instantiated |
software | healthy | tests/test_group.py:7 |
test_container_prevent_copy |
software | healthy | tests/test_container.py:18 |
test_container_scope_skipped |
software | healthy | tests/test_container.py:25 |
test_container_build_child |
software | healthy | tests/test_container.py:33 |
test_container_scope_limit_reached |
software | healthy | tests/test_container.py:40 |
test_container_build_child_wrong_scope |
software | healthy | tests/test_container.py:47 |
test_container_resolve_missing_provider |
software | healthy | tests/test_container.py:55 |
test_container_sync_context_manager |
software | healthy | tests/test_container.py:65 |
test_container_async_context_manager |
software | healthy | tests/test_container.py:73 |
test_container_repr |
software | healthy | tests/test_container.py:81 |
test_validate_on_creation |
software | healthy | tests/test_container.py:104 |
test_validate_detects_cycle |
software | healthy | tests/test_container.py:109 |
test_validate_passes_for_valid_graph |
software | healthy | tests/test_container.py:118 |
test_validate_memoizes_diamond |
software | healthy | tests/test_container.py:135 |
counting_get_dependencies |
software | healthy | tests/test_container.py:157 |
test_signature_item_parser |
software | healthy | tests/test_types_parser.py:33 |
simple_func |
software | healthy | tests/test_types_parser.py:37 |
none_func |
software | healthy | tests/test_types_parser.py:38 |
args_kwargs_func |
software | healthy | tests/test_types_parser.py:39 |
func_with_str_annotations |
software | healthy | tests/test_types_parser.py:40 |
async_func |
software | healthy | tests/test_types_parser.py:41 |
__init__ |
software | healthy | tests/test_types_parser.py:68 |
func_with_wrong_annotations |
software | healthy | tests/test_types_parser.py:64 |
test_parse_creator |
software | healthy | tests/test_types_parser.py:168 |
test_subclass_suggestion |
software | healthy | tests/test_suggestions.py:25 |
test_baseclass_suggestion |
software | healthy | tests/test_suggestions.py:40 |
test_typo_suggestion |
software | healthy | tests/test_suggestions.py:55 |
test_suggestion_includes_provider_scope |
software | healthy | tests/test_suggestions.py:76 |
test_no_suggestions_when_nothing_matches |
software | healthy | tests/test_suggestions.py:92 |
test_suggestions_capped_at_three |
software | healthy | tests/test_suggestions.py:100 |
test_hierarchy_hint_skips_non_class_bound_type |
software | healthy | tests/test_suggestions.py:141 |
test_hierarchy_hint_swallows_protocol_typeerror |
software | healthy | tests/test_suggestions.py:146 |
foo |
software | healthy | tests/test_suggestions.py:148 |
test_argument_resolution_subclass_suggestion |
software | healthy | tests/test_suggestions.py:154 |
test_argument_resolution_baseclass_suggestion |
software | healthy | tests/test_suggestions.py:173 |
test_argument_resolution_typo_suggestion |
software | healthy | tests/test_suggestions.py:191 |
test_argument_resolution_no_suggestions_when_nothing_matches |
software | healthy | tests/test_suggestions.py:213 |
test_hierarchy_hint_preferred_over_typo |
software | healthy | tests/test_suggestions.py:229 |
test_chain_appears_when_arg_unresolvable |
software | healthy | tests/test_dependency_path.py:29 |
test_no_chain_when_top_level_provider_missing |
software | healthy | tests/test_dependency_path.py:48 |
test_chain_includes_scope_name |
software | healthy | tests/test_dependency_path.py:56 |
test_build_child_at_custom_scope_from_step |
software | healthy | tests/test_custom_scope.py:29 |
test_build_child_at_custom_scope_from_app_skips_intermediate |
software | healthy | tests/test_custom_scope.py:36 |
test_factory_resolves_through_custom_scope_container |
software | healthy | tests/test_custom_scope.py:42 |
test_resolve_at_custom_scope_from_app_raises_scope_not_init… |
software | healthy | tests/test_custom_scope.py:53 |
test_resolve_app_provider_from_custom_scope_with_skipped_ch… |
software | healthy | tests/test_custom_scope.py:64 |
test_invalid_child_scope_uses_parent_enum_for_allowed_list |
software | healthy | tests/test_custom_scope.py:72 |
test_invalid_child_scope_with_conflicting_value |
software | healthy | tests/test_custom_scope.py:81 |
test_caching_isolated_across_tenant_containers |
software | healthy | tests/test_custom_scope.py:89 |
test_auto_derive_within_custom_enum |
software | healthy | tests/test_custom_scope.py:107 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
Dependencies |
software | healthy | tests/test_group.py:8 |
CycleA |
software | healthy | tests/test_container.py:90 |
CycleB |
software | healthy | tests/test_container.py:95 |
CycleGroup |
software | healthy | tests/test_container.py:99 |
Dep |
software | healthy | tests/test_container.py:120 |
Service |
software | healthy | tests/test_container.py:124 |
ValidGroup |
software | healthy | tests/test_container.py:127 |
Bottom |
software | healthy | tests/test_container.py:137 |
Left |
software | healthy | tests/test_container.py:141 |
Right |
software | healthy | tests/test_container.py:145 |
Top |
software | healthy | tests/test_container.py:149 |
DiamondGroup |
software | healthy | tests/test_container.py:164 |
GenericClass |
software | healthy | tests/test_types_parser.py:10 |
SomeDataClass |
software | healthy | tests/test_types_parser.py:45 |
DataClassInitFalse |
software | healthy | tests/test_types_parser.py:51 |
SomeRegularClass |
software | healthy | tests/test_types_parser.py:56 |
ClassWithStringAnnotations |
software | healthy | tests/test_types_parser.py:60 |
ClassWithWrongAnnotations |
software | healthy | tests/test_types_parser.py:67 |
Database |
software | healthy | tests/test_suggestions.py:11 |
PostgresDatabase |
software | healthy | tests/test_suggestions.py:16 |
Repository |
software | healthy | tests/test_suggestions.py:21 |
G |
software | healthy | tests/test_suggestions.py:234 |
Repostory |
software | healthy | tests/test_suggestions.py:193 |
A1 |
software | healthy | tests/test_suggestions.py:102 |
A2 |
software | healthy | tests/test_suggestions.py:106 |
A3 |
software | healthy | tests/test_suggestions.py:110 |
A4 |
software | healthy | tests/test_suggestions.py:114 |
A5 |
software | healthy | tests/test_suggestions.py:118 |
MyProto |
software | healthy | tests/test_suggestions.py:147 |
Service |
software | healthy | tests/test_suggestions.py:215 |
Databse |
software | healthy | tests/test_suggestions.py:231 |
Database |
software | healthy | tests/test_dependency_path.py:10 |
Repository |
software | healthy | tests/test_dependency_path.py:15 |
MyService |
software | healthy | tests/test_dependency_path.py:20 |
IncompleteGroup |
software | healthy | tests/test_dependency_path.py:24 |
Outer |
software | healthy | tests/test_dependency_path.py:58 |
CrossScope |
software | healthy | tests/test_dependency_path.py:61 |
MyScope |
software | healthy | tests/test_custom_scope.py:14 |
ConflictingScope |
software | healthy | tests/test_custom_scope.py:19 |
TenantService |
software | healthy | tests/test_custom_scope.py:25 |
TenantGroup |
software | healthy | tests/test_custom_scope.py:90 |
AbstractRepository |
software | healthy | tests/providers/test_alias.py:13 |
PostgresRepository |
software | healthy | tests/providers/test_alias.py:17 |
MyGroup |
software | healthy | tests/providers/test_alias.py:21 |
G |
software | healthy | tests/providers/test_alias.py:119 |
Iface |
software | healthy | tests/providers/test_alias.py:113 |
Concrete |
software | healthy | tests/providers/test_alias.py:116 |
SimpleCreator |
software | healthy | tests/providers/test_factory.py:12 |
DependentCreator |
software | healthy | tests/providers/test_factory.py:17 |
AnotherCreator |
software | healthy | tests/providers/test_factory.py:22 |
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 |
context7.json |
software | healthy | context7.json |
CLAUDE.md |
software | healthy | CLAUDE.md |
.readthedocs.yaml |
software | healthy | .readthedocs.yaml |
pyproject.toml |
software | healthy | pyproject.toml |
test_group.py |
software | healthy | tests/test_group.py |
__init__.py |
software | healthy | tests/__init__.py |
test_container.py |
software | healthy | tests/test_container.py |
test_types_parser.py |
software | healthy | tests/test_types_parser.py |
test_suggestions.py |
software | healthy | tests/test_suggestions.py |
test_dependency_path.py |
software | healthy | tests/test_dependency_path.py |
test_custom_scope.py |
software | healthy | tests/test_custom_scope.py |
__init__.py |
software | healthy | tests/providers/__init__.py |
test_alias.py |
software | healthy | tests/providers/test_alias.py |
test_factory.py |
software | healthy | tests/providers/test_factory.py |
test_singleton.py |
software | healthy | tests/providers/test_singleton.py |
test_context_provider.py |
software | healthy | tests/providers/test_context_provider.py |
test_container_provider.py |
software | healthy | tests/providers/test_container_provider.py |
__init__.py |
software | healthy | tests/registries/__init__.py |
test_providers_registry.py |
software | healthy | tests/registries/test_providers_registry.py |
__init__.py |
software | healthy | benchmarks/__init__.py |
bench_scope_map.py |
software | healthy | benchmarks/bench_scope_map.py |
bench_kwargs_split.py |
software | healthy | benchmarks/bench_kwargs_split.py |
RESULTS.md |
software | healthy | benchmarks/RESULTS.md |
bench_override_fastpath.py |
software | healthy | benchmarks/bench_override_fastpath.py |
context7.json |
software | healthy | docs/context7.json |
index.md |
software | healthy | docs/index.md |
requirements.txt |
software | healthy | docs/requirements.txt |
pytest.md |
software | healthy | docs/integrations/pytest.md |
typer.md |
software | healthy | docs/integrations/typer.md |
fastapi.md |
software | healthy | docs/integrations/fastapi.md |
faststream.md |
software | healthy | docs/integrations/faststream.md |
litestar.md |
software | healthy | docs/integrations/litestar.md |
fixtures.md |
software | healthy | docs/testing/fixtures.md |
about-di.md |
software | healthy | docs/introduction/about-di.md |
resolving.md |
software | healthy | docs/introduction/resolving.md |
to-2.x.md |
software | healthy | docs/migration/to-2.x.md |
from-that-depends.md |
software | healthy | docs/migration/from-that-depends.md |
to-1.x.md |
software | healthy | docs/migration/to-1.x.md |
factories.md |
software | healthy | docs/providers/factories.md |
context.md |
software | healthy | docs/providers/context.md |
container.md |
software | healthy | docs/providers/container.md |
alias.md |
software | healthy | docs/providers/alias.md |
code.css |
software | healthy | docs/css/code.css |
key-concepts.md |
software | healthy | docs/dev/key-concepts.md |
contributing.md |
software | healthy | docs/dev/contributing.md |
decisions.md |
software | healthy | docs/dev/decisions.md |
duplicate-type-error.md |
software | healthy | docs/troubleshooting/duplicate-type-error.md |
circular-dependency.md |
software | healthy | docs/troubleshooting/circular-dependency.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 |
providers |
software | healthy | tests/providers |
registries |
software | healthy | tests/registries |
benchmarks |
software | healthy | benchmarks |
docs |
software | healthy | docs |
integrations |
software | healthy | docs/integrations |
testing |
software | healthy | docs/testing |
introduction |
software | healthy | docs/introduction |
migration |
software | healthy | docs/migration |
providers |
software | healthy | docs/providers |
css |
software | healthy | docs/css |
dev |
software | healthy | docs/dev |
troubleshooting |
software | healthy | docs/troubleshooting |
modern_di |
software | healthy | modern_di |
providers |
software | healthy | modern_di/providers |
registries |
software | healthy | modern_di/registries |
skills |
software | healthy | skills |
modern-di |
software | healthy | skills/modern-di |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
planning |
software | healthy | planning |
audits |
software | healthy | planning/audits |
plans |
software | healthy | planning/plans |
specs |
software | healthy | planning/specs |
| Label | Layer | Status | Path |
|---|---|---|---|
lint |
cicd | healthy | .github/workflows/ci.yml |
pytest |
cicd | healthy | .github/workflows/ci.yml |
publish |
cicd | healthy | .github/workflows/publish.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::publish |
cicd | healthy | .github/workflows/publish.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-j29swvaf |
software | healthy | /tmp/repobility-clone-j29swvaf |
| Label | Layer | Status | Path |
|---|---|---|---|
postgres |
data | healthy | tests/providers/test_alias.py |
| Label | Layer | Status | Path |
|---|---|---|---|
PYPI_TOKEN |
cicd | healthy | — |
This page is publicly accessible at:
https://repobility.com/scan/00d6d4e8-765e-414b-b211-4a66299ebf76/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/00d6d4e8-765e-414b-b211-4a66299ebf76/
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.