Coverage for tests/test_all_variants.py: 100%
27 statements
« prev ^ index » next coverage.py v7.6.1, created at 2026-10-15 15:22 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2026-10-15 15:22 +0000
1import inspect 1ab
3import markdown 1ab
4from inline_snapshot import snapshot 1ab
5from mdx_include.mdx_include import IncludeExtension 1ab
6from pymdownx.highlight import HighlightExtension 1ab
7from pymdownx.superfences import SuperFencesCodeExtension 1ab
9from markdown_include_variants import IncludeVariantsExtension 1ab
12def test_all_variants_plain(): 1ab
13 input_md = inspect.cleandoc( 1cd
14 """
15 {* docs_src/all_variants/tutorial001_an_py311.py *}
16 """
17 )
19 result = markdown.markdown(input_md, extensions=[IncludeVariantsExtension()]) 1cd
20 assert result == snapshot( 1cd
21 inspect.cleandoc(
22 """
23 <p>//// tab | Python 3.11+
24 <code>python
25 {!docs_src/all_variants/tutorial001_an_py311.py!}</code></p>
26 <p>////</p>
27 <p>///// details | 🤓 Other versions and variants</p>
28 <p>//// tab | Python 3.10+</p>
29 <p><code>python
30 {!docs_src/all_variants/tutorial001_an_py310.py!}</code>
31 ////
32 //// tab | Python 3.9+</p>
33 <p><code>python
34 {!docs_src/all_variants/tutorial001_an_py39.py!}</code>
35 ////
36 //// tab | Python 3.8+</p>
37 <p><code>python
38 {!docs_src/all_variants/tutorial001_an.py!}</code>
39 ////
40 //// tab | Python 3.11+ - non-Annotated</p>
41 <p>/// tip</p>
42 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
43 <p>///</p>
44 <p><code>python
45 {!docs_src/all_variants/tutorial001_py311.py!}</code>
46 ////
47 //// tab | Python 3.10+ - non-Annotated</p>
48 <p>/// tip</p>
49 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
50 <p>///</p>
51 <p><code>python
52 {!docs_src/all_variants/tutorial001_py310.py!}</code>
53 ////
54 //// tab | Python 3.9+ - non-Annotated</p>
55 <p>/// tip</p>
56 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
57 <p>///</p>
58 <p><code>python
59 {!docs_src/all_variants/tutorial001_py39.py!}</code>
60 ////
61 //// tab | Python 3.8+ - non-Annotated</p>
62 <p>/// tip</p>
63 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
64 <p>///</p>
65 <p><code>python
66 {!docs_src/all_variants/tutorial001.py!}</code>
67 ////</p>
68 <p>/////</p>
69 """
70 )
71 )
74def test_all_variants_ln_hl(): 1ab
75 input_md = inspect.cleandoc( 1ef
76 """
77 {* docs_src/all_variants/tutorial001_an_py311.py ln[3:5] hl[4:5] *}
78 """
79 )
81 result = markdown.markdown(input_md, extensions=[IncludeVariantsExtension()]) 1ef
82 assert result == snapshot( 1ef
83 inspect.cleandoc(
84 """
85 <p>//// tab | Python 3.11+
86 ```python hl_lines="4-5"</p>
87 <h1>Code above omitted 👆</h1>
88 <p>{!docs_src/all_variants/tutorial001_an_py311.py[ln:3-5]!}</p>
89 <h1>Code below omitted 👇</h1>
90 <p>```</p>
91 <p>////</p>
92 <p>///// details | 👀 Full file preview</p>
93 <p>//// tab | Python 3.11+</p>
94 <p><code>python hl_lines="4-5"
95 {!docs_src/all_variants/tutorial001_an_py311.py!}</code></p>
96 <p>////</p>
97 <p>/////</p>
98 <p>///// details | 🤓 Other versions and variants</p>
99 <p>//// tab | Python 3.10+</p>
100 <p><code>python
101 {!docs_src/all_variants/tutorial001_an_py310.py!}</code>
102 ////
103 //// tab | Python 3.9+</p>
104 <p><code>python
105 {!docs_src/all_variants/tutorial001_an_py39.py!}</code>
106 ////
107 //// tab | Python 3.8+</p>
108 <p><code>python
109 {!docs_src/all_variants/tutorial001_an.py!}</code>
110 ////
111 //// tab | Python 3.11+ - non-Annotated</p>
112 <p>/// tip</p>
113 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
114 <p>///</p>
115 <p><code>python
116 {!docs_src/all_variants/tutorial001_py311.py!}</code>
117 ////
118 //// tab | Python 3.10+ - non-Annotated</p>
119 <p>/// tip</p>
120 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
121 <p>///</p>
122 <p><code>python
123 {!docs_src/all_variants/tutorial001_py310.py!}</code>
124 ////
125 //// tab | Python 3.9+ - non-Annotated</p>
126 <p>/// tip</p>
127 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
128 <p>///</p>
129 <p><code>python
130 {!docs_src/all_variants/tutorial001_py39.py!}</code>
131 ////
132 //// tab | Python 3.8+ - non-Annotated</p>
133 <p>/// tip</p>
134 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
135 <p>///</p>
136 <p><code>python
137 {!docs_src/all_variants/tutorial001.py!}</code>
138 ////</p>
139 <p>/////</p>
140 """
141 )
142 )
145def test_all_variants_ln_hl_title(): 1ab
146 input_md = inspect.cleandoc( 1gh
147 """
148 {* docs_src/all_variants/tutorial001_an_py311.py ln[3:5] hl[4:5] title["main.py"] *}
149 """
150 )
152 result = markdown.markdown(input_md, extensions=[IncludeVariantsExtension()]) 1gh
153 assert result == snapshot( 1gh
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 )
216def test_all_variants_ln_hl_include(): 1ab
217 input_md = inspect.cleandoc( 1ij
218 """
219 {* docs_src/all_variants/tutorial001_an_py311.py ln[3:5] hl[4:5] *}
220 """
221 )
223 result = markdown.markdown( 1ij
224 input_md,
225 extensions=[
226 IncludeVariantsExtension(),
227 IncludeExtension(),
228 SuperFencesCodeExtension(),
229 HighlightExtension(),
230 ],
231 )
232 assert result == snapshot( 1ij
233 inspect.cleandoc(
234 """
235 <p>//// tab | Python 3.11+
236 <div class="highlight"><pre><span></span><code><span class="c1"># Code above omitted 👆</span>
238 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 3"</span><span class="p">)</span>
239 <span class="hll"><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 4"</span><span class="p">)</span>
240 </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>
241 </span>
242 <span class="c1"># Code below omitted 👇</span>
243 </code></pre></div></p>
244 <p>////</p>
245 <p>///// details | 👀 Full file preview</p>
246 <p>//// tab | Python 3.11+</p>
247 <div class="highlight"><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>
248 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 2"</span><span class="p">)</span>
249 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 3"</span><span class="p">)</span>
250 <span class="hll"><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 4"</span><span class="p">)</span>
251 </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>
252 </span><span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 6"</span><span class="p">)</span>
253 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 7"</span><span class="p">)</span>
254 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 8"</span><span class="p">)</span>
255 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 9"</span><span class="p">)</span>
256 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py311 line 10"</span><span class="p">)</span>
257 </code></pre></div>
258 <p>////</p>
259 <p>/////</p>
260 <p>///// details | 🤓 Other versions and variants</p>
261 <p>//// tab | Python 3.10+</p>
262 <p><div class="highlight"><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>
263 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 2"</span><span class="p">)</span>
264 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 3"</span><span class="p">)</span>
265 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 4"</span><span class="p">)</span>
266 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 5"</span><span class="p">)</span>
267 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 6"</span><span class="p">)</span>
268 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 7"</span><span class="p">)</span>
269 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 8"</span><span class="p">)</span>
270 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 9"</span><span class="p">)</span>
271 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py310 line 10"</span><span class="p">)</span>
272 </code></pre></div>
273 ////
274 //// tab | Python 3.9+</p>
275 <p><div class="highlight"><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>
276 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 2"</span><span class="p">)</span>
277 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 3"</span><span class="p">)</span>
278 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 4"</span><span class="p">)</span>
279 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 5"</span><span class="p">)</span>
280 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 6"</span><span class="p">)</span>
281 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 7"</span><span class="p">)</span>
282 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 8"</span><span class="p">)</span>
283 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 9"</span><span class="p">)</span>
284 <span class="nb">print</span><span class="p">(</span><span class="s2">"an py39 line 10"</span><span class="p">)</span>
285 </code></pre></div>
286 ////
287 //// tab | Python 3.8+</p>
288 <p><div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"an line 1"</span><span class="p">)</span>
289 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 2"</span><span class="p">)</span>
290 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 3"</span><span class="p">)</span>
291 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 4"</span><span class="p">)</span>
292 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 5"</span><span class="p">)</span>
293 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 6"</span><span class="p">)</span>
294 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 7"</span><span class="p">)</span>
295 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 8"</span><span class="p">)</span>
296 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 9"</span><span class="p">)</span>
297 <span class="nb">print</span><span class="p">(</span><span class="s2">"an line 10"</span><span class="p">)</span>
298 </code></pre></div>
299 ////
300 //// tab | Python 3.11+ - non-Annotated</p>
301 <p>/// tip</p>
302 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
303 <p>///</p>
304 <p><div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 1"</span><span class="p">)</span>
305 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 2"</span><span class="p">)</span>
306 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 3"</span><span class="p">)</span>
307 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 4"</span><span class="p">)</span>
308 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 5"</span><span class="p">)</span>
309 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 6"</span><span class="p">)</span>
310 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 7"</span><span class="p">)</span>
311 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 8"</span><span class="p">)</span>
312 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 9"</span><span class="p">)</span>
313 <span class="nb">print</span><span class="p">(</span><span class="s2">"py311 line 10"</span><span class="p">)</span>
314 </code></pre></div>
315 ////
316 //// tab | Python 3.10+ - non-Annotated</p>
317 <p>/// tip</p>
318 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
319 <p>///</p>
320 <p><div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 1"</span><span class="p">)</span>
321 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 2"</span><span class="p">)</span>
322 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 3"</span><span class="p">)</span>
323 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 4"</span><span class="p">)</span>
324 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 5"</span><span class="p">)</span>
325 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 6"</span><span class="p">)</span>
326 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 7"</span><span class="p">)</span>
327 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 8"</span><span class="p">)</span>
328 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 9"</span><span class="p">)</span>
329 <span class="nb">print</span><span class="p">(</span><span class="s2">"py310 line 10"</span><span class="p">)</span>
330 </code></pre></div>
331 ////
332 //// tab | Python 3.9+ - non-Annotated</p>
333 <p>/// tip</p>
334 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
335 <p>///</p>
336 <p><div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 1"</span><span class="p">)</span>
337 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 2"</span><span class="p">)</span>
338 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 3"</span><span class="p">)</span>
339 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 4"</span><span class="p">)</span>
340 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 5"</span><span class="p">)</span>
341 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 6"</span><span class="p">)</span>
342 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 7"</span><span class="p">)</span>
343 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 8"</span><span class="p">)</span>
344 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 9"</span><span class="p">)</span>
345 <span class="nb">print</span><span class="p">(</span><span class="s2">"py39 line 10"</span><span class="p">)</span>
346 </code></pre></div>
347 ////
348 //// tab | Python 3.8+ - non-Annotated</p>
349 <p>/// tip</p>
350 <p>Prefer to use the <code>Annotated</code> version if possible.</p>
351 <p>///</p>
352 <p><div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 1"</span><span class="p">)</span>
353 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 2"</span><span class="p">)</span>
354 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 3"</span><span class="p">)</span>
355 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 4"</span><span class="p">)</span>
356 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 5"</span><span class="p">)</span>
357 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 6"</span><span class="p">)</span>
358 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 7"</span><span class="p">)</span>
359 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 8"</span><span class="p">)</span>
360 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 9"</span><span class="p">)</span>
361 <span class="nb">print</span><span class="p">(</span><span class="s2">"simple line 10"</span><span class="p">)</span>
362 </code></pre></div>
363 ////</p>
364 <p>/////</p>
365 """
366 )
367 )
370def test_all_variants_ln_hl_title_include(): 1ab
371 input_md = inspect.cleandoc( 1kl
372 """
373 {* docs_src/all_variants/tutorial001_an_py311.py ln[3:5] hl[4:5] title["main.py"] *}
374 """
375 )
377 result = markdown.markdown( 1kl
378 input_md,
379 extensions=[
380 IncludeVariantsExtension(),
381 IncludeExtension(),
382 SuperFencesCodeExtension(),
383 HighlightExtension(),
384 ],
385 )
386 assert result == snapshot( 1kl
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>
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 )