sdr-visualizer 1.2.1__tar.gz → 1.2.2__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.
Files changed (176) hide show
  1. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/CHANGELOG.md +13 -1
  2. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/PKG-INFO +59 -41
  3. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/README.md +58 -40
  4. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/PRODUCT_CONTRACT.md +2 -2
  5. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/pyproject.toml +1 -1
  6. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/__init__.py +1 -1
  7. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/aa.py +1 -1
  8. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/cja.py +1 -1
  9. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapters_cja.py +3 -3
  10. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_release_documentation.py +4 -3
  11. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/.gitignore +0 -0
  12. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/CODE_OF_CONDUCT.md +0 -0
  13. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/CONTRIBUTING.md +0 -0
  14. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/LICENSE +0 -0
  15. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/SECURITY.md +0 -0
  16. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/THIRD_PARTY_LICENSES +0 -0
  17. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/ADAPTER_CORRECTNESS_1.1.2.md +0 -0
  18. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/ADAPTER_GUIDE.md +0 -0
  19. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/ARCHITECTURE.md +0 -0
  20. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/EMBEDDED_DATA_FORMAT.md +0 -0
  21. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/LINEAGE.md +0 -0
  22. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/PERFORMANCE.md +0 -0
  23. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/RELEASE_EVIDENCE_TEMPLATE.md +0 -0
  24. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/RELEASING.md +0 -0
  25. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/WORKSPACE_USAGE.md +0 -0
  26. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/payload-schema.json +0 -0
  27. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/docs/workspace-usage-schema.json +0 -0
  28. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/capture_screenshot.py +0 -0
  29. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/check_color_pack_parity.py +0 -0
  30. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/check_markdown_links.py +0 -0
  31. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/check_workflow_policy.py +0 -0
  32. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/corpus_check.py +0 -0
  33. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_aa_large_fixture.py +0 -0
  34. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_cja_lineage_poc.py +0 -0
  35. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_examples.py +0 -0
  36. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/generate_large_fixture.py +0 -0
  37. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/mutate_fixture.py +0 -0
  38. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/package_smoke_check.py +0 -0
  39. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/perf_browser_check.py +0 -0
  40. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/perf_check.py +0 -0
  41. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/perf_lineage_poc.py +0 -0
  42. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/scripts/workspace_usage_fixture.py +0 -0
  43. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/__main__.py +0 -0
  44. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/__init__.py +0 -0
  45. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/base.py +0 -0
  46. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/adapters/cja_lineage.py +0 -0
  47. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/__init__.py +0 -0
  48. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/diff.py +0 -0
  49. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/formula_tree.py +0 -0
  50. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/lineage_layout.py +0 -0
  51. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/references.py +0 -0
  52. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/segment_tree.py +0 -0
  53. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/analysis/trend.py +0 -0
  54. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/__init__.py +0 -0
  55. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/exit_codes.py +0 -0
  56. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/lineage.py +0 -0
  57. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/lineage_output.py +0 -0
  58. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/main.py +0 -0
  59. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/output_safety.py +0 -0
  60. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/cli/workspace_usage.py +0 -0
  61. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/__init__.py +0 -0
  62. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/exceptions.py +0 -0
  63. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/lineage.py +0 -0
  64. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/models.py +0 -0
  65. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/structure_limits.py +0 -0
  66. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/visualizer.py +0 -0
  67. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/core/workspace_usage.py +0 -0
  68. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/__init__.py +0 -0
  69. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/detect.py +0 -0
  70. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/lineage_discovery.py +0 -0
  71. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/loader.py +0 -0
  72. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/series.py +0 -0
  73. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/shell_out.py +0 -0
  74. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/input/workspace_usage.py +0 -0
  75. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/__init__.py +0 -0
  76. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/color_packs.py +0 -0
  77. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/data_payload.py +0 -0
  78. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/lineage_payload.py +0 -0
  79. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/lineage_renderer.py +0 -0
  80. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/renderer.py +0 -0
  81. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.css +0 -0
  82. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage.js +0 -0
  83. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_graph.js +0 -0
  84. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/cja_lineage_roles.js +0 -0
  85. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/d3.min.js +0 -0
  86. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.css +0 -0
  87. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer.js +0 -0
  88. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/static/visualizer_trend.js +0 -0
  89. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/catalog.html.j2 +0 -0
  90. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/changes.html.j2 +0 -0
  91. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/cja_lineage.html.j2 +0 -0
  92. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/graph.html.j2 +0 -0
  93. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/index.html.j2 +0 -0
  94. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/templates/trend.html.j2 +0 -0
  95. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/trend_charts.py +0 -0
  96. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/render/workspace_usage.py +0 -0
  97. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/__init__.py +0 -0
  98. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/aa_api.py +0 -0
  99. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/aa_sdk.py +0 -0
  100. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/auth.py +0 -0
  101. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/cja_api.py +0 -0
  102. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/cja_sdk.py +0 -0
  103. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/collector.py +0 -0
  104. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/normalize.py +0 -0
  105. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/sdk_worker.py +0 -0
  106. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/src/sdr_visualizer/usage/transport.py +0 -0
  107. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/__init__.py +0 -0
  108. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/adapter_cases.py +0 -0
  109. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/browser_support.py +0 -0
  110. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/conftest.py +0 -0
  111. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/__init__.py +0 -0
  112. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/aa_snapshot_clean.json +0 -0
  113. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/aa_snapshot_messy.json +0 -0
  114. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_degraded.json +0 -0
  115. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_enriched.json +0 -0
  116. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_hostile.json +0 -0
  117. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_lineage_shared.json +0 -0
  118. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_clean.json +0 -0
  119. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_hostile.json +0 -0
  120. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_messy.json +0 -0
  121. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/cja_snapshot_minimal.json +0 -0
  122. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/workspace_usage_aa_all_types.json +0 -0
  123. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/fixtures/workspace_usage_cja_all_types.json +0 -0
  124. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapter_correctness.py +0 -0
  125. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapter_fuzz.py +0 -0
  126. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_adapters_aa.py +0 -0
  127. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_diff.py +0 -0
  128. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_formula_tree.py +0 -0
  129. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_references.py +0 -0
  130. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_segment_tree.py +0 -0
  131. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_analysis_trend.py +0 -0
  132. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_browser_functional.py +0 -0
  133. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_browser_support.py +0 -0
  134. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cja_lineage.py +0 -0
  135. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cja_lineage_driver.py +0 -0
  136. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cli.py +0 -0
  137. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_cli_flags.py +0 -0
  138. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_color_pack_parity.py +0 -0
  139. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_color_packs.py +0 -0
  140. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_corpus_check.py +0 -0
  141. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_data_payload.py +0 -0
  142. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_entrypoint.py +0 -0
  143. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_generate_examples.py +0 -0
  144. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_input_modes.py +0 -0
  145. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_input_series.py +0 -0
  146. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_browser.py +0 -0
  147. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_cli.py +0 -0
  148. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_discovery.py +0 -0
  149. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_performance.py +0 -0
  150. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_lineage_renderer.py +0 -0
  151. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_markdown_links.py +0 -0
  152. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_minimal_fixture.py +0 -0
  153. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_mutate_fixture.py +0 -0
  154. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_output_safety.py +0 -0
  155. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_package_smoke_check.py +0 -0
  156. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_payload_schema.py +0 -0
  157. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_perf.py +0 -0
  158. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_perf_browser_check.py +0 -0
  159. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_renderer.py +0 -0
  160. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_renderer_anatomy.py +0 -0
  161. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_renderer_graph.py +0 -0
  162. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_semantic_properties.py +0 -0
  163. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_structure_limits.py +0 -0
  164. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_trend_charts.py +0 -0
  165. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workflow_policy.py +0 -0
  166. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage.py +0 -0
  167. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_aa_sdk.py +0 -0
  168. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_auth.py +0 -0
  169. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_cja_sdk.py +0 -0
  170. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_cli.py +0 -0
  171. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_collection.py +0 -0
  172. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_offline.py +0 -0
  173. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_payload.py +0 -0
  174. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_perf.py +0 -0
  175. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_sdk.py +0 -0
  176. {sdr_visualizer-1.2.1 → sdr_visualizer-1.2.2}/tests/test_workspace_usage_transport.py +0 -0
