Re: [PATCH v2] Documentation/sphinx: Fix Directive import error

From: Matthew Wilcox
Date: Fri Mar 02 2018 - 13:28:43 EST


On Fri, Mar 02, 2018 at 08:42:54AM -0800, Matthew Wilcox wrote:
> On Fri, Mar 02, 2018 at 06:01:50PM +0200, Jani Nikula wrote:
> > On Fri, 02 Mar 2018, Takashi Iwai <tiwai@xxxxxxx> wrote:
> > > The sphinx.util.compat for Directive stuff was deprecated in the
> > > recent Sphinx version, and now we get a build error.
> > >
> > > Let's import from the new place, docutils.parsers.rst, while keeping
> > > the old sphinx.util.compat as fallback.
> > >
> > > Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
> > > Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
> > > ---
> > > v1->v2: Change the fallback order as Matthew suggested, the new one at first
> >
> > So this crossed my mind as well... and then I thought it'll probably
> > succeed on older Sphinx, and the fallback is not needed. The question
> > is, are these equal? Can we just import from docutils.parsers.rst?
>
> I found a github page which implies that docutils.parsers.rst.Directive
> was added 12 years ago (!) so we're probably safe to rely on it:
>
> https://github.com/docutils-mirror/docutils/commit/9649abee47b4ce4db51be1d90fcb1fb500fa78b3
>
> Again, I'm no pythonista, so I may have muddled this.

I spent some time delving through the Sphinx codebase. The compat
version was added so you could use Directive with docutils 0.4 onwards.
docutils 0.5 onwards has Directive. So as long as we're comfortable
mandating docutils from 2009, we're fine ;-)