MDit 0.0.0.dev2__py3-none-any.whl → 0.0.0.dev4__py3-none-any.whl

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.
@@ -0,0 +1,29 @@
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
29
+
@@ -2,20 +2,20 @@ mdit/__init__.py,sha256=Bxkc8sRtqSW4mmX6uZYvMVcKith11_j6vkGTu6leNu4,7810
2
2
  mdit/container.py,sha256=GCkt1sfUHMMm5D8Nc2KkzAqdyuthUV7SiSFG5F2jaVU,7630
3
3
  mdit/display.py,sha256=QOzUIJ6AxGL7cBBQebOKQtEMmPVbx7ehJBsdG3_peiM,1787
4
4
  mdit/document.py,sha256=o7GvBV6Xty0lKBWrwFpdM9fHaH1KNCsk-kRscPSXSBg,12216
5
- mdit/element.py,sha256=VyO5ITI8kdRDcpUXwUiblF2KS-Q7YNmKapTIAto3nDI,137892
5
+ mdit/element.py,sha256=fUCkmBY13FeqDBXVKLcPXgWM4NAs0F3tc2YXCAV0TW4,138466
6
6
  mdit/generate.py,sha256=EFMaROPuV72rCQ5cmkQo-FIA0w7hrMe-v6js0DMecuQ,6374
7
7
  mdit/parse.py,sha256=Hy173Tf8LdQroTwd5gAmjqr4MK7rzMxmapt5b-ttQGY,976
8
- mdit/protocol.py,sha256=8beYR98elWjfUXiE8mleojBId_JpqjC_7YZZuVso39M,1456
8
+ mdit/protocol.py,sha256=VktjD_pvHeS5-qLAgWK_Dvj_nhYLohU3SeMhklaej9g,1457
9
9
  mdit/render.py,sha256=DrbaXSQjI-sTkakiinoyb1rWorOPnNUlygMkIRya8FM,19694
10
- mdit/renderable.py,sha256=Ou-COeukIMl5LYNpp0w-7z_oCFmrtrs7X4bpqt3oVkM,2469
10
+ mdit/renderable.py,sha256=ukV8oXVK76yUgGSD1UgTAH6sEznyD8KWXqC9Gk4WEoE,2480
11
11
  mdit/template.py,sha256=B7WjlXDqnXwcw4iMR0ALz583QncoyzI_mVr3d5POHCE,320
12
12
  mdit/data/__init__.py,sha256=decc0R_-oZrGIkO6tizQczgH5CvS0GMSsdj8Fe4-Qr4,95
13
13
  mdit/data/file.py,sha256=zynnCv--KzqAuBtH2dMemV8YRX0XyGGuFJgwnHjxcXc,2718
14
14
  mdit/data/schema.py,sha256=xOpYmV3wbeKfsnPsdE14i8ahRCW9hvlM3RtsRKg_R0g,1487
15
- mdit/target/__init__.py,sha256=tGmJvsWT9LzNr6azF_X-BseubZcfm8hCdJJqtB3WCJY,11223
15
+ mdit/target/__init__.py,sha256=1cPYJrDRdZerBoNbnVxkXpB5KKILHNB_FW2ceCj-ev8,11648
16
16
  mdit/target/md.py,sha256=JETbaGGR1rZFitrddyvvrYywf_sKIk1eNXJygpzv8Xc,5370
17
17
  mdit/target/rich.py,sha256=2v-SFXJTi4XMC12xJa6defXhZdRMMcIPw5b_iK6mZJo,17170
18
- MDit-0.0.0.dev2.dist-info/METADATA,sha256=Mwg_Y4CiWGMGA0_YXdSfRog7NQZrQZHgOajbWVX-GpQ,691
19
- MDit-0.0.0.dev2.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
20
- MDit-0.0.0.dev2.dist-info/top_level.txt,sha256=_4_zJlCBI-JwqP_O5NUaK_6tMUr1xLl40ogCfm2Uzio,5
21
- MDit-0.0.0.dev2.dist-info/RECORD,,
18
+ MDit-0.0.0.dev4.dist-info/METADATA,sha256=0LEiUVHEnJYRjF2vcomJXXjCsAiElRf55y0fpdXWIjA,846
19
+ MDit-0.0.0.dev4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
20
+ MDit-0.0.0.dev4.dist-info/top_level.txt,sha256=_4_zJlCBI-JwqP_O5NUaK_6tMUr1xLl40ogCfm2Uzio,5
21
+ MDit-0.0.0.dev4.dist-info/RECORD,,
mdit/element.py CHANGED
@@ -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,
mdit/protocol.py CHANGED
@@ -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
mdit/renderable.py CHANGED
@@ -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
mdit/target/__init__.py CHANGED
@@ -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
  }
@@ -1,28 +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
28
-