markdown-include-variants 0.0.3__tar.gz → 0.0.4__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 (61) hide show
  1. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/workflows/latest-changes.yml +1 -1
  2. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/workflows/publish.yml +1 -1
  3. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/workflows/smokeshow.yml +1 -1
  4. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/workflows/test.yml +3 -3
  5. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/PKG-INFO +12 -2
  6. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/README.md +10 -0
  7. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/release-notes.md +14 -0
  8. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/src/markdown_include_variants/_main.py +47 -40
  9. markdown_include_variants-0.0.4/src/markdown_include_variants/_version.py +1 -0
  10. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_all_variants.py +6 -2
  11. markdown_include_variants-0.0.4/tests/test_only_preview.py +33 -0
  12. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_simple_ln.py +45 -15
  13. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_simple_ln_hl.py +27 -9
  14. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_up_to_py39.py +3 -1
  15. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/uv.lock +1 -1
  16. markdown_include_variants-0.0.3/src/markdown_include_variants/_version.py +0 -1
  17. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/DISCUSSION_TEMPLATE/questions.yml +0 -0
  18. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/FUNDING.yml +0 -0
  19. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  20. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/ISSUE_TEMPLATE/privileged.yml +0 -0
  21. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/dependabot.yml +0 -0
  22. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/labeler.yml +0 -0
  23. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/workflows/issue-manager.yml +0 -0
  24. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.github/workflows/labeler.yml +0 -0
  25. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.gitignore +0 -0
  26. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.pre-commit-config.yaml +0 -0
  27. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/.python-version +0 -0
  28. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/CITATION.cff +0 -0
  29. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/LICENSE +0 -0
  30. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/all_variants/tutorial001.py +0 -0
  31. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/all_variants/tutorial001_an.py +0 -0
  32. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/all_variants/tutorial001_an_py310.py +0 -0
  33. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/all_variants/tutorial001_an_py39.py +0 -0
  34. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/all_variants/tutorial001_py310.py +0 -0
  35. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/all_variants/tutorial001_py39.py +0 -0
  36. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/no_py39/tutorial001.py +0 -0
  37. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/no_py39/tutorial001_an.py +0 -0
  38. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/no_py39/tutorial001_an_py310.py +0 -0
  39. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/no_py39/tutorial001_py310.py +0 -0
  40. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/only_py310/tutorial001_an_py310.py +0 -0
  41. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/only_py310/tutorial001_py310.py +0 -0
  42. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/only_py_no_an/tutorial001.py +0 -0
  43. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/only_py_no_an/tutorial001_py310.py +0 -0
  44. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/only_py_no_an/tutorial001_py39.py +0 -0
  45. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/simple/tutorial001.py +0 -0
  46. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/up_to_py39/tutorial001.py +0 -0
  47. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/up_to_py39/tutorial001_an.py +0 -0
  48. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/up_to_py39/tutorial001_an_py39.py +0 -0
  49. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/docs_src/up_to_py39/tutorial001_py39.py +0 -0
  50. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/pyproject.toml +0 -0
  51. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/scripts/format.sh +0 -0
  52. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/scripts/lint.sh +0 -0
  53. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/scripts/test.sh +0 -0
  54. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/src/markdown_include_variants/__init__.py +0 -0
  55. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/src/markdown_include_variants/py.typed +0 -0
  56. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_another_preferred_variant.py +0 -0
  57. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_no_py39.py +0 -0
  58. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_only_py310.py +0 -0
  59. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_only_py_no_an.py +0 -0
  60. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_simple_hl.py +0 -0
  61. {markdown_include_variants-0.0.3 → markdown_include_variants-0.0.4}/tests/test_simple_no_configs.py +0 -0
@@ -30,7 +30,7 @@ jobs:
30
30
  if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true' }}
31
31
  with:
32
32
  limit-access-to-actor: true
33
- - uses: tiangolo/latest-changes@0.3.1
33
+ - uses: tiangolo/latest-changes@0.3.2
34
34
  with:
35
35
  token: ${{ secrets.GITHUB_TOKEN }}
36
36
  latest_changes_file: release-notes.md
@@ -27,4 +27,4 @@ jobs:
27
27
  - name: Build distribution
28
28
  run: python -m build
29
29
  - name: Publish
30
- uses: pypa/gh-action-pypi-publish@v1.10.3
30
+ uses: pypa/gh-action-pypi-publish@v1.12.3
@@ -28,7 +28,7 @@ jobs:
28
28
  with:
29
29
  python-version: '3.9'
30
30
  - name: Setup uv
31
- uses: astral-sh/setup-uv@v3
31
+ uses: astral-sh/setup-uv@v5
32
32
  with:
33
33
  version: "0.4.15"
34
34
  enable-cache: true
@@ -26,7 +26,7 @@ jobs:
26
26
  with:
27
27
  python-version: "3.11"
28
28
  - name: Setup uv
29
- uses: astral-sh/setup-uv@v3
29
+ uses: astral-sh/setup-uv@v5
30
30
  with:
31
31
  version: "0.4.15"
32
32
  enable-cache: true
@@ -53,7 +53,7 @@ jobs:
53
53
  with:
54
54
  python-version: ${{ matrix.python-version }}
55
55
  - name: Setup uv
56
- uses: astral-sh/setup-uv@v3
56
+ uses: astral-sh/setup-uv@v5
57
57
  with:
58
58
  version: "0.4.15"
59
59
  enable-cache: true
@@ -86,7 +86,7 @@ jobs:
86
86
  with:
87
87
  python-version: '3.11'
88
88
  - name: Setup uv
89
- uses: astral-sh/setup-uv@v3
89
+ uses: astral-sh/setup-uv@v5
90
90
  with:
91
91
  version: "0.4.15"
92
92
  enable-cache: true
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: markdown-include-variants
3
- Version: 0.0.3
3
+ Version: 0.0.4
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
@@ -169,6 +169,16 @@ print("line 7")
169
169
 
170
170
  Notice that the comment above adds 2 extra lines, and only the desired lines are included, the result is that the actual highlighted line is the rendered line 4, but the source line 6, it's all calculated automatically. 🤓
171
171
 
172
+ ### Include Only File Preview
173
+
174
+ If you only want to generate the "File Preview" collapsed details section, without actually including a tab of source files, you can use `ln[0]`:
175
+
176
+ ```markdown
177
+ {* ./docs_src/first_steps/tutorial001_an_py310.py ln[0] *}
178
+ ```
179
+
180
+ This is useful for example at the beginning of a new page, in a recap of the last used file in the previous page.
181
+
172
182
  ## License
173
183
 
174
184
  This project is licensed under the terms of the [MIT license](https://github.com/tiangolo/markdown-include-variants/blob/main/LICENSE).
@@ -152,6 +152,16 @@ print("line 7")
152
152
 
153
153
  Notice that the comment above adds 2 extra lines, and only the desired lines are included, the result is that the actual highlighted line is the rendered line 4, but the source line 6, it's all calculated automatically. 🤓
154
154
 
155
+ ### Include Only File Preview
156
+
157
+ If you only want to generate the "File Preview" collapsed details section, without actually including a tab of source files, you can use `ln[0]`:
158
+
159
+ ```markdown
160
+ {* ./docs_src/first_steps/tutorial001_an_py310.py ln[0] *}
161
+ ```
162
+
163
+ This is useful for example at the beginning of a new page, in a recap of the last used file in the previous page.
164
+
155
165
  ## License
156
166
 
157
167
  This project is licensed under the terms of the [MIT license](https://github.com/tiangolo/markdown-include-variants/blob/main/LICENSE).
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## Latest Changes
4
4
 
5
+ ## 0.0.4
6
+
7
+ ### Features
8
+
9
+ * ✨ Include variant tab in full file preview. PR [#19](https://github.com/tiangolo/markdown-include-variants/pull/19) by [@tiangolo](https://github.com/tiangolo).
10
+ * ✨ Support including only a file preview. PR [#18](https://github.com/tiangolo/markdown-include-variants/pull/18) by [@tiangolo](https://github.com/tiangolo).
11
+
12
+ ### Internal
13
+
14
+ * ⬆ Bump astral-sh/setup-uv from 3 to 5. PR [#17](https://github.com/tiangolo/markdown-include-variants/pull/17) by [@dependabot[bot]](https://github.com/apps/dependabot).
15
+ * ⬆ Bump tiangolo/latest-changes from 0.3.1 to 0.3.2. PR [#14](https://github.com/tiangolo/markdown-include-variants/pull/14) by [@dependabot[bot]](https://github.com/apps/dependabot).
16
+ * ⬆ Bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.3. PR [#16](https://github.com/tiangolo/markdown-include-variants/pull/16) by [@dependabot[bot]](https://github.com/apps/dependabot).
17
+ * ⬆ Bump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0. PR [#11](https://github.com/tiangolo/markdown-include-variants/pull/11) by [@dependabot[bot]](https://github.com/apps/dependabot).
18
+
5
19
  ## 0.0.3
6
20
 
7
21
  ### Features
@@ -237,47 +237,50 @@ class IncludeVariantsPreprocessor(Preprocessor):
237
237
  internal_block_lines.append(
238
238
  f"{{!{preferred_variant.path}!}}",
239
239
  )
240
- for i, line_group in enumerate(include_lines):
241
- if i == 0 and line_group[0] > 1:
242
- internal_block_lines.extend(
243
- [
244
- "# Code above omitted 👆",
245
- "",
246
- ]
247
- )
248
- if i >= 1:
249
- internal_block_lines.extend(
250
- [
251
- "",
252
- "# Code here omitted 👈",
253
- "",
254
- ]
255
- )
256
- internal_block_lines.append(
257
- f"{{!{preferred_variant.path}[ln:{line_group[0]}-{line_group[1]}]!}}"
258
- )
259
- if i == len(include_lines) - 1 and line_group[1] < len(content_lines):
260
- internal_block_lines.extend(
261
- [
262
- "",
263
- "# Code below omitted 👇",
264
- ]
240
+ if include_lines != [(0, 0)]:
241
+ for i, line_group in enumerate(include_lines):
242
+ if i == 0 and line_group[0] > 1:
243
+ internal_block_lines.extend(
244
+ [
245
+ "# Code above omitted 👆",
246
+ "",
247
+ ]
248
+ )
249
+ if i >= 1:
250
+ internal_block_lines.extend(
251
+ [
252
+ "",
253
+ "# Code here omitted 👈",
254
+ "",
255
+ ]
256
+ )
257
+ internal_block_lines.append(
258
+ f"{{!{preferred_variant.path}[ln:{line_group[0]}-{line_group[1]}]!}}"
265
259
  )
266
- first_line = "```python"
267
- if use_hl_lines:
268
- first_line += f' hl_lines="{use_hl_lines_str}"'
260
+ if i == len(include_lines) - 1 and line_group[1] < len(
261
+ content_lines
262
+ ):
263
+ internal_block_lines.extend(
264
+ [
265
+ "",
266
+ "# Code below omitted 👇",
267
+ ]
268
+ )
269
+ first_line = "```python"
270
+ if use_hl_lines:
271
+ first_line += f' hl_lines="{use_hl_lines_str}"'
269
272
 
270
- block_lines.extend(
271
- [
272
- f"//// tab | {preferred_variant.title}" "",
273
- first_line,
274
- *internal_block_lines,
275
- "```",
276
- "",
277
- "////",
278
- "",
279
- ]
280
- )
273
+ block_lines.extend(
274
+ [
275
+ f"//// tab | {preferred_variant.title}" "",
276
+ first_line,
277
+ *internal_block_lines,
278
+ "```",
279
+ "",
280
+ "////",
281
+ "",
282
+ ]
283
+ )
281
284
  if include_lines:
282
285
  first_line_full = "```python"
283
286
  if highlight_lines:
@@ -285,7 +288,9 @@ class IncludeVariantsPreprocessor(Preprocessor):
285
288
  first_line_full += f' hl_lines="{hl_lines_full_str}"'
286
289
  block_lines.extend(
287
290
  [
288
- "//// details | 👀 Full file preview",
291
+ "///// details | 👀 Full file preview",
292
+ "",
293
+ f"//// tab | {preferred_variant.title}",
289
294
  "",
290
295
  first_line_full,
291
296
  f"{{!{preferred_variant.path}!}}",
@@ -293,6 +298,8 @@ class IncludeVariantsPreprocessor(Preprocessor):
293
298
  "",
294
299
  "////",
295
300
  "",
301
+ "/////",
302
+ "",
296
303
  ]
297
304
  )
298
305
  if len(sorted_variants):
@@ -0,0 +1 @@
1
+ __version__ = "0.0.4"
@@ -78,10 +78,12 @@ def test_all_variants_ln_hl():
78
78
  <h1>Code below omitted 👇</h1>
79
79
  <p>```</p>
80
80
  <p>////</p>
81
- <p>//// details | 👀 Full file preview</p>
81
+ <p>///// details | 👀 Full file preview</p>
82
+ <p>//// tab | Python 3.10+</p>
82
83
  <p><code>python hl_lines="4-5"
83
84
  {!docs_src/all_variants/tutorial001_an_py310.py!}</code></p>
84
85
  <p>////</p>
86
+ <p>/////</p>
85
87
  <p>///// details | 🤓 Other versions and variants</p>
86
88
  <p>//// tab | Python 3.9+</p>
87
89
  <p><code>python
@@ -147,7 +149,8 @@ def test_all_variants_ln_hl_include():
147
149
  <span class="c1"># Code below omitted 👇</span>
148
150
  </code></pre></div></p>
149
151
  <p>////</p>
150
- <p>//// details | 👀 Full file preview</p>
152
+ <p>///// details | 👀 Full file preview</p>
153
+ <p>//// tab | Python 3.10+</p>
151
154
  <div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;an py310 line 1&quot;</span><span class="p">)</span>
152
155
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;an py310 line 2&quot;</span><span class="p">)</span>
153
156
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;an py310 line 3&quot;</span><span class="p">)</span>
@@ -160,6 +163,7 @@ def test_all_variants_ln_hl_include():
160
163
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;an py310 line 10&quot;</span><span class="p">)</span>
161
164
  </code></pre></div>
162
165
  <p>////</p>
166
+ <p>/////</p>
163
167
  <p>///// details | 🤓 Other versions and variants</p>
164
168
  <p>//// tab | Python 3.9+</p>
165
169
  <p><div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;an py39 line 1&quot;</span><span class="p">)</span>
@@ -0,0 +1,33 @@
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_only_preview():
10
+ input_md = inspect.cleandoc(
11
+ """
12
+ {* docs_src/simple/tutorial001.py ln[0] *}
13
+ """
14
+ )
15
+
16
+ result = markdown.markdown(
17
+ input_md,
18
+ extensions=[
19
+ IncludeVariantsExtension(),
20
+ ],
21
+ )
22
+ assert result == snapshot(
23
+ inspect.cleandoc(
24
+ """
25
+ <p>///// details | 👀 Full file preview</p>
26
+ <p>//// tab | Python 3.8+</p>
27
+ <p><code>python
28
+ {!docs_src/simple/tutorial001.py!}</code></p>
29
+ <p>////</p>
30
+ <p>/////</p>
31
+ """
32
+ )
33
+ )
@@ -30,10 +30,12 @@ def test_simple_ln():
30
30
  <h1>Code below omitted 👇</h1>
31
31
  <p>```</p>
32
32
  <p>////</p>
33
- <p>//// details | 👀 Full file preview</p>
33
+ <p>///// details | 👀 Full file preview</p>
34
+ <p>//// tab | Python 3.8+</p>
34
35
  <p><code>python
35
36
  {!docs_src/simple/tutorial001.py!}</code></p>
36
37
  <p>////</p>
38
+ <p>/////</p>
37
39
  """
38
40
  )
39
41
  )
@@ -65,7 +67,8 @@ def test_simple_ln_include():
65
67
  <span class="c1"># Code below omitted 👇</span>
66
68
  </code></pre></div></p>
67
69
  <p>////</p>
68
- <p>//// details | 👀 Full file preview</p>
70
+ <p>///// details | 👀 Full file preview</p>
71
+ <p>//// tab | Python 3.8+</p>
69
72
  <div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 1&quot;</span><span class="p">)</span>
70
73
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 2&quot;</span><span class="p">)</span>
71
74
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 3&quot;</span><span class="p">)</span>
@@ -78,6 +81,7 @@ def test_simple_ln_include():
78
81
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 10&quot;</span><span class="p">)</span>
79
82
  </code></pre></div>
80
83
  <p>////</p>
84
+ <p>/////</p>
81
85
  """
82
86
  )
83
87
  )
@@ -103,10 +107,12 @@ def test_simple_ln_one():
103
107
  <h1>Code below omitted 👇</h1>
104
108
  <p>```</p>
105
109
  <p>////</p>
106
- <p>//// details | 👀 Full file preview</p>
110
+ <p>///// details | 👀 Full file preview</p>
111
+ <p>//// tab | Python 3.8+</p>
107
112
  <p><code>python
108
113
  {!docs_src/simple/tutorial001.py!}</code></p>
109
114
  <p>////</p>
115
+ <p>/////</p>
110
116
  """
111
117
  )
112
118
  )
@@ -132,7 +138,8 @@ def test_simple_ln_one_include():
132
138
  <h1>Code below omitted 👇</h1>
133
139
  <p>```</p>
134
140
  <p>////</p>
135
- <p>//// details | 👀 Full file preview</p>
141
+ <p>///// details | 👀 Full file preview</p>
142
+ <p>//// tab | Python 3.8+</p>
136
143
  <p>```python
137
144
  print("simple line 1")
138
145
  print("simple line 2")
@@ -146,6 +153,7 @@ def test_simple_ln_one_include():
146
153
  print("simple line 10")</p>
147
154
  <p>```</p>
148
155
  <p>////</p>
156
+ <p>/////</p>
149
157
  """
150
158
  )
151
159
  )
@@ -172,10 +180,12 @@ def test_simple_ln_one_below():
172
180
  <h1>Code below omitted 👇</h1>
173
181
  <p>```</p>
174
182
  <p>////</p>
175
- <p>//// details | 👀 Full file preview</p>
183
+ <p>///// details | 👀 Full file preview</p>
184
+ <p>//// tab | Python 3.8+</p>
176
185
  <p><code>python
177
186
  {!docs_src/simple/tutorial001.py!}</code></p>
178
187
  <p>////</p>
188
+ <p>/////</p>
179
189
  """
180
190
  )
181
191
  )
@@ -201,10 +211,12 @@ def test_simple_ln_one_last():
201
211
  <p>{!docs_src/simple/tutorial001.py[ln:10-10]!}
202
212
  ```</p>
203
213
  <p>////</p>
204
- <p>//// details | 👀 Full file preview</p>
214
+ <p>///// details | 👀 Full file preview</p>
215
+ <p>//// tab | Python 3.8+</p>
205
216
  <p><code>python
206
217
  {!docs_src/simple/tutorial001.py!}</code></p>
207
218
  <p>////</p>
219
+ <p>/////</p>
208
220
  """
209
221
  )
210
222
  )
@@ -231,10 +243,12 @@ def test_simple_ln_block_below():
231
243
  <h1>Code below omitted 👇</h1>
232
244
  <p>```</p>
233
245
  <p>////</p>
234
- <p>//// details | 👀 Full file preview</p>
246
+ <p>///// details | 👀 Full file preview</p>
247
+ <p>//// tab | Python 3.8+</p>
235
248
  <p><code>python
236
249
  {!docs_src/simple/tutorial001.py!}</code></p>
237
250
  <p>////</p>
251
+ <p>/////</p>
238
252
  """
239
253
  )
240
254
  )
@@ -260,10 +274,12 @@ def test_simple_ln_block_last():
260
274
  <p>{!docs_src/simple/tutorial001.py[ln:8-10]!}
261
275
  ```</p>
262
276
  <p>////</p>
263
- <p>//// details | 👀 Full file preview</p>
277
+ <p>///// details | 👀 Full file preview</p>
278
+ <p>//// tab | Python 3.8+</p>
264
279
  <p><code>python
265
280
  {!docs_src/simple/tutorial001.py!}</code></p>
266
281
  <p>////</p>
282
+ <p>/////</p>
267
283
  """
268
284
  )
269
285
  )
@@ -291,10 +307,12 @@ def test_simple_ln_first_middle():
291
307
  <h1>Code below omitted 👇</h1>
292
308
  <p>```</p>
293
309
  <p>////</p>
294
- <p>//// details | 👀 Full file preview</p>
310
+ <p>///// details | 👀 Full file preview</p>
311
+ <p>//// tab | Python 3.8+</p>
295
312
  <p><code>python
296
313
  {!docs_src/simple/tutorial001.py!}</code></p>
297
314
  <p>////</p>
315
+ <p>/////</p>
298
316
  """
299
317
  )
300
318
  )
@@ -323,10 +341,12 @@ def test_simple_ln_first_middle_last():
323
341
  <p>{!docs_src/simple/tutorial001.py[ln:10-10]!}
324
342
  ```</p>
325
343
  <p>////</p>
326
- <p>//// details | 👀 Full file preview</p>
344
+ <p>///// details | 👀 Full file preview</p>
345
+ <p>//// tab | Python 3.8+</p>
327
346
  <p><code>python
328
347
  {!docs_src/simple/tutorial001.py!}</code></p>
329
348
  <p>////</p>
349
+ <p>/////</p>
330
350
  """
331
351
  )
332
352
  )
@@ -355,10 +375,12 @@ def test_simple_ln_middle_middle():
355
375
  <h1>Code below omitted 👇</h1>
356
376
  <p>```</p>
357
377
  <p>////</p>
358
- <p>//// details | 👀 Full file preview</p>
378
+ <p>///// details | 👀 Full file preview</p>
379
+ <p>//// tab | Python 3.8+</p>
359
380
  <p><code>python
360
381
  {!docs_src/simple/tutorial001.py!}</code></p>
361
382
  <p>////</p>
383
+ <p>/////</p>
362
384
  """
363
385
  )
364
386
  )
@@ -386,10 +408,12 @@ def test_simple_ln_first_block_middle_block():
386
408
  <h1>Code below omitted 👇</h1>
387
409
  <p>```</p>
388
410
  <p>////</p>
389
- <p>//// details | 👀 Full file preview</p>
411
+ <p>///// details | 👀 Full file preview</p>
412
+ <p>//// tab | Python 3.8+</p>
390
413
  <p><code>python
391
414
  {!docs_src/simple/tutorial001.py!}</code></p>
392
415
  <p>////</p>
416
+ <p>/////</p>
393
417
  """
394
418
  )
395
419
  )
@@ -418,10 +442,12 @@ def test_simple_ln_first_block_middle_block_last_block():
418
442
  <p>{!docs_src/simple/tutorial001.py[ln:9-10]!}
419
443
  ```</p>
420
444
  <p>////</p>
421
- <p>//// details | 👀 Full file preview</p>
445
+ <p>///// details | 👀 Full file preview</p>
446
+ <p>//// tab | Python 3.8+</p>
422
447
  <p><code>python
423
448
  {!docs_src/simple/tutorial001.py!}</code></p>
424
449
  <p>////</p>
450
+ <p>/////</p>
425
451
  """
426
452
  )
427
453
  )
@@ -450,10 +476,12 @@ def test_simple_ln_first_block_middle_last_block():
450
476
  <p>{!docs_src/simple/tutorial001.py[ln:9-10]!}
451
477
  ```</p>
452
478
  <p>////</p>
453
- <p>//// details | 👀 Full file preview</p>
479
+ <p>///// details | 👀 Full file preview</p>
480
+ <p>//// tab | Python 3.8+</p>
454
481
  <p><code>python
455
482
  {!docs_src/simple/tutorial001.py!}</code></p>
456
483
  <p>////</p>
484
+ <p>/////</p>
457
485
  """
458
486
  )
