markdown-include-variants 0.0.6__tar.gz → 0.0.7__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.
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/smokeshow.yml +1 -5
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/test.yml +3 -15
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/PKG-INFO +1 -1
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/pyproject.toml +5 -5
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/release-notes.md +10 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/src/markdown_include_variants/_main.py +15 -5
- markdown_include_variants-0.0.7/src/markdown_include_variants/_version.py +1 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_all_variants.py +225 -0
- markdown_include_variants-0.0.7/tests/test_simple_title.py +59 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/uv.lock +251 -251
- markdown_include_variants-0.0.6/src/markdown_include_variants/_version.py +0 -1
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/DISCUSSION_TEMPLATE/questions.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/FUNDING.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/ISSUE_TEMPLATE/privileged.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/dependabot.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/labeler.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/issue-manager.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/labeler.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/latest-changes.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/publish.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.gitignore +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.pre-commit-config.yaml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.python-version +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/CITATION.cff +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/LICENSE +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/README.md +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001_an_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001_an_py311.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001_an_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001_py311.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants/tutorial001_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app_an/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app_an_py310/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app_an_py311/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app_an_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app_py310/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app_py311/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/all_variants_folder/app_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/no_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/no_py39/tutorial001_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/no_py39/tutorial001_an_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/no_py39/tutorial001_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/only_py310/tutorial001_an_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/only_py310/tutorial001_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/only_py_no_an/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/only_py_no_an/tutorial001_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/only_py_no_an/tutorial001_py311.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/only_py_no_an/tutorial001_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/simple/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/up_to_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/up_to_py39/tutorial001_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/up_to_py39/tutorial001_an_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/docs_src/up_to_py39/tutorial001_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/scripts/format.sh +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/scripts/lint.sh +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/scripts/test.sh +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/src/markdown_include_variants/__init__.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/src/markdown_include_variants/py.typed +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_all_variants_folder.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_another_preferred_variant.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_no_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_only_preview.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_only_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_only_py_no_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_simple_hl.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_simple_ln.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_simple_ln_hl.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_simple_no_configs.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_up_to_py39.py +0 -0
{markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/smokeshow.yml
RENAMED
|
@@ -27,11 +27,7 @@ jobs:
|
|
|
27
27
|
- uses: actions/setup-python@v6
|
|
28
28
|
with:
|
|
29
29
|
python-version: '3.9'
|
|
30
|
-
-
|
|
31
|
-
uses: astral-sh/setup-uv@v7
|
|
32
|
-
with:
|
|
33
|
-
version: "0.4.15"
|
|
34
|
-
enable-cache: true
|
|
30
|
+
- uses: astral-sh/setup-uv@v7
|
|
35
31
|
- name: Install Dependencies
|
|
36
32
|
run: uv sync
|
|
37
33
|
- uses: actions/download-artifact@v6
|
{markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/.github/workflows/test.yml
RENAMED
|
@@ -25,11 +25,7 @@ jobs:
|
|
|
25
25
|
uses: actions/setup-python@v6
|
|
26
26
|
with:
|
|
27
27
|
python-version: "3.11"
|
|
28
|
-
-
|
|
29
|
-
uses: astral-sh/setup-uv@v7
|
|
30
|
-
with:
|
|
31
|
-
version: "0.4.15"
|
|
32
|
-
enable-cache: true
|
|
28
|
+
- uses: astral-sh/setup-uv@v7
|
|
33
29
|
- name: Install Dependencies
|
|
34
30
|
run: uv sync
|
|
35
31
|
- name: Lint
|
|
@@ -52,11 +48,7 @@ jobs:
|
|
|
52
48
|
uses: actions/setup-python@v6
|
|
53
49
|
with:
|
|
54
50
|
python-version: ${{ matrix.python-version }}
|
|
55
|
-
-
|
|
56
|
-
uses: astral-sh/setup-uv@v7
|
|
57
|
-
with:
|
|
58
|
-
version: "0.4.15"
|
|
59
|
-
enable-cache: true
|
|
51
|
+
- uses: astral-sh/setup-uv@v7
|
|
60
52
|
- name: Install Dependencies
|
|
61
53
|
run: uv sync
|
|
62
54
|
- run: mkdir coverage
|
|
@@ -85,11 +77,7 @@ jobs:
|
|
|
85
77
|
- uses: actions/setup-python@v6
|
|
86
78
|
with:
|
|
87
79
|
python-version: '3.11'
|
|
88
|
-
-
|
|
89
|
-
uses: astral-sh/setup-uv@v7
|
|
90
|
-
with:
|
|
91
|
-
version: "0.4.15"
|
|
92
|
-
enable-cache: true
|
|
80
|
+
- uses: astral-sh/setup-uv@v7
|
|
93
81
|
- name: Get coverage files
|
|
94
82
|
uses: actions/download-artifact@v6
|
|
95
83
|
with:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: markdown-include-variants
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.7
|
|
4
4
|
Summary: Markdown extension to expand directives to include source example files to also include their variants. Only useful to tiangolo's projets. Don't use it. 😅
|
|
5
5
|
Project-URL: Homepage, https://github.com/tiangolo/markdown-include-variants
|
|
6
6
|
Project-URL: Repository, https://github.com/tiangolo/markdown-include-variants
|
|
@@ -25,11 +25,8 @@ Repository = "https://github.com/tiangolo/markdown-include-variants"
|
|
|
25
25
|
Issues = "https://github.com/tiangolo/markdown-include-variants/issues"
|
|
26
26
|
Changelog = "https://github.com/tiangolo/markdown-include-variants/release-notes.md"
|
|
27
27
|
|
|
28
|
-
[
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
[tool.uv]
|
|
32
|
-
dev-dependencies = [
|
|
28
|
+
[dependency-groups]
|
|
29
|
+
dev = [
|
|
33
30
|
"coverage[toml]>=7.6.1",
|
|
34
31
|
"inline-snapshot>=0.13.3",
|
|
35
32
|
"mdx-include>=1.4.2",
|
|
@@ -41,6 +38,9 @@ dev-dependencies = [
|
|
|
41
38
|
"types-markdown>=3.7.0.20240822",
|
|
42
39
|
]
|
|
43
40
|
|
|
41
|
+
[tool.hatch.version]
|
|
42
|
+
path = "src/markdown_include_variants/_version.py"
|
|
43
|
+
|
|
44
44
|
[tool.coverage.run]
|
|
45
45
|
parallel = true
|
|
46
46
|
data_file = "coverage/.coverage"
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## Latest Changes
|
|
4
4
|
|
|
5
|
+
## 0.0.7
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* ✨ Support `title` option. PR [#39](https://github.com/tiangolo/markdown-include-variants/pull/39) by [@YuriiMotov](https://github.com/YuriiMotov).
|
|
10
|
+
|
|
11
|
+
### Upgrades
|
|
12
|
+
|
|
13
|
+
* ⬆️ Upgrade uv config in pyproject.toml. PR [#40](https://github.com/tiangolo/markdown-include-variants/pull/40) by [@tiangolo](https://github.com/tiangolo).
|
|
14
|
+
|
|
5
15
|
## 0.0.6
|
|
6
16
|
|
|
7
17
|
### Features
|
|
@@ -279,15 +279,18 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
279
279
|
configs_str = line_match.group(2).strip()
|
|
280
280
|
include_lines: list[tuple[int, int]] = []
|
|
281
281
|
highlight_lines: list[tuple[int, int]] = []
|
|
282
|
+
title: Union[str, None] = None
|
|
282
283
|
for config_match in re.finditer(re_config, configs_str):
|
|
283
284
|
if config_match:
|
|
284
285
|
name = config_match.group(1)
|
|
285
|
-
|
|
286
|
-
ranges = parse_lines_index(ranges_str)
|
|
286
|
+
value_str = config_match.group(2)
|
|
287
287
|
if name == "ln":
|
|
288
|
-
include_lines.extend(
|
|
288
|
+
include_lines.extend(parse_lines_index(value_str))
|
|
289
289
|
elif name == "hl":
|
|
290
|
-
highlight_lines.extend(
|
|
290
|
+
highlight_lines.extend(parse_lines_index(value_str))
|
|
291
|
+
elif name == "title":
|
|
292
|
+
assert value_str.startswith('"') and value_str.endswith('"')
|
|
293
|
+
title = value_str[1:-1]
|
|
291
294
|
use_hl_lines: list[tuple[int, int]] = []
|
|
292
295
|
if highlight_lines:
|
|
293
296
|
if include_lines:
|
|
@@ -356,6 +359,8 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
356
359
|
first_line = "```python"
|
|
357
360
|
if use_hl_lines:
|
|
358
361
|
first_line += f' hl_lines="{use_hl_lines_str}"'
|
|
362
|
+
if title:
|
|
363
|
+
first_line += f' title="{title}"'
|
|
359
364
|
|
|
360
365
|
block_lines.extend(
|
|
361
366
|
[
|
|
@@ -373,6 +378,8 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
373
378
|
if highlight_lines:
|
|
374
379
|
hl_lines_full_str = generate_hl_string(highlight_lines)
|
|
375
380
|
first_line_full += f' hl_lines="{hl_lines_full_str}"'
|
|
381
|
+
if title:
|
|
382
|
+
first_line_full += f' title="{title}"'
|
|
376
383
|
block_lines.extend(
|
|
377
384
|
[
|
|
378
385
|
"///// details | 👀 Full file preview",
|
|
@@ -390,6 +397,9 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
390
397
|
]
|
|
391
398
|
)
|
|
392
399
|
if len(sorted_variants):
|
|
400
|
+
first_line_variant = "```python"
|
|
401
|
+
if title:
|
|
402
|
+
first_line_variant += f' title="{title}"'
|
|
393
403
|
block_lines.extend(
|
|
394
404
|
[
|
|
395
405
|
"///// details | 🤓 Other versions and variants",
|
|
@@ -413,7 +423,7 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
413
423
|
|
|
414
424
|
block_lines.extend(
|
|
415
425
|
[
|
|
416
|
-
|
|
426
|
+
first_line_variant,
|
|
417
427
|
f"{{!{variant.path}!}}",
|
|
418
428
|
"```",
|
|
419
429
|
"////",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.0.7"
|
{markdown_include_variants-0.0.6 → markdown_include_variants-0.0.7}/tests/test_all_variants.py
RENAMED
|
@@ -142,6 +142,77 @@ def test_all_variants_ln_hl():
|
|
|
142
142
|
)
|
|
143
143
|
|
|
144
144
|
|
|
145
|
+
def test_all_variants_ln_hl_title():
|
|
146
|
+
input_md = inspect.cleandoc(
|
|
147
|
+
"""
|
|
148
|
+
{* docs_src/all_variants/tutorial001_an_py311.py ln[3:5] hl[4:5] title["main.py"] *}
|
|
149
|
+
"""
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
result = markdown.markdown(input_md, extensions=[IncludeVariantsExtension()])
|
|
153
|
+
assert result == snapshot(
|
|
154
|
+
inspect.cleandoc(
|
|
155
|
+
"""
|
|
156
|
+
<p>//// tab | Python 3.11+
|
|
157
|
+
```python hl_lines="4-5" title="main.py"</p>
|
|
158
|
+
<h1>Code above omitted 👆</h1>
|
|
159
|
+
<p>{!docs_src/all_variants/tutorial001_an_py311.py[ln:3-5]!}</p>
|
|
160
|
+
<h1>Code below omitted 👇</h1>
|
|
161
|
+
<p>```</p>
|
|
162
|
+
<p>////</p>
|
|
163
|
+
<p>///// details | 👀 Full file preview</p>
|
|
164
|
+
<p>//// tab | Python 3.11+</p>
|
|
165
|
+
<p><code>python hl_lines="4-5" title="main.py"
|
|
166
|
+
{!docs_src/all_variants/tutorial001_an_py311.py!}</code></p>
|
|
167
|
+
<p>////</p>
|
|
168
|
+
<p>/////</p>
|
|
169
|
+
<p>///// details | 🤓 Other versions and variants</p>
|
|
170
|
+
<p>//// tab | Python 3.10+</p>
|
|
171
|
+
<p><code>python title="main.py"
|
|
172
|
+
{!docs_src/all_variants/tutorial001_an_py310.py!}</code>
|
|
173
|
+
////
|
|
174
|
+
//// tab | Python 3.9+</p>
|
|
175
|
+
<p><code>python title="main.py"
|
|
176
|
+
{!docs_src/all_variants/tutorial001_an_py39.py!}</code>
|
|
177
|
+
////
|
|
178
|
+
//// tab | Python 3.8+</p>
|
|
179
|
+
<p><code>python title="main.py"
|
|
180
|
+
{!docs_src/all_variants/tutorial001_an.py!}</code>
|
|
181
|
+
////
|
|
182
|
+
//// tab | Python 3.11+ - non-Annotated</p>
|
|
183
|
+
<p>/// tip</p>
|
|
184
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
185
|
+
<p>///</p>
|
|
186
|
+
<p><code>python title="main.py"
|
|
187
|
+
{!docs_src/all_variants/tutorial001_py311.py!}</code>
|
|
188
|
+
////
|
|
189
|
+
//// tab | Python 3.10+ - non-Annotated</p>
|
|
190
|
+
<p>/// tip</p>
|
|
191
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
192
|
+
<p>///</p>
|
|
193
|
+
<p><code>python title="main.py"
|
|
194
|
+
{!docs_src/all_variants/tutorial001_py310.py!}</code>
|
|
195
|
+
////
|
|
196
|
+
//// tab | Python 3.9+ - non-Annotated</p>
|
|
197
|
+
<p>/// tip</p>
|
|
198
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
199
|
+
<p>///</p>
|
|
200
|
+
<p><code>python title="main.py"
|
|
201
|
+
{!docs_src/all_variants/tutorial001_py39.py!}</code>
|
|
202
|
+
////
|
|
203
|
+
//// tab | Python 3.8+ - non-Annotated</p>
|
|
204
|
+
<p>/// tip</p>
|
|
205
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
206
|
+
<p>///</p>
|
|
207
|
+
<p><code>python title="main.py"
|
|
208
|
+
{!docs_src/all_variants/tutorial001.py!}</code>
|
|
209
|
+
////</p>
|
|
210
|
+
<p>/////</p>
|
|
211
|
+
"""
|
|
212
|
+
)
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
|
|
145
216
|
def test_all_variants_ln_hl_include():
|
|
146
217
|
input_md = inspect.cleandoc(
|
|
147
218
|
"""
|
|
@@ -294,3 +365,157 @@ def test_all_variants_ln_hl_include():
|
|
|
294
365
|
"""
|
|
295
366
|
)
|
|
296
367
|
)
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
def test_all_variants_ln_hl_title_include():
|
|
371
|
+
input_md = inspect.cleandoc(
|
|
372
|
+
"""
|
|
373
|
+
{* docs_src/all_variants/tutorial001_an_py311.py ln[3:5] hl[4:5] title["main.py"] *}
|
|
374
|
+
"""
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
result = markdown.markdown(
|
|
378
|
+
input_md,
|
|
379
|
+
extensions=[
|
|
380
|
+
IncludeVariantsExtension(),
|
|
381
|
+
IncludeExtension(),
|
|
382
|
+
SuperFencesCodeExtension(),
|
|
383
|
+
HighlightExtension(),
|
|
384
|
+
],
|
|
385
|
+
)
|
|
386
|
+
assert result == snapshot(
|
|
387
|
+
inspect.cleandoc(
|
|
388
|
+
"""
|
|
389
|
+
<p>//// tab | Python 3.11+
|
|
390
|
+
<div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="c1"># Code above omitted 👆</span>
|
|
391
|
+
|
|
392
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 3"</span><span class="p">)</span>
|
|
393
|
+
<span class="hll"><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 4"</span><span class="p">)</span>
|
|
394
|
+
</span><span class="hll"><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 5"</span><span class="p">)</span>
|
|
395
|
+
</span>
|
|
396
|
+
<span class="c1"># Code below omitted 👇</span>
|
|
397
|
+
</code></pre></div></p>
|
|
398
|
+
<p>////</p>
|
|
399
|
+
<p>///// details | 👀 Full file preview</p>
|
|
400
|
+
<p>//// tab | Python 3.11+</p>
|
|
401
|
+
<div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 1"</span><span class="p">)</span>
|
|
402
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 2"</span><span class="p">)</span>
|
|
403
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 3"</span><span class="p">)</span>
|
|
404
|
+
<span class="hll"><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 4"</span><span class="p">)</span>
|
|
405
|
+
</span><span class="hll"><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 5"</span><span class="p">)</span>
|
|
406
|
+
</span><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 6"</span><span class="p">)</span>
|
|
407
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 7"</span><span class="p">)</span>
|
|
408
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 8"</span><span class="p">)</span>
|
|
409
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 9"</span><span class="p">)</span>
|
|
410
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 10"</span><span class="p">)</span>
|
|
411
|
+
</code></pre></div>
|
|
412
|
+
<p>////</p>
|
|
413
|
+
<p>/////</p>
|
|
414
|
+
<p>///// details | 🤓 Other versions and variants</p>
|
|
415
|
+
<p>//// tab | Python 3.10+</p>
|
|
416
|
+
<p><div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 1"</span><span class="p">)</span>
|
|
417
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 2"</span><span class="p">)</span>
|
|
418
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 3"</span><span class="p">)</span>
|
|
419
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 4"</span><span class="p">)</span>
|
|
420
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 5"</span><span class="p">)</span>
|
|
421
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 6"</span><span class="p">)</span>
|
|
422
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 7"</span><span class="p">)</span>
|
|
423
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 8"</span><span class="p">)</span>
|
|
424
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 9"</span><span class="p">)</span>
|
|
425
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 10"</span><span class="p">)</span>
|
|
426
|
+
</code></pre></div>
|
|
427
|
+
////
|
|
428
|
+
//// tab | Python 3.9+</p>
|
|
429
|
+
<p><div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 1"</span><span class="p">)</span>
|
|
430
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 2"</span><span class="p">)</span>
|
|
431
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 3"</span><span class="p">)</span>
|
|
432
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 4"</span><span class="p">)</span>
|
|
433
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 5"</span><span class="p">)</span>
|
|
434
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 6"</span><span class="p">)</span>
|
|
435
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 7"</span><span class="p">)</span>
|
|
436
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 8"</span><span class="p">)</span>
|
|
437
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 9"</span><span class="p">)</span>
|
|
438
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 10"</span><span class="p">)</span>
|
|
439
|
+
</code></pre></div>
|
|
440
|
+
////
|
|
441
|
+
//// tab | Python 3.8+</p>
|
|
442
|
+
<p><div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"an line 1"</span><span class="p">)</span>
|
|
443
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 2"</span><span class="p">)</span>
|
|
444
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 3"</span><span class="p">)</span>
|
|
445
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 4"</span><span class="p">)</span>
|
|
446
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 5"</span><span class="p">)</span>
|
|
447
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 6"</span><span class="p">)</span>
|
|
448
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 7"</span><span class="p">)</span>
|
|
449
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 8"</span><span class="p">)</span>
|
|
450
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 9"</span><span class="p">)</span>
|
|
451
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"an line 10"</span><span class="p">)</span>
|
|
452
|
+
</code></pre></div>
|
|
453
|
+
////
|
|
454
|
+
//// tab | Python 3.11+ - non-Annotated</p>
|
|
455
|
+
<p>/// tip</p>
|
|
456
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
457
|
+
<p>///</p>
|
|
458
|
+
<p><div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 1"</span><span class="p">)</span>
|
|
459
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 2"</span><span class="p">)</span>
|
|
460
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 3"</span><span class="p">)</span>
|
|
461
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 4"</span><span class="p">)</span>
|
|
462
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 5"</span><span class="p">)</span>
|
|
463
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 6"</span><span class="p">)</span>
|
|
464
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 7"</span><span class="p">)</span>
|
|
465
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 8"</span><span class="p">)</span>
|
|
466
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 9"</span><span class="p">)</span>
|
|
467
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 10"</span><span class="p">)</span>
|
|
468
|
+
</code></pre></div>
|
|
469
|
+
////
|
|
470
|
+
//// tab | Python 3.10+ - non-Annotated</p>
|
|
471
|
+
<p>/// tip</p>
|
|
472
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
473
|
+
<p>///</p>
|
|
474
|
+
<p><div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 1"</span><span class="p">)</span>
|
|
475
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 2"</span><span class="p">)</span>
|
|
476
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 3"</span><span class="p">)</span>
|
|
477
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 4"</span><span class="p">)</span>
|
|
478
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 5"</span><span class="p">)</span>
|
|
479
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 6"</span><span class="p">)</span>
|
|
480
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 7"</span><span class="p">)</span>
|
|
481
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 8"</span><span class="p">)</span>
|
|
482
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 9"</span><span class="p">)</span>
|
|
483
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 10"</span><span class="p">)</span>
|
|
484
|
+
</code></pre></div>
|
|
485
|
+
////
|
|
486
|
+
//// tab | Python 3.9+ - non-Annotated</p>
|
|
487
|
+
<p>/// tip</p>
|
|
488
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
489
|
+
<p>///</p>
|
|
490
|
+
<p><div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 1"</span><span class="p">)</span>
|
|
491
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 2"</span><span class="p">)</span>
|
|
492
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 3"</span><span class="p">)</span>
|
|
493
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 4"</span><span class="p">)</span>
|
|
494
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 5"</span><span class="p">)</span>
|
|
495
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 6"</span><span class="p">)</span>
|
|
496
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 7"</span><span class="p">)</span>
|
|
497
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 8"</span><span class="p">)</span>
|
|
498
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 9"</span><span class="p">)</span>
|
|
499
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 10"</span><span class="p">)</span>
|
|
500
|
+
</code></pre></div>
|
|
501
|
+
////
|
|
502
|
+
//// tab | Python 3.8+ - non-Annotated</p>
|
|
503
|
+
<p>/// tip</p>
|
|
504
|
+
<p>Prefer to use the <code>Annotated</code> version if possible.</p>
|
|
505
|
+
<p>///</p>
|
|
506
|
+
<p><div class="highlight"><span class="filename">main.py</span><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 1"</span><span class="p">)</span>
|
|
507
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 2"</span><span class="p">)</span>
|
|
508
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 3"</span><span class="p">)</span>
|
|
509
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 4"</span><span class="p">)</span>
|
|
510
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 5"</span><span class="p">)</span>
|
|
511
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 6"</span><span class="p">)</span>
|
|
512
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 7"</span><span class="p">)</span>
|
|
513
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 8"</span><span class="p">)</span>
|
|
514
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 9"</span><span class="p">)</span>
|
|
515
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 10"</span><span class="p">)</span>
|
|
516
|
+
</code></pre></div>
|
|
517
|
+
////</p>
|
|
518
|
+
<p>/////</p>
|
|
519
|
+
"""
|
|
520
|
+
)
|
|
521
|
+
)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import inspect
|
|
2
|
+
|
|
3
|
+
import markdown
|
|
4
|
+
from inline_snapshot import snapshot
|
|
5
|
+
from mdx_include.mdx_include import IncludeExtension
|
|
6
|
+
|
|
7
|
+
from markdown_include_variants import IncludeVariantsExtension
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def test_simple_title():
|
|
11
|
+
input_md = inspect.cleandoc(
|
|
12
|
+
"""
|
|
13
|
+
{*docs_src/simple/tutorial001.py title["Example 1"] *}
|
|
14
|
+
"""
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
result = markdown.markdown(input_md, extensions=[IncludeVariantsExtension()])
|
|
18
|
+
assert result == snapshot(
|
|
19
|
+
inspect.cleandoc(
|
|
20
|
+
"""
|
|
21
|
+
<p>//// tab | Python 3.8+
|
|
22
|
+
<code>python title="Example 1"
|
|
23
|
+
{!docs_src/simple/tutorial001.py!}</code></p>
|
|
24
|
+
<p>////</p>
|
|
25
|
+
"""
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_simple_include():
|
|
31
|
+
input_md = inspect.cleandoc(
|
|
32
|
+
"""
|
|
33
|
+
{* docs_src/simple/tutorial001.py title["Example 1"] *}
|
|
34
|
+
"""
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
result = markdown.markdown(
|
|
38
|
+
input_md, extensions=[IncludeVariantsExtension(), IncludeExtension()]
|
|
39
|
+
)
|
|
40
|
+
assert result == snapshot(
|
|
41
|
+
inspect.cleandoc(
|
|
42
|
+
"""
|
|
43
|
+
<p>//// tab | Python 3.8+
|
|
44
|
+
```python title="Example 1"
|
|
45
|
+
print("simple line 1")
|
|
46
|
+
print("simple line 2")
|
|
47
|
+
print("simple line 3")
|
|
48
|
+
print("simple line 4")
|
|
49
|
+
print("simple line 5")
|
|
50
|
+
print("simple line 6")
|
|
51
|
+
print("simple line 7")
|
|
52
|
+
print("simple line 8")
|
|
53
|
+
print("simple line 9")
|
|
54
|
+
print("simple line 10")</p>
|
|
55
|
+
<p>```</p>
|
|
56
|
+
<p>////</p>
|
|
57
|
+
"""
|
|
58
|
+
)
|
|
59
|
+
)
|