From 669f9c3a13ad8bd58535e8d069b6c771c2816d98 Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 28 Jan 2019 19:34:11 +0100 Subject: [PATCH 1/5] LaTeX: safer image inclusion Closes: #5956 --- CHANGES | 3 + sphinx/texinputs/sphinx.sty | 106 +++++++++++------- .../roots/test-latex-includegraphics/conf.py | 49 ++++++++ .../roots/test-latex-includegraphics/img.png | Bin 0 -> 66247 bytes .../test-latex-includegraphics/index.rst | 37 ++++++ .../test-latex-includegraphics/sphinx.png | Bin 0 -> 34213 bytes .../roots/test-latex-includegraphics/tall.png | Bin 0 -> 38192 bytes tests/test_build_latex.py | 16 +++ 8 files changed, 170 insertions(+), 41 deletions(-) create mode 100644 tests/roots/test-latex-includegraphics/conf.py create mode 100644 tests/roots/test-latex-includegraphics/img.png create mode 100644 tests/roots/test-latex-includegraphics/index.rst create mode 100644 tests/roots/test-latex-includegraphics/sphinx.png create mode 100644 tests/roots/test-latex-includegraphics/tall.png diff --git a/CHANGES b/CHANGES index c7d8e4786..f7421188f 100644 --- a/CHANGES +++ b/CHANGES @@ -61,6 +61,9 @@ Incompatible changes * websupport: unbundled from sphinx core. Please use sphinxcontrib-websupport * C++, the visibility of base classes is now always rendered as present in the input. That is, ``private`` is now shown, where it was ellided before. +* LaTeX: graphics inclusion of oversized images rescales to not exceed + the text width and height, even if width and/or height option were used. + (refs: #5956) Deprecated ---------- diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 3af7d3e1f..6ace6a9ce 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -707,53 +707,79 @@ %% GRAPHICS % -% \sphinxincludegraphics defined to resize images larger than the line width, -% except if height or width option present. +% \sphinxincludegraphics resizes images larger than the TeX \linewidth (which +% is adjusted in indented environments), or taller than a certain maximal +% height (usually \textheight and this is reduced in the environments which use +% framed.sty to avoid infinite loop if image too tall). % -% If scale is present, rescale before fitting to line width. (since 1.5) -\newbox\spx@image@box -\newcommand*{\sphinxincludegraphics}[2][]{% - \in@{height}{#1}\ifin@\else\in@{width}{#1}\fi - \ifin@ % height or width present - \includegraphics[#1]{#2}% - \else % no height nor width (but #1 may be "scale=...") +% In case height or width options are present the rescaling is done +% (since 2.0), in a way keeping the width:height ratio either native from +% image or from the width and height options if both were present. +% +\newdimen\spx@image@maxheight +\AtBeginDocument{\spx@image@maxheight\textheight} + +% box scratch register +\newdimen\spx@image@box +\newcommand*{\sphinxsafeincludegraphics}[2][]{% + % #1 contains possibly width=, height=, but no scale= since 1.8.4 \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% + \in@false % use some handy boolean flag \ifdim \wd\spx@image@box>\linewidth - \setbox\spx@image@box\box\voidb@x % clear memory - \includegraphics[#1,width=\linewidth]{#2}% + \in@true % flag to remember to adjust options and set box dimensions + % compute height which results from rescaling width to \linewidth + % and keep current aspect ratio. multiply-divide in \numexpr uses + % temporarily doubled precision, hence no overflow. (of course we + % assume \ht is not a few sp's below \maxdimen...(about 16384pt). + \edef\spx@image@rescaledheight % with sp units + {\the\numexpr\ht\spx@image@box + *\linewidth/\wd\spx@image@box sp}% + \ifdim\spx@image@rescaledheight>\spx@image@maxheight + % the rescaled height will be too big, so it is height which decides + % the rescaling factor + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + % TODO: decide if this commented-out block could be needed due to + % rounding in numexpr operations going up + % \ifdim\spx@image@requiredwidth>\linewidth + % \def\spx@image@requiredwidth{\linewidth}% dimen register + % \fi + \else + \def\spx@image@requiredwidth{\linewidth}% dimen register + \let\spx@image@requiredheight\spx@image@rescaledheight% sp units + \fi \else + % width is ok, let's check height + \ifdim\ht\spx@image@box>\spx@image@maxheight + \in@true + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \fi + \fi % end of check of width and height + \ifin@ + \setbox\spx@image@box + \hbox{\includegraphics + [%#1,% contained only width and/or height and overruled anyhow + width=\spx@image@requiredwidth,height=\spx@image@requiredheight]% + {#2}}% + % \includegraphics does not set box dimensions to the exactly + % requested ones, see https://github.com/latex3/latex2e/issues/112 + \wd\spx@image@box\spx@image@requiredwidth + \ht\spx@image@box\spx@image@requiredheight + \leavevmode\box\spx@image@box + \else + % here we do not modify the options, no need to adjust width and height + % on output, they will be computed exactly as with "draft" option \setbox\spx@image@box\box\voidb@x % clear memory \includegraphics[#1]{#2}% \fi - \fi -} -% \sphinxsafeincludegraphics resizes images larger than the line width, -% or taller than about the text height (whether or not height/width options -% were used). This is requested to avoid a crash with \MakeFramed as used by -% sphinxShadowBox (topic/contents) and sphinxheavybox (admonitions), and also -% by sphinxVerbatim (but a priori no image inclusion there). -\newdimen\spx@image@maxheight -% default maximal setting will get reduced by sphinxShadowBox/sphinxheavybox -\AtBeginDocument{\spx@image@maxheight\textheight} -\newcommand*{\sphinxsafeincludegraphics}[2][]{% - \gdef\spx@includegraphics@options{#1}% - \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% - \in@false - \ifdim \wd\spx@image@box>\linewidth - \g@addto@macro\spx@includegraphics@options{,width=\linewidth}% - \in@true - \fi - % no rotation, no need to worry about depth - \ifdim \ht\spx@image@box>\spx@image@maxheight - \g@addto@macro\spx@includegraphics@options{,height=\spx@image@maxheight}% - \in@true - \fi - \ifin@ - \g@addto@macro\spx@includegraphics@options{,keepaspectratio}% - \fi - \setbox\spx@image@box\box\voidb@x % clear memory - \expandafter\includegraphics\expandafter[\spx@includegraphics@options]{#2}% }% +% Use the "safe" one by default (2.0) +\def\sphinxincludegraphics{\sphinxsafeincludegraphics} %% FIGURE IN TABLE @@ -1374,7 +1400,6 @@ +2\sphinxshadowsep +\sphinxshadowsize +\baselineskip\relax - \let\sphinxincludegraphics\sphinxsafeincludegraphics % configure framed.sty not to add extra vertical spacing \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% % the \trivlist will add the vertical spacing on top and bottom which is @@ -1461,7 +1486,6 @@ -\dimexpr2\FrameRule +2\FrameSep +\baselineskip\relax % will happen again if nested, needed indeed! - \let\sphinxincludegraphics\sphinxsafeincludegraphics % configure framed.sty's parameters to obtain same vertical spacing % as for "light" boxes. We need for this to manually insert parskip glue and % revert a skip done by framed before the frame. diff --git a/tests/roots/test-latex-includegraphics/conf.py b/tests/roots/test-latex-includegraphics/conf.py new file mode 100644 index 000000000..b53df86a2 --- /dev/null +++ b/tests/roots/test-latex-includegraphics/conf.py @@ -0,0 +1,49 @@ +master_doc = 'index' + +exclude_patterns = ['_build'] + +latex_elements = { + 'preamble': r''' +\makeatletter +\def\dividetwolengths#1#2{\the\dimexpr + \numexpr65536*\dimexpr#1\relax/\dimexpr#2\relax sp}% +\newwrite\out +\immediate\openout\out=\jobname-dimensions.txt +\def\toout{\immediate\write\out} +\def\getWfromoptions #1width=#2,#3\relax{\def\WidthFromOption{#2}}% +\def\getHfromoptions #1height=#2,#3\relax{\def\HeightFromOption{#2}}% +\def\tempincludegraphics[#1]#2{% + \sphinxsafeincludegraphics[#1]{#2}% + \edef\obtainedratio + {\dividetwolengths\spx@image@requiredheight\spx@image@requiredwidth}% + \getWfromoptions#1,width=,\relax + \getHfromoptions#1,height=,\relax + \def\ratiocheck{}% + \ifx\WidthFromOption\empty\else + \ifx\HeightFromOption\empty\else + \edef\askedforratio{\dividetwolengths\HeightFromOption\WidthFromOption}% + \edef\ratiocheck{\dividetwolengths\obtainedratio\askedforratio}% + \fi\fi + \toout{original options = #1^^J% + width = \the\dimexpr\spx@image@requiredwidth, + linewidth = \the\linewidth^^J% + height = \the\dimexpr\spx@image@requiredheight, + maxheight = \the\spx@image@maxheight^^J% + obtained H/W = \obtainedratio^^J% + \ifx\ratiocheck\empty + \else + asked for H/W = \askedforratio^^J% + ratio of ratios = \ratiocheck^^J% + \fi + }% + \ifx\ratiocheck\empty + \else + \ifpdfabsdim\dimexpr\ratiocheck-1pt\relax > 0.01pt + \ASPECTRATIOERROR + \fi + \fi +} +\def\sphinxincludegraphics#1#{\tempincludegraphics#1} +\makeatother +''', +} diff --git a/tests/roots/test-latex-includegraphics/img.png b/tests/roots/test-latex-includegraphics/img.png new file mode 100644 index 0000000000000000000000000000000000000000..a97e86d66af1ad396be5ece749bfe35b452aefec GIT binary patch literal 66247 zcmV(#K;*xPP)EaK&8zz5KX4BJqb#PZA>p^8SAiHclk?q>2$Rp^n7#Wi;q^-xRyG z$HR;EhrZqF`p3s#)>T+Q!a;}G_`<|D{V^vX$!u1xa@&_tn*_6aqHs zO1AUTi2eR)dweTqvM-6__s`q!pV#_JoKO^K6GnTrX;A1Ov}caL=3FjM%xsBUI5Q*m z-0$!2C8Rb-TB#T$%|3T&2Ks>1)B-R?sH$kphO|8qfDIBeZlJ4f-AxK027P$ifEr)e z78#8#v(|_x8gouaj)vE+K9RIme|_vRvjA1OyFE;SqR2`DB$UzB}zW(s@udMxY zd3t$z=5*H$(LDc|`3MYhat8!vQY2vH9G1vXEWnfdIoD}ng5-I4AcBZ8D~t5DS^yU$ z=}3S@CZhUVsLEsq;C$g(FiTOYI@Cq;k#4v5G#d|>GKxT{3a)j_l|5rlVLTU+;GpVxzU>5yu=bmAN#;5#C+JbYZE zO)5-!Ma12)QLi+wLXj*us$$a7}*QFVlGK#v?PrD&LixUi(#9^Go4iWg-{KISya zYp5|7bwo85%AJ#xRIhBufC>;%OC$0RgO4cA6HrYx;gKC6d`_E)+=my?10R&EV-%Zt z`}zNXWH=xzZ>uZ|_eIwY8mpGEXd6QgBpnjP?`#r5s%wPxRtF5=qyEk!dVG| zM?uh>-(2*_fC7Ys9(7726|_<%`?BoE5ui-0(!kNpRW@CpX<3AISWO8j9U|PF5bxulvY zQOCk}#hQRA#Dr5iremuM!GoHW2jnrpeWc3*CO7ih;b8X??oc?)7#Rv*;WZ`@)D6Qa zB56US5tzkFiV}Ctg9(mWu^8!^gp~Y7ScN&xCMaFb14Fhj1ZDx6k}#$AI1aOsKKF;j z7676kJ`Q0LAvZg2pTw-Htu-+jmUOvX*7x_n#yBE&K#=M{#eH)NCX@#I4cxJ0AP*Q0 z2~Yc#vQFy9%yv+cLrx6Aj39pONytXSgUZY-szLj>5u>)Iy#>^)(Yd0+_49*SbXEVn zs><8jM}%*$e;;FyaeMpopQvA3@IoDe!$-I~!VuKfTkFCyS&_|%tu+L+VcrZ0o-Z$z z6rpMZPR*DSWn&;E0^ob_fUg9=fyf=EdjTO2N#-omqu~b5h#pWL*L}YhO({uW{w?~T z9b**ls85ZdDgTq!?k-dhPkMT`gx3jJ90(YN*&hl*0uFemzJ+6yXC{*(J?I2fNn0H& zusWcb*UJW^V=2Z+>Sv=nFnl4$i+V00`%nKNmkTXx^adcy_PlP-fHK?z$O2duiN`Sl zNLuIRS(gj9)jf)rRJ$VcSBxws`%tBO0pfrY;g>vGO(?V&6xIVqK z?fEuR*eyU>KaR>El7%$(VKc=<_EI4S)MYy-EUjx_kX4jttVKds0≀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 literal 0 HcmV?d00001 diff --git a/tests/roots/test-latex-includegraphics/index.rst b/tests/roots/test-latex-includegraphics/index.rst new file mode 100644 index 000000000..920c74962 --- /dev/null +++ b/tests/roots/test-latex-includegraphics/index.rst @@ -0,0 +1,37 @@ +==================== +Test image inclusion +==================== + +Tests with both width and height +-------------------------------- + +.. an image with big dimensions, ratio H/W = 1/5 +.. image:: img.png + :height: 200 + :width: 1000 + +.. topic:: Oversized images + + .. an image with big dimensions, ratio H/W = 5/1 + .. image:: img.png + :height: 1000 + :width: 200 + + .. height too big even if width reduced to linewidth, ratio H/W = 3/1 + .. image:: img.png + :width: 1000 + :height: 3000 + +Tests with only width or height +------------------------------- + +.. topic:: Oversized images + + .. tall image which does not fit in textheight even if width rescaled + .. image:: tall.png + :width: 1000 + +.. wide image which does not fit in linewidth even after height diminished +.. image:: sphinx.png + :height: 1000 + diff --git a/tests/roots/test-latex-includegraphics/sphinx.png b/tests/roots/test-latex-includegraphics/sphinx.png new file mode 100644 index 0000000000000000000000000000000000000000..0a103cd3ee3b5230a901ddfca3a35b48fe2c44be GIT binary patch literal 34213 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Π~L>PNe_8VYviLrCmV3z#xpU1K@ww@E%lAj_B!M`nlU z!MOpfxnE8AJ>}E@?`ZQdGDXJDFbVo4|e;gjuIs$6=g9j z--bgc$CTCw4g-eu+YmHZk?N6~i}NzGcZfPYU$qso7NinAUe3qcZ~$JA`CqvP~^ zy5KkfTD8;MGaUqk=*s+LziTPh5AA)U17&>Mo$^@f>2yWZ04lbClq%kr`-529-U;0T z5^m68gShUjvZgDidyQev)(Y_KXhr?!>#fmsR&ER&h(z$5JWFu^W|4Usg&EcgRQMqH z7JTG!*hUHgEX0zTky-m?tNZI^Bc(f3lzfsLVd<>iuaJ2FbfZ;xu&x0tRJF(=lz`F9a~yX<9m> zPp_d8u4oo1+-Ejdo_&=C$WANjjrcVey$+PFKjpVCmw$ZQ&`lJk%$_!x4=aj=dI$&f z#&)LE+Oi2vr6<<0Eo7mdCFK}p1KAy|WwFO{408p~WBP;WqzecrrBa~ixiGFTifAO_ z2}1KINf0Qdp@bQDZbrfQOcTwOd>nUt{*iVJx|s_8DT7MEDaSM@VNI%Lyv&dh{G~^| zmY|i#G5WTzY&X>)@KOI&aj8}nS#Jct!9y$sUL{qI^nPwH0iKrWxccV;ZAMl~!~pg6 z`P52$H}=VRRXOSE+CPUr<2X1ZH_W{O%Dm->+Vb>jsfCq`|}Q z^sexi=idUZk9<6YY7%=DK4otzvw$Xrroas-De*`y4Szke;WQ`EdEKBel&8viF;B%K zhLI0xLK%OPYy1$9#v)dH@k&g8h#h{jARh;%=h%>+< zOdG5w9Xz*yv%!LD_@&hu`o%uz=}t8aq=8?!pdSU~goxJc>*f`g->Dh;qooNBVOOpt z|H*q#+~^M0b1*YI`DqPQshwj8AS}?1~J2(9K3%j~Rs;}65o~)R0{f=F?0x{>SwfMX~L<9u8 z>-YcoP-X2h8GM!RuM8_&@U*+;%RU}OP^)+=oEjONIit=QoJ4kuEy;l)V7lB+=JqUC zYl1^V4GD380#S&f49u{W*j=wS{ei*dm$%;GEn4x?S}mTLhdDh^tj^`@qHV*Uge{$I zx829enf}S|P9#&c+H4IZ&iS+EZ}-Ao)TGE8Qg{u$dpfIc_Qa4t+d$>JO>IDt2)8xM z)B`a*P$L!oGYWdeY^+K6cpZ;@Yh??sJ-7>fHnf8RhE&NtODQ55xX z>`yBR(~H2;A4Gk{$M)!d4Uz}?+#*`=mTne&U)l+s0^Wf0Bn*7|N`qR7S)POf>{=$O zmE8|$5;{F?K5<`f`a7YUL&dpU$WXMr*`9tBi>T4?qUXCL1l=D0oLR93bj?dl`#g{Y zlGY0ok#m+`qN{U5e5(vWF;!DrK=ONju}kh3?rQ0*SoFh?S{{(EeuE0NhYTsWmsVQl z;Y8SorR%FSvQ3S6-=eOp*`r@|c(m_;>l(TJBghP*P1V93p=}YESY8Tw_jmG^oc8QV zD{m#ltc2*qy{X9g=va$LUd~f07c0Gv!-{3Nz?jR|6vic8KaEF3CvdxmLvUR(U{NN1 z$c<9S9=tQr!oK$5iHye@*yJm2tx^(4@**?T!e4x**AmOPb!kvrulwZ&L445zg(XHL z1p_fJH8kBkE@l%1BL|Cc8&F-#e{e9a9|JJ$jsNYi1kPptpwc*kZH?THEXY7>rMO$2 zfHmix5Kv*Dk|F?gQuSv87%Y3l2}UZ82X>KD7ZMKKU=u%uY!}I>W|EV{SB(g8=_h= z*_>Uwr*DUE_-kz8%H9wWYPIHrjqcG}-dndV6&Sj7jP=2AnR5|U@&se2UeUs<}ksB{+Bwpak|eP(x5SP9$PH-dKHMv?h7tL!{`?!r{MWpt(|*UgHC- z>vN?nx7WbaC$!9R27|_S6bM(OS*&at!dJ=_1 zg8J8so&-2+=EV!KHwiWP8qnpTI1mE9B!iwNA9oHZ4WcEG8X^G@AI8DQUXF+A^&tW~ zGeJNzz#Tx3Rpl%hNppxL4|H^II01H8stVdWP8qOFno&`SjzzF(TE&W}lUHv<=P7bB z*!5&oZyGdau8n+cB|&mXPE;pe2qwTF*9X^>VUCUC$2))oxqhjS?TkJX8yDV;Dh3B9J@g5?p08QgzHz%Re2~ooO+<(rUvD zxW?OkY60e1E;FyZ%;1XA(G!Fusu}u3je(tWT~#rVg$piCOB-4^-XW|HTSV}k-}GuE z^i|YadxAiMSixveZi#ee-;-rStN8OO&7(5 zHuhhmFP1S#m3u-66VLvsNsB~v`)J%oF$MiSo-36Hrv|g`J9fFZn5cI7%3yTbv++Ea z�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