459
487
  )
@@ -482,10 +510,12 @@ def test_simple_ln_first_middle_block_last():
482
510
  <p>{!docs_src/simple/tutorial001.py[ln:10-10]!}
483
511
  ```</p>
484
512
  <p>////</p>
485
- <p>//// details | 👀 Full file preview</p>
513
+ <p>///// details | 👀 Full file preview</p>
514
+ <p>//// tab | Python 3.8+</p>
486
515
  <p><code>python
487
516
  {!docs_src/simple/tutorial001.py!}</code></p>
488
517
  <p>////</p>
518
+ <p>/////</p>
489
519
  """
490
520
  )
491
521
  )
@@ -31,10 +31,12 @@ def test_simple_ln_hl():
31
31
  <h1>Code below omitted 👇</h1>
32
32
  <p>```</p>
33
33
  <p>////</p>
34
- <p>//// details | 👀 Full file preview</p>
34
+ <p>///// details | 👀 Full file preview</p>
35
+ <p>//// tab | Python 3.8+</p>
35
36
  <p><code>python hl_lines="1-3"
36
37
  {!docs_src/simple/tutorial001.py!}</code></p>
37
38
  <p>////</p>
39
+ <p>/////</p>
38
40
  """
39
41
  )
40
42
  )
@@ -63,10 +65,12 @@ def test_simple_ln_hl_middle_block():
63
65
  <h1>Code below omitted 👇</h1>
64
66
  <p>```</p>
65
67
  <p>////</p>
66
- <p>//// details | 👀 Full file preview</p>
68
+ <p>///// details | 👀 Full file preview</p>
69
+ <p>//// tab | Python 3.8+</p>
67
70
  <p><code>python hl_lines="2-3"
68
71
  {!docs_src/simple/tutorial001.py!}</code></p>
69
72
  <p>////</p>
73
+ <p>/////</p>
70
74
  """
