sourcecode 1.65.0__py3-none-any.whl → 1.66.0__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.65.0"
3
+ __version__ = "1.66.0"
@@ -648,6 +648,19 @@ _BOOT3_MIGRATION_TARGETS: frozenset[str] = frozenset(
648
648
  # upgrade. It is advisory only and must never sink a readiness dimension to 0 —
649
649
  # reported as a separate hygiene metric, excluded from JDK-modernization scoring.
650
650
  _BEST_PRACTICE_TARGETS: frozenset[str] = frozenset({"java_8_best_practice"})
651
+
652
+ # BUG #3: the migration dimensions that feed the readiness_score aggregate, in
653
+ # order. jdk_modernization is deliberately NOT here — it is orthogonal upkeep debt
654
+ # reported on its own axis, never folded into the migration headline.
655
+ _MIGRATION_DIMENSIONS: tuple[str, ...] = ("jakarta", "boot3", "hibernate")
656
+
657
+
658
+ def _parse_major(version: "Optional[str]") -> "Optional[int]":
659
+ """Leading integer of a version string ('4.0.3' → 4); None when not parseable."""
660
+ if not version:
661
+ return None
662
+ m = re.match(r"\s*(\d+)", version)
663
+ return int(m.group(1)) if m else None
651
664
  # Cap on total readiness deduction from JDK-modernization findings (medium/low),
652
665
  # so reflection/date cleanups cannot collapse a jakarta-ready repo's headline.
653
666
  _JDK_ADVISORY_DEDUCTION_CAP: int = 15
@@ -1170,6 +1183,9 @@ class MigrationReport:
1170
1183
  # is excluded from the aggregate — it is never counted as 0. Maps dimension →
1171
1184
  # {"applicable": bool, "score": int|None, "reason": str}.
1172
1185
  applicable_dimensions: dict = field(default_factory=dict)
1186
+ # BUG #3: how readiness_score was derived (method + the exact applicable
1187
+ # dimension scores it aggregates) so the headline number is fully traceable.
1188
+ readiness_aggregate: dict = field(default_factory=dict)
1173
1189
  blocking_count: int = 0
1174
1190
  estimated_effort_days: float = 0.0
1175
1191
  # Tri-state: True = Boot 2 confirmed, False = Boot 3+ confirmed,
@@ -1238,71 +1254,67 @@ class MigrationReport:
1238
1254
  1 for f in main_findings if f.severity in ("critical", "high")
1239
1255
  )
1240
1256
 
1241
- # BUG #4 / #6: readiness deduction. FRAMEWORK blockers (jakarta / Boot3 /
1242
- # Security — critical+high) are UNCAPPED so a genuinely blocked repo floors
1243
- # at 0. Orthogonal JDK-modernization debt (SecurityManager, sun.*, reflection)
1244
- # is advisory-CAPPED so it can never sink the framework headline. Best-practice
1245
- # hygiene (java.util.Date) is EXCLUDED entirely — it blocks no version upgrade.
1246
- fw = _BOOT3_MIGRATION_TARGETS
1247
- fw_crit = _files_by_sev(main_findings, "critical", targets=fw)
1248
- fw_high = _files_by_sev(main_findings, "high", targets=fw)
1249
- fw_med = _files_by_sev(main_findings, "medium", targets=fw)
1250
- fw_low = _files_by_sev(main_findings, "low", targets=fw)
1251
- _jdk_exclude = fw | _BEST_PRACTICE_TARGETS
1252
- jdk_crit = {f.source_file for f in main_findings
1253
- if f.severity == "critical" and f.migration_target not in _jdk_exclude}
1254
- jdk_high = {f.source_file for f in main_findings
1255
- if f.severity == "high" and f.migration_target not in _jdk_exclude}
1256
- jdk_med = {f.source_file for f in main_findings
1257
- if f.severity == "medium" and f.migration_target not in _jdk_exclude}
1258
- jdk_low = {f.source_file for f in main_findings
1259
- if f.severity == "low" and f.migration_target not in _jdk_exclude}
1260
- jdk_raw = len(jdk_crit) * 15 + len(jdk_high) * 8 + len(jdk_med) * 3 + len(jdk_low) * 1
1261
-
1262
- deduction = (
1263
- len(fw_crit) * 15
1264
- + len(fw_high) * 8
1265
- + len(fw_med) * 3
1266
- + min(len(fw_low) * 1, _LOW_SEVERITY_DEDUCTION_CAP)
1267
- + min(jdk_raw, _JDK_ADVISORY_DEDUCTION_CAP)
1268
- )
1269
- self.readiness_score = max(0, 100 - deduction)
1270
-
1271
1257
  # Per-dimension readiness — independent severity-weighted scores (MAIN only).
