MDit 0.0.0.dev2__tar.gz → 0.0.0.dev4__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 (30) hide show
  1. mdit-0.0.0.dev4/PKG-INFO +28 -0
  2. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/pyproject.toml +13 -12
  3. mdit-0.0.0.dev4/src/MDit.egg-info/PKG-INFO +28 -0
  4. mdit-0.0.0.dev4/src/MDit.egg-info/requires.txt +24 -0
  5. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/element.py +28 -13
  6. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/protocol.py +1 -1
  7. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/renderable.py +3 -2
  8. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/target/__init__.py +17 -2
  9. mdit-0.0.0.dev2/PKG-INFO +0 -27
  10. mdit-0.0.0.dev2/src/MDit.egg-info/PKG-INFO +0 -27
  11. mdit-0.0.0.dev2/src/MDit.egg-info/requires.txt +0 -23
  12. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/README.md +0 -0
  13. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/setup.cfg +0 -0
  14. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/MDit.egg-info/SOURCES.txt +0 -0
  15. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/MDit.egg-info/dependency_links.txt +0 -0
  16. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/MDit.egg-info/not-zip-safe +0 -0
  17. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/MDit.egg-info/top_level.txt +0 -0
  18. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/__init__.py +0 -0
  19. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/container.py +0 -0
  20. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/data/__init__.py +0 -0
  21. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/data/file.py +0 -0
  22. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/data/schema.py +0 -0
  23. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/display.py +0 -0
  24. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/document.py +0 -0
  25. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/generate.py +0 -0
  26. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/parse.py +0 -0
  27. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/render.py +0 -0
  28. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/target/md.py +0 -0
  29. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/target/rich.py +0 -0
  30. {mdit-0.0.0.dev2 → mdit-0.0.0.dev4}/src/mdit/template.py +0 -0
@@ -0,0 +1,28 @@
1
+ Metadata-Version: 2.1
2
+ Name: MDit
3
+ Version: 0.0.0.dev4
4
+ Requires-Python: >=3.10
5
+ Requires-Dist: sphinx<8
6
+ Requires-Dist: myst-parser<4,>3
7
+ Requires-Dist: pydata-sphinx-theme
8
+ Requires-Dist: sphinx-togglebutton
9
+ Requires-Dist: sphinx-design
10
+ Requires-Dist: markdown-it-py
11
+ Requires-Dist: mdit-py-plugins
12
+ Requires-Dist: linkify-it-py
13
+ Requires-Dist: readme-renderer[md]
14
+ Requires-Dist: cmarkgfm>=0.8.0
15
+ Requires-Dist: zundler
16
+ Requires-Dist: IPython
17
+ Requires-Dist: jupyterlab_myst
18
+ Requires-Dist: pygments
19
+ Requires-Dist: rich>=13.8
20
+ Requires-Dist: pydantic>=2.9
21
+ Requires-Dist: PkgData==0.0.0.dev3
22
+ Requires-Dist: PySerials==0.0.0.dev7
23
+ Requires-Dist: PyLinks==0.0.0.dev27
24
+ Requires-Dist: PyBadger==0.0.0.dev8
25
+ Requires-Dist: PyColorIt==0.0.0.dev5
26
+ Requires-Dist: ProtocolMan==0.0.0.dev2
27
+ Requires-Dist: HTMP==0.0.0.dev3
28
+ Requires-Dist: ANSI-SGR==0.0.0.dev9
@@ -17,7 +17,7 @@ namespaces = true
17
17
  # ----------------------------------------- Project Metadata -------------------------------------
18
18
  #
19
19
  [project]
20
- version = "0.0.0.dev2"
20
+ version = "0.0.0.dev4"
21
21
  name = "MDit"
22
22
  requires-python = ">=3.10"
23
23
  dependencies = [
@@ -29,19 +29,20 @@ dependencies = [
29
29
  "markdown-it-py",
30
30
  "mdit-py-plugins",
31
31
  "linkify-it-py",
32
- "readme-renderer",
33
- "cmarkgfm",
32
+ "readme-renderer[md]",
33
+ "cmarkgfm >= 0.8.0",
34
34
  "zundler",
35
- "PkgData",
36
- "PySerials",
37
- "PyLinks",
38
- "PyBadger",
39
- "PyColorIt",
40
35
  "IPython",
41
36
  "jupyterlab_myst",
42
- "PyProtocol",
43
- "HTMP",
44
- "ansi-sgr",
45
37
  "pygments",
46
- "rich",
38
+ "rich >= 13.8",
39
+ "pydantic >= 2.9",
40
+ "PkgData == 0.0.0.dev3",
41
+ "PySerials == 0.0.0.dev7",
42
+ "PyLinks == 0.0.0.dev27",
43
+ "PyBadger == 0.0.0.dev8",
44
+ "PyColorIt == 0.0.0.dev5",
45
+ "ProtocolMan == 0.0.0.dev2",
46
+ "HTMP == 0.0.0.dev3",
47
+ "ANSI-SGR == 0.0.0.dev9",
47
48
  ]
@@ -0,0 +1,28 @@
1
+ Metadata-Version: 2.1
2
+ Name: MDit
3
+ Version: 0.0.0.dev4
4
+ Requires-Python: >=3.10
5
+ Requires-Dist: sphinx<8
6
+ Requires-Dist: myst-parser<4,>3
7
+ Requires-Dist: pydata-sphinx-theme
8
+ Requires-Dist: sphinx-togglebutton
9
+ Requires-Dist: sphinx-design
10
+ Requires-Dist: markdown-it-py
11
+ Requires-Dist: mdit-py-plugins
12
+ Requires-Dist: linkify-it-py
13
+ Requires-Dist: readme-renderer[md]
14
+ Requires-Dist: cmarkgfm>=0.8.0
15
+ Requires-Dist: zundler
16
+ Requires-Dist: IPython
17
+ Requires-Dist: jupyterlab_myst
18
+ Requires-Dist: pygments
19
+ Requires-Dist: rich>=13.8
20
+ Requires-Dist: pydantic>=2.9
21
+ Requires-Dist: PkgData==0.0.0.dev3
22
+ Requires-Dist: PySerials==0.0.0.dev7
23
+ Requires-Dist: PyLinks==0.0.0.dev27
24
+ Requires-Dist: PyBadger==0.0.0.dev8
25
+ Requires-Dist: PyColorIt==0.0.0.dev5
26
+ Requires-Dist: ProtocolMan==0.0.0.dev2
27
+ Requires-Dist: HTMP==0.0.0.dev3
28
+ Requires-Dist: ANSI-SGR==0.0.0.dev9
@@ -0,0 +1,24 @@
1
+ sphinx<8
2
+ myst-parser<4,>3
3
+ pydata-sphinx-theme
4
+ sphinx-togglebutton
5
+ sphinx-design
6
+ markdown-it-py
7
+ mdit-py-plugins
8
+ linkify-it-py
9
+ readme-renderer[md]
10
+ cmarkgfm>=0.8.0
11
+ zundler
12
+ IPython
13
+ jupyterlab_myst
14
+ pygments
15
+ rich>=13.8
16
+ pydantic>=2.9
17
+ PkgData==0.0.0.dev3
18
+ PySerials==0.0.0.dev7
19
+ PyLinks==0.0.0.dev27
20
+ PyBadger==0.0.0.dev8
21
+ PyColorIt==0.0.0.dev5
22
+ ProtocolMan==0.0.0.dev2
23
+ HTMP==0.0.0.dev3
24
+ ANSI-SGR==0.0.0.dev9
@@ -153,7 +153,7 @@ class Admonition(Element):
153
153
  self.title_bold = title_bold
154
154
  self.title_tight = title_tight
155
155
  self.emoji = emoji or self.EMOJI[type]
156
- self.config_rich = config_rich or PanelConfig(
156
+ self.config_rich = config_rich or _mdit.target.rich.PanelConfig(
157
157
  title_style=_mdit.target.rich.StyleConfig(
158
158
  bgcolor=self.COLOR[type],
159
159
  color=(255, 255, 255),
@@ -172,7 +172,7 @@ class Admonition(Element):
172
172
  title = self.title.source(target=target, filters=filters).strip()
173
173
  body = self.body.source(target=target, filters=filters).strip()
174
174
  footer = self.footer.source(target=target, filters=filters).strip()
175
- content = f"{body}\n\n---\n\n{footer}".strip()
175
+ content = f"{body}\n\n---\n\n{footer}" if footer else body
176
176
  if target.directive_admo:
177
177
  return self._str_admo(title=title, content=content, target=target, filters=filters)
178
178
  if target.alerts:
@@ -708,9 +708,9 @@ class Directive(Element):
708
708
  def __init__(
709
709
  self,
710
710
  name: Stringable,
711
- args: MDContainer | None = None,
711
+ args: MDContainer | Stringable | None = None,
712
712
  options: dict[Stringable, Stringable | list[Stringable] | None] | None = None,
713
- content: MDContainer | None = None,
713
+ content: MDContainer | Stringable | None = None,
714
714
  target_configs: TargetConfigs = None,
715
715
  target_default: str = "sphinx",
716
716
  ):
@@ -747,10 +747,21 @@ class Directive(Element):
747
747
  return f"{"\n".join(option_lines)}\n"
748
748
 
749
749
  target = self._resolve_target(target)
750
- content = f"\n{self.content.source(target=target, filters=filters)}\n\n" if self.content else ""
750
+ if isinstance(self.content, _MDITRenderable):
751
+ content = self.content.source(target=target, filters=filters).strip()
752
+ elif not self.content:
753
+ content = ""
754
+ else:
755
+ content = str(self.content).strip()
756
+ content = f"\n{content}\n\n" if content else ""
751
757
  fence = target.fence * self.code_fence_count
752
- args = self.args.source(target=target, filters=filters) if self.args else ""
753
- start_line = f"{fence}{{{self.name}}} {args}"
758
+ if isinstance(self.args, _MDITRenderable):
759
+ args = self.args.source(target=target, filters=filters).strip()
760
+ elif not self.args:
761
+ args = ""
762
+ else:
763
+ args = str(self.args).strip()
764
+ start_line = f"{fence}{{{self.name}}} {args}".strip()
754
765
  opts = options()
755
766
  return f"{start_line}\n{opts}{content}{fence}"
756
767
 
@@ -804,9 +815,9 @@ class DropDown(Element):
804
815
  self.classes_container = classes_container or []
805
816
  self.classes_title = classes_title or []
806
817
  self.classes_body = classes_body or []
807
- self.config_rich = config_rich or PanelConfig(
818
+ self.config_rich = config_rich or _mdit.target.rich.PanelConfig(
808
819
  title_style=_mdit.target.rich.StyleConfig(
809
- bgcolor=self.COLOR[color],
820
+ bgcolor=self.COLOR[color or "muted"],
810
821
  color="#fff" if color != "light" else "#212529",
811
822
  bold=True,
812
823
  ),
@@ -825,7 +836,7 @@ class DropDown(Element):
825
836
  title = self.title.source(target=target, filters=filters).strip()
826
837
  content = self.body.source(target=target, filters=filters).strip()
827
838
  footer = self.footer.source(target=target, filters=filters).strip()
828
- content_full = f"{content}\n\n---\n\n{footer}".strip()
839
+ content_full = f"{content}\n\n---\n\n{footer}" if footer else content
829
840
  if target.directive_dropdown:
830
841
  options = {
831
842
  "open": self.opened,
@@ -850,6 +861,10 @@ class DropDown(Element):
850
861
  details_content = [_htmp.element.summary(title), _htmp.elementor.markdown(content)]
851
862
  return str(_htmp.element.details(details_content, {"open": self.opened}))
852
863
 
864
+ @property
865
+ def code_fence_count(self) -> int:
866
+ return max(self.body.code_fence_count, 2) + 1
867
+
853
868
 
854
869
  class FieldListItem(Element):
855
870
  def __init__(
@@ -1469,8 +1484,8 @@ class Table(Element):
1469
1484
  rows = []
1470
1485
  for row, _ in self.rows:
1471
1486
  cells = [cell for cell, _ in row]
1472
- rows.append(unordered_list(*cells))
1473
- table_content = unordered_list(*rows)
1487
+ rows.append(unordered_list(cells))
1488
+ table_content = unordered_list(rows)
1474
1489
  return directive(
1475
1490
  name="list-table",
1476
1491
  args=self.caption,
@@ -3409,7 +3424,7 @@ def unordered_list_item(
3409
3424
 
3410
3425
 
3411
3426
  def unordered_list(
3412
- content: Sequence[UnOrderedListItem | ContainerContentInputType | MDContainer] | MDContainer,
3427
+ content: Sequence[UnOrderedListItem | ContainerContentInputType | MDContainer] | MDContainer = None,
3413
3428
  classes: list[Stringable] | None = None,
3414
3429
  name: Stringable | None = None,
3415
3430
  tight: bool = True,
@@ -6,7 +6,7 @@ from typing import (
6
6
  TYPE_CHECKING as _TYPE_CHECKING,
7
7
  )
8
8
 
9
- from pyprotocol import Stringable
9
+ from protocolman import Stringable
10
10
  from htmp.protocol import AttrsInputType as _AttrsInputType
11
11
 
12
12
  from mdit.target.md import Config as MDTargetConfig
@@ -62,7 +62,8 @@ class Renderable:
62
62
  def _source_md(self, target: MDTargetConfig, filters: str | list[str] | None = None) -> str:
63
63
  return ""
64
64
 
65
- def _count_code_fence(self, content: str) -> int:
66
- pattern = _re.compile(r'^\s{0, 3}(`{3,}|~{3,}|:{3,})', _re.MULTILINE)
65
+ @staticmethod
66
+ def _count_code_fence(content: str) -> int:
67
+ pattern = _re.compile(r'^\s{0,3}(`{3,}|~{3,}|:{3,})', _re.MULTILINE)
67
68
  matches = pattern.findall(str(content))
68
69
  return max(len(match) for match in matches) if matches else 0
@@ -130,9 +130,24 @@ def sphinx(
130
130
  "extensions": [
131
131
  'myst_parser',
132
132
  'sphinx_design',
133
- 'sphinx_togglebutton'
133
+ 'sphinx_togglebutton',
134
+ ],
135
+ "myst_enable_extensions": [
136
+ "amsmath",
137
+ "attrs_inline",
138
+ "colon_fence",
139
+ "deflist",
140
+ "dollarmath",
141
+ "fieldlist",
142
+ "html_admonition",
143
+ "html_image",
144
+ "linkify",
145
+ "replacements",
146
+ "smartquotes",
147
+ "strikethrough",
148
+ "substitution",
149
+ "tasklist",
134
150
  ],
135
- "myst_enable_extensions": ["colon_fence"],
136
151
  "html_theme": "pydata_sphinx_theme",
137
152
  "html_title": "",
138
153
  }
mdit-0.0.0.dev2/PKG-INFO DELETED
@@ -1,27 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: MDit
3
- Version: 0.0.0.dev2
4
- Requires-Python: >=3.10
5
- Requires-Dist: sphinx<8
6
- Requires-Dist: myst-parser<4,>3
7
- Requires-Dist: pydata-sphinx-theme
8
- Requires-Dist: sphinx-togglebutton
9
- Requires-Dist: sphinx-design
10
- Requires-Dist: markdown-it-py
11
- Requires-Dist: mdit-py-plugins
12
- Requires-Dist: linkify-it-py
13
- Requires-Dist: readme-renderer
14
- Requires-Dist: cmarkgfm
15
- Requires-Dist: zundler
16
- Requires-Dist: PkgData
17
- Requires-Dist: PySerials
18
- Requires-Dist: PyLinks
19
- Requires-Dist: PyBadger
20
- Requires-Dist: PyColorIt
21
- Requires-Dist: IPython
22
- Requires-Dist: jupyterlab_myst
23
- Requires-Dist: PyProtocol
24
- Requires-Dist: HTMP
25
- Requires-Dist: ansi-sgr
26
- Requires-Dist: pygments
27
- Requires-Dist: rich
@@ -1,27 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: MDit
3
- Version: 0.0.0.dev2
4
- Requires-Python: >=3.10
5
- Requires-Dist: sphinx<8
6
- Requires-Dist: myst-parser<4,>3
7
- Requires-Dist: pydata-sphinx-theme
8
- Requires-Dist: sphinx-togglebutton
9
- Requires-Dist: sphinx-design
10
- Requires-Dist: markdown-it-py
11
- Requires-Dist: mdit-py-plugins
12
- Requires-Dist: linkify-it-py
13
- Requires-Dist: readme-renderer
14
- Requires-Dist: cmarkgfm
15
- Requires-Dist: zundler
16
- Requires-Dist: PkgData
17
- Requires-Dist: PySerials
18
- Requires-Dist: PyLinks
19
- Requires-Dist: PyBadger
20
- Requires-Dist: PyColorIt
21
- Requires-Dist: IPython
22
- Requires-Dist: jupyterlab_myst
23
- Requires-Dist: PyProtocol
24
- Requires-Dist: HTMP
25
- Requires-Dist: ansi-sgr
26
- Requires-Dist: pygments
27
- Requires-Dist: rich
@@ -1,23 +0,0 @@
1
- sphinx<8
2
- myst-parser<4,>3
3
- pydata-sphinx-theme
4
- sphinx-togglebutton
5
- sphinx-design
6
- markdown-it-py
7
- mdit-py-plugins
8
- linkify-it-py
9
- readme-renderer
10
- cmarkgfm
11
- zundler
12
- PkgData
13
- PySerials
14
- PyLinks
15
- PyBadger
16
- PyColorIt
17
- IPython
18
- jupyterlab_myst
19
- PyProtocol
20
- HTMP
21
- ansi-sgr
22
- pygments
23
- rich
File without changes
File without changes
File without changes
File without changes
File without changes