71
75
  )
72
76
  )
@@ -96,10 +100,12 @@ def test_simple_ln_hl_middle_block_end_block():
96
100
  <p>{!docs_src/simple/tutorial001.py[ln:8-10]!}
97
101
  ```</p>
98
102
  <p>////</p>
99
- <p>//// details | 👀 Full file preview</p>
103
+ <p>///// details | 👀 Full file preview</p>
104
+ <p>//// tab | Python 3.8+</p>
100
105
  <p><code>python hl_lines="2-3 8-10"
101
106
  {!docs_src/simple/tutorial001.py!}</code></p>
102
107
  <p>////</p>
108
+ <p>/////</p>
103
109
  """
104
110
  )
105
111
  )
@@ -131,10 +137,12 @@ def test_simple_ln_hl_middle_block_middle_block_end_block():
131
137
  <p>{!docs_src/simple/tutorial001.py[ln:8-10]!}
132
138
  ```</p>
133
139
  <p>////</p>
134
- <p>//// details | 👀 Full file preview</p>
140
+ <p>///// details | 👀 Full file preview</p>
141
+ <p>//// tab | Python 3.8+</p>
135
142
  <p><code>python hl_lines="2-3 5-6 8-10"
136
143
  {!docs_src/simple/tutorial001.py!}</code></p>