1272
1258
  self.jakarta_readiness = _dimension_score(main_findings, _JAKARTA_TARGETS)
1273
1259
  self.boot3_readiness = _dimension_score(main_findings, _BOOT3_MIGRATION_TARGETS)
1274
1260
  self.jdk_modernization = _dimension_score(main_findings, None)
1261
+ if not self.spring_present:
1262
+ self.boot3_readiness = 100
1275
1263
 
1276
- # BUG #1: Hibernate 5→6 is its own rewrite axis and applies ONLY when the
1277
- # repo is actually on Hibernate < 6. A resolved Hibernate 6+ (Keycloak:
1278
- # 6.2.13) means the migration is already done → N/A, never a blocker. An
1279
- # unresolved version degrades to a low-confidence hypothesis (no headline).
1264
+ # ── BUG #2: Hibernate applicability version-driven, never heuristic ────
1265
+ # The 5→6 axis is applicable ONLY when the repo is actually on Hibernate < 6.
1266
+ # resolved < 6 applicable (rewrite score is a measurement)
1267
+ # resolved 6 → N/A (already migrated)
1268
+ # unresolved, Boot≥3 → N/A (Boot 3/4 BOM manages Hibernate ORM ≥6)
1269
+ # unresolved, Boot==2 → applicable (Boot 2 BOM manages Hibernate 5.x)
1270
+ # unresolved, no BOM → N/A, status "unresolved" (NEVER a heuristic number
1271
+ # that looks like a measurement on absent data)
1280
1272
  hib = self.hibernate
1281
- _hibernate_applies = (
1282
- hib is not None and hib.detected and hib.migration_applicable
1283
- )
1284
- if hib is not None and hib.detected:
1285
- # Already on H6+ → nothing to migrate → 100; else the rewrite score.
1286
- self.hibernate_readiness = hib.readiness if hib.migration_applicable else 100
1287
- if _hibernate_applies and hib.classification == "rewrite_zone" \
1273
+ hib_detected = hib is not None and hib.detected
1274
+ boot_major = _parse_major(self.spring_boot_version_detected)
1275
+ _hibernate_applies = False
1276
+ _hib_score: Optional[int] = None
1277
+ hib_status = "not_detected"
1278
+ _hib_reason = "N/A no Hibernate dependency or import detected"
1279
+ if hib_detected:
1280
+ if hib.version_confidence == "high":
1281
+ if hib.migration_applicable: # resolved major < 6
1282
+ _hibernate_applies, _hib_score = True, hib.readiness
1283
+ hib_status = "resolved_h5"
1284
+ _hib_reason = f"Hibernate 5→6 rewrite axis (resolved {hib.effective_version})"
1285
+ else: # resolved major ≥ 6
1286
+ hib_status = "managed_ge6"
1287
+ _hib_reason = (f"N/A — resolved Hibernate {hib.effective_version} (≥6); "
1288
+ f"no 5→6 migration pending")
1289
+ elif boot_major is not None and boot_major >= 3:
1290
+ hib_status = "managed_ge6"
1291
+ _hib_reason = (f"N/A — Hibernate version managed by Spring Boot "
1292
+ f"{self.spring_boot_version_detected} BOM (Hibernate ORM ≥6); "
1293
+ f"5→6 axis inapplicable")
1294
+ elif boot_major == 2:
1295
+ _hibernate_applies, _hib_score = True, hib.readiness
1296
+ hib_status = "managed_h5"
1297
+ _hib_reason = (f"Hibernate 5→6 rewrite axis (Hibernate 5.x managed by Spring "
1298
+ f"Boot {self.spring_boot_version_detected} BOM)")
1299
+ else:
1300
+ hib_status = "unresolved"
1301
+ _hib_reason = ("N/A — Hibernate version unresolved (not declared and no Spring "
1302
+ "Boot BOM to infer from); not penalized on absent data")
1303
+ # Top-level scalar: the rewrite score only when applicable; else 100 (nothing
1304
+ # pending) — never a heuristic penalty on an inapplicable/unresolved axis.
1305
+ self.hibernate_readiness = _hib_score if _hibernate_applies else 100
1306
+ # Headline blocker only on a DIRECTLY-resolved Hibernate-5 rewrite zone.
1307
+ if _hibernate_applies and hib is not None and hib.classification == "rewrite_zone" \
1288
1308
  and hib.version_confidence == "high":