@@ -4,6 +4,17 @@ All notable changes to `sdr-visualizer` will be documented here. The format foll
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.2.2] - 2026-09-21
8
+
9
+ ### Changed
10
+
11
+ - Advance the tested-through generator markers to `cja_auto_sdr` 3.12.4 and
12
+ `aa_auto_sdr` 1.21.15. Both were qualified with a fresh production snapshot
13
+ and the full historical private corpus, so snapshots from those versions no
14
+ longer raise a newer-than-tested warning.
15
+ - Carry the streamlined README into the published package so the PyPI project
16
+ description matches the repository.
17
+
7
18
  ## [1.2.1] - 2026-09-21
8
19
 
9
20
  ### Fixed
@@ -702,7 +713,8 @@ The following are explicitly internal and may change without notice:
702
713
  - Workspace project visualization (v0.4)
703
714
  - Schema map view (v0.5)
704
715
 
705
- [Unreleased]: https://github.com/brian-a-au/sdr-visualizer/compare/v1.2.1...HEAD
716
+ [Unreleased]: https://github.com/brian-a-au/sdr-visualizer/compare/v1.2.2...HEAD
717
+ [1.2.2]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.2
706
718
  [1.2.1]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.1
707
719
  [1.2.0]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.2.0
708
720
  [1.1.7]: https://github.com/brian-a-au/sdr-visualizer/releases/tag/v1.1.7
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sdr-visualizer
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Static-output visual catalog generator for Adobe Customer Journey Analytics and Adobe Analytics implementations.
5
5
  Project-URL: Homepage, https://brian-a-au.github.io/sdr-visualizer/
