termrender 4.1.0__tar.gz → 4.1.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 (57) hide show
  1. {termrender-4.1.0 → termrender-4.1.1}/CHANGELOG.md +8 -0
  2. {termrender-4.1.0 → termrender-4.1.1}/PKG-INFO +1 -1
  3. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/mermaid_pie.py +8 -2
  4. {termrender-4.1.0 → termrender-4.1.1}/tests/test_mermaid_pie.py +10 -0
  5. {termrender-4.1.0 → termrender-4.1.1}/.github/workflows/publish.yml +0 -0
  6. {termrender-4.1.0 → termrender-4.1.1}/.gitignore +0 -0
  7. {termrender-4.1.0 → termrender-4.1.1}/CLAUDE.md +0 -0
  8. {termrender-4.1.0 → termrender-4.1.1}/LICENSE +0 -0
  9. {termrender-4.1.0 → termrender-4.1.1}/README.md +0 -0
  10. {termrender-4.1.0 → termrender-4.1.1}/design.json +0 -0
  11. {termrender-4.1.0 → termrender-4.1.1}/pyproject.toml +0 -0
  12. {termrender-4.1.0 → termrender-4.1.1}/requirements.json +0 -0
  13. {termrender-4.1.0 → termrender-4.1.1}/scripts/build-mermaid-ascii.sh +0 -0
  14. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/CLAUDE.md +0 -0
  15. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/__init__.py +0 -0
  16. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/__main__.py +0 -0
  17. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/_bin/mermaid-ascii-darwin-arm64 +0 -0
  18. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/_mermaid_bin.py +0 -0
  19. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/blocks.py +0 -0
  20. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/emit.py +0 -0
  21. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/layout.py +0 -0
  22. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/parser.py +0 -0
  23. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/py.typed +0 -0
  24. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/CLAUDE.md +0 -0
  25. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/__init__.py +0 -0
  26. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/borders.py +0 -0
  27. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/charts.py +0 -0
  28. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/code.py +0 -0
  29. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/columns.py +0 -0
  30. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/diff.py +0 -0
  31. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/divider.py +0 -0
  32. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/mermaid.py +0 -0
  33. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/mermaid_gantt.py +0 -0
  34. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/panel.py +0 -0
  35. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/quote.py +0 -0
  36. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/stat.py +0 -0
  37. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/table.py +0 -0
  38. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/text.py +0 -0
  39. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/timeline.py +0 -0
  40. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/renderers/tree.py +0 -0
  41. {termrender-4.1.0 → termrender-4.1.1}/src/termrender/style.py +0 -0
  42. {termrender-4.1.0 → termrender-4.1.1}/tests/__init__.py +0 -0
  43. {termrender-4.1.0 → termrender-4.1.1}/tests/test_charts.py +0 -0
  44. {termrender-4.1.0 → termrender-4.1.1}/tests/test_cli_contract.py +0 -0
  45. {termrender-4.1.0 → termrender-4.1.1}/tests/test_column_alignment.py +0 -0
  46. {termrender-4.1.0 → termrender-4.1.1}/tests/test_diff.py +0 -0
  47. {termrender-4.1.0 → termrender-4.1.1}/tests/test_inline_badge.py +0 -0
  48. {termrender-4.1.0 → termrender-4.1.1}/tests/test_linebreak.py +0 -0
  49. {termrender-4.1.0 → termrender-4.1.1}/tests/test_mermaid_compat.py +0 -0
  50. {termrender-4.1.0 → termrender-4.1.1}/tests/test_mermaid_dispatch.py +0 -0
  51. {termrender-4.1.0 → termrender-4.1.1}/tests/test_mermaid_gantt.py +0 -0
  52. {termrender-4.1.0 → termrender-4.1.1}/tests/test_myst_gaps.py +0 -0
  53. {termrender-4.1.0 → termrender-4.1.1}/tests/test_stat.py +0 -0
  54. {termrender-4.1.0 → termrender-4.1.1}/tests/test_tasklist.py +0 -0
  55. {termrender-4.1.0 → termrender-4.1.1}/tests/test_timeline.py +0 -0
  56. {termrender-4.1.0 → termrender-4.1.1}/tests/test_variable_colons.py +0 -0
  57. {termrender-4.1.0 → termrender-4.1.1}/uv.lock +0 -0
@@ -1,6 +1,14 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v4.1.1 (2026-07-06)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **mermaid**: Honor inline title on pie header line
9
+ ([`37b4c37`](https://github.com/crouton-labs/termrender/commit/37b4c37581046d7a9b327f0e06f3ea5a5ca921d3))
10
+
11
+
4
12
  ## v4.1.0 (2026-07-06)
5
13
 
6
14
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: termrender
3
- Version: 4.1.0
3
+ Version: 4.1.1
4
4
  Summary: Rich terminal rendering of directive-flavored markdown
5
5
  Project-URL: Homepage, https://github.com/CaptainCrouton89/termrender
6
6
  Project-URL: Repository, https://github.com/CaptainCrouton89/termrender
@@ -22,7 +22,7 @@ from termrender.renderers.charts import render_bar
22
22
 
23
23
  _TITLE_RE = re.compile(r"^\s*title\s+(.*\S)\s*$", re.IGNORECASE)
24
24
  _DATA_RE = re.compile(r'^\s*"([^"]*)"\s*:\s*(-?\d+(?:\.\d+)?)\s*$')
25
- _HEADER_RE = re.compile(r"^\s*pie\b", re.IGNORECASE)
25
+ _HEADER_RE = re.compile(r"^\s*pie\b(?:\s+showData\b)?\s*(.*)$", re.IGNORECASE)
26
26
 
27
27
 
28
28
  def parse_pie(source: str) -> tuple[str | None, list[dict]]:
@@ -38,7 +38,13 @@ def parse_pie(source: str) -> tuple[str | None, list[dict]]:
38
38
  for line in source.splitlines():
39
39
  if not line.strip():
40
40
  continue
41
- if _HEADER_RE.match(line):
41
+ m = _HEADER_RE.match(line)
42
+ if m:
43
+ # Mermaid allows the title inline on the header line:
44
+ # ``pie title X`` / ``pie showData title X``.
45
+ tm = _TITLE_RE.match(m.group(1))
46
+ if tm:
47
+ title = tm.group(1)
42
48
  continue
43
49
  m = _TITLE_RE.match(line)
44
50
  if m:
@@ -40,6 +40,15 @@ class TestParsePie(unittest.TestCase):
40
40
  _, items = parse_pie("pie\n")
41
41
  self.assertEqual(items, [])
42
42
 
43
+ def test_title_inline_on_header_line(self):
44
+ title, items = parse_pie('pie title Pets\n "Dogs": 42\n')
45
+ self.assertEqual(title, "Pets")
46
+ self.assertEqual(items, [{"label": "Dogs", "value": 42.0}])
47
+
48
+ def test_title_inline_after_showdata(self):
49
+ title, _ = parse_pie('pie showData title Pets\n "Dogs": 1\n')
50
+ self.assertEqual(title, "Pets")
51
+
43
52
 
44
53
  class TestRenderPie(unittest.TestCase):
45
54
 
@@ -90,3 +99,4 @@ class TestRenderPie(unittest.TestCase):
90
99
 
91
100
  if __name__ == "__main__":
92
101
  unittest.main()
102
+
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes