Re: Split docscrape out from numpydoc
Ross Barnowski via NumPy-Discussion <[email protected]> Tue, 21 Apr 2026 08:44:51 -0700
| Newsgroups | gmane.comp.python.numeric.general |
|---|---|
| Message-ID | <CADyYXuoWA=padBAQpW0rT4hiuWwzspuEcYTfQRU+wqiZHkFX0g@mail.gmail.com> |
--===============5195350774449907397== Content-Type: multipart/alternative; boundary="000000000000742170064ffa4c83" --000000000000742170064ffa4c83 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > That sounds great! I=E2=80=99m still not sure if SciPy will want to add a= runtime dependency on numpydoc, since we only have `numpy` at the minut IIUC you'll be adding a dependency either way, whether it's `numpydoc` or some vendored library that encapsulates just the getdocobject/NumpyDocString (I'd vote for `numpydoc-parser` as the name for this potential sub-library). > Might it still make sense to split docscrape out into a separate repo after your work is done, or do you see those as two orthogonal efforts? No I don't think they're necessarily orthogonal. Nearly all of the complexity associated with numpydoc stems from the sphinx/validation interfaces. The bits actually dedicated to the docstring parsing are much more straightforward. Splitting this into a separate library slightly complicates the numpydoc maintenance/release process, but given how infrequently the parsing code actually changes I wouldn't expect the pinning of `numpydoc-parser` within the `numpydoc` sphinx extension to be a prohibitive burden. I'm not against it, but nor am I involved in the numpydoc release process - other numpydoc mainters' opinions are much more valuable here! >From a downstream library standpoint, the practical differences between a dependency-less numpydoc and a separate numpydoc library should be minimal; however, if that's a blocker for scipy then it's a stronger motivation for splitting things up IMV! ~Ross On Mon, Apr 20, 2026 at 12:52=E2=80=AFPM Lucas Colley <lucas.colley8@gmail.= com> wrote: > Hi Ross, > > That sounds great! I=E2=80=99m still not sure if SciPy will want to add a= runtime > dependency on numpydoc, since we only have `numpy` at the minute=E2=80=A6= but this > is at least a step in the right direction! > > Might it still make sense to split docscrape out into a separate repo > after your work is done, or do you see those as two orthogonal efforts? > > Cheers, > Lucas > > On 20 Apr 2026, at 17:16, Ross Barnowski <[email protected]> wrote: > > =EF=BB=BF > Hi Lucas, > > Indeed I think this is a good idea - SciPy is not the only project that > depends (or would like to have depended) on the NumpyDocString and > docscrape functionality without pulling in Sphinx (or any other dependenc= y). > > One solution is to refactor numpydoc to fix the dependency footprint - > i.e. make sphinx a soft dependency. That work is mostly complete in > [numpy/numpydoc#651](https://github.com/numpy/numpydoc/pull/651). There > are a few final integration tests (see checkboxes in the top post in the > PR) that I'd like to run to build confidence that the solution works for > everyone. That should include replacing the vendored code in scipy. > > Does this solution work for scipy? > > On Mon, Apr 20, 2026 at 5:06=E2=80=AFAM Lucas Colley via NumPy-Discussion= < > [email protected]> wrote: > >> Hi all, >> >> A while ago I proposed splitting docscrape out from the numpydoc repo: >> https://github.com/numpy/numpydoc/issues/619. >> >> Why? SciPy has a copy of the docscrape source which is used to generate >> some docstrings for the public API. Copying source code like this is nev= er >> great given that the two copies can fall out of sync. Vendoring the enti= re >> numpydoc repo in SciPy, however, or adding numpydoc as a runtime >> dependency, seem off the table, making the situation worse rather than >> better. >> >> A better solution seems to be to have docscrape be a standalone project, >> which SciPy can vendor more easily, and which numpydoc can either depend= on >> or vendor. From a modularity perspective at least this seems ideal =E2= =80=94 there >> are use-cases where you want docscrape, but not numpydoc, available at >> runtime. Joren suggested that I float this idea on the mailing list, giv= en >> that he just submitted a patch to the copy in SciPy without realising th= at >> it was vendored code =F0=9F=98=84. >> >> What I don't know is whether this would negatively impact maintenance >> burden etc.? I assume there will be a bit of upfront cost in restructuri= ng >> the repos, and a little more if we decide to distribute docscrape as a >> standalone project, but my hope would be that this wouldn't cause any >> problems long-term? >> >> An alternative solution would be to extract the docscrape source from th= e >> numpydoc repo in a vendoring script in SciPy. While okay, that still lea= ves >> us having to track commits by hand instead of using e.g. a git submodule= , >> and isn't robust to upstream changes of directory structure. >> >> Feedback appreciated! Eric Larson responded on the PR asking whether >> SciPy can introduce a dependency on numpydoc, but that is all so far. >> >> Cheers, >> Lucas >> _______________________________________________ >> NumPy-Discussion mailing list -- [email protected] >> To unsubscribe send an email to [email protected] >> https://mail.python.org/mailman3//lists/numpy-discussion.python.org >> Member address: [email protected] >> > --000000000000742170064ffa4c83 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>>=C2=A0<span class=3D"gmail-im">That sounds great!= I=E2=80=99m still not sure if SciPy will=20 want to add a runtime dependency on numpydoc, since we only have `numpy` at the minut</span></div><div><span class=3D"gmail-im"><br></span></div><d= iv><span class=3D"gmail-im">IIUC you'll be adding a dependency either w= ay, whether it's `numpydoc` or some vendored library that encapsulates = just the getdocobject/NumpyDocString (I'd vote for `numpydoc-parser` as= the name for this potential sub-library).</span></div><div><span class=3D"= gmail-im"><br></span></div><div><span class=3D"gmail-im">>=C2=A0</span><= span class=3D"gmail-im">Might it still make sense to split docscrape out in= to a separate repo after your work is done, or do you see those as two=20 orthogonal efforts?</span></div><div><span class=3D"gmail-im"><br></span></= div><div><span class=3D"gmail-im">No I don't think they're necessar= ily orthogonal. Nearly all of the complexity associated with numpydoc stems= from the sphinx/validation interfaces. The bits actually dedicated to the = docstring parsing are much more straightforward. Splitting this into a sepa= rate library slightly complicates the numpydoc maintenance/release process,= but given how infrequently the parsing code actually changes I wouldn'= t expect the pinning of `numpydoc-parser` within the `numpydoc` sphinx exte= nsion to be a prohibitive burden. I'm not against it, but nor am I invo= lved in the numpydoc release process - other numpydoc mainters' opinion= s are much more valuable here!</span></div><div><span class=3D"gmail-im"><b= r></span></div><div>From a downstream library standpoint, the practical dif= ferences between a dependency-less numpydoc and a separate numpydoc library= should be minimal; however, if that's a blocker for scipy then it'= s a stronger motivation for splitting things up IMV!</div><div><br></div><d= iv>~Ross</div></div><br><div class=3D"gmail_quote gmail_quote_container"><d= iv dir=3D"ltr" class=3D"gmail_attr">On Mon, Apr 20, 2026 at 12:52=E2=80=AFP= M Lucas Colley <<a href=3D"mailto:[email protected]">lucas.colley8= @gmail.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex"><div dir=3D"auto"><div dir=3D"ltr"></div><div dir=3D"ltr"><div d= ir=3D"ltr">Hi Ross,</div><div dir=3D"ltr"><br></div><div dir=3D"ltr">That s= ounds great! I=E2=80=99m still not sure if SciPy will want to add a runtime= dependency on numpydoc, since we only have `numpy` at the minute=E2=80=A6 = but this is at least a step in the right direction!</div><div dir=3D"ltr"><= br></div><div dir=3D"ltr">Might it still make sense to split docscrape out = into a separate repo after your work is done, or do you see those as two or= thogonal efforts?</div><div dir=3D"ltr"><br></div><div dir=3D"ltr">Cheers,<= /div><div dir=3D"ltr">Lucas</div></div><div dir=3D"ltr"><br><blockquote typ= e=3D"cite">On 20 Apr 2026, at 17:16, Ross Barnowski <<a href=3D"mailto:r= [email protected]" target=3D"_blank">[email protected]</a>> wrote:<br= ><br></blockquote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB= =BF<div dir=3D"ltr"><div>Hi Lucas,</div><div><br></div><div>Indeed I think = this is a good idea - SciPy is not the only project that depends (or would = like to have depended) on the NumpyDocString and docscrape functionality wi= thout pulling in Sphinx (or any other dependency).</div><div><br></div><div= >One solution is to refactor numpydoc to fix the dependency footprint - i.e= . make sphinx a soft dependency. That work is mostly complete in [numpy/num= pydoc#651](<a href=3D"https://github.com/numpy/numpydoc/pull/651" target=3D= "_blank">https://github.com/numpy/numpydoc/pull/651</a>). There are a few f= inal integration tests (see checkboxes in the top post in the PR) that I= 9;d like to run to build confidence that the solution works for everyone. T= hat should include replacing the vendored code in scipy.</div><div><br></di= v><div>Does this solution work for scipy?=C2=A0</div></div><br><div class= =3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Apr 20, 2026= at 5:06=E2=80=AFAM Lucas Colley via NumPy-Discussion <<a href=3D"mailto= :[email protected]" target=3D"_blank">[email protected]= </a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:= 0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">= Hi all,<br> <br> A while ago I proposed splitting docscrape out from the numpydoc repo: <a h= ref=3D"https://github.com/numpy/numpydoc/issues/619" rel=3D"noreferrer" tar= get=3D"_blank">https://github.com/numpy/numpydoc/issues/619</a>.<br> <br> Why? SciPy has a copy of the docscrape source which is used to generate som= e docstrings for the public API. Copying source code like this is never gre= at given that the two copies can fall out of sync. Vendoring the entire num= pydoc repo in SciPy, however, or adding numpydoc as a runtime dependency, s= eem off the table, making the situation worse rather than better.<br> <br> A better solution seems to be to have docscrape be a standalone project, wh= ich SciPy can vendor more easily, and which numpydoc can either depend on o= r vendor. From a modularity perspective at least this seems ideal =E2=80=94= there are use-cases where you want docscrape, but not numpydoc, available = at runtime. Joren suggested that I float this idea on the mailing list, giv= en that he just submitted a patch to the copy in SciPy without realising th= at it was vendored code =F0=9F=98=84.<br> <br> What I don't know is whether this would negatively impact maintenance b= urden etc.? I assume there will be a bit of upfront cost in restructuring t= he repos, and a little more if we decide to distribute docscrape as a stand= alone project, but my hope would be that this wouldn't cause any proble= ms long-term?<br> <br> An alternative solution would be to extract the docscrape source from the n= umpydoc repo in a vendoring script in SciPy. While okay, that still leaves = us having to track commits by hand instead of using e.g. a git submodule, a= nd isn't robust to upstream changes of directory structure.<br> <br> Feedback appreciated! Eric Larson responded on the PR asking whether SciPy = can introduce a dependency on numpydoc, but that is all so far.<br> <br> Cheers,<br> Lucas<br> _______________________________________________<br> NumPy-Discussion mailing list -- <a href=3D"mailto:numpy-discussion@python.= org" target=3D"_blank">[email protected]</a><br> To unsubscribe send an email to <a href=3D"mailto:numpy-discussion-leave@py= thon.org" target=3D"_blank">[email protected]</a><br> <a href=3D"https://mail.python.org/mailman3//lists/numpy-discussion.python.= org" rel=3D"noreferrer" target=3D"_blank">https://mail.python.org/mailman3/= /lists/numpy-discussion.python.org</a><br> Member address: <a href=3D"mailto:[email protected]" target=3D"_blank">r= [email protected]</a><br> </blockquote></div> </div></blockquote></div></blockquote></div> --000000000000742170064ffa4c83-- --===============5195350774449907397== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ NumPy-Discussion mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/numpy-discussion.python.org Member address: [email protected] --===============5195350774449907397==--