6
6
  Project-URL: Documentation, https://github.com/brian-a-au/sdr-visualizer#documentation
@@ -45,10 +45,10 @@ Static-output visual catalog generator for Adobe Customer Journey Analytics (CJA
45
45
 
46
46
  **Live examples:** [CJA report](https://brian-a-au.github.io/sdr-visualizer/cja-typical.html) · [AA report](https://brian-a-au.github.io/sdr-visualizer/aa-typical.html)
47
47
 
48
- The output is one HTML file: no server, no consumer-side build step, and no
49
- CDN dependencies. Its JSON, CSS, JavaScript, and D3 runtime are embedded, so it
50
- opens in a modern browser without an internet connection and makes no network
51
- requests.
48
+ The output is one HTML file. There is no server, no consumer-side build step,
49
+ and no CDN dependency. Its JSON, CSS, JavaScript, and D3 runtime are all
50
+ embedded, so it opens in a modern browser with no internet connection and makes
51
+ no network requests.
52
52
 
53
53
  Offline does not mean cleared for distribution. A report can contain
54
54
  implementation and component names, descriptions, segment and
@@ -57,6 +57,22 @@ Treat it as derived from the source snapshot. Move, email, post, or attach it
57
57
  only in authorized locations and in accordance with your organization's
58
58
  confidentiality and data-handling policy.
59
59
 
60
+ ## Public preview scope
61
+
62
+ This project is in public preview. A report describes what is configured in a
63
+ snapshot. It does not grade the implementation, and it does not confirm that a
64
+ configuration is correct, complete, or working at runtime. Review the details
65
+ against the source implementation before you act on them.
66
+
67
+ The report embeds the supported normalized component catalog, not every
68
+ platform-specific field. Optional Workspace project references are unverified
69
+ candidates, and an empty result never means a component is unused. Keep the
70
+ original generator snapshot for anything the report does not embed.
71
+
72
+ The tool is verified on Ubuntu with Python 3.11, 3.12, and 3.14. Other platforms
73
+ and later Python versions are not yet verified. The package installs on Python
74
+ 3.11 or newer.
75
+
60
76
  ## Install
61
77
 
62
78
  Install from PyPI with uv:
@@ -99,7 +115,7 @@ sdr-visualizer snapshot_new.json --compare-to snapshot_old.json
99
115
  sdr-visualizer ./snapshots/ --trend
100
116
  ```
101
117
 
102
- The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser — that's the whole experience.
118
+ The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser. That is the whole experience.
103
119
 
104
120
  Standard input is also supported when another process already emits a complete
105
121
  compatible snapshot:
@@ -108,13 +124,16 @@ compatible snapshot:
108
124
  some-snapshot-command | sdr-visualizer -
109
125
  ```
110
126
 
111
- ## Live CJA
127
+ ## Live modes
128
+
129
+ Both live modes call a separate generator that you install and authenticate
130
+ yourself. Follow that project's current setup, then confirm the executable is on
131
+ your `PATH`. Either generator may require a newer Python version than
132
+ sdr-visualizer's Python 3.11 minimum. The upstream repository is authoritative
133
+ for credentials, permissions, and generator compatibility.
112
134
 
113
- Live CJA mode requires the separate
114
- [`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable. Follow
115
- that project's current installation, configuration, and authentication
116
- instructions, then confirm `cja_auto_sdr` is on your `PATH`. Its generator may
117
- require a newer Python version than sdr-visualizer's Python 3.11 minimum.
135
+ Live CJA mode uses the
136
+ [`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable:
118
137
 
119
138
  ```bash
120
139
  sdr-visualizer --dataview dv_prod_web
@@ -122,25 +141,20 @@ sdr-visualizer --dataview dv_prod_web
122
141
 
123
142
  sdr-visualizer runs the generator with JSON output, a temporary output
124
143
  directory, and `--include-all-inventory`, then selects the generated snapshot.
125
- The temporary source data is removed after the report is built. This is not a
126
- stdin pipeline: CJA's complete inventory is directory-backed.
127
-
128
- ## Live AA
144
+ It removes the temporary source data after the report is built. This is not a
145
+ stdin pipeline. CJA's complete inventory comes from a directory of files.
129
146
 
130
- Live AA mode likewise requires the separate
131
- [`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable. Complete
132
- its current setup and authentication steps, and confirm `aa_auto_sdr` is on your
133
- `PATH`. The generator may require a newer Python version than sdr-visualizer.
147
+ Live AA mode uses the
148
+ [`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable:
134
149
 
135
150
  ```bash
136
151
  sdr-visualizer --rsid prod_us
137
152
  ```
138
153
 
139
- AA live mode reads the generator JSON snapshot from stdout and embeds the
140
- supported normalized component catalog in the report. Retain the original
154
+ AA live mode reads the generator's JSON snapshot from stdout and embeds the
155
+ supported normalized component catalog in the report. Keep the original
141
156
  generator snapshot when you need platform-specific details that the visualizer
142
- does not embed. For both live modes, the upstream repository is authoritative
143
- for credentials, permissions, and generator compatibility.
157
+ does not embed.
144
158
 
145
159
  ## Optional Workspace project usage
146
160
 
@@ -167,7 +181,8 @@ Each command automatically writes HTML and `<html-stem>.workspace-usage.json`.
167
181
  Existing snapshots and live exporter modes work without exporter changes.
168
182
  The catalog shows possible project references separately from component
169
183
  dependencies, with check time and coverage limits. SDK matches remain
170
- unverified candidates; empty results never mean unused or safe to delete.
184
+ unverified candidates. Empty results never mean a component is unused or safe
185
+ to delete.
171
186
  Opening the HTML and replaying the saved usage file need no credentials or
172
187
  network access. See the
173
188
  [Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md)
@@ -211,9 +226,9 @@ Color-pack selection changes HTML presentation only. It does not add to or
211
226
  alter the embedded JSON or a `--json` sidecar. The pack CSS, report data, and
212
227
  runtime remain embedded in the single offline HTML file.
213
228
 
214
- The named packs are palette-inspired alternatives, not official brand assets
215
- or claims of affiliation or endorsement, and they contain no company or
216
- product logos. Each pack is checked against the project's declared WCAG text
229
+ The named packs are alternative palettes. They are not official brand assets or
230
+ claims of affiliation or endorsement, and they contain no company or product
231
+ logos. Each pack is checked against the project's declared WCAG text
217
232
  and essential-graphics contrast pairs. Text labels and other non-color cues
218
233
  continue to communicate state, and reviewed print colors keep reports legible
219
234
  when printed.
@@ -227,9 +242,14 @@ Every report has two base top-level views:
227
242
 
228
243
  Segment anatomy and calculated-metric anatomy are contextual detail content,
229
244
  not separate navigation destinations. They open from the Catalog detail panel.
230
- Segment anatomy renders nested containers and references; calculated-metric
245
+ Segment anatomy renders nested containers and references. Calculated-metric
231
246
  anatomy renders operations, operands, and metric references.
232
247
 
248
+ You can restore an exact view from its address. The catalog's filters, sort,
249
+ view, and open detail panel are encoded in the URL hash, so within an
250
+ authorized report location you can copy the address bar to reload the same
251
+ filtered view.
252
+
233
253
  At most one conditional top-level view is added. With `--compare-to`, a
234
254
  **Changes** view appears, listing components
235
255
  added, removed, and modified relative to a baseline snapshot, with
@@ -242,18 +262,16 @@ per-interval change log. The window is capped at the 60 most recent
242
262
  snapshots.
243
263
 
244
264
  A trend directory must hold snapshots of a single implementation. If it mixes
245
- CJA and AA snapshots, pass `--platform cja|aa` to select one (or point at a
246
- single-platform directory); without it the run stops rather than guess. If it
247
- mixes data views or report suites, the run stops as well. This mirrors
248
- `--compare-to`, which refuses both a platform and an instance mismatch, so
265
+ CJA and AA snapshots, pass `--platform cja|aa` to select one, or point at a
266
+ single-platform directory. Without that, the run stops rather than guess. If it
267
+ mixes data views or report suites, the run also stops. `--compare-to` behaves
268
+ the same way and refuses both a platform mismatch and an instance mismatch, so
249
269
  neither view ever diffs unrelated inventories. To compare or chart across
250
- different data views or report suites on purpose (for example staging versus
251
- prod drift), pass `--allow-instance-mismatch`; the run then proceeds with a
270
+ different data views or report suites on purpose, for example staging versus
271
+ prod drift, pass `--allow-instance-mismatch`. The run then proceeds with a
252
272
  warning. Platform mismatches are always rejected. The report shown alongside
253
273
  the trend is the newest usable snapshot in the directory.
254
274
 
255
- - **Restorable report links** — the catalog's filters, sort, view, and open detail panel are encoded in the URL hash. Within an authorized report location, copy the address bar to restore the same filtered view.
256
-
257
275
  ## Performance budget
258
276
 
259
277
  The output is CI-gated against the budgets in
@@ -262,8 +280,8 @@ Build time and HTML size are enforced at every published tier (100 / 500 / 1,000
262
280
  components). Browser-measured budgets are enforced at the 1,000-component tier
263
281
  (initial render < 1s, filter/search < 150ms) and the 2,000-component tier
264
282
  (< 2s, < 300ms), plus a 700ms cap on the graph view's main-thread block.
265
- These guarantees cover up to 8,000 reference edges; denser valid reports use
266
- an explicit graph opt-in and sit outside the published size/latency envelope.
283
+ These guarantees cover up to 8,000 reference edges. Denser valid reports use an
284
+ explicit graph opt-in and sit outside the published size and latency limits.
267
285
  Functional browser tests cover Chromium and WebKit. A separate Chromium-only
268
286
  performance gate measures all four component tiers; this is not a timing
269
287
  guarantee for every branded browser.
@@ -329,8 +347,8 @@ uv run ruff check # Lint
329
347
  uv run ruff format # Auto-format
330
348
 
331
349
  uv run python scripts/generate_examples.py # Regenerate examples/
332
- uv run python scripts/check_color_pack_parity.py \\
333
- --visualizer-sha <candidate-commit-sha> \\
350
+ uv run python scripts/check_color_pack_parity.py \
351
+ --visualizer-sha <candidate-commit-sha> \
334
352
  --grader-root ../sdr-grader --grader-sha <linked-grader-commit-sha>
335
353
  uv run python scripts/perf_check.py # Run the perf gate
336
354
  uv run python scripts/check_markdown_links.py
@@ -22,10 +22,10 @@ Static-output visual catalog generator for Adobe Customer Journey Analytics (CJA
22
22
 
23
23
  **Live examples:** [CJA report](https://brian-a-au.github.io/sdr-visualizer/cja-typical.html) · [AA report](https://brian-a-au.github.io/sdr-visualizer/aa-typical.html)
24
24
 
25
- The output is one HTML file: no server, no consumer-side build step, and no
26
- CDN dependencies. Its JSON, CSS, JavaScript, and D3 runtime are embedded, so it
27
- opens in a modern browser without an internet connection and makes no network
28
- requests.
25
+ The output is one HTML file. There is no server, no consumer-side build step,
26
+ and no CDN dependency. Its JSON, CSS, JavaScript, and D3 runtime are all
27
+ embedded, so it opens in a modern browser with no internet connection and makes
28
+ no network requests.
29
29
 
30
30
  Offline does not mean cleared for distribution. A report can contain
31
31
  implementation and component names, descriptions, segment and
@@ -34,6 +34,22 @@ Treat it as derived from the source snapshot. Move, email, post, or attach it
34
34
  only in authorized locations and in accordance with your organization's
35
35
  confidentiality and data-handling policy.
36
36
 
37
+ ## Public preview scope
38
+
39
+ This project is in public preview. A report describes what is configured in a
40
+ snapshot. It does not grade the implementation, and it does not confirm that a
41
+ configuration is correct, complete, or working at runtime. Review the details
42
+ against the source implementation before you act on them.
43
+
44
+ The report embeds the supported normalized component catalog, not every
45
+ platform-specific field. Optional Workspace project references are unverified
46
+ candidates, and an empty result never means a component is unused. Keep the
47
+ original generator snapshot for anything the report does not embed.
48
+
49
+ The tool is verified on Ubuntu with Python 3.11, 3.12, and 3.14. Other platforms
50
+ and later Python versions are not yet verified. The package installs on Python
51
+ 3.11 or newer.
52
+
37
53
  ## Install
38
54
 
39
55
  Install from PyPI with uv:
@@ -76,7 +92,7 @@ sdr-visualizer snapshot_new.json --compare-to snapshot_old.json
76
92
  sdr-visualizer ./snapshots/ --trend
77
93
  ```
78
94
 
79
- The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser — that's the whole experience.
95
+ The output lands at `./visualize-{instance_id}-{timestamp}.html` by default. Open it in a browser. That is the whole experience.
80
96
 
81
97
  Standard input is also supported when another process already emits a complete
82
98
  compatible snapshot:
@@ -85,13 +101,16 @@ compatible snapshot:
85
101
  some-snapshot-command | sdr-visualizer -
86
102
  ```
87
103
 
88
- ## Live CJA
104
+ ## Live modes
105
+
106
+ Both live modes call a separate generator that you install and authenticate
107
+ yourself. Follow that project's current setup, then confirm the executable is on
108
+ your `PATH`. Either generator may require a newer Python version than
109
+ sdr-visualizer's Python 3.11 minimum. The upstream repository is authoritative
110
+ for credentials, permissions, and generator compatibility.
89
111
 
90
- Live CJA mode requires the separate
91
- [`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable. Follow
92
- that project's current installation, configuration, and authentication
93
- instructions, then confirm `cja_auto_sdr` is on your `PATH`. Its generator may
94
- require a newer Python version than sdr-visualizer's Python 3.11 minimum.
112
+ Live CJA mode uses the
113
+ [`cja_auto_sdr`](https://github.com/brian-a-au/cja_auto_sdr) executable:
95
114
 
96
115
  ```bash
97
116
  sdr-visualizer --dataview dv_prod_web
@@ -99,25 +118,20 @@ sdr-visualizer --dataview dv_prod_web
99
118
 
100
119
  sdr-visualizer runs the generator with JSON output, a temporary output
101
120
  directory, and `--include-all-inventory`, then selects the generated snapshot.
102
- The temporary source data is removed after the report is built. This is not a
103
- stdin pipeline: CJA's complete inventory is directory-backed.
104
-
105
- ## Live AA
121
+ It removes the temporary source data after the report is built. This is not a
122
+ stdin pipeline. CJA's complete inventory comes from a directory of files.
106
123
 
107
- Live AA mode likewise requires the separate
108
- [`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable. Complete
109
- its current setup and authentication steps, and confirm `aa_auto_sdr` is on your
110
- `PATH`. The generator may require a newer Python version than sdr-visualizer.
124
+ Live AA mode uses the
125
+ [`aa_auto_sdr`](https://github.com/brian-a-au/aa_auto_sdr) executable:
111
126
 
112
127
  ```bash
113
128
  sdr-visualizer --rsid prod_us
114
129
  ```
115
130
 
116
- AA live mode reads the generator JSON snapshot from stdout and embeds the
117
- supported normalized component catalog in the report. Retain the original
131
+ AA live mode reads the generator's JSON snapshot from stdout and embeds the
132
+ supported normalized component catalog in the report. Keep the original
118
133
  generator snapshot when you need platform-specific details that the visualizer
119
- does not embed. For both live modes, the upstream repository is authoritative
120
- for credentials, permissions, and generator compatibility.
134
+ does not embed.
121
135
 
122
136
  ## Optional Workspace project usage
123
137
 
@@ -144,7 +158,8 @@ Each command automatically writes HTML and `<html-stem>.workspace-usage.json`.
144
158
  Existing snapshots and live exporter modes work without exporter changes.
145
159
  The catalog shows possible project references separately from component
146
160
  dependencies, with check time and coverage limits. SDK matches remain
147
- unverified candidates; empty results never mean unused or safe to delete.
161
+ unverified candidates. Empty results never mean a component is unused or safe
162
+ to delete.
148
163
  Opening the HTML and replaying the saved usage file need no credentials or
149
164
  network access. See the
150
165
  [Workspace usage guide](https://github.com/brian-a-au/sdr-visualizer/blob/main/docs/WORKSPACE_USAGE.md)
@@ -188,9 +203,9 @@ Color-pack selection changes HTML presentation only. It does not add to or
188
203
  alter the embedded JSON or a `--json` sidecar. The pack CSS, report data, and
189
204
  runtime remain embedded in the single offline HTML file.
190
205
 
191
- The named packs are palette-inspired alternatives, not official brand assets
192
- or claims of affiliation or endorsement, and they contain no company or
193
- product logos. Each pack is checked against the project's declared WCAG text
206
+ The named packs are alternative palettes. They are not official brand assets or
207
+ claims of affiliation or endorsement, and they contain no company or product
208
+ logos. Each pack is checked against the project's declared WCAG text
194
209
  and essential-graphics contrast pairs. Text labels and other non-color cues
195
210
  continue to communicate state, and reviewed print colors keep reports legible
196
211
  when printed.
@@ -204,9 +219,14 @@ Every report has two base top-level views:
204
219
 
205
220
  Segment anatomy and calculated-metric anatomy are contextual detail content,
206
221
  not separate navigation destinations. They open from the Catalog detail panel.
207
- Segment anatomy renders nested containers and references; calculated-metric
222
+ Segment anatomy renders nested containers and references. Calculated-metric
208
223
  anatomy renders operations, operands, and metric references.
209
224
 
225
+ You can restore an exact view from its address. The catalog's filters, sort,
226
+ view, and open detail panel are encoded in the URL hash, so within an
227
+ authorized report location you can copy the address bar to reload the same
228
+ filtered view.
229
+
210
230
  At most one conditional top-level view is added. With `--compare-to`, a
211
231
  **Changes** view appears, listing components
212
232
  added, removed, and modified relative to a baseline snapshot, with
@@ -219,18 +239,16 @@ per-interval change log. The window is capped at the 60 most recent
219
239
  snapshots.
220
240
 
221
241
  A trend directory must hold snapshots of a single implementation. If it mixes
222
- CJA and AA snapshots, pass `--platform cja|aa` to select one (or point at a
223
- single-platform directory); without it the run stops rather than guess. If it
224
- mixes data views or report suites, the run stops as well. This mirrors
225
- `--compare-to`, which refuses both a platform and an instance mismatch, so
242
+ CJA and AA snapshots, pass `--platform cja|aa` to select one, or point at a
243
+ single-platform directory. Without that, the run stops rather than guess. If it
244
+ mixes data views or report suites, the run also stops. `--compare-to` behaves
245
+ the same way and refuses both a platform mismatch and an instance mismatch, so
226
246
  neither view ever diffs unrelated inventories. To compare or chart across
227
- different data views or report suites on purpose (for example staging versus
228
- prod drift), pass `--allow-instance-mismatch`; the run then proceeds with a
247
+ different data views or report suites on purpose, for example staging versus
248
+ prod drift, pass `--allow-instance-mismatch`. The run then proceeds with a
229
249
  warning. Platform mismatches are always rejected. The report shown alongside
230
250
  the trend is the newest usable snapshot in the directory.
231
251
 
232
- - **Restorable report links** — the catalog's filters, sort, view, and open detail panel are encoded in the URL hash. Within an authorized report location, copy the address bar to restore the same filtered view.
233
-
234
252
  ## Performance budget
235
253
 
236
254
  The output is CI-gated against the budgets in
@@ -239,8 +257,8 @@ Build time and HTML size are enforced at every published tier (100 / 500 / 1,000
239
257
  components). Browser-measured budgets are enforced at the 1,000-component tier
240
258
  (initial render < 1s, filter/search < 150ms) and the 2,000-component tier
241
259
  (< 2s, < 300ms), plus a 700ms cap on the graph view's main-thread block.
242
- These guarantees cover up to 8,000 reference edges; denser valid reports use
243
- an explicit graph opt-in and sit outside the published size/latency envelope.
260
+ These guarantees cover up to 8,000 reference edges. Denser valid reports use an
261
+ explicit graph opt-in and sit outside the published size and latency limits.
244
262
  Functional browser tests cover Chromium and WebKit. A separate Chromium-only
245
263
  performance gate measures all four component tiers; this is not a timing
246
264
  guarantee for every branded browser.
@@ -306,8 +324,8 @@ uv run ruff check # Lint
306
324
  uv run ruff format # Auto-format
307
325
 
308
326
  uv run python scripts/generate_examples.py # Regenerate examples/
309
- uv run python scripts/check_color_pack_parity.py \\
310
- --visualizer-sha <candidate-commit-sha> \\
327
+ uv run python scripts/check_color_pack_parity.py \
328
+ --visualizer-sha <candidate-commit-sha> \
311
329
  --grader-root ../sdr-grader --grader-sha <linked-grader-commit-sha>
312
330
  uv run python scripts/perf_check.py # Run the perf gate
313
331
  uv run python scripts/check_markdown_links.py
@@ -207,8 +207,8 @@ unusable, and capped-out members do not warn. The current markers are:
207
207
 
208
208
  | Platform | Warning threshold |
209
209
  |---|---:|
210
- | CJA (`cja_auto_sdr`) | 3.11.7 |
211
- | AA (`aa_auto_sdr`) | 1.21.10 |
210
+ | CJA (`cja_auto_sdr`) | 3.12.4 |
211
+ | AA (`aa_auto_sdr`) | 1.21.15 |
212
212
 
213
213
  A marker is evidence of exercised compatibility, not a promise about every
214
214
  possible snapshot produced by that version. It may advance only after a
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sdr-visualizer"
3
- version = "1.2.1"
3
+ version = "1.2.2"
4
4
  description = "Static-output visual catalog generator for Adobe Customer Journey Analytics and Adobe Analytics implementations."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """sdr-visualizer: visual catalog generator for CJA / AA implementations."""
2
2
 
3
- __version__ = "1.2.1"
3
+ __version__ = "1.2.2"
@@ -355,7 +355,7 @@ def _walk_segment_definition(definition: Any) -> tuple[int, list[str]]:
355
355
  # (bundled fixtures + the private real corpus; re-derive at each release:
356
356
  # grep -rho '"Tool Version": "[^"]*"|"tool_version": "[^"]*"' over corpus
357
357
  # and fixtures, take the max). The compatibility policy warns — never refuses.
358
- TESTED_THROUGH_GENERATOR_VERSION = "1.21.10"
358
+ TESTED_THROUGH_GENERATOR_VERSION = "1.21.15"
359
359
 
360
360
 
361
361
  def generator_version_warning(adapter_version: str) -> str | None:
@@ -367,7 +367,7 @@ def _walk_for_contexts(node: Any, out: list[str]) -> None:
367
367
  # (bundled fixtures + the private real corpus; re-derive at each release:
368
368
  # grep -rho '"Tool Version": "[^"]*"|"tool_version": "[^"]*"' over corpus
369
369
  # and fixtures, take the max). The compatibility policy warns — never refuses.
370
- TESTED_THROUGH_GENERATOR_VERSION = "3.11.7"
370
+ TESTED_THROUGH_GENERATOR_VERSION = "3.12.4"
371
371
 
372
372
 
373
373
  def generator_version_warning(adapter_version: str) -> str | None:
@@ -858,12 +858,12 @@ def test_equal_older_or_unparseable_versions_do_not_warn():
858
858
 
859
859
 
860
860
  def test_tuple_length_mismatch_versions_compare_correctly():
861
- # (3, 12) > (3, 11, 7), while the shorter (3, 11) sorts below the
861
+ # (3, 13) > (3, 12, 4), while the shorter (3, 12) sorts below the
862
862
  # longer tested tuple. This pins Python tuple ordering as the contract.
863
863
  from sdr_visualizer.adapters.cja import generator_version_warning
864
864
 
865
- assert generator_version_warning("3.12") is not None
866
- assert generator_version_warning("3.11") is None
865
+ assert generator_version_warning("3.13") is not None
866
+ assert generator_version_warning("3.12") is None
867
867
 
868
868
 
869
869
  # ---------------------------------------------------------------------------
@@ -39,11 +39,12 @@ def test_readme_distinguishes_saved_and_live_input_contracts():
39
39
 
40
40
  def test_readme_scopes_aa_live_mode_to_the_normalized_catalog():
41
41
  readme = (REPO / "README.md").read_text(encoding="utf-8")
42
- live_aa = " ".join(readme.split("## Live AA", 1)[1].split("## Useful flags", 1)[0].split())
42
+ live_modes = readme.split("## Live modes", 1)[1].split("## Optional Workspace", 1)[0]
43
+ live_aa = " ".join(live_modes.split("Live AA mode uses", 1)[1].split())
43
44
 
44
- assert "reads the generator JSON snapshot from stdout" in live_aa
45
+ assert "reads the generator's JSON snapshot from stdout" in live_aa
45
46
  assert "supported normalized component catalog" in live_aa
46
- assert "Retain the original generator snapshot" in live_aa
47
+ assert "Keep the original generator snapshot" in live_aa
47
48
  assert "platform-specific details that the visualizer does not embed" in live_aa
48
49
  assert "complete inventory" not in live_aa
49
50
 
File without changes