137
144
  <p>////</p>
145
+ <p>/////</p>
138
146
  """
139
147
  )
140
148
  )
@@ -166,10 +174,12 @@ def test_simple_ln_hl_middle_middle_block_end():
166
174
  <p>{!docs_src/simple/tutorial001.py[ln:10-10]!}
167
175
  ```</p>
168
176
  <p>////</p>
169
- <p>//// details | 👀 Full file preview</p>
177
+ <p>///// details | 👀 Full file preview</p>
178
+ <p>//// tab | Python 3.8+</p>
170
179
  <p><code>python hl_lines="2 5-6 10"
171
180
  {!docs_src/simple/tutorial001.py!}</code></p>
172
181
  <p>////</p>
182
+ <p>/////</p>
173
183
  """
174
184
  )
175
185
  )
@@ -200,10 +210,12 @@ def test_simple_ln_hl_first_middle_end():
200
210
  <p>{!docs_src/simple/tutorial001.py[ln:10-10]!}
201
211
  ```</p>
202
212
  <p>////</p>
203
- <p>//// details | 👀 Full file preview</p>
213
+ <p>///// details | 👀 Full file preview</p>
214
+ <p>//// tab | Python 3.8+</p>
204
215
  <p><code>python hl_lines="1 6-8 10"
205
216
  {!docs_src/simple/tutorial001.py!}</code></p>
206
217
  <p>////</p>
218
+ <p>/////</p>
207
219
  """
208
220
  )
209
221
  )
@@ -233,10 +245,12 @@ def test_simple_ln_hl_middle_block_end_block_hl_middle_block():
233
245
  <p>{!docs_src/simple/tutorial001.py[ln:8-10]!}
234
246
  ```</p>