5oCe-<@iV2-V|7& zQC-aqJ0i~`JjB`R;j_2_CT*x*{#d>&J{ka-maIdO%CI3Sv(H;O*N~aOG4ZGpKbjB0 z!t&6f_YQd|!2cU>?S@aRi->t68p{u1$`MuwMp(m+uj*w8XEmVPL#+n4!@pfux=;{H zt)AMs!pXT^eBG`C!+TPh>b{6JtCRCv?d$&ChO&s`eFbSdsV;a@voYK@*`@W(Ummg1|!AG(dep2the0-i5)yB_9L#_=4 z5IS;{W9v7_LGAtgkG_x__Q%?A2(iKA+eK9LWi$}D-ujAqrBKu$w_lnv(&^uV*%a93 zi=L56j^zP6lu-5zwqz}M z@6bq{QaVn7+%Lq{v?21Y%?BwGU@TQYfg|STW7UMA0u;J}%JF+@;l~(&B3@mR9Of{P zZXfuTxt0@30osqcjFYtlIG#0*Zkocel>K_16V$ws5;^*GKUq>FO+Gt6Feor?9lfte ze1ijeV5Npjr|0a2_lfE!(GbyW zLPe*3?{B#iBCkeq1KSft*K!-MC4rj9+w0b^zr+gQ?b`xue;O}&B11Ic?6H{yWZ)hb zx9Z1wrO~!5z3cd*z?;poI&6kQ<8Xk|PrBjNT|x*iJrw}K>Mo2GU2#jLIBj`=l&bYl zx+2FiA}^6=fQg*;S1RYfkJY`n{LdJbed|^5MU)J4+pms~s(JiO_6^=jce`7HcG90l z3hLbn2;k!30qby%!ly#-gerR}qj?CjKtus4tqDNE8^0&nmx~XtknL(H{J~x9X2!Qa zsdviy(0PVJ5a(NFhJ)t4^a9S@%LG>XTthEO5~!GgBB=}@Ln=$9kXomR{Y6FUt#DrI zcxe1(`+?@tvbws4Sz+VH*}3EM@WTZNVCD26X1KOhrXVO=y4d_v+n@ismD6WGd>B9& z2tS#%8y)x?%smvw-F!rb(`-{ycSS-#(vHP3owdmTb%ti{Sc}|ReRzIyrCzxyXbu7` zIHd~<)6<};r!Vvb1fH`WDqiadXFJ1yY&THF&6EUdIXQr2{u=6#me@hdq+H+NqrL0+ z=XVkWxptl=@JiZCY!+1dK%1H&=x5vND_IlTsiuiA*AlLnkf!vy`|xyc$B_(opNA)9 zz*?%{ZGOP3U*fKxXjXgbc{1k7ft1k9oCLHsc9QITmlm+jy=VNvUuazJ=`BVEhQous z#m>m{$*1jYVMi;SuOgjp-{zOJM6oBBew4gc>MH6&h2u{5*QQD|1K>~!{4RJAATK%< zD|C@eJx~Z)y;GgY*MlpRIA@gk4KK0g$?W{1`w4xpJ2uz}d z=$z)OQGXLcl{U{F+~5u8&m4A_k}Wr}U?m@G@Ec-}oOs{Viwi`)F0Npt2&uIblNL+8 z63>3^Y^Z;H|D~h^_@=-xi zLvjMq8hZc7`F;2D^=Vs~ETFm(QB0dX3e6%{^PQ_lRqzz%SJyFfB(Me{#5+!j?IbMgZ!HhL01gO7hQFnDwiTP zJqKU1gv{;yAnOUN8hD%*kNVL!&=GVX3SMM~$wW?hS+ItI7Bnd-B`KvWu%Yhwd0+Nb zLO-8_8RKQ!+;)rc8k}r2b0Y9qmkWsN1wErc{hX}4wg>;VUjaRd$-`M$CDZVoj4Y~w zpN#&^#}Y1mb6Uo()%pMw$52hXNdkurY66A75pW?rPJBq)!#aA?S@#0D|cyDtbP6g6SeZD7^GoA>$nsvKA-a6Gq8g@jE9 zRs-@}5Cw)@02XqyS1qs=g#rRmR(hjbv;cB!OVQ53p_I7s9LndSovd93a(XZ@z$O1V zaB#A-Tk5MRap07SXH2>K-!0t?D(Vmz^#!)_^t;>KDx~ zhCq4%C;%Y?kf29)$8d$#bp-U3fL_P=cnwWciSDnawL?ank>3Y9r~C~Vyn46uC1J&` zs)j8*KQgzI+tn=6lnHL2sOe`WBa=n{D>|mT+ZxSgAT-&!d}unhj7bMt;81$hW`R8~ z!0HjFsQi)bZJ(c(Ub1E%XgC4A61-{lk&8BvjJF~KVMsIg=&}Um|4!jM9c6CM+?K)E zkS*w?=uYJ)SCeycRZ{>3MC;yxCXu`koHsua{WDvnrKD0*LPrKU9^5$kFY~MX@j~#t zfp)k={`NYW&eH~|aVc^QvrW-PYU;i#9VQf*BFYNg(tS-GF91d~MSQXJWJIMo7J3mS z5eK9lYxgK(V6X&3A^=SQMqL*I zuczRC66~m7&I*=h!}1w0v{avm2g*dwFPXDrg}&LmP)3?*D)ez<$j1RQBn+O!lH?}m zcu9bia(mGU1Kw>C5~i3d-y)$@rtDfQ*u`xH*^m6>#IpDMFa2_SlvTYrsmCGl2y+_?>dfPD zl3TYXekP9c46-)zWA)EWYKjW%HT}y|FR|>ePFThjhP-qWXuov#Ww9??`a*qO+WkLo#pMNB|R&_O*+^hIXu77@opdJ*$b3NW6 zeZGjd`XdPsy2a84fB$|E(rS-p?%FFn(+K!#D!GZei*4vRZaJ?ERXRBTQq!BIn4Mo^8;nysBCcyn%eZ@u43_PPcy=WK$x+4Le?|w zofv0s`2jGxFViz5?aZlGVoe4ZnTeERCoPGAN$wQn()M*YS0?0IcNT|_gBxD21{RW z2@F6I#9*)0damauT&7Y`J6E6D6*j`! zbI~?ZDk}Vj??09hUav@!rTuZpq#;Yh#d<41dK5Rfm#L-R_!Rme065(r3-{r-f9|+u4Ee57?E}Chae#8ILY9>wtRSwl8{b&9M8bp$229z zuS@t~fO1$UA3mV#zlMv6m~N^n3U)0{az>AfsiO$NoJk6@*!1-Dl9CcoOI}~9w3dNm zDK<}6#hC`iUVf8mO(vJpqM1ISk}j;!V;c2OV3sZ|;-cB1)DI(>3`SP9mfVxVgD! zWPYsPZ7Y>TUdTMA$!C3K@G^Y-V)2lX!$4bw*Eb-56Z{=cPA1`^lR{Yp-+;Fk7h!7g zvD?m#VpS-E!rS*nxM&g;}{Y)ICnmS6?BX#I*)Fji6M-bmLva8PPXt!E{r6&9|auskc^en$`_Ou`&C{~P219X*YXhcmtyU`k@%FfVz_?r$Zab%*P zZ5$j}r5VP+`Y?J&fOrVHQfR2+FUiSs3hX2#@bw|^#vbRtBu{R%fi5{{-h($U^UzaK zQ&XYJ4cLjbg$F;sNy^{8qjEijJcK$#bkgi1iK#!CX#j(v;4YD>M#NTB#TfyQ1%rEv z*=C6yVX^boR{7PoF$eW=JQVekXMZk1&kQro-KCb1pkj}-9jEBtnHOoTZ0SHM>{h`k z>F7Jpx$2~%Q%hh;)oYMvfNZ0$t_J~%d!v9_t`I;K)e$@M3pOEYRm#`rB1Dl1+JOUJ zie0zo31^GOY{cWQc*vko&ZEwH;A70Wa`;1CrJF{7E`dkA2Dwxw1})JKEqrb6z6kT! z@?qr0Pa`+SZF7x=dq3LlkNXK#2qWl0`$5J~XV4~CfHq`7WvNB-g_*;8aao*}Y2x?4 zxg~#iqhVklzzLi>IXq;cE3Er6bHYYXu2amX+LatM04ZRn1o)Xsj-UeCGF-A?XT{HO z{zFlXN_6^X=td@zi)Iba_)0}#vsdx@$VIum@o3@~L*2=X^3p`{I24sO&LH`|eM5et zt2lF8tj|&(g@Ahsyn#ZXc8C&Gdo1jS*+lop-{Rm=AiOUri47r!>_`w!Cgz=_YSkI< zj0=TOy>`|U(YPPse{SY0&yT;Qd?;gKk+7-s^p;(&kYFWRPZz2$K^p|lBWw;ghyc3y zKhM`z>5pJiDP7ES zCA|=c4eSRgU~O~ocz{YBp)RO*8ll1ugzZc^fHrEbNA^MQ3(}Nq<@{G~V6yZ*4Cvv3 z+HjC|)(4`wVcm82b_Z_=Z_tzHVazbTJ_JBbN>P}9H@+7Md}k0ktWr#48m6d}g8l9U zoR^7J;E0ux^x#`u@)^^|Kj^Wg&dBEF!vKQL=RXw&F`<9TR1RJm`ALcRj&NtTKmR() zPB^%JGt$KC6~EXOIX`Ctdz#Q#gN2r*pqem`JZCToCxEHGY`=H%$hCjt{Lf&#CMblz zTwYqTwJWq8I=jp4rl*yu(fh(W4_JGj_frza4G0JeRKe#yz$pQfyI4#2jG;q?$sXOM z5;euZNv&gK0ghkYOoJZKFE5?iss6r$lE!F^_q8z0gF{@KC)VgTkFo76m!@X9?z0~p z+A8Cs_vjTiheJ^W zyL{2G$NJgkD!k97z0!v^7u&<{f&>a2?eHlqtRTwBlS-NN_!C_KwJu|>TRGf`iqvuW zgaT}Y2AXWML`Suj5zuB9ncXHnrUJ06ubF4qM7S72CdHRkn^=zxCu|T-6ZR5Tg97bA znj|W{u2HM zieAGaao=>WwvF5geem!jkqsYB%YI+C732P_lJsvPUJ}kf@q`* z>WIR8?oaUWp`gEzo4|L*YiMfj_2hLNoI~i)wn%Hz+|vAB5mS4w;CSi@9r=B*w_`9b z@3%6HP~Q2zHSajhIp^PfM=akok(O92^RC9_cXxNRpSSz?@wvRL9DtiDbA6F)ww5hj z!iyYrR#{52pry39GLCP&&+)5lDSff=IrcM$>%j>Y zy$3(E%j&l)gqItd{XeI}+tv%|rgjNHP%k=rpfRjkJJ0e+yQrurb#UWo zwVj4^H)eJ4l{hrvU6zxqj4OFyygsMF73tM*72?46ugFj#EW0U^Z z{q?RqtNDLoIb20t5a;mQeWm%q$mGg__t3+y-sHHF52tYjEm-TZjXk^}~ zqL5${&z~0so8v#HtG<}#n1RCHgDsye9fj}OMUJxZqcALi*xlXz>eZ`v?|y(xc{_Ty zz)KG1Oks0{zM?QYu!lYG*{9qfwJ^LoUYcsfWtfwZWk&YKO`krR+EhKzURivitKhCY zS+Od>ZlOp`W0o`hLg!9EYMS@GASd~OO=MNgqO;lh*EK1KgL)x>UBa6hv>J;kMer0F zibHVUqAh=?@qA$JirWWSQM2eIo9er^4YuQ3<(vCpHt|;mHFn2`A1Pyw+o+!%@pP$QW8(_BF3KEHPriBq z?uPeLBy6Tr;h-IX?Plxe<2;Z1f|=ahV@0rVaG=-#%1RT;`L0>>QuR4z?7qq~nh>*c z{dSQ|V@LnUnj@C$mJ9p;ov=OaC_LYP{w4X#@5`8zUT{_0HH$lT>~5UR{pvhYz8XU* zknWE%{pixrFNy4fGuN}zx5W2UC_HUU73wedEe@HLVVwVp%gED*cYa}Seh29x)u_h1 zCh-yS^H3o*KK7A8V~5YB8!bV;{ey)`CXzl@_1bhH``Xx4YjT*mt+@ zDB4r_smJm^8F}lc`~`||Q)6mC)GO{?K{$dv+Jl;X)3_wzMe`~$<#d*eLB!^jF#1B6 zOYxh0pMjG$U0(y1ohUzaEW8T3SgjmMPlu*P>_A)a>e*_0_81OO4mVWbW?uiAbPHJ- zd_9dlw8U5!{jS1CDO)LBgGYzr&2Y4#@NS;&i<44?QT2JD;9AriYFH)A7$F z#jgU+ENq=#I3ttc`$s(7V`gciJ*|XF{bC^=as1=@dPx^K(CCNdTMi-~amsKXVMvMs z`EQt8SU(_s43#ns1);}SnGRW`?J7Ih!Ct@WmqJ-z*o_+gSEt}`i!o@cSoE80GNeH2 zWue6iE5O-~XzsWz+V>w>tui_a?e(%iU@q^sP#3y4Q<1n!{rSN~?eT-Cb8jZTXN~vb zA(VZJJ2-?JyB51pd!){Fa!_gm;WU4!x=HrFPbALL7!^AHoDnD*D+MsFqCuf47W*}z zYHeeQ;-!{o9Mr|w?*To-!=T%T{oO-h!`{cDN>PH$B02hAL zm!-EH`7@E4rWO{npru-qCM90=`U8H@m}al~{8qWvKM(bq*VSUX?0v5bUG0y02gEpx zD?fMn%x-I?u~U+Fop*1ge*SxLY!{i<6T9q;NeEtpnykrbPzhZMEM~d1g+4VEPQ7jM zxrnV=jg^SXC6E%S0PE(?&!HGMBufSJzUBLlpX>nKHg;2?6xjUfa6>4~PVN;!V2ydb zkYF$BXkOEs&ljb3RvXM;?n?K0G?U`fE8p!~N8=%bToEwe}h>-B8&& z=(T5{?gvLyS*K-9yFX$8bOE!P zq=(Cw`^DFLjo-2|tf*Yx)V)*5Nv-_XP&Nq4CiP&Bc28rf? zoql8Sv2|p2D!#~1jw1z6!v_Xgyx#0fQR*7!DwZ~H$1?O7=(+fw638tYgA;eaKJg$( z6I!rpR>ljp%`)<-cOLOe{0emN9G%D#WfyT_v26}my}$FcIe05Iy7Th3%AepGZ_m@j zMd?ww<6bCJoJYzqbEb#L+8K!DxHdBr&X%{Q{2vX0^tEN0LZlp2gf;s6Z``=ifKDs4 zEA^}^MU|eW1v~qY>4V$>obSO9CW_?4LqnU0#ICJ-9E;ymyqdijk`}mwZXvL+jl}pg z;`f<~Rq#W~$;$eFYA82GCEtPcE=Jzjv;%wM9>zYm~nTFt$Nx&_gG zmj+X-=11>N5E%r$QHg`Bgj9V8uk<6ROL5Aka04%vg zclcZ5WQNzL7jl=R9A8e;MVV+~f#wo;arcMIhhboZqlbqv7e-Z-l&$L!d1=Yn5w%#q zoxTVqGZ`eqRwm_w9QWA?9z%qk4AJ|(q3or9;3nb(Ppx(zeW9m_4I$PavZ@6HbMqdr z9YUA~_bxN+NkM)2n$tD8YcqDjA-o#g)0iHyH_eKS$w_ZAidY2eMQ^TNkqS9*-Ulg= z^HTt8lwDSum*wgwmY>Fnb%RXhU+TUsmwr7{(=~w4Oye;0eDct>&Ac!6qd`N3T^e=s z1EfcP^B?b#%(VQ$GJ1l-7~=q&d95sW)u`~N;-7lezWRG@*Wg$@yiHO*T!s{-V!jN2 z&Mb0DKD^p|dR@*$tPMS8z0~^ayZSNJv5f@8Xrby&rh#!s+fDRS*%lfB${=kl>eUrxqepS{sQa7ok%r*7x%46%KvKJ{xX{2* zR_U;^VDWd^H6%H92-O|!VOhz~4hOW26RPmWRpW9yGUI27bkEXj;$C1IgCEXU8Pp#P zkC;p^&zvnuuC`V|E!mAnw_|07cpVOeKk|EbrxQiLkoi26_}Ng?QZ?m0-*wLORRGkK z_M%nI^q1LA(jE0NM@uDuS7SP8E?4in7iq9hxo|5{vo0Pi{FlKY&MN{8V5#o>;th@( z$QUl8V2n5_&~*1(d4ooeHK1!HjZZ5m=(~<2q@Vc6hzXrT zHB>(V2#9taaz8l+P3(Je3&8t8LE6Y-4I3f=Mr`4 zrZhHL99P{6y_AG|n(M1;E7~XXl7(aj1g*+XfNsx=?`F8^mPyYMJK66I_~=4qq>0cZ!GP<@OqNGuotT_k zinvKpbCS`*$4%GEY46c9cYRADXx`w%9a=B&@Aw+L1*Q8B4%oJze1gb4I6LoTsnbulR@ zD16TQ$V5d%KK=S@=;Zrk!WO zmz{RcBqQZwp6_>V3eueHITSoSfUT|0%rsdH;7=wPY7+C9yDb>)<;#JpJ$uLVV^uMP zt$D3lWS25~01Y-V*NZ!ze7vwfjVf81{e;{Zft(C!N+P@UC{hx+PBu0~2P<#h>fq

y}q5M=7e3X77 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 literal 0 HcmV?d00001 diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 7acb1021f..b26adf5a9 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -1383,3 +1383,19 @@ def test_default_latex_documents(): expected = [('index', 'stasi.tex', 'STASI™ Documentation', r"Wolfgang Schäuble \& G'Beckstein.\@{}", 'manual')] assert default_latex_documents(config) == expected + + +@skip_if_requested +@skip_if_stylefiles_notfound +@pytest.mark.sphinx('latex', testroot='latex-includegraphics', + confoverrides={'latex_documents': [ + ('index', 'python.tex', 'Test PDF build', + 'Georg Brandl', 'howto') + ]}) +def test_includegraphics_oversized(app, status, warning): + app.builder.build_all() + print(status.getvalue()) + print(warning.getvalue()) + compile_latex_document(app) + result = (app.outdir / 'pdflatex/python-dimensions.txt').text(encoding='utf8') + print(result) From 6ca669295c2692caef2838eb78e15e6f0faf4c34 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 4 Feb 2019 01:50:16 +0900 Subject: [PATCH 2/5] Close #1851: Allow to omit an argument for code-block directive --- CHANGES | 2 ++ doc/usage/restructuredtext/directives.rst | 13 +++++++---- sphinx/directives/code.py | 22 ++++++++++++++----- sphinx/transforms/post_transforms/code.py | 2 +- tests/roots/test-directive-code/highlight.rst | 20 +++++++++++++++++ tests/test_directive_code.py | 13 +++++++++++ 6 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 tests/roots/test-directive-code/highlight.rst diff --git a/CHANGES b/CHANGES index 9eb401173..21abcc4d9 100644 --- a/CHANGES +++ b/CHANGES @@ -167,6 +167,8 @@ Features added * #1341 the HTML search considers words that contain a search term of length three or longer a match. * #4611: epub: Show warning for duplicated ToC entries +* #1851: Allow to omit an argument for :rst:dir:`code-block` directive. If + omitted, it follows :rst:dir:`highlight` or :confval:`highlight_language` Bugs fixed ---------- diff --git a/doc/usage/restructuredtext/directives.rst b/doc/usage/restructuredtext/directives.rst index 947146dd2..85ee22ae9 100644 --- a/doc/usage/restructuredtext/directives.rst +++ b/doc/usage/restructuredtext/directives.rst @@ -463,7 +463,7 @@ __ http://pygments.org/docs/lexers/ This will produce line numbers for all code blocks longer than five lines. -.. rst:directive:: .. code-block:: language +.. rst:directive:: .. code-block:: [language] Example:: @@ -471,9 +471,11 @@ __ http://pygments.org/docs/lexers/ Some Ruby code. - The directive's alias name :rst:dir:`sourcecode` works as well. As with - :rst:dir:`highlight`\ 's ``language`` option, ``language`` can be any lexer - alias supported by Pygments. + The directive's alias name :rst:dir:`sourcecode` works as well. This + directive takes a language name as an argument. It can be any lexer alias + supported by Pygments. If it is not given, the setting of + :rst:dir:`highlight` directive will be used. If not set, + :confval:`highlight_language` will be used. **Additional options** @@ -533,6 +535,9 @@ __ http://pygments.org/docs/lexers/ .. versionchanged:: 1.6.6 LaTeX supports the ``emphasize-lines`` option. + .. versionchanged:: 2.0 + The ``language`` argument becomes optional. + .. rst:directive:: .. literalinclude:: filename Longer displays of verbatim text may be included by storing the example text diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py index 106d400b9..9ac704c55 100644 --- a/sphinx/directives/code.py +++ b/sphinx/directives/code.py @@ -47,9 +47,11 @@ class Highlight(SphinxDirective): def run(self): # type: () -> List[nodes.Node] + language = self.arguments[0].strip() linenothreshold = self.options.get('linenothreshold', sys.maxsize) - return [addnodes.highlightlang(lang=self.arguments[0].strip(), - linenothreshold=linenothreshold)] + + self.env.temp_data['highlight_language'] = language + return [addnodes.highlightlang(lang=language, linenothreshold=linenothreshold)] class HighlightLang(Highlight): @@ -110,8 +112,8 @@ class CodeBlock(SphinxDirective): """ has_content = True - required_arguments = 1 - optional_arguments = 0 + required_arguments = 0 + optional_arguments = 1 final_argument_whitespace = False option_spec = { 'linenos': directives.flag, @@ -152,10 +154,20 @@ class CodeBlock(SphinxDirective): code = '\n'.join(lines) literal = nodes.literal_block(code, code) # type: nodes.Element - literal['language'] = self.arguments[0] literal['linenos'] = 'linenos' in self.options or \ 'lineno-start' in self.options literal['classes'] += self.options.get('class', []) + if self.arguments: + # highlight language specified + literal['language'] = self.arguments[0] + literal['force_highlighting'] = True + else: + # no highlight language specified. Then this directive refers the current + # highlight setting via ``highlight`` directive or ``highlight_language`` + # configuration. + literal['language'] = self.env.temp_data.get('highlight_language', + self.config.highlight_language) + literal['force_highlighting'] = False extra_args = literal['highlight_args'] = {} if hl_lines is not None: extra_args['hl_lines'] = hl_lines diff --git a/sphinx/transforms/post_transforms/code.py b/sphinx/transforms/post_transforms/code.py index c873dd5bc..fb8533e9c 100644 --- a/sphinx/transforms/post_transforms/code.py +++ b/sphinx/transforms/post_transforms/code.py @@ -89,7 +89,7 @@ class HighlightLanguageVisitor(nodes.NodeVisitor): if 'language' not in node: node['language'] = setting.language node['force_highlighting'] = False - else: + elif 'force_highlighting' not in node: node['force_highlighting'] = True if 'linenos' not in node: lines = node.astext().count('\n') diff --git a/tests/roots/test-directive-code/highlight.rst b/tests/roots/test-directive-code/highlight.rst new file mode 100644 index 000000000..4191b58c4 --- /dev/null +++ b/tests/roots/test-directive-code/highlight.rst @@ -0,0 +1,20 @@ +highlight +--------- + +.. code-block:: + + "A code-block without no language" + +.. code-block:: python2 + + "A code-block with language argument" + +.. highlight:: python3 + +.. code-block:: + + "A code-block without no language after highlight directive" + +.. code-block:: python2 + + "A code-block without language argument after highlight directive" diff --git a/tests/test_directive_code.py b/tests/test_directive_code.py index 6e60d0e9b..8627820b9 100644 --- a/tests/test_directive_code.py +++ b/tests/test_directive_code.py @@ -11,6 +11,7 @@ import os import pytest +from docutils import nodes from sphinx.config import Config from sphinx.directives.code import LiteralIncludeReader @@ -552,3 +553,15 @@ def test_literalinclude_pydecorators(app, status, warning): ' pass\n' ) assert actual == expect + + +@pytest.mark.sphinx('dummy', testroot='directive-code') +def test_code_block_highlighted(app, status, warning): + app.builder.build(['highlight']) + doctree = app.env.get_doctree('highlight') + codeblocks = doctree.traverse(nodes.literal_block) + + assert codeblocks[0]['language'] == 'default' + assert codeblocks[1]['language'] == 'python2' + assert codeblocks[2]['language'] == 'python3' + assert codeblocks[3]['language'] == 'python2' From c4397318d3db4a2db729e98a27666251a1e4b973 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 26 Jan 2019 13:38:42 +0900 Subject: [PATCH 3/5] Separate applehelp to sphinxcontrib package --- CHANGES | 1 + doc/extdev/index.rst | 5 + doc/usage/builders/index.rst | 6 +- setup.py | 1 + sphinx/application.py | 2 +- sphinx/builders/applehelp.py | 262 ++----------------- sphinx/templates/applehelp/_access.html_t | 12 - tests/roots/test-root/conf.py | 3 - tests/roots/test-root/en.lproj/localized.txt | 2 - tests/test_build.py | 2 +- tests/test_build_applehelp.py | 54 ---- 11 files changed, 32 insertions(+), 318 deletions(-) delete mode 100644 sphinx/templates/applehelp/_access.html_t delete mode 100644 tests/roots/test-root/en.lproj/localized.txt delete mode 100644 tests/test_build_applehelp.py diff --git a/CHANGES b/CHANGES index 9eb401173..4cc71bc8c 100644 --- a/CHANGES +++ b/CHANGES @@ -21,6 +21,7 @@ Dependencies * The sphinxcontrib-websupport package is no longer a dependency * Some packages are separated to sub packages: + - sphinxcontrib.applehelp - sphinxcontrib.devhelp - sphinxcontrib.jsmath - sphinxcontrib.qthelp diff --git a/doc/extdev/index.rst b/doc/extdev/index.rst index 56f2e7cee..95564936c 100644 --- a/doc/extdev/index.rst +++ b/doc/extdev/index.rst @@ -275,6 +275,11 @@ The following is a list of deprecated interfaces. - 4.0 - ``docutils.nodes.abbreviation`` + * - ``sphinx.builders.applehelp`` + - 2.0 + - 4.0 + - ``sphinxcontrib.applehelp`` + * - ``sphinx.builders.devhelp`` - 2.0 - 4.0 diff --git a/doc/usage/builders/index.rst b/doc/usage/builders/index.rst index 3d66604a3..5cc6df31c 100644 --- a/doc/usage/builders/index.rst +++ b/doc/usage/builders/index.rst @@ -91,7 +91,7 @@ The builder's "name" must be given to the **-b** command-line option of .. _Qt help: https://doc.qt.io/qt-4.8/qthelp-framework.html -.. module:: sphinx.builders.applehelp +.. module:: sphinxcontrib.applehelp .. class:: AppleHelpBuilder This builder produces an Apple Help Book based on the same output as the @@ -117,6 +117,10 @@ The builder's "name" must be given to the **-b** command-line option of .. versionadded:: 1.3 + .. versionchanged:: 2.0 + + Moved to sphinxcontrib.applehelp from sphinx.builders package. + .. module:: sphinxcontrib.devhelp .. class:: DevhelpBuilder diff --git a/setup.py b/setup.py index 1eb1d6dd3..5b2c38e8c 100644 --- a/setup.py +++ b/setup.py @@ -15,6 +15,7 @@ if sys.version_info < (3, 5): sys.exit(1) install_requires = [ + 'sphinxcontrib-applehelp', 'sphinxcontrib-devhelp', 'sphinxcontrib-jsmath', 'sphinxcontrib-qthelp', diff --git a/sphinx/application.py b/sphinx/application.py index 8565886e6..762b7f89c 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -62,7 +62,6 @@ if False: builtin_extensions = ( 'sphinx.addnodes', - 'sphinx.builders.applehelp', 'sphinx.builders.changes', 'sphinx.builders.epub3', 'sphinx.builders.dummy', @@ -106,6 +105,7 @@ builtin_extensions = ( 'sphinx.environment.collectors.toctree', 'sphinx.environment.collectors.indexentries', # 1st party extensions + 'sphinxcontrib.applehelp', 'sphinxcontrib.devhelp', 'sphinxcontrib.qthelp', # Strictly, alabaster theme is not a builtin extension, diff --git a/sphinx/builders/applehelp.py b/sphinx/builders/applehelp.py index 61535c49d..0ee50ff56 100644 --- a/sphinx/builders/applehelp.py +++ b/sphinx/builders/applehelp.py @@ -8,21 +8,15 @@ :license: BSD, see LICENSE for details. """ -import plistlib -import shlex -import subprocess -from os import path, environ -from subprocess import CalledProcessError, PIPE, STDOUT +import warnings -from sphinx import package_dir -from sphinx.builders.html import StandaloneHTMLBuilder -from sphinx.errors import SphinxError -from sphinx.locale import __ -from sphinx.util import logging -from sphinx.util import SkipProgressMessage, progress_message -from sphinx.util.fileutil import copy_asset, copy_asset_file -from sphinx.util.matching import Matcher -from sphinx.util.osutil import ensuredir, make_filename +from sphinxcontrib.applehelp import ( + AppleHelpCodeSigningFailed, + AppleHelpIndexerFailed, + AppleHelpBuilder, +) + +from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias if False: # For type annotation @@ -30,240 +24,20 @@ if False: from sphinx.application import Sphinx # NOQA -logger = logging.getLogger(__name__) -template_dir = path.join(package_dir, 'templates', 'applehelp') - - -class AppleHelpIndexerFailed(SphinxError): - category = __('Help indexer failed') - - -class AppleHelpCodeSigningFailed(SphinxError): - category = __('Code signing failed') - - -class AppleHelpBuilder(StandaloneHTMLBuilder): - """ - Builder that outputs an Apple help book. Requires Mac OS X as it relies - on the ``hiutil`` command line tool. - """ - name = 'applehelp' - epilog = __('The help book is in %(outdir)s.\n' - 'Note that won\'t be able to view it unless you put it in ' - '~/Library/Documentation/Help or install it in your application ' - 'bundle.') - - # don't copy the reST source - copysource = False - supported_image_types = ['image/png', 'image/gif', 'image/jpeg', - 'image/tiff', 'image/jp2', 'image/svg+xml'] - - # don't add links - add_permalinks = False - - # this is an embedded HTML format - embedded = True - - # don't generate the search index or include the search page - search = False - - def init(self): - # type: () -> None - super().init() - # the output files for HTML help must be .html only - self.out_suffix = '.html' - self.link_suffix = '.html' - - if self.config.applehelp_bundle_id is None: - raise SphinxError(__('You must set applehelp_bundle_id before ' - 'building Apple Help output')) - - self.bundle_path = path.join(self.outdir, - self.config.applehelp_bundle_name + '.help') - self.outdir = path.join(self.bundle_path, - 'Contents', - 'Resources', - self.config.applehelp_locale + '.lproj') - - def handle_finish(self): - # type: () -> None - super().handle_finish() - - self.finish_tasks.add_task(self.copy_localized_files) - self.finish_tasks.add_task(self.build_helpbook) - - @progress_message(__('copying localized files')) - def copy_localized_files(self): - # type: () -> None - source_dir = path.join(self.confdir, self.config.applehelp_locale + '.lproj') - target_dir = self.outdir - - if path.isdir(source_dir): - excluded = Matcher(self.config.exclude_patterns + ['**/.*']) - copy_asset(source_dir, target_dir, excluded, - context=self.globalcontext, renderer=self.templates) - - def build_helpbook(self): - # type: () -> None - contents_dir = path.join(self.bundle_path, 'Contents') - resources_dir = path.join(contents_dir, 'Resources') - language_dir = path.join(resources_dir, - self.config.applehelp_locale + '.lproj') - ensuredir(language_dir) - - self.build_info_plist(contents_dir) - self.copy_applehelp_icon(resources_dir) - self.build_access_page(language_dir) - self.build_helpindex(language_dir) - - if self.config.applehelp_codesign_identity: - self.do_codesign() - - @progress_message(__('writing Info.plist')) - def build_info_plist(self, contents_dir): - # type: (str) -> None - """Construct the Info.plist file.""" - info_plist = { - 'CFBundleDevelopmentRegion': self.config.applehelp_dev_region, - 'CFBundleIdentifier': self.config.applehelp_bundle_id, - 'CFBundleInfoDictionaryVersion': '6.0', - 'CFBundlePackageType': 'BNDL', - 'CFBundleShortVersionString': self.config.release, - 'CFBundleSignature': 'hbwr', - 'CFBundleVersion': self.config.applehelp_bundle_version, - 'HPDBookAccessPath': '_access.html', - 'HPDBookIndexPath': 'search.helpindex', - 'HPDBookTitle': self.config.applehelp_title, - 'HPDBookType': '3', - 'HPDBookUsesExternalViewer': False, - } - - if self.config.applehelp_icon is not None: - info_plist['HPDBookIconPath'] = path.basename(self.config.applehelp_icon) - - if self.config.applehelp_kb_url is not None: - info_plist['HPDBookKBProduct'] = self.config.applehelp_kb_product - info_plist['HPDBookKBURL'] = self.config.applehelp_kb_url - - if self.config.applehelp_remote_url is not None: - info_plist['HPDBookRemoteURL'] = self.config.applehelp_remote_url - - with open(path.join(contents_dir, 'Info.plist'), 'wb') as f: - plistlib.dump(info_plist, f) - - def copy_applehelp_icon(self, resources_dir): - # type: (str) -> None - """Copy the icon, if one is supplied.""" - if self.config.applehelp_icon: - - try: - with progress_message(__('copying icon... ')): - applehelp_icon = path.join(self.srcdir, self.config.applehelp_icon) - copy_asset_file(applehelp_icon, resources_dir) - except Exception as err: - logger.warning(__('cannot copy icon file %r: %s'), applehelp_icon, err) - - @progress_message(__('building access page')) - def build_access_page(self, language_dir): - # type: (str) -> None - """Build the access page.""" - context = { - 'toc': self.config.master_doc + self.out_suffix, - 'title': self.config.applehelp_title, - } - copy_asset_file(path.join(template_dir, '_access.html_t'), language_dir, context) - - @progress_message(__('generating help index')) - def build_helpindex(self, language_dir): - # type: (str) -> None - """Generate the help index.""" - args = [ - self.config.applehelp_indexer_path, - '-Cf', - path.join(language_dir, 'search.helpindex'), - language_dir - ] - - if self.config.applehelp_index_anchors is not None: - args.append('-a') - - if self.config.applehelp_min_term_length is not None: - args += ['-m', '%s' % self.config.applehelp_min_term_length] - - if self.config.applehelp_stopwords is not None: - args += ['-s', self.config.applehelp_stopwords] - - if self.config.applehelp_locale is not None: - args += ['-l', self.config.applehelp_locale] - - if self.config.applehelp_disable_external_tools: - raise SkipProgressMessage(__('you will need to index this help book with:\n %s'), - ' '.join([shlex.quote(arg) for arg in args])) - else: - try: - subprocess.run(args, stdout=PIPE, stderr=STDOUT, check=True) - except OSError: - raise AppleHelpIndexerFailed(__('Command not found: %s') % args[0]) - except CalledProcessError as exc: - raise AppleHelpIndexerFailed(exc.stdout) - - @progress_message(__('signing help book')) - def do_codesign(self): - # type: () -> None - """If we've been asked to, sign the bundle.""" - args = [ - self.config.applehelp_codesign_path, - '-s', self.config.applehelp_codesign_identity, - '-f' - ] - - args += self.config.applehelp_codesign_flags - - args.append(self.bundle_path) - - if self.config.applehelp_disable_external_tools: - raise SkipProgressMessage(__('you will need to sign this help book with:\n %s'), - ' '.join([shlex.quote(arg) for arg in args])) - else: - try: - subprocess.run(args, stdout=PIPE, stderr=STDOUT, check=True) - except OSError: - raise AppleHelpCodeSigningFailed(__('Command not found: %s') % args[0]) - except CalledProcessError as exc: - raise AppleHelpCodeSigningFailed(exc.stdout) +deprecated_alias('sphinx.builders.applehelp', + { + 'AppleHelpCodeSigningFailed': AppleHelpCodeSigningFailed, + 'AppleHelpIndexerFailed': AppleHelpIndexerFailed, + 'AppleHelpBuilder': AppleHelpBuilder, + }, + RemovedInSphinx40Warning) def setup(app): # type: (Sphinx) -> Dict[str, Any] - app.setup_extension('sphinx.builders.html') - app.add_builder(AppleHelpBuilder) - - app.add_config_value('applehelp_bundle_name', - lambda self: make_filename(self.project), 'applehelp') - app.add_config_value('applehelp_bundle_id', None, 'applehelp', [str]) - app.add_config_value('applehelp_dev_region', 'en-us', 'applehelp') - app.add_config_value('applehelp_bundle_version', '1', 'applehelp') - app.add_config_value('applehelp_icon', None, 'applehelp', [str]) - app.add_config_value('applehelp_kb_product', - lambda self: '%s-%s' % (make_filename(self.project), self.release), - 'applehelp') - app.add_config_value('applehelp_kb_url', None, 'applehelp', [str]) - app.add_config_value('applehelp_remote_url', None, 'applehelp', [str]) - app.add_config_value('applehelp_index_anchors', False, 'applehelp', [str]) - app.add_config_value('applehelp_min_term_length', None, 'applehelp', [str]) - app.add_config_value('applehelp_stopwords', - lambda self: self.language or 'en', 'applehelp') - app.add_config_value('applehelp_locale', lambda self: self.language or 'en', 'applehelp') - app.add_config_value('applehelp_title', lambda self: self.project + ' Help', 'applehelp') - app.add_config_value('applehelp_codesign_identity', - lambda self: environ.get('CODE_SIGN_IDENTITY', None), - 'applehelp') - app.add_config_value('applehelp_codesign_flags', - lambda self: shlex.split(environ.get('OTHER_CODE_SIGN_FLAGS', '')), - 'applehelp') - app.add_config_value('applehelp_indexer_path', '/usr/bin/hiutil', 'applehelp') - app.add_config_value('applehelp_codesign_path', '/usr/bin/codesign', 'applehelp') - app.add_config_value('applehelp_disable_external_tools', False, None) + warnings.warn('sphinx.builders.applehelp has been moved to sphinxcontrib-applehelp.', + RemovedInSphinx40Warning) + app.setup_extension('sphinxcontrib.applehelp') return { 'version': 'builtin', diff --git a/sphinx/templates/applehelp/_access.html_t b/sphinx/templates/applehelp/_access.html_t deleted file mode 100644 index aa6b2dcc4..000000000 --- a/sphinx/templates/applehelp/_access.html_t +++ /dev/null @@ -1,12 +0,0 @@ - - - - {{ title|e }} - - - - - - - diff --git a/tests/roots/test-root/conf.py b/tests/roots/test-root/conf.py index 36130dae9..b3cc12ae0 100644 --- a/tests/roots/test-root/conf.py +++ b/tests/roots/test-root/conf.py @@ -40,9 +40,6 @@ html_sidebars = {'**': ['localtoc.html', 'relations.html', 'sourcelink.html', html_last_updated_fmt = '%b %d, %Y' html_context = {'hckey': 'hcval', 'hckey_co': 'wrong_hcval_co'} -applehelp_bundle_id = 'org.sphinx-doc.Sphinx.help' -applehelp_disable_external_tools = True - latex_additional_files = ['svgimg.svg'] coverage_c_path = ['special/*.h'] diff --git a/tests/roots/test-root/en.lproj/localized.txt b/tests/roots/test-root/en.lproj/localized.txt deleted file mode 100644 index 20e1b2b05..000000000 --- a/tests/roots/test-root/en.lproj/localized.txt +++ /dev/null @@ -1,2 +0,0 @@ -This file should be included in the final bundle by the applehelp builder. -It should be ignored by other builders. diff --git a/tests/test_build.py b/tests/test_build.py index 399530ed6..61fb2fed6 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -61,7 +61,7 @@ def nonascii_srcdir(request, rootdir, sphinx_test_tempdir): [ # note: no 'html' - if it's ok with dirhtml it's ok with html 'dirhtml', 'singlehtml', 'pickle', 'json', 'text', 'htmlhelp', - 'applehelp', 'changes', 'xml', 'pseudoxml', 'linkcheck', + 'changes', 'xml', 'pseudoxml', 'linkcheck', ], ) @mock.patch('sphinx.builders.linkcheck.requests.head', diff --git a/tests/test_build_applehelp.py b/tests/test_build_applehelp.py deleted file mode 100644 index b92ac8759..000000000 --- a/tests/test_build_applehelp.py +++ /dev/null @@ -1,54 +0,0 @@ -""" - test_build_applehelp - ~~~~~~~~~~~~~~~~~~~~ - - Test the Apple Help builder and check its output. We don't need to - test the HTML itself; that's already handled by - :file:`test_build_html.py`. - - :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import plistlib - -import pytest - -from sphinx.testing.path import path - - -def check_structure(outdir): - contentsdir = outdir / 'Contents' - assert contentsdir.isdir() - assert (contentsdir / 'Info.plist').isfile() - - with open(contentsdir / 'Info.plist', 'rb') as f: - plist = plistlib.load(f) - assert plist - assert len(plist) - assert plist.get('CFBundleIdentifier', None) == 'org.sphinx-doc.Sphinx.help' - - assert (contentsdir / 'Resources').isdir() - assert (contentsdir / 'Resources' / 'en.lproj').isdir() - - -def check_localization(outdir): - lprojdir = outdir / 'Contents' / 'Resources' / 'en.lproj' - assert (lprojdir / 'localized.txt').isfile() - - -@pytest.mark.sphinx( - 'applehelp', testroot='basic', srcdir='applehelp_output', - confoverrides={'applehelp_bundle_id': 'org.sphinx-doc.Sphinx.help', - 'applehelp_disable_external_tools': True}) -def test_applehelp_output(app, status, warning): - (app.srcdir / 'en.lproj').makedirs() - (app.srcdir / 'en.lproj' / 'localized.txt').write_text('') - app.builder.build_all() - - # Have to use bundle_path, not outdir, because we alter the latter - # to point to the lproj directory so that the HTML arrives in the - # correct location. - bundle_path = path(app.builder.bundle_path) - check_structure(bundle_path) - check_localization(bundle_path) From 08ad2c8143e11dd19cbdf24e34a207950e5f252c Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 26 Jan 2019 16:45:50 +0900 Subject: [PATCH 4/5] refactor: test_build_html.py --- tests/test_build_html.py | 8 ++------ tests/test_build_html5.py | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/tests/test_build_html.py b/tests/test_build_html.py index c600dd7de..91fe933b4 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -10,20 +10,16 @@ import os import re -import xml.etree.cElementTree as ElementTree from itertools import cycle, chain import pytest -from html5lib import getTreeBuilder, HTMLParser +from html5lib import HTMLParser from sphinx.errors import ConfigError from sphinx.testing.util import strip_escseq from sphinx.util.inventory import InventoryFile -TREE_BUILDER = getTreeBuilder('etree', implementation=ElementTree) -HTML_PARSER = HTMLParser(TREE_BUILDER, namespaceHTMLElements=False) - ENV_WARNINGS = """\ %(root)s/autodoc_fodder.py:docstring of autodoc_fodder.MarkupError:\\d+: \ WARNING: Explicit markup ends without a blank line; unexpected unindent. @@ -53,7 +49,7 @@ def cached_etree_parse(): if fname in etree_cache: return etree_cache[fname] with (fname).open('rb') as fp: - etree = HTML_PARSER.parse(fp) + etree = HTMLParser(namespaceHTMLElements=False).parse(fp) etree_cache.clear() etree_cache[fname] = etree return etree diff --git a/tests/test_build_html5.py b/tests/test_build_html5.py index 9c4cdc8a6..dcf0ffcdd 100644 --- a/tests/test_build_html5.py +++ b/tests/test_build_html5.py @@ -14,18 +14,14 @@ """ import re -import xml.etree.cElementTree as ElementTree from hashlib import md5 import pytest -from html5lib import getTreeBuilder, HTMLParser +from html5lib import HTMLParser from test_build_html import flat_dict, tail_check, check_xpath from sphinx.util.docutils import is_html5_writer_available -TREE_BUILDER = getTreeBuilder('etree', implementation=ElementTree) -HTML_PARSER = HTMLParser(TREE_BUILDER, namespaceHTMLElements=False) - etree_cache = {} @@ -37,7 +33,7 @@ def cached_etree_parse(): if fname in etree_cache: return etree_cache[fname] with (fname).open('rb') as fp: - etree = HTML_PARSER.parse(fp) + etree = HTMLParser(namespaceHTMLElements=False).parse(fp) etree_cache.clear() etree_cache[fname] = etree return etree From 87058e67833b8387d9cfd9f11e8aab36f0086a35 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 5 Feb 2019 17:51:13 +0100 Subject: [PATCH 5/5] Remove from test never executed print(result) debugging info --- tests/test_build_latex.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 56cb8f0c6..0cafdadd7 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -1391,15 +1391,9 @@ def test_default_latex_documents(): @skip_if_requested @skip_if_stylefiles_notfound -@pytest.mark.sphinx('latex', testroot='latex-includegraphics', - confoverrides={'latex_documents': [ - ('index', 'python.tex', 'Test PDF build', - 'Georg Brandl', 'howto') - ]}) +@pytest.mark.sphinx('latex', testroot='latex-includegraphics') def test_includegraphics_oversized(app, status, warning): app.builder.build_all() print(status.getvalue()) print(warning.getvalue()) compile_latex_document(app) - result = (app.outdir / 'pdflatex/python-dimensions.txt').text(encoding='utf8') - print(result)