markdown-include-variants 0.0.6__tar.gz → 0.0.8__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.8}/.github/workflows/smokeshow.yml +1 -5
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/workflows/test.yml +3 -15
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/PKG-INFO +1 -1
- markdown_include_variants-0.0.8/docs_src/only_py_no_an/tutorial001_py310.py +10 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/pyproject.toml +5 -5
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/release-notes.md +16 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/src/markdown_include_variants/_main.py +23 -5
- markdown_include_variants-0.0.8/src/markdown_include_variants/_version.py +1 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_all_variants.py +225 -0
- markdown_include_variants-0.0.8/tests/test_only_py310_no_an_folder.py +26 -0
- markdown_include_variants-0.0.8/tests/test_simple_title.py +59 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/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.8}/.github/DISCUSSION_TEMPLATE/questions.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/FUNDING.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/ISSUE_TEMPLATE/privileged.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/dependabot.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/labeler.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/workflows/issue-manager.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/workflows/labeler.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/workflows/latest-changes.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.github/workflows/publish.yml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.gitignore +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.pre-commit-config.yaml +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.python-version +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/CITATION.cff +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/LICENSE +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/README.md +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001_an_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001_an_py311.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001_an_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001_py311.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants/tutorial001_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app_an/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app_an_py310/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app_an_py311/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app_an_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app_py310/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app_py311/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/all_variants_folder/app_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/no_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/no_py39/tutorial001_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/no_py39/tutorial001_an_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/no_py39/tutorial001_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/only_py310/tutorial001_an_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/only_py310/tutorial001_py310.py +0 -0
- /markdown_include_variants-0.0.6/docs_src/only_py_no_an/tutorial001_py310.py → /markdown_include_variants-0.0.8/docs_src/only_py310_no_an_folder/app_py310/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/only_py_no_an/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/only_py_no_an/tutorial001_py311.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/only_py_no_an/tutorial001_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/simple/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/up_to_py39/tutorial001.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/up_to_py39/tutorial001_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/up_to_py39/tutorial001_an_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/docs_src/up_to_py39/tutorial001_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/scripts/format.sh +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/scripts/lint.sh +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/scripts/test.sh +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/src/markdown_include_variants/__init__.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/src/markdown_include_variants/py.typed +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_all_variants_folder.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_another_preferred_variant.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_no_py39.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_only_preview.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_only_py310.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_only_py_no_an.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_simple_hl.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_simple_ln.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_simple_ln_hl.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_simple_no_configs.py +0 -0
- {markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/tests/test_up_to_py39.py +0 -0
{markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/.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.8}/.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.8
|
|
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,22 @@
|
|
|
2
2
|
|
|
3
3
|
## Latest Changes
|
|
4
4
|
|
|
5
|
+
## 0.0.8
|
|
6
|
+
|
|
7
|
+
### Fixes
|
|
8
|
+
|
|
9
|
+
* 🐛 Fix case with single folder with non-default version. PR [#41](https://github.com/tiangolo/markdown-include-variants/pull/41) by [@YuriiMotov](https://github.com/YuriiMotov).
|
|
10
|
+
|
|
11
|
+
## 0.0.7
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* ✨ Support `title` option. PR [#39](https://github.com/tiangolo/markdown-include-variants/pull/39) by [@YuriiMotov](https://github.com/YuriiMotov).
|
|
16
|
+
|
|
17
|
+
### Upgrades
|
|
18
|
+
|
|
19
|
+
* ⬆️ Upgrade uv config in pyproject.toml. PR [#40](https://github.com/tiangolo/markdown-include-variants/pull/40) by [@tiangolo](https://github.com/tiangolo).
|
|
20
|
+
|
|
5
21
|
## 0.0.6
|
|
6
22
|
|
|
7
23
|
### 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:
|
|
@@ -305,6 +308,14 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
305
308
|
folder_variants = calculate_variants_folder(base_path)
|
|
306
309
|
if len(folder_variants) > 1:
|
|
307
310
|
variants = folder_variants
|
|
311
|
+
elif len(folder_variants) == 1:
|
|
312
|
+
file_variant_is_default = variants.get(("py38", None)) is not None
|
|
313
|
+
folder_variant_is_default = (
|
|
314
|
+
folder_variants.get(("py38", None)) is not None
|
|
315
|
+
)
|
|
316
|
+
# File name doesn't contain any suffixes, but folder does - use variants from folder
|
|
317
|
+
if file_variant_is_default and not folder_variant_is_default:
|
|
318
|
+
variants = folder_variants
|
|
308
319
|
sorted_variants: list[Variant] = []
|
|
309
320
|
preferred_variant = None
|
|
310
321
|
for an in [True, False, None]:
|
|
@@ -356,6 +367,8 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
356
367
|
first_line = "```python"
|
|
357
368
|
if use_hl_lines:
|
|
358
369
|
first_line += f' hl_lines="{use_hl_lines_str}"'
|
|
370
|
+
if title:
|
|
371
|
+
first_line += f' title="{title}"'
|
|
359
372
|
|
|
360
373
|
block_lines.extend(
|
|
361
374
|
[
|
|
@@ -373,6 +386,8 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
373
386
|
if highlight_lines:
|
|
374
387
|
hl_lines_full_str = generate_hl_string(highlight_lines)
|
|
375
388
|
first_line_full += f' hl_lines="{hl_lines_full_str}"'
|
|
389
|
+
if title:
|
|
390
|
+
first_line_full += f' title="{title}"'
|
|
376
391
|
block_lines.extend(
|
|
377
392
|
[
|
|
378
393
|
"///// details | 👀 Full file preview",
|
|
@@ -390,6 +405,9 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
390
405
|
]
|
|
391
406
|
)
|
|
392
407
|
if len(sorted_variants):
|
|
408
|
+
first_line_variant = "```python"
|
|
409
|
+
if title:
|
|
410
|
+
first_line_variant += f' title="{title}"'
|
|
393
411
|
block_lines.extend(
|
|
394
412
|
[
|
|
395
413
|
"///// details | 🤓 Other versions and variants",
|
|
@@ -413,7 +431,7 @@ class IncludeVariantsPreprocessor(Preprocessor):
|
|
|
413
431
|
|
|
414
432
|
block_lines.extend(
|
|
415
433
|
[
|
|
416
|
-
|
|
434
|
+
first_line_variant,
|
|
417
435
|
f"{{!{variant.path}!}}",
|
|
418
436
|
"```",
|
|
419
437
|
"////",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.0.8"
|
{markdown_include_variants-0.0.6 → markdown_include_variants-0.0.8}/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,26 @@
|
|
|
1
|
+
import inspect
|
|
2
|
+
|
|
3
|
+
import markdown
|
|
4
|
+
from inline_snapshot import snapshot
|
|
5
|
+
|
|
6
|
+
from markdown_include_variants import IncludeVariantsExtension
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_all_variants_plain():
|
|
10
|
+
input_md = inspect.cleandoc(
|
|
11
|
+
"""
|
|
12
|
+
{* docs_src/only_py310_no_an_folder/app_py310/tutorial001.py *}
|
|
13
|
+
"""
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
result = markdown.markdown(input_md, extensions=[IncludeVariantsExtension()])
|
|
17
|
+
assert result == snapshot(
|
|
18
|
+
inspect.cleandoc(
|
|
19
|
+
"""
|
|
20
|
+
<p>//// tab | Python 3.10+
|
|
21
|
+
<code>python
|
|
22
|
+
{!docs_src/only_py310_no_an_folder/app_py310/tutorial001.py!}</code></p>
|
|
23
|
+
<p>////</p>
|
|
24
|
+
"""
|
|
25
|
+
)
|
|
26
|
+
)
|
|
@@ -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
|
+
)
|