235
247
  <p>////</p>
236
- <p>//// details | 👀 Full file preview</p>
248
+ <p>///// details | 👀 Full file preview</p>
249
+ <p>//// tab | Python 3.8+</p>
237
250
  <p><code>python hl_lines="2"
238
251
  {!docs_src/simple/tutorial001.py!}</code></p>
239
252
  <p>////</p>
253
+ <p>/////</p>
240
254
  """
241
255
  )
242
256
  )
@@ -266,10 +280,12 @@ def test_simple_ln_hl_middle_block_end_block_hl_end_block():
266
280
  <p>{!docs_src/simple/tutorial001.py[ln:7-10]!}
267
281
  ```</p>
268
282
  <p>////</p>
269
- <p>//// details | 👀 Full file preview</p>
283
+ <p>///// details | 👀 Full file preview</p>
284
+ <p>//// tab | Python 3.8+</p>
270
285
  <p><code>python hl_lines="8-9"
271
286
  {!docs_src/simple/tutorial001.py!}</code></p>
272
287
  <p>////</p>
288
+ <p>/////</p>
273
289
  """
274
290
  )
275
291
  )
@@ -308,7 +324,8 @@ def test_simple_ln_hl_middle_block_end_block_hl_end_block_include():
308
324
  </span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 10&quot;</span><span class="p">)</span>
