MDit 0.0.0.dev12__tar.gz → 0.0.0.dev14__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 (50) hide show
  1. {mdit-0.0.0.dev12/src/MDit.egg-info → mdit-0.0.0.dev14}/PKG-INFO +3 -3
  2. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/pyproject.toml +3 -3
  3. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14/src/MDit.egg-info}/PKG-INFO +3 -3
  4. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/MDit.egg-info/requires.txt +2 -2
  5. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/document.py +15 -8
  6. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/render.py +58 -5
  7. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/target/__init__.py +1 -35
  8. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/MANIFEST.in +0 -0
  9. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/README.md +0 -0
  10. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/setup.cfg +0 -0
  11. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/MDit.egg-info/SOURCES.txt +0 -0
  12. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/MDit.egg-info/dependency_links.txt +0 -0
  13. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/MDit.egg-info/not-zip-safe +0 -0
  14. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/MDit.egg-info/top_level.txt +0 -0
  15. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/__init__.py +0 -0
  16. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/container.py +0 -0
  17. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/__init__.py +0 -0
  18. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/file.py +0 -0
  19. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema/document.yaml +0 -0
  20. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema/element/badge.yaml +0 -0
  21. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema.py +0 -0
  22. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/badge/dynamic.yaml +0 -0
  23. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/create-badges.yaml +0 -0
  24. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/coc_covenant.yaml +0 -0
  25. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/heading.yaml +0 -0
  26. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/highlights.yaml +0 -0
  27. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/line.yaml +0 -0
  28. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/newline.yaml +0 -0
  29. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/paragraph.yaml +0 -0
  30. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/paragraph_style.yaml +0 -0
  31. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/_to_review/spacer.yaml +0 -0
  32. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/badge/params.yaml +0 -0
  33. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/badges.yaml +0 -0
  34. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/element/image.yaml +0 -0
  35. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/html/attr/align.yaml +0 -0
  36. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/html/attr/size.yaml +0 -0
  37. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/html/attrs.yaml +0 -0
  38. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/html-document.yaml +0 -0
  39. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/pepy/badge-params.yaml +0 -0
  40. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/schema_/shields/badge-params.yaml +0 -0
  41. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/data/template/code_of_conduct/contributor_covenant.md +0 -0
  42. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/display.py +0 -0
  43. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/element.py +0 -0
  44. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/generate.py +0 -0
  45. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/parse.py +0 -0
  46. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/protocol.py +0 -0
  47. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/renderable.py +0 -0
  48. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/target/md.py +0 -0
  49. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/src/mdit/target/rich.py +0 -0
  50. {mdit-0.0.0.dev12 → mdit-0.0.0.dev14}/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.dev12
3
+ Version: 0.0.0.dev14
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: sphinx<8
6
6
  Requires-Dist: myst-nb<2,>1
@@ -23,9 +23,9 @@ Requires-Dist: rich>=13.8
23
23
  Requires-Dist: pydantic>=2.9
24
24
  Requires-Dist: referencing>=0.35.1
25
25
  Requires-Dist: PkgData==0.0.0.dev4
26
- Requires-Dist: PySerials==0.0.0.dev15
26
+ Requires-Dist: PySerials==0.0.0.dev17
27
27
  Requires-Dist: PyBadger==0.0.0.dev11
28
28
  Requires-Dist: PyColorIT==0.0.0.dev7
29
29
  Requires-Dist: ProtocolMan==0.0.0.dev2
30
30
  Requires-Dist: HTMP==0.0.0.dev5
31
- Requires-Dist: JSONSchemata==0.0.0.dev11
31
+ Requires-Dist: JSONSchemata==0.0.0.dev13
@@ -17,7 +17,7 @@ namespaces = true
17
17
  # ----------------------------------------- Project Metadata -------------------------------------
18
18
  #
19
19
  [project]
20
- version = "0.0.0.dev12"
20
+ version = "0.0.0.dev14"
21
21
  name = "MDit"
22
22
  requires-python = ">=3.10"