1289
- # Only a CONFIRMED Hibernate-5 rewrite zone earns the headline blocker.
1290
1309
  self.headline_blocker = "hibernate_rewrite"
1291
1310
 
1292
- # BUG #2 / #3: declare which dimensions apply. jakarta + JDK are always
1293
- # applicable to a Java repo; boot3 applies only when Spring is actually used
1294
- # (Quarkus/Micronaut/Jakarta-pure repos have no Boot 2→3 axis); hibernate
1295
- # applies only for a real Hibernate < 6. N/A dimensions carry score=None and
1296
- # are excluded from the aggregate never scored as 0.
1297
- if not self.spring_present:
1298
- self.boot3_readiness = 100
1299
- if _hibernate_applies:
1300
- _hib_reason = f"Hibernate 5→6 rewrite axis (detected {hib.effective_version or 'version unknown'})"
1301
- elif hib is not None and hib.detected and not hib.migration_applicable:
1302
- _hib_reason = (f"N/A — already on Hibernate {hib.version_major} "
1303
- f"({hib.effective_version}); no 5→6 migration pending")
1304
- else:
1305
- _hib_reason = "N/A — no Hibernate dependency or import detected"
1311
+ # BUG #3: declare which dimensions apply, then derive readiness_score as a
1312
+ # DOCUMENTED aggregate over the applicable MIGRATION dimensions only. jakarta
1313
+ # is always applicable; boot3 only with Spring; hibernate only for a real
1314
+ # Hibernate < 6. jdk_modernization is an orthogonal upkeep axis (SecurityManager,
1315
+ # reflection, java.time) — reported but EXCLUDED from the headline so JDK debt
1316
+ # cannot sink a framework-complete repo. N/A dimensions carry score=None and
1317
+ # never enter the aggregate.
1306
1318
  self.applicable_dimensions = {
1307
1319
  "jakarta": {"applicable": True, "score": self.jakarta_readiness,
1308
1320
  "reason": "javax→jakarta namespace migration"},
@@ -1314,14 +1326,44 @@ class MigrationReport:
1314
1326
  else "N/A — no Spring usage detected (non-Spring stack)"),
1315
1327
  },
1316
1328
  "jdk_modernization": {"applicable": True, "score": self.jdk_modernization,
1317
- "reason": "orthogonal JDK modernization debt"},
1329
+ "reason": "orthogonal JDK modernization debt (excluded from "
1330
+ "the readiness_score aggregate)",
1331
+ "in_aggregate": False},
1318
1332
  "hibernate": {
1319
1333
  "applicable": _hibernate_applies,
1320
1334
  "score": self.hibernate_readiness if _hibernate_applies else None,
1321
1335
  "reason": _hib_reason,
1336
+ "status": hib_status,
1322
1337
  },
