sourcecode 1.30.25__py3-none-any.whl → 1.30.26__py3-none-any.whl

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/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """sourcecode — Deterministic codebase context maps for AI coding agents."""
2
2
 
3
- __version__ = "1.30.25"
3
+ __version__ = "1.30.26"
@@ -290,10 +290,18 @@ class ConfidenceAnalyzer:
290
290
  elif production_eps and all(ep.runtime_relevance == "low" for ep in production_eps):
291
291
  overall = _min_confidence([overall, "low"])
292
292
 
293
- # Factor in architecture confidence when available
293
+ # Factor in architecture confidence when available.
294
+ # Key rule: if a pattern was detected (not None/"unknown"), arch.confidence="low"
295
+ # typically reflects missing documentation (no OpenAPI/ADR), not structural uncertainty.
296
+ # In that case, clamp the downgrade to "medium" so that high stack + high entry_points
297
+ # is not contradicted by a docs gap.
294
298
  arch = sm.architecture
295
299
  if arch is not None and arch.requested:
296
- overall = _min_confidence([overall, arch.confidence])
300
+ arch_conf_for_overall = arch.confidence
301
+ if arch.confidence == "low" and arch.pattern not in (None, "unknown"):
302
+ # Pattern was detected — low is docs-only, not structural; cap downgrade at medium
303
+ arch_conf_for_overall = "medium"
304
+ overall = _min_confidence([overall, arch_conf_for_overall])
297
305
  if arch.pattern in (None, "unknown"):
298
306
  # Architecture could not be inferred — don't let stack alone push to high
299
307
  if overall == "high":