23
23
  dependencies = [
@@ -42,10 +42,10 @@ dependencies = [
42
42
  "pydantic >= 2.9",
43
43
  "referencing >= 0.35.1",
44
44
  "PkgData == 0.0.0.dev4",
45
- "PySerials == 0.0.0.dev15",
45
+ "PySerials == 0.0.0.dev17",
46
46
  "PyBadger == 0.0.0.dev11",
47
47
  "PyColorIT == 0.0.0.dev7",
48
48
  "ProtocolMan == 0.0.0.dev2",
49
49
  "HTMP == 0.0.0.dev5",
50
- "JSONSchemata == 0.0.0.dev11",
50
+ "JSONSchemata == 0.0.0.dev13",
51
51
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MDit
3
- Version: 0.0.0.dev12
3
+ Version: 0.0.0.dev14
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: sphinx<8
6
6
  Requires-Dist: myst-nb<2,>1
@@ -23,9 +23,9 @@ Requires-Dist: rich>=13.8
23
23
  Requires-Dist: pydantic>=2.9
24
24
  Requires-Dist: referencing>=0.35.1
25
25
  Requires-Dist: PkgData==0.0.0.dev4
26
- Requires-Dist: PySerials==0.0.0.dev15
26
+ Requires-Dist: PySerials==0.0.0.dev17
27
27
  Requires-Dist: PyBadger==0.0.0.dev11
28
28
  Requires-Dist: PyColorIT==0.0.0.dev7
29
29
  Requires-Dist: ProtocolMan==0.0.0.dev2
30
30
  Requires-Dist: HTMP==0.0.0.dev5
31
- Requires-Dist: JSONSchemata==0.0.0.dev11
31
+ Requires-Dist: JSONSchemata==0.0.0.dev13
@@ -19,9 +19,9 @@ rich>=13.8
19
19
  pydantic>=2.9
20
20
  referencing>=0.35.1
21
21
  PkgData==0.0.0.dev4
22
- PySerials==0.0.0.dev15
22
+ PySerials==0.0.0.dev17
23
23
  PyBadger==0.0.0.dev11
24
24
  PyColorIT==0.0.0.dev7
25
25
  ProtocolMan==0.0.0.dev2
26
26
  HTMP==0.0.0.dev5
27
- JSONSchemata==0.0.0.dev11
27
+ JSONSchemata==0.0.0.dev13
@@ -29,7 +29,7 @@ class Document(_Renderable):
29
29
  toctree_args: dict[str, str] | None = None,
30
30
  toctree_dirhtml: bool = True,
31
31
  target_configs: TargetConfigs = None,
32
- target_default: TargetConfigs = "sphinx",
32
+ target_default: str = "sphinx",
33
33
  deep_section_generator: Callable[[Document], str] | None = None,
34
34
  ):
35
35
  super().__init__(target_configs=target_configs, target_default=target_default)
@@ -61,6 +61,10 @@ class Document(_Renderable):
61
61
  def current_section_key(self) -> tuple[str | int, ...]:
62
62
  return tuple(self._current_section_key)
63
63
 
64
+ @property
65
+ def current_section_level(self) -> int:
66
+ return len(self._current_section_key) + 1
67
+
64
68
  def open_section(
65
69
  self,
66
70
  heading: Heading | MDContainer | ContainerContentInputType,
@@ -73,13 +77,16 @@ class Document(_Renderable):
73
77
  self._current_section = new_section
74
78
  return
75
79
 
76
- def close_section(self):
77
- if not self._current_section_key:
78
- return
79
- self._current_section_key.pop()
80
- if not self._current_section_key:
81
- self._current_section = self
82
- return
80
+ def close_section(self, target_level: int | None = None):
81
+ curr_level = self.current_section_level
82
+ if not target_level:
83
+ target_level = curr_level - 1
84
+ if not (0 < target_level < curr_level):
85
+ raise ValueError(
86
+ f"Target level must be between 1 and the current section level ({curr_level}), "
87
+ f"but got {target_level}."
88
+ )
89
+ self._current_section_key = self._current_section_key[:target_level - 1]
83
90
  section = self
84
91
  for key in self._current_section_key:
85
92
  section = section.section[key].content
@@ -6,9 +6,10 @@ from typing import TYPE_CHECKING as _TYPE_CHECKING
6
6
  from pathlib import Path as _Path
7
7
  import logging as _logging
8
8
  import io as _io
9
+ import copy as _copy
9
10
  import warnings as _warnings
10
-
11
11
  from functools import partial as _partial
12
+
12
13
  import cmarkgfm as _gfm_pypi
13
14
  from readme_renderer import markdown as _readme_renderer_md, clean as _readme_renderer_clean
14
15
  from sphinx.application import Sphinx as _Sphinx
@@ -28,16 +29,66 @@ from mdit_py_plugins.myst_role import myst_role_plugin as _mdit_plugin_myst_role
28
29
  from mdit_py_plugins.substitution import substitution_plugin as _mdit_plugin_substitution
29
30
  from mdit_py_plugins.tasklists import tasklists_plugin as _mdit_plugin_tasklists
30
31
  from mdit_py_plugins.wordcount import wordcount_plugin as _mdit_plugin_wordcount
32
+ import pyserials as _ps
31
33
 
32
34
  if _TYPE_CHECKING:
33
35
  from typing import IO, Literal, Callable
34
36
 
35
37
 
38
+ def get_sphinx_config(
39
+ config: dict | None = None,
40
+ append_list: bool = True,
41
+ append_dict: bool = True,
42
+ ):
43
+ config_default = {
44
+ "extensions": [
45
+ 'myst_nb',
46
+ 'sphinx_design',
47
+ 'sphinx_togglebutton',
48
+ 'sphinx_copybutton',
49
+ 'sphinxcontrib.mermaid',
50
+ 'sphinx_tippy',
51
+ ],
52
+ "myst_enable_extensions": [
53
+ "amsmath",
54
+ "attrs_inline",
55
+ "colon_fence",
56
+ "deflist",
57
+ "dollarmath",
58
+ "fieldlist",
59
+ "html_admonition",
60
+ "html_image",
61
+ "linkify",
62
+ "replacements",
63
+ "smartquotes",
64
+ "strikethrough",
65
+ "substitution",
66
+ "tasklist",
67
+ ],
68
+ "html_theme": "pydata_sphinx_theme",
69
+ "html_theme_options": {
70
+ "pygments_light_style": "default",
71
+ "pygments_dark_style": "monokai",
72
+ },
73
+ "html_title": "",
74
+ }
75
+ config_final = _copy.deepcopy(config) or {}
76
+ _ps.update.dict_from_addon(
77
+ data=config_final,
78
+ addon=config_default,
79
+ append_list=append_list,
80
+ append_dict=append_dict,
81
+ raise_duplicates=False,
82
+ raise_type_mismatch=False,
83
+ )
84
+ return config_final
85
+
86
+
36
87
  def sphinx(
37
88
  content: str | dict[str, str],
38
89
  config: dict | None = None,
39
- status: IO[str] | None = _sys.stdout,
40
- warning: IO[str] | None = _sys.stderr,
90
+ status: IO[str] | None = None,
91
+ warning: IO[str] | None = None,
41
92
  warnings_are_errors: bool = False,
42
93
  fresh_env: bool = True,
43
94
  tags: list[str] = (),
@@ -48,6 +99,8 @@ def sphinx(
48
99
  ):
49
100
  if isinstance(content, str):
50
101
  content = {"index": content}
102
+ if config is None:
103
+ config = get_sphinx_config()
51
104
  with _tempfile.TemporaryDirectory() as temp_dir:
52
105
  temp_dir = _Path(temp_dir)
53
106
  src_dir = temp_dir / "source"
@@ -67,8 +120,8 @@ def sphinx(
67
120
  doctreedir=temp_dir / "doctrees",
68
121
  buildername="zundler",
69
122
  confoverrides=config,
70
- status=status,
71
- warning=warning,
123
+ status=status or _io.StringIO(),
124
+ warning=warning or _io.StringIO(),
72
125
  freshenv=fresh_env,
73
126
  warningiserror=warnings_are_errors,
74
127
  tags=tags,
@@ -124,41 +124,7 @@ def sphinx(
124
124
  directive_dropdown: bool = True,
125
125
  alerts: bool = False,
126
126
  picture_theme: bool = True,
127
- renderer: Callable[[dict | str], str] = _partial(
128
- _render.sphinx,
129
- config={
130
- "extensions": [
131
- 'myst_nb',
132
- 'sphinx_design',
133
- 'sphinx_togglebutton',
134
- 'sphinx_copybutton',
135
- 'sphinxcontrib.mermaid',
136
- 'sphinx_tippy',
137
- ],
138
- "myst_enable_extensions": [
139
- "amsmath",
140
- "attrs_inline",
141
- "colon_fence",
142
- "deflist",
143
- "dollarmath",
144
- "fieldlist",
145
- "html_admonition",
146
- "html_image",
147
- "linkify",
148
- "replacements",
149
- "smartquotes",
150
- "strikethrough",
151
- "substitution",
152
- "tasklist",
153
- ],
154
- "html_theme": "pydata_sphinx_theme",
155
- "html_theme_options": {
156
- "pygments_light_style": "default",
157
- "pygments_dark_style": "monokai",
158
- },
159
- "html_title": "",
160
- }
161
- ),
127
+ renderer: Callable[[dict | str], str] = _render.sphinx,
162
128
  rich_export: dict
163
129
  | md.RichExportHTMLConfig
164
130
  | md.RichExportSVGConfig
File without changes
File without changes
File without changes
File without changes