17
17
from sphinx .util .images import get_image_size
18
18
19
19
if TYPE_CHECKING :
20
- from docutils .nodes import Element , Node , Text
20
+ from docutils .nodes import (
21
+ Element ,
22
+ Node ,
23
+ Text ,
24
+ bullet_list ,
25
+ caption ,
26
+ emphasis ,
27
+ field_list ,
28
+ figure ,
29
+ image ,
30
+ literal_block ,
31
+ reference ,
32
+ strong ,
33
+ table ,
34
+ title ,
35
+ )
21
36
22
37
from sphinx .builders import Builder
23
38
from sphinx .builders .html import StandaloneHTMLBuilder
@@ -357,7 +372,7 @@ def visit_reference(self, node: Element) -> None:
357
372
def visit_number_reference (self , node : Element ) -> None :
358
373
self .visit_reference (node )
359
374
360
- def depart_number_reference (self , node : Element ) -> None :
375
+ def depart_number_reference (self , node : reference ) -> None :
361
376
self .depart_reference (node )
362
377
363
378
# overwritten -- we don't want source comments to show up in the HTML
@@ -451,7 +466,7 @@ def add_permalink_ref(self, node: Element, title: str) -> None:
451
466
)
452
467
453
468
# overwritten
454
- def visit_bullet_list (self , node : Element ) -> None :
469
+ def visit_bullet_list (self , node : bullet_list ) -> None :
455
470
if len (node ) == 1 and isinstance (node [0 ], addnodes .toctree ):
456
471
# avoid emitting empty <ul></ul>
457
472
raise nodes .SkipNode
@@ -498,7 +513,7 @@ def depart_term(self, node: Element) -> None:
498
513
self .body .append ('</dt>' )
499
514
500
515
# overwritten
501
- def visit_title (self , node : Element ) -> None :
516
+ def visit_title (self , node : title ) -> None :
502
517
if (
503
518
isinstance (node .parent , addnodes .compact_paragraph )
504
519
and node .parent .get ('toctree' )
@@ -535,7 +550,7 @@ def visit_title(self, node: Element) -> None:
535
550
self .body .pop ()
536
551
self .context [- 1 ] = '</p>\n '
537
552
538
- def depart_title (self , node : Element ) -> None :
553
+ def depart_title (self , node : title ) -> None :
539
554
close_tag = self .context [- 1 ]
540
555
if (
541
556
self .config .html_permalinks
@@ -586,7 +601,7 @@ def depart_rubric(self, node: nodes.rubric) -> None:
586
601
super ().depart_rubric (node )
587
602
588
603
# overwritten
589
- def visit_literal_block (self , node : Element ) -> None :
604
+ def visit_literal_block (self , node : literal_block ) -> None :
590
605
if node .rawsource != node .astext ():
591
606
# most probably a parsed-literal block -- don't highlight
592
607
return super ().visit_literal_block (node )
@@ -614,7 +629,7 @@ def visit_literal_block(self, node: Element) -> None:
614
629
self .body .append (starttag + highlighted + '</div>\n ' )
615
630
raise nodes .SkipNode
616
631
617
- def visit_caption (self , node : Element ) -> None :
632
+ def visit_caption (self , node : caption ) -> None :
618
633
if (
619
634
isinstance (node .parent , nodes .container )
620
635
and node .parent .get ('literal_block' )
@@ -625,7 +640,7 @@ def visit_caption(self, node: Element) -> None:
625
640
self .add_fignumber (node .parent )
626
641
self .body .append (self .starttag (node , 'span' , '' , CLASS = 'caption-text' ))
627
642
628
- def depart_caption (self , node : Element ) -> None :
643
+ def depart_caption (self , node : caption ) -> None :
629
644
self .body .append ('</span>' )
630
645
631
646
# append permalink if available
@@ -648,7 +663,7 @@ def depart_caption(self, node: Element) -> None:
648
663
super ().depart_caption (node )
649
664
650
665
def visit_doctest_block (self , node : Element ) -> None :
651
- self .visit_literal_block (node )
666
+ self .visit_literal_block (node ) # type: ignore[arg-type]
652
667
653
668
# overwritten to add the <div> (for XHTML compliance)
654
669
def visit_block_quote (self , node : Element ) -> None :
@@ -740,14 +755,14 @@ def depart_download_reference(self, node: Element) -> None:
740
755
self .body .append (self .context .pop ())
741
756
742
757
# overwritten
743
- def visit_figure (self , node : Element ) -> None :
758
+ def visit_figure (self , node : figure ) -> None :
744
759
# set align=default if align not specified to give a default style
745
760
node .setdefault ('align' , 'default' )
746
761
747
762
return super ().visit_figure (node )
748
763
749
764
# overwritten
750
- def visit_image (self , node : Element ) -> None :
765
+ def visit_image (self , node : image ) -> None :
751
766
olduri = node ['uri' ]
752
767
# rewrite the URI if the environment knows about it
753
768
if olduri in self .builder .images :
@@ -775,7 +790,7 @@ def visit_image(self, node: Element) -> None:
775
790
super ().visit_image (node )
776
791
777
792
# overwritten
778
- def depart_image (self , node : Element ) -> None :
793
+ def depart_image (self , node : image ) -> None :
779
794
if node ['uri' ].lower ().endswith (('svg' , 'svgz' )):
780
795
pass
781
796
else :
@@ -892,16 +907,16 @@ def visit_tip(self, node: Element) -> None:
892
907
def depart_tip (self , node : Element ) -> None :
893
908
self .depart_admonition (node )
894
909
895
- def visit_literal_emphasis (self , node : Element ) -> None :
910
+ def visit_literal_emphasis (self , node : emphasis ) -> None :
896
911
return self .visit_emphasis (node )
897
912
898
- def depart_literal_emphasis (self , node : Element ) -> None :
913
+ def depart_literal_emphasis (self , node : emphasis ) -> None :
899
914
return self .depart_emphasis (node )
900
915
901
- def visit_literal_strong (self , node : Element ) -> None :
916
+ def visit_literal_strong (self , node : strong ) -> None :
902
917
return self .visit_strong (node )
903
918
904
- def depart_literal_strong (self , node : Element ) -> None :
919
+ def depart_literal_strong (self , node : strong ) -> None :
905
920
return self .depart_strong (node )
906
921
907
922
def visit_abbreviation (self , node : Element ) -> None :
@@ -913,15 +928,15 @@ def visit_abbreviation(self, node: Element) -> None:
913
928
def depart_abbreviation (self , node : Element ) -> None :
914
929
self .body .append ('</abbr>' )
915
930
916
- def visit_manpage (self , node : Element ) -> None :
931
+ def visit_manpage (self , node : emphasis ) -> None :
917
932
self .visit_literal_emphasis (node )
918
933
919
- def depart_manpage (self , node : Element ) -> None :
934
+ def depart_manpage (self , node : emphasis ) -> None :
920
935
self .depart_literal_emphasis (node )
921
936
922
937
# overwritten to add even/odd classes
923
938
924
- def visit_table (self , node : Element ) -> None :
939
+ def visit_table (self , node : table ) -> None :
925
940
self ._table_row_indices .append (0 )
926
941
927
942
atts = {}
@@ -936,7 +951,7 @@ def visit_table(self, node: Element) -> None:
936
951
tag = self .starttag (node , 'table' , CLASS = ' ' .join (classes ), ** atts )
937
952
self .body .append (tag )
938
953
939
- def depart_table (self , node : Element ) -> None :
954
+ def depart_table (self , node : table ) -> None :
940
955
self ._table_row_indices .pop ()
941
956
super ().depart_table (node )
942
957
@@ -949,11 +964,11 @@ def visit_row(self, node: Element) -> None:
949
964
self .body .append (self .starttag (node , 'tr' , '' ))
950
965
node .column = 0 # type: ignore[attr-defined]
951
966
952
- def visit_field_list (self , node : Element ) -> None :
967
+ def visit_field_list (self , node : field_list ) -> None :
953
968
self ._fieldlist_row_indices .append (0 )
954
969
return super ().visit_field_list (node )
955
970
956
- def depart_field_list (self , node : Element ) -> None :
971
+ def depart_field_list (self , node : field_list ) -> None :
957
972
self ._fieldlist_row_indices .pop ()
958
973
return super ().depart_field_list (node )
959
974
0 commit comments