@@ -84,16 +84,17 @@ _JAVA_ANNOTATION_RE = re.compile(r'@(RestController|Controller|Service|Repositor
84
84
  # (annotation_set, category, relevance, why_template)
85
85
  # Checked in priority order; first match wins.
86
86
  _JAVA_STEREOTYPE_RULES: list[tuple[frozenset, str, float, str]] = [
87
- (frozenset({"EnableWebSecurity"}), "security", 0.85, "Spring Security configuration"),
88
- (frozenset({"RestController"}), "api_endpoint", 0.90, "Spring REST controller — defines HTTP API surface"),
89
- (frozenset({"Controller", "RequestMapping"}), "api_endpoint", 0.80, "Spring MVC controller"),
90
- (frozenset({"Service", "Transactional"}), "business_logic", 0.75, "Transactional servicebusiness logic boundary"),
91
- (frozenset({"Service"}), "business_logic", 0.65, "Spring service component"),
92
- (frozenset({"Repository"}), "data_access", 0.65, "Spring repository — data access layer"),
93
- (frozenset({"Mapper"}), "data_access", 0.65, "MyBatis mapperSQL data access"),
94
- (frozenset({"Configuration"}), "configuration", 0.70, "Spring configuration class"),
95
- (frozenset({"Entity"}), "domain_model", 0.50, "JPA entity — domain model"),
96
- (frozenset({"Data"}), "dto", 0.40, "Lombok DTO"),
87
+ (frozenset({"EnableWebSecurity"}), "security", 0.85, "Spring Security configuration"),
88
+ (frozenset({"RestController"}), "api_endpoint", 0.90, "Spring REST controller — defines HTTP API surface"),
89
+ (frozenset({"Controller", "RequestMapping"}), "api_endpoint", 0.80, "Spring MVC controller"),
90
+ (frozenset({"ControllerAdvice"}), "exception_handler", 0.75, "Spring @ControllerAdvicecross-cutting exception handling"),
91
+ (frozenset({"Service", "Transactional"}), "business_logic", 0.75, "Transactional service — business logic boundary"),
92
+ (frozenset({"Service"}), "business_logic", 0.65, "Spring service component"),
93
+ (frozenset({"Repository"}), "data_access", 0.65, "Spring repository — data access layer"),
94
+ (frozenset({"Mapper"}), "data_access", 0.65, "MyBatis mapper — SQL data access"),
95
+ (frozenset({"Configuration"}), "configuration", 0.70, "Spring configuration class"),
96
+ (frozenset({"Entity"}), "domain_model", 0.50, "JPA entity — domain model"),
97
+ (frozenset({"Data"}), "dto", 0.40, "Lombok DTO"),
97
98
  ]
98
99
 
99
100
  # Categories produced by Java stereotype detection — used downstream to apply direct relevance
@@ -2596,6 +2596,10 @@ class TaskContextBuilder:
2596
2596
  # These are INFERRED (LOW CONFIDENCE) — stem match, not annotation evidence.
2597
2597
  if any(kw in stem_lower for kw in ("validator", "validation")):
2598
2598
  return "validation_component"
2599
+ if any(kw in stem_lower for kw in ("filter", "interceptor", "aspect")):
2600
+ return "runtime_filter"
2601
+ if any(kw in stem_lower for kw in ("advice", "advise", "exceptionhandler", "errorhandler")):
2602
+ return "exception_handler"
2599
2603
  if any(kw in stem_lower for kw in ("controller", "resource", "endpoint", "rest")):
2600
2604
  return "external_interface"
2601
2605
  if any(kw in stem_lower for kw in ("service", "svc", "usecase", "facade")):
sourcecode/serializer.py CHANGED
@@ -660,6 +660,116 @@ def _jndi_datasources(sm: "SourceMap") -> "Optional[list[dict[str, Any]]]":
660
660
  return datasources
661
661
 
662
662
 
663
+ def _tiered_display_score(
664
+ pre_bonus_combined: float,
665
+ file_class: Any,
666
+ path: str,
667
+ entry_paths: set,
668
+ has_structural_signals: bool = False,
669
+ ) -> float:
670
+ """Evidence-tiered display score [0.0, 1.0].
671
+
672
+ Tiers enforce: strong evidence > medium evidence > filesystem/path only.
673
+ M3 sort bonuses must NOT be included in pre_bonus_combined — they are for
674
+ ordering only and must not inflate the displayed score.
675
+
676
+ Tier ceilings:
677
+ T1 confirmed production entrypoint 0.92–1.00
678
+ T2 entrypoint (weaker category) 0.80–0.91
679
+ T3 annotation-confirmed stereotype 0.40–0.90 (table-calibrated)
680
+ T4 framework import evidence 0.55–0.79
681
+ T5 code definitions + imports 0.38–0.54
682
+ T6 build manifest / tooling / test 0.25–0.45
683
+ T7 path/filesystem signal only 0.10–0.39
684
+ """
685
+ from sourcecode.file_classifier import JAVA_STEREOTYPE_CATEGORIES
686
+
687
+ cat = file_class.category if file_class else None
688
+ base_rel = file_class.relevance if file_class else 0.0
689
+
690
+ # T1: confirmed production entrypoint
691
+ if path in entry_paths and cat in ("runtime_core", "cli_entrypoint"):
692
+ return round(min(1.0, max(0.92, base_rel)), 3)
693
+
694
+ # T2: in entry_paths but weaker evidence category
695
+ if path in entry_paths:
696
+ return round(min(0.91, max(0.80, pre_bonus_combined / 2.0)), 3)
697
+
698
+ # T3: annotation-confirmed stereotype — table values are already calibrated
699
+ if file_class and cat in JAVA_STEREOTYPE_CATEGORIES:
700
+ return round(base_rel, 3)
701
+
702
+ # T4: framework import evidence (medium strength)
703
+ if cat in ("api_layer", "database_layer", "infrastructure"):
704
+ return round(min(0.79, max(0.55, pre_bonus_combined / 2.0)), 3)
705
+
706
+ # T5: code definitions with imports (medium-low)
707
+ if cat in ("application_logic", "domain_model"):
708
+ return round(min(0.54, max(0.38, pre_bonus_combined / 2.0)), 3)
709
+
710
+ # T6: build manifest / tooling / test
711
+ if cat == "build_system":
712
+ return round(min(0.45, base_rel), 3)
713
+ if cat in ("tests", "tooling"):
714
+ return round(min(0.35, base_rel), 3)
715
+
716
+ # T7: no content classification — filesystem/structural signals only
717
+ # has_structural_signals: fan_in, churn, export — allows up to 0.54
718
+ # pure path/filename only — hard cap 0.39
719
+ if has_structural_signals:
720
+ return round(min(0.54, max(0.10, pre_bonus_combined / 2.0)), 3)
721
+ return round(min(0.39, max(0.10, pre_bonus_combined / 2.0)), 3)
722
+
723
+
724
+ def _build_file_signals(
725
+ file_class: Any,
726
+ path: str,
727
+ entry_paths: set,
728
+ fs_reasons: list,
729
+ sem_hub: float,
730
+ ) -> list[dict]:
731
+ """Minimal per-file signal breakdown: what contributed to this file's score."""
732
+ from sourcecode.file_classifier import JAVA_STEREOTYPE_CATEGORIES
733
+
734
+ signals: list[dict] = []
735
+
736
+ if path in entry_paths:
737
+ signals.append({"type": "runtime_entrypoint", "strength": "strong"})
738
+
739
+ if file_class:
740
+ cat = file_class.category
741
+ if cat in JAVA_STEREOTYPE_CATEGORIES:
742
+ signals.append({"type": "framework_annotation", "strength": "strong"})
743
+ elif cat in ("api_layer", "database_layer", "infrastructure"):
744
+ ev = [e for e in (file_class.evidence or [])[:2] if e]
745
+ signals.append({"type": "framework_import", "strength": "medium", "evidence": ev})
746
+ elif cat in ("application_logic",):
747
+ signals.append({"type": "code_definitions_with_imports", "strength": "medium"})
748
+ elif cat in ("domain_model",):
749
+ signals.append({"type": "domain_model_definitions", "strength": "medium"})
750
+ elif cat in ("build_system",):
751
+ signals.append({"type": "build_manifest", "strength": "medium"})
752
+
753
+ for r in fs_reasons:
754
+ r_lower = r.lower()
755
+ if "import centrality" in r_lower or "imported by" in r_lower:
756
+ signals.append({"type": "import_centrality", "strength": "medium"})
757
+ elif "hub module" in r_lower:
758
+ signals.append({"type": "hub_module", "strength": "medium"})
759
+ elif "recent churn" in r_lower:
760
+ signals.append({"type": "git_churn", "strength": "medium"})
761
+ elif "uncommitted" in r_lower:
762
+ signals.append({"type": "uncommitted_changes", "strength": "medium"})
763
+
764
+ if sem_hub >= 0.15:
765
+ signals.append({"type": "call_graph_hub", "strength": "strong"})
766
+
767
+ if not signals:
768
+ signals.append({"type": "filesystem_path", "strength": "weak"})
769
+
770
+ return signals
771
+
772
+
663
773
  def _file_relevance(sm: SourceMap, *, limit: int = _FILE_RELEVANCE_LIMIT) -> list[dict[str, Any]]:
664
774
  from sourcecode.ranking_engine import RankingEngine
665
775
 
@@ -714,40 +824,44 @@ def _file_relevance(sm: SourceMap, *, limit: int = _FILE_RELEVANCE_LIMIT) -> lis
714
824
  content_rel = file_class.relevance if file_class else 0.0
715
825
  # Semantic hub bonus: normalised call-graph centrality adds up to +0.30
716
826
  sem_hub = semantic_hub_scores.get(path, 0.0) * 0.30
717
- combined = fs.score + content_rel + sem_hub
827
+ pre_bonus_combined = fs.score + content_rel + sem_hub
718
828
  # REST controller boost: surface above @Transactional service files
719
829
  if path in _rest_ctrl_paths:
720
- combined += 2.0
830
+ pre_bonus_combined += 2.0
721
831
 
722
- # M3: Structural importance scoring — priority over alphabetical ordering.
832
+ # M3: Structural importance scoring — SORT ORDER ONLY.
833
+ # These bonuses drive ranking but must NOT inflate the displayed score.
723
834
  stem = Path(path).stem
724
835
  stem_lower = stem.lower()
725
836
  path_lower = path.lower()
837
+ sort_bonus = 0.0
726
838
  # +10 application entry points
727
839
  if path in entry_paths and any(
728
840
  k in stem for k in ("Application", "Main", "Initializer", "Bootstrap", "Startup")
729
841
  ):
730
- combined += 10.0
842
+ sort_bonus = 10.0
731
843
  # +8 known base/infrastructure classes
732
844
  elif any(k in stem for k in (
733
845
  "GenericRestController", "GenericCRUDRestController", "GenericController",
734
846
  "AkitaBaseService", "BaseService", "FilterConfig", "AbstractController",
735
847
  )):
736
- combined += 8.0
848
+ sort_bonus = 8.0
737
849
  # +6 security configuration
738
850
  elif any(k in stem for k in (
739
851
  "SecurityConfig", "SecurityStrategy", "WebSecurityConfig", "SecurityFilter",
740
852
  "JwtFilter", "AuthConfig", "SecurityConfiguration",
741
853
  )):
742
- combined += 6.0
854
+ sort_bonus = 6.0
743
855
  # +2 shared utilities
744
856
  elif any(k in path_lower for k in ("util", "shared", "common", "helper", "constant")):
745
- combined += 2.0
857
+ sort_bonus = 2.0
858
+
859
+ sort_key = pre_bonus_combined + sort_bonus
746
860
 
747
861
  # Visibility threshold: require meaningful combined signal.
748
862
  # Exception: high/medium-confidence files with strong content relevance
749
863
  # can survive even if structural score is weak.
750
- if combined < _FILE_RELEVANCE_MIN_COMBINED:
864
+ if sort_key < _FILE_RELEVANCE_MIN_COMBINED:
751
865
  if not (file_class
752
866
  and file_class.relevance > 0.45
753
867
  and file_class.confidence in {"high", "medium"}):
@@ -757,48 +871,64 @@ def _file_relevance(sm: SourceMap, *, limit: int = _FILE_RELEVANCE_LIMIT) -> lis
757
871
  if (file_class
758
872
  and file_class.confidence == "low"
759
873
  and file_class.category in {"config", "auxiliary"}
760
- and combined < 0.45):
874
+ and sort_key < 0.45):
761
875
  continue