1323
1338
  }
1324
1339
 
1340
+ # ── BUG #3: aggregate invariant ─────────────────────────────────────────
1341
+ # readiness_score == min(score of every applicable migration dimension).
1342
+ # MIN (not mean): a migration is only as ready as its weakest applicable
1343
+ # axis. _MIGRATION_DIMENSIONS lists exactly which dimensions feed it; the
1344
+ # consistency invariant is asserted in finalize and covered by a unit test.
1345
+ agg_inputs = {
1346
+ name: self.applicable_dimensions[name]["score"]
1347
+ for name in _MIGRATION_DIMENSIONS
1348
+ if self.applicable_dimensions[name]["applicable"]
1349
+ }
1350
+ self.readiness_score = min(agg_inputs.values()) if agg_inputs else 100
1351
+ self.readiness_aggregate = {
1352
+ "method": "min",
1353
+ "inputs": agg_inputs,
1354
+ "excluded": ["jdk_modernization"],
1355
+ "note": ("readiness_score = min over applicable migration dimensions "
1356
+ "(jakarta / boot3 / hibernate). jdk_modernization is an orthogonal "
1357
+ "upkeep axis and is intentionally excluded."),
1358
+ }
1359
+ # Internal consistency guard — the headline cannot diverge from the dimensions
1360
+ # it claims to summarize (catches a future scorer change that breaks the model).
1361
+ if agg_inputs:
1362
+ assert self.readiness_score == min(agg_inputs.values()), (
1363
+ "readiness_score must equal min(applicable migration dimensions); "
1364
+ f"got {self.readiness_score} vs inputs {agg_inputs}"
1365
+ )
1366
+
1325
1367
  # BUG #5: effort over MAIN findings only — N/A axes (Hibernate-6 phantom,
1326
1368
  # test fixtures) no longer pad the estimate.
