pytest-given 0.4.0__tar.gz → 0.4.1__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 (148) hide show
  1. {pytest_given-0.4.0 → pytest_given-0.4.1}/CHANGELOG.md +8 -1
  2. {pytest_given-0.4.0 → pytest_given-0.4.1}/PKG-INFO +1 -1
  3. {pytest_given-0.4.0 → pytest_given-0.4.1}/pyproject.toml +1 -1
  4. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/app.js +11 -1
  5. {pytest_given-0.4.0 → pytest_given-0.4.1}/uv.lock +1 -1
  6. {pytest_given-0.4.0 → pytest_given-0.4.1}/.gitignore +0 -0
  7. {pytest_given-0.4.0 → pytest_given-0.4.1}/AGENTS.md +0 -0
  8. {pytest_given-0.4.0 → pytest_given-0.4.1}/GLOSSARY.md +0 -0
  9. {pytest_given-0.4.0 → pytest_given-0.4.1}/LICENSE.md +0 -0
  10. {pytest_given-0.4.0 → pytest_given-0.4.1}/README.md +0 -0
  11. {pytest_given-0.4.0 → pytest_given-0.4.1}/THIRD-PARTY-LICENSES +0 -0
  12. {pytest_given-0.4.0 → pytest_given-0.4.1}/conftest.py +0 -0
  13. {pytest_given-0.4.0 → pytest_given-0.4.1}/docs/site/configuration/narration-lint.md +0 -0
  14. {pytest_given-0.4.0 → pytest_given-0.4.1}/noxfile.py +0 -0
  15. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-authoring/SKILL.md +0 -0
  16. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-authoring/references/api.md +0 -0
  17. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-authoring/references/domain-storytelling.md +0 -0
  18. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-authoring/references/glossaries.md +0 -0
  19. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-authoring/references/scenarios.md +0 -0
  20. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-authoring/references/stories.md +0 -0
  21. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-navigating/SKILL.md +0 -0
  22. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-navigating/references/report-json.md +0 -0
  23. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-reviewing/SKILL.md +0 -0
  24. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-reviewing/references/pairs.md +0 -0
  25. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/.agents/skills/pytest-given-reviewing/references/story-coverage.md +0 -0
  26. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/__init__.py +0 -0
  27. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/__init__.py +0 -0
  28. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/collector.py +0 -0
  29. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/discovery.py +0 -0
  30. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/file_glossary.py +0 -0
  31. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/glossary.py +0 -0
  32. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/kind_inference.py +0 -0
  33. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/markdown_glossary.py +0 -0
  34. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/process_state.py +0 -0
  35. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/scenario.py +0 -0
  36. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/source.py +0 -0
  37. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/steps.py +0 -0
  38. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/story.py +0 -0
  39. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/template.py +0 -0
  40. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/capture/traceback.py +0 -0
  41. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/cli/__init__.py +0 -0
  42. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/cli/report.py +0 -0
  43. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/cli/skills.py +0 -0
  44. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/__init__.py +0 -0
  45. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/attachments.py +0 -0
  46. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/checks.py +0 -0
  47. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/columns.py +0 -0
  48. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/context.py +0 -0
  49. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/group.py +0 -0
  50. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/percase.py +0 -0
  51. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/grouping/templatize.py +0 -0
  52. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/lint/__init__.py +0 -0
  53. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/lint/ast_rules.py +0 -0
  54. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/lint/base.py +0 -0
  55. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/lint/config.py +0 -0
  56. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/lint/runner.py +0 -0
  57. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/lint/runtime_rules.py +0 -0
  58. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/lint/summary.py +0 -0
  59. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/__init__.py +0 -0
  60. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/errors.py +0 -0
  61. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/narration.py +0 -0
  62. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/runtime.py +0 -0
  63. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/schema.py +0 -0
  64. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/serde.py +0 -0
  65. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/steps.py +0 -0
  66. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/model/text.py +0 -0
  67. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/plugin/__init__.py +0 -0
  68. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/plugin/collection.py +0 -0
  69. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/plugin/fixtures.py +0 -0
  70. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/plugin/options.py +0 -0
  71. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/plugin/runtest.py +0 -0
  72. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/plugin/session.py +0 -0
  73. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/plugin/state.py +0 -0
  74. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/py.typed +0 -0
  75. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/__init__.py +0 -0
  76. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/coverage.py +0 -0
  77. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/glossary_view.py +0 -0
  78. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/html_renderer.py +0 -0
  79. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/inline_markdown.py +0 -0
  80. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/md_renderer.py +0 -0
  81. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/palette.py +0 -0
  82. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/sinks.py +0 -0
  83. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/slugs.py +0 -0
  84. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/source_link.py +0 -0
  85. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/story_view.py +0 -0
  86. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/_macros.html.j2 +0 -0
  87. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/alpine.min.js +0 -0
  88. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/fonts/source-code-pro-latin-wght-normal.woff2 +0 -0
  89. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/fonts/source-sans-3-latin-wght-normal.woff2 +0 -0
  90. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/logo.svg +0 -0
  91. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/report.html.j2 +0 -0
  92. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/templates/styles.css +0 -0
  93. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/text.py +0 -0
  94. {pytest_given-0.4.0 → pytest_given-0.4.1}/src/pytest_given/report/theme.py +0 -0
  95. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/__init__.py +0 -0
  96. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/conftest.py +0 -0
  97. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/integration/__init__.py +0 -0
  98. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/integration/test_cli.py +0 -0
  99. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/integration/test_plugin.py +0 -0
  100. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/integration/test_plugin_file_glossary.py +0 -0
  101. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/integration/test_plugin_lint.py +0 -0
  102. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/integration/test_plugin_session_isolation.py +0 -0
  103. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/integration/test_skills_cli.py +0 -0
  104. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/ubiquitous_language.py +0 -0
  105. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/__init__.py +0 -0
  106. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/__init__.py +0 -0
  107. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_collector.py +0 -0
  108. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_discovery.py +0 -0
  109. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_file_glossary.py +0 -0
  110. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_glossary.py +0 -0
  111. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_kind_inference.py +0 -0
  112. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_markdown_glossary.py +0 -0
  113. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_rootdir_isolation.py +0 -0
  114. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_source.py +0 -0
  115. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_step_descriptor.py +0 -0
  116. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_story.py +0 -0
  117. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_template.py +0 -0
  118. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/capture/test_traceback_parser.py +0 -0
  119. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/lint/__init__.py +0 -0
  120. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/lint/test_ast_rules.py +0 -0
  121. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/lint/test_config.py +0 -0
  122. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/lint/test_runtime_rules.py +0 -0
  123. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/lint/test_summary.py +0 -0
  124. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/model/__init__.py +0 -0
  125. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/model/test_errors.py +0 -0
  126. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/model/test_narration.py +0 -0
  127. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/model/test_schema.py +0 -0
  128. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/model/test_serde.py +0 -0
  129. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/model/test_steps.py +0 -0
  130. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/model/test_text.py +0 -0
  131. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/__init__.py +0 -0
  132. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_coverage.py +0 -0
  133. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_glossary_view.py +0 -0
  134. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_html_renderer.py +0 -0
  135. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_inline_markdown.py +0 -0
  136. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_md_renderer.py +0 -0
  137. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_palette.py +0 -0
  138. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_sinks.py +0 -0
  139. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_slugs.py +0 -0
  140. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_source_link.py +0 -0
  141. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_story_view.py +0 -0
  142. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/report/test_theme.py +0 -0
  143. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/test_grouping.py +0 -0
  144. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/test_percase.py +0 -0
  145. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/test_plugin.py +0 -0
  146. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/test_plugin_traceback.py +0 -0
  147. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/test_skills_data.py +0 -0
  148. {pytest_given-0.4.0 → pytest_given-0.4.1}/tests/unit/test_skills_scripts.py +0 -0
