8000 fix: Fix highlighting for signature with known special names like `__… · mkdocstrings/python@7f95686 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7f95686

Browse files
committed
fix: Fix highlighting for signature with known special names like __init__
Issue-mkdocstrings-757: mkdocstrings/mkdocstrings#757
1 parent 0a35b20 commit 7f95686

6 files changed

+14
-12
lines changed

src/mkdocstrings_handlers/python/_internal/rendering.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,12 @@ def do_format_signature(
185185
# Pygments sees it as a function call and not a function definition.
186186
# The result is that the function name is not parsed as such,
187187
# but instead as a regular name: `n` CSS class instead of `nf`.
188-
# To fix it, we replace the first occurrence of an `n` CSS class
189-
# with an `nf` one, unless we found `nf` already.
190-
if signature.find('class="nf"') == -1:
191-
signature = signature.replace('class="n"', 'class="nf"', 1)
188+
# When the function name is a known special name like `__exit__`,
189+
# Pygments will set an `fm` (function -> magic) CSS class.
190+
# To fix this, we replace the CSS class in the first span with `nf`,
191+
# unless we already found an `nf` span.
192+
if not re.search(r'<span class="nf">', signature):
193+
signature = re.sub(r'<span class="[a-z]+">', '<span class="nf">', signature, count=1)
192194

193195
if stash := env.filters["stash_crossref"].stash:
194196
for key, value in stash.items():

tests/snapshots/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
("separate_signature", True),
99
("show_signature_annotations", False),
1010
("signature_crossrefs", False),
11-
): external("4370d843cc76*.html"),
11+
): external("d03d16d1919a*.html"),
1212
(
1313
("separate_signature", True),
1414
("show_signature_annotations", True),
1515
("signature_crossrefs", True),
16-
): external("261a38d7a86b*.html"),
16+
): external("e412376be64f*.html"),
1717
(
1818
("separate_signature", False),
1919
("show_signature_annotations", True),
@@ -33,12 +33,12 @@
3333
("separate_signature", True),
3434
("show_signature_annotations", True),
3535
("signature_crossrefs", False),
36-
): external("f5ce06acbb7a*.html"),
36+
): external("74ee37cd1e94*.html"),
3737
(
3838
("separate_signature", True),
3939
("show_signature_annotations", False),
4040
("signature_crossrefs", True),
41-
): external("9c0bfc0ee407*.html"),
41+
): external("4041a38e355f*.html"),
4242
(
4343
("separate_signature", False),
4444
("show_signature_annotations", True),

tests/snapshots/external/9c0bfc0ee40732505dc3dab8c95ad4ed6582d10df2449c7d92f1e43a91610666.html renamed to tests/snapshots/external/4041a38e355f6585a7e1265509d7c5b499fe3776aeeeb298db7589bb385ca019.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ <h3 class="doc doc-heading" id="signature_package.Class.__init__">
3636
</span>
3737
</h3>
3838
<div class="doc-signature highlight">
39-
<pre><span></span><code><span class="fm">__init__</span><span class="p">(</span><span class="nf">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
39+
<pre><span></span><code><span class="nf">__init__</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
4040
</code></pre>
4141
</div>
4242
<div class="doc doc-contents">

tests/snapshots/external/f5ce06acbb7a31658cc6367db31caaf7a210c0a31e71de950e791c5eb33a6258.html renamed to tests/snapshots/external/74ee37cd1e94250baa33050af088e7341495708d879ab45ee9e8ab1dcac26f2a.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ <h3 class="doc doc-heading" id="signature_package.Class.__init__">
3636
</span>
3737
</h3>
3838
<div class="doc-signature highlight">
39-
<pre><span></span><code><span class="fm">__init__</span><span class="p">(</span><span class="nf">a</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
39+
<pre><span></span><code><span class="nf">__init__</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
4040
</code></pre>
4141
</div>
4242
<div class="doc doc-contents">

tests/snapshots/external/4370d843cc76138927502402ac39c80414c8441a962f6466afdb280dc022af26.html renamed to tests/snapshots/external/d03d16d1919af01db9b8d4e5bf36b007810eb3730a7283624a4d68c6fe2ce652.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ <h3 class="doc doc-heading" id="signature_package.Class.__init__">
3636
</span>
3737
</h3>
3838
<div class="doc-signature highlight">
39-
<pre><span></span><code><span class="fm">__init__</span><span class="p">(</span><span class="nf">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
39+
<pre><span></span><code><span class="nf">__init__</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
4040
</code></pre>
4141
</div>
4242
<div class="doc doc-contents">

tests/snapshots/external/261a38d7a86b5e959b6d1c165108301963d0170c2189d5aa18bb7c7eade84ea4.html renamed to tests/snapshots/external/e412376be64f25f3f5d2264400a83a1e693c146feec7c359855c676c4a586392.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ <h3 class="doc doc-heading" id="signature_package.Class.__init__">
3636
</span>
3737
</h3>
3838
<div class="doc-signature highlight">
39-
<pre><span></span><code><span class="fm">__init__</span><span class="p">(</span><span class="nf">a</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.__init__" backlink-type="used-by" identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.__init__" backlink-type="used-by" identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
39+
<pre><span></span><code><span class="nf">__init__</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.__init__" backlink-type="used-by" identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.__init__" backlink-type="used-by" identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
4040
</code></pre>
4141
</div>
4242
<div class="doc doc-contents">

0 commit comments

Comments
 (0)
0