1327
1369
  self.estimated_effort_days = round(
@@ -1375,10 +1417,13 @@ class MigrationReport:
1375
1417
  "jdk_modernization": self.jdk_modernization,
1376
1418
  "hibernate_readiness": self.hibernate_readiness,
1377
1419
  "applicable_dimensions": self.applicable_dimensions,
1420
+ "readiness_aggregate": self.readiness_aggregate,
1378
1421
  "readiness_note": (
1379
- "readiness_score is a DERIVED aggregate over applicable dimensions only "
1380
- "(N/A dimensions excluded, never counted as 0). For migration decisions read "
1381
- "the per-dimension breakdown + blocking_count, not the single number."
1422
+ "readiness_score = min over applicable MIGRATION dimensions "
1423
+ "(jakarta / boot3 / hibernate); see readiness_aggregate for the exact "
1424
+ "inputs. N/A dimensions are excluded (never counted as 0); "
1425
+ "jdk_modernization is orthogonal upkeep and is NOT in the aggregate. "
1426
+ "For decisions read the per-dimension breakdown + blocking_count."
1382
1427
  ),
1383
1428
  "headline_blocker": self.headline_blocker,
1384
1429
  "blocking_count": self.blocking_count,
sourcecode/serializer.py CHANGED
@@ -291,17 +291,65 @@ _JAKARTA_RENAMED_NAMESPACES: tuple[str, ...] = (
291
291
  )
292
292
 
293
293
 
294
+ # Permanent JDK / JSR javax.* namespaces. These are part of the Java SE platform
295
+ # (or standalone JCP specs) and were NEVER renamed to jakarta.* — Spring Boot 3/4
296
+ # still uses them under javax.*. They must be excluded from EVERY javax→jakarta
297
+ # detection rule (dependency coordinates AND import scanning). This is the single
298
+ # source of truth for the allowlist — do NOT re-implement prefix checks elsewhere.
299
+ # Counterpart in migrate_check._JAKARTA_NO_MIGRATE_PREFIXES (import side); keep both
300
+ # in sync. NOTE: `javax.annotation.processing` is permanent (JSR-269, compiler API)
301
+ # but bare `javax.annotation` (JSR-250 EE subset) DID move — handled below.
302
+ _JAVAX_PERMANENT_NAMESPACES: tuple[str, ...] = (
303
+ "javax.cache", # JSR-107 (JCache) — never renamed
304
+ "javax.sql", # JDBC standard extension (Java SE)
305
+ "javax.xml", # JAXP (parsers/transform/xpath/stream/namespace…)
306
+ "javax.naming", # JNDI (Java SE)
307
+ "javax.management", # JMX (Java SE)
308
+ "javax.crypto", # JCE (Java SE)
309
+ "javax.net", # incl. javax.net.ssl (Java SE)
310
+ "javax.security.auth", # JAAS (Java SE)
311
+ "javax.security.cert", # Java SE
312
+ "javax.security.sasl", # Java SE
313
+ "javax.annotation.processing", # JSR-269 compiler API (NOT the JSR-250 subset)
314
+ "javax.tools", # Java SE compiler API
315
+ "javax.lang.model", # Java SE annotation-processing model
316
+ "javax.sound", # Java SE
317
+ "javax.imageio", # Java SE
318
+ "javax.print", # Java SE
319
+ "javax.accessibility", # Java SE
320
+ "javax.swing", # Java SE
321
+ "javax.smartcardio", # Java SE
322
+ )
323
+
324
+
325
+ def _longest_namespace_match(nl: str, namespaces: "tuple[str, ...]") -> int:
326
+ """Length of the longest namespace in *namespaces* that is a prefix of *nl*.
327
+
328
+ Matches an exact namespace or a dotted sub-package (javax.xml → javax.xml.bind);
329
+ returns 0 when none match.
330
+ """
331
+ best = 0
332
+ for ns in namespaces:
333
+ if (nl == ns or nl.startswith(ns + ".")) and len(ns) > best:
334
+ best = len(ns)
335
+ return best
336
+
337
+
294
338
  def _is_jakarta_renamed_namespace(nl: str) -> bool:
295
339
  """True only for javax.* namespaces actually renamed to jakarta.* in Jakarta EE 9.
296
340
 
297
- Matches exact namespace or a sub-package (e.g. javax.servlet javax.servlet.http).
341
+ Decided by LONGEST-prefix match across the renamed list and the permanent
342
+ JDK/JSR allowlist — the more specific namespace wins. This keeps both nuanced
343
+ cases correct simultaneously:
344
+ - javax.xml.bind (renamed, len 14) beats javax.xml (permanent, len 9) → flag.
345
+ - javax.annotation.processing (permanent, len 27) beats javax.annotation
346
+ (renamed, len 16) → no flag.
298
347
  JDK/JSR namespaces that keep javax.* forever (javax.cache, javax.sql, javax.xml
299
- JAXP, javax.naming, …) return False.
348
+ JAXP, javax.naming, …) never flag. A bare javax.* with no match also never flags.
300
349
  """
301
- for ns in _JAKARTA_RENAMED_NAMESPACES:
302
- if nl == ns or nl.startswith(ns + "."):
303
- return True
304
- return False
350
+ renamed = _longest_namespace_match(nl, _JAKARTA_RENAMED_NAMESPACES)
351
+ permanent = _longest_namespace_match(nl, _JAVAX_PERMANENT_NAMESPACES)
352
+ return renamed > 0 and renamed >= permanent
305
353
 
306
354
 
307
355
  def _dep_risk_flags(name: str, version: "Optional[str]") -> list[str]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 1.65.0
3
+ Version: 1.66.0
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
@@ -738,9 +738,21 @@ evidence. `migrate-check` enforces:
738
738
  usage; Quarkus / Micronaut / Helidon / Jakarta-pure repos report `boot3` as N/A
739
739
  (`spring_present: false`), not a contradictory `applicable: true`.
740
740
  - **Permanent `javax.*` are never jakarta debt.** JDK/JSR namespaces
741
- (`javax.xml.*`, `javax.crypto.*`, `javax.naming.*`, `javax.sql.*`,
742
- `javax.management.*`, `javax.security.auth.*`, …) are allowlisted across every
743
- jakarta scorer.
741
+ (`javax.cache`, `javax.sql`, `javax.xml` JAXP, `javax.crypto`, `javax.naming`,
742
+ `javax.management`, `javax.security.auth`, `javax.annotation.processing`, …) are
743
+ allowlisted across every jakarta scorer (single source of truth:
744
+ `serializer._JAVAX_PERMANENT_NAMESPACES` + `migrate_check._JAKARTA_NO_MIGRATE_PREFIXES`).
745
+ The `javax→jakarta` dependency flag decides via **longest-prefix match**, so
746
+ `javax.xml.bind` (JAXB — moved) flags while `javax.xml` (JAXP) does not, and
747
+ `javax.annotation` (JSR-250 — moved) flags while `javax.annotation.processing`
748
+ (JSR-269) does not. The allowlist never silences a real migration.
749
+ - **`readiness_score` is a traceable aggregate.** It is `min` over the applicable
750
+ **migration** dimensions (`jakarta` / `boot3` / `hibernate`); `jdk_modernization`
751
+ is orthogonal upkeep and is excluded. The exact inputs are in `readiness_aggregate{}`
752
+ and an invariant (`readiness_score == min(applicable migration dims)`) is asserted in
753
+ code. When the Hibernate version is undeclared it is inferred from the Spring Boot
754
+ BOM (Boot ≥3 → Hibernate ≥6 → N/A; Boot 2 → Hibernate 5 → applicable; no BOM →
755
+ `status: unresolved`, never a heuristic score).
744
756
  - **Three buckets: blocker ≠ hygiene ≠ test.** Only product (`main`) code counts
745
757
  toward `blocking_count`, readiness, and effort. Test harnesses
746
758
  (`testsuite/`, `test-framework/`, `integration-arquillian/`, `*-test*`,
@@ -1,4 +1,4 @@
1
- sourcecode/__init__.py,sha256=p8-GKiFQV7kVIfsCmKNXmTPDXKUpvscoIAbYoLSteFs,103
1
+ sourcecode/__init__.py,sha256=_rKEwisXr1IeFjMbYXGSfdRcelQmOHaAB0XR84P9tsk,103
2
2
  sourcecode/adaptive_scanner.py,sha256=XffluXKzJUXrMtjEiAOnSNPZnztdIcts17T9ouHeID0,10521
3
3
  sourcecode/architecture_analyzer.py,sha256=liCwQmLgb5vplohy8arjYxs_HOIv5C9MjLh_gY6bc5Q,44115
4
4
  sourcecode/architecture_summary.py,sha256=z34_6v7cSwy98cof2UVciGho7SCrZ93tiqMmq5WNzRQ,20405
@@ -33,7 +33,7 @@ sourcecode/integration_detector.py,sha256=mQulsXN1P-4V_3ueh3xy_N9x3Aqlvm7GQ-3YGq
33
33
  sourcecode/license.py,sha256=wckiLuiwaE35KMCStUf1gYzleJuFe6qsSyxUQJvit3s,23500
34
34
  sourcecode/mcp_nudge.py,sha256=5ELU_ixzh6uA83NXLOZT8h00OhL53okfQdji3jyKOjg,2917
35
35
  sourcecode/metrics_analyzer.py,sha256=m0ENgtqKeBL17kUIK3fmGkgo7UfXBNHxCMj0H_Y5K7c,22750
36
- sourcecode/migrate_check.py,sha256=pv7jZGhHRaw160sWYk0NWR-jWZERl_2S_gFAJ72maFI,80133
36
+ sourcecode/migrate_check.py,sha256=daZLA7KaeoWoUPSMN8cYqHYD6HBflzc-z_N4bCGVPak,82993
37
37
  sourcecode/openapi_surface.py,sha256=BTt0K-woZbkbWTN77IkqeBm_Okag9owR0848fmot8sk,16207
38
38
  sourcecode/output_budget.py,sha256=Js9yUlfQtPhqBl9R6wn_9UHVjjJc3GtLcqyfjf5t50Q,9869
39
39
  sourcecode/path_filters.py,sha256=DMea0KIlmj2pzTkuy-3YYFF4ktP0q5zP9mH4v4uXh84,5237
@@ -53,7 +53,7 @@ sourcecode/scanner.py,sha256=WdOQ78mMzjR1NjmKTlbxdgwinnCTfAhxCVLBEFQiFHU,8899
53
53
  sourcecode/schema.py,sha256=aHNXDf8LGyUC8ZDE_VS9kiskC2-Oswhi_WnpdGy6HDw,24897
54
54
  sourcecode/security_config.py,sha256=_m8oQAy2gP7Ho2I-IIMTFFjFVWbJIGlLEOiAWK2TDjs,3503
55
55
  sourcecode/semantic_analyzer.py,sha256=4OdG6tTSnTvq3_dSWMbQu8Ad1ndSCKeG-b9qM4hIxkw,89176
56
- sourcecode/serializer.py,sha256=6YoGyRqkjtp34ELwgRGCZ1r1b6zu6SqiAWT8ySjs-M8,126516
56
+ sourcecode/serializer.py,sha256=MSxYZ-_UYDPKMvg-hVk-MnKN-TfrmxXL202siCssa9U,129110
57
57
  sourcecode/spring_event_topology.py,sha256=5_ON_21Le5zbG-1GRc5GLIi5HJfy_QjcXLVPC5WeUGQ,18055
58
58
  sourcecode/spring_findings.py,sha256=G7Or2lKBUQbcTDqudLvSs9XvNg_YoAa-_lBOG_ULs8E,5457
59
59
  sourcecode/spring_impact.py,sha256=qLwLfItX_o9LU-k_qjhD2hFpTX3PpEQ85TsYTAArzvg,56016
@@ -103,8 +103,8 @@ sourcecode/telemetry/consent.py,sha256=H5z2Wu63pZqbaKucRPoJQJ0zCo4cke9ZlBrJC-MaW
103
103
  sourcecode/telemetry/events.py,sha256=LtzYfaX9Ilckj5PTvAcTpDa9mLqDsYPDUiDkRa58piY,2580
104
104
  sourcecode/telemetry/filters.py,sha256=NHa5T-6DaZduQPFuC34jOqHWQgSizM-Ygq8aZ4j19ng,5834
105
105
  sourcecode/telemetry/transport.py,sha256=4gGHsq0WeY9VywEZXA3vUxykfiYnw9uuqfjAAec7F8o,1681
106
- sourcecode-1.65.0.dist-info/METADATA,sha256=tuUMAq5_nLV0J0Zrsl8TAS1NdxLSgunoAtnhlFoYv2U,46300
107
- sourcecode-1.65.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
108
- sourcecode-1.65.0.dist-info/entry_points.txt,sha256=ex3F9rmbXeyDIoFQHtkEqTsKSaJow8F0LrVu8XfIktQ,57
109
- sourcecode-1.65.0.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
110
- sourcecode-1.65.0.dist-info/RECORD,,
106
+ sourcecode-1.66.0.dist-info/METADATA,sha256=PVY4maYclqHt2AKj_bcGmDzF7xmKhD0i7k2MrQepPKo,47341
107
+ sourcecode-1.66.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
108
+ sourcecode-1.66.0.dist-info/entry_points.txt,sha256=ex3F9rmbXeyDIoFQHtkEqTsKSaJow8F0LrVu8XfIktQ,57
109
+ sourcecode-1.66.0.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
110
+ sourcecode-1.66.0.dist-info/RECORD,,