309
325
  </code></pre></div></p>
310
326
  <p>////</p>
311
- <p>//// details | 👀 Full file preview</p>
327
+ <p>///// details | 👀 Full file preview</p>
328
+ <p>//// tab | Python 3.8+</p>
312
329
  <div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 1&quot;</span><span class="p">)</span>
313
330
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 2&quot;</span><span class="p">)</span>
314
331
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 3&quot;</span><span class="p">)</span>
@@ -321,6 +338,7 @@ def test_simple_ln_hl_middle_block_end_block_hl_end_block_include():
321
338
  </span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;simple line 10&quot;</span><span class="p">)</span>
322
339
  </code></pre></div>
323
340
  <p>////</p>
341
+ <p>/////</p>
324
342
  """
325
343
  )
326
344
  )
@@ -64,10 +64,12 @@ def test_all_variants_ln_hl():
64
64
  <h1>Code below omitted 👇</h1>
65
65
  <p>```</p>
66
66
  <p>////</p>
67
- <p>//// details | 👀 Full file preview</p>
67
+ <p>///// details | 👀 Full file preview</p>
68
+ <p>//// tab | Python 3.9+</p>
68
69
  <p><code>python hl_lines="4-5"
69
70
  {!docs_src/up_to_py39/tutorial001_an_py39.py!}</code></p>
70
71
  <p>////</p>
72
+ <p>/////</p>
71
73
  <p>///// details | 🤓 Other versions and variants</p>
72
74
  <p>//// tab | Python 3.8+</p>
73
75
  <p><code>python
@@ -294,7 +294,7 @@ wheels = [
294
294
 
295
295
  [[package]]
296
296
  name = "markdown-include-variants"
297
- version = "0.0.1"
297
+ version = "0.0.4"
298
298
  source = { editable = "." }
299
299
  dependencies = [
300
300
  { name = "markdown" },
@@ -1 +0,0 @@
1
- __version__ = "0.0.3"