762
876
 
763
- # For Java stereotype annotations use the table relevance directly —
764
- # the combined/2 formula would dilute the stereotype signal.
765
- from sourcecode.file_classifier import JAVA_STEREOTYPE_CATEGORIES
766
- if file_class and file_class.category in JAVA_STEREOTYPE_CATEGORIES:
767
- relevance_val = round(file_class.relevance, 3)
768
- else:
769
- relevance_val = round(max(0.0, min(1.0, combined / 2.0)), 3)
877
+ # Detect whether structural signals (fan_in, churn, etc.) are present
878
+ # beyond the base path-relevance reason used by fallback tier.
879
+ structural_signal_reasons = [
880
+ r for r in fs.reasons
881
+ if r not in ("source file", "workspace source root", "runtime entrypoint")
882
+ and "path" not in r.lower()
883
+ ]
884
+ has_structural = bool(structural_signal_reasons)
885
+
886
+ # Tiered display score: evidence-gated, tier-capped.
887
+ # pre_bonus_combined is used (M3 sort_bonus excluded).
888
+ score_val = _tiered_display_score(
889
+ pre_bonus_combined, file_class, path, entry_paths, has_structural,
890
+ )
891
+ # relevance: raw evidence strength from FileClassifier (content signal only)
892
+ relevance_val = round(file_class.relevance, 3) if file_class else round(
893
+ min(0.39, max(0.10, pre_bonus_combined / 2.0)), 3
894
+ )
895
+
896
+ ranking_reasons = [r for r in fs.reasons if r != "source file"]
897
+ if sem_hub >= 0.15:
898
+ ranking_reasons.append("call graph hub")
899
+
900
+ signals = _build_file_signals(file_class, path, entry_paths, ranking_reasons, sem_hub)
770
901
 