@@ -11,6 +11,12 @@ form `## [x.y.z] - YYYY-MM-DD`.
11
11
 
12
12
  <!-- --8<-- [start:site] -->
13
13
 
14
+ ## [0.4.1] - 2026-10-04
15
+
16
+ ### Fixed
17
+
18
+ - The HTML report's phase hover outline in a parameter table now follows an attachment payload opened or closed under the pointer.
19
+
14
20
  ## [0.4.0] - 2026-10-04
15
21
 
16
22
  ### Added
@@ -388,7 +394,8 @@ First public release.
388
394
  - Bundled authoring, navigating, and reviewing skills for AI agents, shipped in
389
395
  the wheel and version-matched to the plugin.
390
396
 
391
- [Unreleased]: https://github.com/nwilbert/pytest-given/compare/v0.4.0...HEAD
397
+ [Unreleased]: https://github.com/nwilbert/pytest-given/compare/v0.4.1...HEAD
398
+ [0.4.1]: https://github.com/nwilbert/pytest-given/compare/v0.4.0...v0.4.1
392
399
  [0.4.0]: https://github.com/nwilbert/pytest-given/compare/v0.3.0...v0.4.0
393
400
  [0.3.0]: https://github.com/nwilbert/pytest-given/compare/v0.2.0...v0.3.0
