sourcecode 1.33.9__tar.gz → 1.33.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sourcecode-1.33.9 → sourcecode-1.33.10}/PKG-INFO +2 -2
- {sourcecode-1.33.9 → sourcecode-1.33.10}/README.md +1 -1
- {sourcecode-1.33.9 → sourcecode-1.33.10}/pyproject.toml +1 -1
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/__init__.py +1 -1
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/repository_ir.py +58 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/.gitignore +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/.ruff.toml +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/CHANGELOG.md +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/CONTRIBUTING.md +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/LICENSE +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/SECURITY.md +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/raw +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/cache.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/classifier.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/cli.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/flow_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/license.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/progress.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/redactor.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/ris.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/scanner.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/schema.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/serializer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-1.33.9 → sourcecode-1.33.10}/src/sourcecode/workspace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 1.33.
|
|
3
|
+
Version: 1.33.10
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Keywords: agents,ai,codebase,context,developer-tools,llm
|
|
@@ -39,7 +39,7 @@ Description-Content-Type: text/markdown
|
|
|
39
39
|
|
|
40
40
|
**Persistent structural context and ultra-fast repeated analysis for AI coding agents.**
|
|
41
41
|
|
|
42
|
-

|
|
43
43
|

|
|
44
44
|
|
|
45
45
|
---
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Persistent structural context and ultra-fast repeated analysis for AI coding agents.**
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|

|
|
7
7
|
|
|
8
8
|
---
|
|
@@ -232,6 +232,12 @@ _INJECT_ANNOTATIONS: frozenset[str] = frozenset({
|
|
|
232
232
|
"@Autowired", "@Inject", "@Value", "@Qualifier", "@Resource",
|
|
233
233
|
})
|
|
234
234
|
|
|
235
|
+
# Lombok annotations that generate constructors injecting fields
|
|
236
|
+
_LOMBOK_CTOR_ANNOTATIONS: frozenset[str] = frozenset({
|
|
237
|
+
"@RequiredArgsConstructor", # injects private final fields
|
|
238
|
+
"@AllArgsConstructor", # injects all non-static fields
|
|
239
|
+
})
|
|
240
|
+
|
|
235
241
|
_JAVA_ROLE_MAP: dict[str, str] = {
|
|
236
242
|
# Spring MVC / Spring Boot
|
|
237
243
|
"@RestController": "controller",
|
|
@@ -934,6 +940,58 @@ def _build_relations(
|
|
|
934
940
|
)},
|
|
935
941
|
))
|
|
936
942
|
|
|
943
|
+
# ── Constructor injection ─────────────────────────────────────────────────
|
|
944
|
+
# Spring 4.3+ omits @Autowired when there is a single constructor.
|
|
945
|
+
# Both annotated and bare constructors get injects edges from ClassName#<init>
|
|
946
|
+
# to each resolvable parameter type so the reverse graph can propagate impact.
|
|
947
|
+
for sym in symbols:
|
|
948
|
+
if sym.symbol_kind != "constructor" or not sym.param_types:
|
|
949
|
+
continue
|
|
950
|
+
for simple_type in sym.param_types:
|
|
951
|
+
base = re.sub(r'<.*', '', simple_type).strip()
|
|
952
|
+
fqn = import_map.get(base)
|
|
953
|
+
if fqn:
|
|
954
|
+
edges.append(RelationEdge(
|
|
955
|
+
from_symbol=sym.symbol,
|
|
956
|
+
to_symbol=fqn,
|
|
957
|
+
type="injects",
|
|
958
|
+
confidence="high",
|
|
959
|
+
evidence={"type": "constructor_param", "value": simple_type},
|
|
960
|
+
))
|
|
961
|
+
|
|
962
|
+
# ── Lombok constructor injection ──────────────────────────────────────────
|
|
963
|
+
# @RequiredArgsConstructor: injects all private final fields.
|
|
964
|
+
# @AllArgsConstructor: injects all non-static fields.
|
|
965
|
+
# No explicit constructor symbol exists; edges are emitted from the class FQN.
|
|
966
|
+
for sym in symbols:
|
|
967
|
+
if sym.type not in ("class", "interface"):
|
|
968
|
+
continue
|
|
969
|
+
_has_req = "@RequiredArgsConstructor" in sym.annotations
|
|
970
|
+
_has_all = "@AllArgsConstructor" in sym.annotations
|
|
971
|
+
if not (_has_req or _has_all):
|
|
972
|
+
continue
|
|
973
|
+
_lombok_ann = "@RequiredArgsConstructor" if _has_req else "@AllArgsConstructor"
|
|
974
|
+
for _line in source.splitlines():
|
|
975
|
+
fld = _FIELD_DECL_RE.match(_line.strip())
|
|
976
|
+
if not fld:
|
|
977
|
+
continue
|
|
978
|
+
_mods = _parse_modifier_str(fld.group("modifiers") or "")
|
|
979
|
+
if "static" in _mods:
|
|
980
|
+
continue
|
|
981
|
+
if _has_req and "final" not in _mods:
|
|
982
|
+
continue
|
|
983
|
+
_ftype = fld.group("type").strip()
|
|
984
|
+
_base = re.sub(r'<.*', '', _ftype).strip()
|
|
985
|
+
_fqn = import_map.get(_base)
|
|
986
|
+
if _fqn:
|
|
987
|
+
edges.append(RelationEdge(
|
|
988
|
+
from_symbol=sym.symbol,
|
|
989
|
+
to_symbol=_fqn,
|
|
990
|
+
type="injects",
|
|
991
|
+
confidence="medium",
|
|
992
|
+
evidence={"type": "lombok_constructor", "value": _lombok_ann},
|
|
993
|
+
))
|
|
994
|
+
|
|
937
995
|
for m in re.finditer(
|
|
938
996
|
r'(?:class|interface)\s+(\w+)(?:\s+extends\s+([\w.<>?,\s]+?))?'
|
|
939
997
|
r'(?:\s+implements\s+([\w.<>?,\s]+?))?\s*\{',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|