771
902
  item: dict[str, Any] = {
772
903
  "path": path,
773
904
  "category": file_class.category if file_class else "source",
774
905
  "confidence": file_class.confidence if file_class else "low",
906
+ "score": score_val,
775
907
  "relevance": relevance_val,
776
- "score": relevance_val,
777
908
  "reason": file_class.reason if file_class else (fs.reasons[0] if fs.reasons else "source file"),
778
909
  "evidence": file_class.evidence if file_class else [],
910
+ "signals": signals,
779
911
  }
780
912
 
781
- ranking_reasons = [r for r in fs.reasons if r != "source file"]
782
- if sem_hub >= 0.15:
783
- ranking_reasons.append("call graph hub")
784
913
  if ranking_reasons:
785
914
  item["ranking_reasons"] = ranking_reasons
786
915
 
787
916
  # Override metadata for known M3 base controller classes
788
917
  if any(k in stem for k in ("GenericRestController", "GenericCRUDRestController")):
789
918
  item["category"] = "runtime_core"
790
- item["relevance"] = 0.95
791
919
  item["score"] = 0.95
920
+ item["relevance"] = 0.95
792
921
  item["reason"] = (
793
922
  "base class for all REST controllers — extends this to get "
794
923
  "centralized exception handling via handlerException()"
795
924
  )
796
925
  item["evidence"] = ["base_rest_controller"]
797
926
  item["ranking_reasons"] = ["universal base class", "exception handling contract"]
927
+ item["signals"] = [{"type": "framework_annotation", "strength": "strong"}]
798
928
 
799
- scored.append((combined, item))
929
+ scored.append((sort_key, item))
800
930
 
801
- # Deterministic sort: score desc, then path asc
931
+ # Deterministic sort: sort_key desc, then path asc
802
932
  scored.sort(key=lambda x: (-x[0], x[1]["path"]))
803
933
 
804
934
  # Diversity cap: at most half the budget from any single category.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 1.30.25
3
+ Version: 1.30.26
4
4
  Summary: Deterministic codebase context for AI coding agents
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -221,7 +221,7 @@ Description-Content-Type: text/markdown
221
221
 
222
222
  **Deterministic, behavior-aware codebase context for AI agents and PR review.**
223
223
 
224
- ![Version](https://img.shields.io/badge/version-1.30.25-blue)
224
+ ![Version](https://img.shields.io/badge/version-1.30.26-blue)
225
225
  ![Python](https://img.shields.io/badge/python-3.10%2B-green)
226
226
 
227
227
  ---
@@ -257,7 +257,7 @@ pipx install sourcecode
257
257
 
258
258
  ```bash
259
259
  sourcecode version
260
- # sourcecode 1.30.25
260
+ # sourcecode 1.30.26
261
261
  ```
262
262
 
263
263
  ---
@@ -1,4 +1,4 @@
1
- sourcecode/__init__.py,sha256=kJzip46z8Zv1pZNNGqmBkCQorsqmA5F7jeh9VqnPkaY,104
1
+ sourcecode/__init__.py,sha256=a9rwjUy_I3zn65HxrEVjs67OAO8DAvBj0eb-iK1rvho,104
2
2
  sourcecode/adaptive_scanner.py,sha256=RTNExwWPXzjgLaRueT7UuxkPj5ZEToWjGbx1j0LSZ9E,10250
3
3
  sourcecode/architecture_analyzer.py,sha256=MyBa0Hf5HmkudZQDLKrjcWDKETXETXl0mQX1swtTwAA,39091
4
4
  sourcecode/architecture_summary.py,sha256=z34_6v7cSwy98cof2UVciGho7SCrZ93tiqMmq5WNzRQ,20405
@@ -6,7 +6,7 @@ sourcecode/ast_extractor.py,sha256=XgrZg2DcWcUm9r87cRG3KGO7IK2TIL_N-CvhSbUmmh4,4
6
6
  sourcecode/classifier.py,sha256=pYve2J1LqtYssU3lYLMDz18PT-CjN5c18QYE7R_IG1Q,7507
7
7
  sourcecode/cli.py,sha256=xNbK_xwsqdhUbAJT4VieJDitGlhMu_O_Y5xzY8yrc9Q,94497
8
8
  sourcecode/code_notes_analyzer.py,sha256=y1MJBnPZHYp4i6cQCXUb9ATIyifS_qMQWjw_8lPkpsU,9215
9
- sourcecode/confidence_analyzer.py,sha256=xw_Jv8pAd0wd8t2vvQlorw8Ih0rSF3YCoFS8K-_4aXg,15762
9
+ sourcecode/confidence_analyzer.py,sha256=H9VHYRzZhqMFlSCZffjtsMUGYLnDvrq1g5FjzyQ1hxE,16381
10
10
  sourcecode/context_scorer.py,sha256=QpChSpsmaAYz91rXA4Ue5xzQmNz_ZboZN09YOHScq1U,14679
11
11
  sourcecode/context_summarizer.py,sha256=CiQrfBEzun949bWvmLabWoj2HhPn6Lw62ofqnsy0FlQ,6503
12
12
  sourcecode/contract_model.py,sha256=nRxJKPMs1VHwFTa8AVXhGmaLjti3Lr2sjHDpWgv1bfE,3917
@@ -16,13 +16,13 @@ sourcecode/dependency_analyzer.py,sha256=p4ljXhkcGBbFlhaZuPrsjOVjDXaKLTg0Gor2p4q
16
16
  sourcecode/doc_analyzer.py,sha256=afA4uJFwXZ_uR2l4J0pQwbeTkRkGmKdN9KhRVYePBUw,24331
17
17
  sourcecode/entrypoint_classifier.py,sha256=gvKgl0f5T8ol1r4JMmkeqGHuZTfZJiOwFOWdc7EYwYw,4061
18
18
  sourcecode/env_analyzer.py,sha256=GxCidahAAIptTdDFIlVB6URd4HBnBlIX_SqUov3MBRQ,22076
19
- sourcecode/file_classifier.py,sha256=48ly5Z6exkzBy8lNy1AkdP4-oJqIA1zT3LZfffuTyDo,11572
19
+ sourcecode/file_classifier.py,sha256=ur6xDjxIVOj2Or3Ic8LTD0nLguUXFWVRBhamWAKFKeU,11738
20
20
  sourcecode/flow_analyzer.py,sha256=dSiuY4w49k29jW_EPXUOND9B5uVbuCA7kjnuHi-pIWA,28781
21
21
  sourcecode/git_analyzer.py,sha256=0Gyj-vMpIIN4nfriKXVRouNYBeJ59s6pQDX2Xu9Pq-U,13177
22
22
  sourcecode/graph_analyzer.py,sha256=iUK-7pSV-cvGqqD2hENdYmhnm0wcXFEyK-xnu5ul8OU,62515
23
23
  sourcecode/metrics_analyzer.py,sha256=m0ENgtqKeBL17kUIK3fmGkgo7UfXBNHxCMj0H_Y5K7c,22750
24
24
  sourcecode/pr_comment_renderer.py,sha256=smHslxiG14lrytCkq5nFrFu-qTHgA-t-LFYfdrfjz2o,14423
25
- sourcecode/prepare_context.py,sha256=PlmfECy56vJwPthp-9YwFKHtgaD6XZwreEhyZ7q-G7E,166416
25
+ sourcecode/prepare_context.py,sha256=4BwSEXUEuWiYaRZ8wPUcClSW5_Pl1BuUGe-VqM9MSPQ,166688
26
26
  sourcecode/progress.py,sha256=qn30sWaHOkjTgXsSBmiPkz7Rsbwc5oSlIe6JNEMYp_k,3149
27
27
  sourcecode/ranking_engine.py,sha256=virVglafZufioHpZpwktjMvUiL0TZELWQCQnQNV8dFo,9360
28
28
  sourcecode/redactor.py,sha256=xuGcadGEHaPw4qZXlMDvzMCsr4VOkdp3oBQptHyJk8c,2884
@@ -33,7 +33,7 @@ sourcecode/runtime_classifier.py,sha256=zWX3r3HCKHc-qtIobErOa8aKMmaoPYREtJKvPcBG
33
33
  sourcecode/scanner.py,sha256=aM3h9-DCQ3xKpeHpHYdo2vX6T5P95HA_YwZbkAVNwmo,8288
34
34
  sourcecode/schema.py,sha256=fj3BZ3IcnNV4j21BFIEvz8Qnw_vZoqIbzzRg-qQ-nd0,24530
35
35
  sourcecode/semantic_analyzer.py,sha256=12TwXYkYbDcBdu0heX_EmfPM2EkO8a_r5osf0SaeQbs,88956
36
- sourcecode/serializer.py,sha256=Kyw2Ny1QZeUM4AUsJiXL3Vz65TwDG1i_ySj1pTli9xA,99616
36
+ sourcecode/serializer.py,sha256=bPpZKu9LxrBgpDlGX4qyyO2eQ0PJIFi8bSPb2oC5vhQ,105008
37
37
  sourcecode/summarizer.py,sha256=lPlKhMh28nueXkPo2xKeD3DUFYVGRlJMIdY-8TSM-ls,17486
38
38
  sourcecode/tree_utils.py,sha256=8GAkIfQAsvtEudIeW1l4ooH_oRtrWR8cpJQJsEa_Pfw,2093
39
39
  sourcecode/workspace.py,sha256=X_6NmNnitvT3_38V-JDChydo_sR68s249hLFlrQskU0,8271
@@ -64,8 +64,8 @@ sourcecode/telemetry/consent.py,sha256=wLMvGNJeSSyZoNkQXpoUioY6mMv4Qdvuw7S9jAEWn
64
64
  sourcecode/telemetry/events.py,sha256=oEvvulfsv5GIDWG2174gSS6tNB95w38AIYiYeifGKlE,2294
65
65
  sourcecode/telemetry/filters.py,sha256=Asa71oRl7q3Wt_FMwuufIZJFzSYdgRNKS8LHCIyFeYE,4805
66
66
  sourcecode/telemetry/transport.py,sha256=KJeIPCPWMdmbCP3ySGs2iUlia34U6vWne2dZsUezesw,1560
67
- sourcecode-1.30.25.dist-info/METADATA,sha256=kPiIROhykJQpgwjLYSkJKtEqag987u3EloszmgQ2HmY,28956
68
- sourcecode-1.30.25.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
69
- sourcecode-1.30.25.dist-info/entry_points.txt,sha256=ex3F9rmbXeyDIoFQHtkEqTsKSaJow8F0LrVu8XfIktQ,57
70
- sourcecode-1.30.25.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
71
- sourcecode-1.30.25.dist-info/RECORD,,
67
+ sourcecode-1.30.26.dist-info/METADATA,sha256=rSYUxd-EVgFu_xcd6eXXfarTlqmqAaMQeP5VlDKfqrU,28956
68
+ sourcecode-1.30.26.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
69
+ sourcecode-1.30.26.dist-info/entry_points.txt,sha256=ex3F9rmbXeyDIoFQHtkEqTsKSaJow8F0LrVu8XfIktQ,57
70
+ sourcecode-1.30.26.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
71
+ sourcecode-1.30.26.dist-info/RECORD,,