394
401
  [0.2.0]: https://github.com/nwilbert/pytest-given/compare/v0.1.0...v0.2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pytest-given
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: A pytest plugin that generates interactive HTML reports from Given/When/Then annotated tests.
5
5
  Project-URL: Homepage, https://github.com/nwilbert/pytest-given
6
6
  Project-URL: Repository, https://github.com/nwilbert/pytest-given
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pytest-given"
3
- version = "0.4.0"
3
+ version = "0.4.1"
4
4
  description = "A pytest plugin that generates interactive HTML reports from Given/When/Then annotated tests."
5
5
  readme = "README.md"
6
6
  # PEP 639: an SPDX expression plus the files it refers to. Deliberately no
@@ -855,11 +855,19 @@ function reportApp() {
855
855
  },
856
856
  // Phase hover, delegated the same way: a phase block in the narration and
857
857
  // the table columns it narrates carry one `data-block`, and pointing at
858
- // either outlines both. The status column is a block of its own.
858
+ // either outlines both. The status column is a block of its own. The
859
+ // boxes are measured, so they are redrawn whenever the table resizes
860
+ // under a still pointer — a payload opened from its own badge, mid-hover.
859
861
  _initPhaseHover() {
860
862
  let hovered = null;
863
+ const redraw = new ResizeObserver(() => {
864
+ if (!hovered) return;
865
+ this._clearPhaseOutline(hovered.scope);
866
+ this._outlinePhase(hovered.scope, hovered.block);
867
+ });
861
868
  const leave = () => {
862
869
  if (!hovered) return;
870
+ redraw.disconnect();
863
871
  this._clearPhaseOutline(hovered.scope);
864
872
  hovered = null;
865
873
  };
@@ -871,6 +879,8 @@ function reportApp() {
871
879
  if (!scope) return;
872
880
  hovered = { scope, block: el.dataset.block };
873
881
  this._outlinePhase(scope, el.dataset.block);
882
+ const table = scope.querySelector('.param-table');
883
+ if (table) redraw.observe(table);
874
884
  });
875
885
  document.addEventListener('pointerout', (event) => {
876
886
  if (!event.relatedTarget) leave();
@@ -883,7 +883,7 @@ wheels = [
883
883
 
884
884
  [[package]]
885
885
  name = "pytest-given"
886
- version = "0.4.0"
886
+ version = "0.4.1"
887
887
  source = { editable = "." }
888
888
  dependencies = [
889
889
  { name = "jinja2" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes