MDit 0.0.0.dev2__tar.gz → 0.0.0.dev3__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 (27) hide show
  1. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/PKG-INFO +9 -9
  2. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/pyproject.toml +9 -9
  3. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/MDit.egg-info/PKG-INFO +9 -9
  4. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/MDit.egg-info/requires.txt +8 -8
  5. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/element.py +28 -13
  6. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/protocol.py +1 -1
  7. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/renderable.py +3 -2
  8. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/target/__init__.py +17 -2
  9. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/README.md +0 -0
  10. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/setup.cfg +0 -0
  11. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/MDit.egg-info/SOURCES.txt +0 -0
  12. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/MDit.egg-info/dependency_links.txt +0 -0
  13. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/MDit.egg-info/not-zip-safe +0 -0
  14. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/MDit.egg-info/top_level.txt +0 -0
  15. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/__init__.py +0 -0
  16. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/container.py +0 -0
  17. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/data/__init__.py +0 -0
  18. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/data/file.py +0 -0
  19. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/data/schema.py +0 -0
  20. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/display.py +0 -0
  21. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/document.py +0 -0
  22. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/generate.py +0 -0
  23. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/parse.py +0 -0
  24. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/render.py +0 -0
  25. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/target/md.py +0 -0
  26. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/target/rich.py +0 -0
  27. {mdit-0.0.0.dev2 → mdit-0.0.0.dev3}/src/mdit/template.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MDit
3
- Version: 0.0.0.dev2
3
+ Version: 0.0.0.dev3
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: sphinx<8
6
6
  Requires-Dist: myst-parser<4,>3
@@ -13,15 +13,15 @@ Requires-Dist: linkify-it-py
13
13
  Requires-Dist: readme-renderer
14
14
  Requires-Dist: cmarkgfm
15
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
16
  Requires-Dist: IPython
22
17
  Requires-Dist: jupyterlab_myst
23
- Requires-Dist: PyProtocol
24
- Requires-Dist: HTMP
25
- Requires-Dist: ansi-sgr
26
18
  Requires-Dist: pygments
27
19
  Requires-Dist: rich
20
+ Requires-Dist: PkgData==0.0.0.dev3
21
+ Requires-Dist: PySerials==0.0.0.dev7
22
+ Requires-Dist: PyLinks==0.0.0.dev27
23
+ Requires-Dist: PyBadger==0.0.0.dev8
24
+ Requires-Dist: PyColorIt==0.0.0.dev5
25
+ Requires-Dist: ProtocolMan==0.0.0.dev2
26
+ Requires-Dist: HTMP==0.0.0.dev3
27
+ 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.dev3"
21
21
  name = "MDit"
22
22
  requires-python = ">=3.10"
23
23
  dependencies = [
@@ -32,16 +32,16 @@ dependencies = [
32
32
  "readme-renderer",
33
33
  "cmarkgfm",
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
38
  "rich",
39
+ "PkgData == 0.0.0.dev3",
40
+ "PySerials == 0.0.0.dev7",
41
+ "PyLinks == 0.0.0.dev27",
42
+ "PyBadger == 0.0.0.dev8",
43
+ "PyColorIt == 0.0.0.dev5",
44
+ "ProtocolMan == 0.0.0.dev2",
45
+ "HTMP == 0.0.0.dev3",
46
+ "ANSI-SGR == 0.0.0.dev9",
47
47
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MDit
3
- Version: 0.0.0.dev2
3
+ Version: 0.0.0.dev3
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: sphinx<8
6
6
  Requires-Dist: myst-parser<4,>3
@@ -13,15 +13,15 @@ Requires-Dist: linkify-it-py
13
13
  Requires-Dist: readme-renderer
14
14
  Requires-Dist: cmarkgfm
15
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
16
  Requires-Dist: IPython
22
17
  Requires-Dist: jupyterlab_myst
23
- Requires-Dist: PyProtocol
24
- Requires-Dist: HTMP
25
- Requires-Dist: ansi-sgr
26
18
  Requires-Dist: pygments
27
19
  Requires-Dist: rich
20
+ Requires-Dist: PkgData==0.0.0.dev3
21
+ Requires-Dist: PySerials==0.0.0.dev7
22
+ Requires-Dist: PyLinks==0.0.0.dev27
23
+ Requires-Dist: PyBadger==0.0.0.dev8
24
+ Requires-Dist: PyColorIt==0.0.0.dev5
25
+ Requires-Dist: ProtocolMan==0.0.0.dev2
26
+ Requires-Dist: HTMP==0.0.0.dev3
27
+ Requires-Dist: ANSI-SGR==0.0.0.dev9
@@ -9,15 +9,15 @@ linkify-it-py
9
9
  readme-renderer
10
10
  cmarkgfm
11
11
  zundler
12
- PkgData
13
- PySerials
14
- PyLinks
15
- PyBadger
16
- PyColorIt
17
12
  IPython
18
13
  jupyterlab_myst
19
- PyProtocol
20
- HTMP
21
- ansi-sgr
22
14
  pygments
23
15
  rich
16
+ PkgData==0.0.0.dev3
17
+ PySerials==0.0.0.dev7
18
+ PyLinks==0.0.0.dev27
19
+ PyBadger==0.0.0.dev8
20
+ PyColorIt==0.0.0.dev5
21
+ ProtocolMan==0.0.0.dev2
22
+ HTMP==0.0.0.dev3
23
+ 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
  }
File without changes
File without changes
File without changes
File without changes
File without changes