Re: [PATCH 1/2] docs: cdomain.py: add support for two new Sphinx 3.1+ tags

From: Mauro Carvalho Chehab
Date: Thu Sep 24 2020 - 12:14:01 EST


Em Thu, 24 Sep 2020 09:43:35 -0600
Jonathan Corbet <corbet@xxxxxxx> escreveu:

> So I'm just getting into this and trying to understand what's really going
> on, but one thing jumped at me:
>
> On Thu, 24 Sep 2020 13:22:04 +0200
> Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> wrote:
>
> > +# Namespace to be prepended to the full name
> > +namespace = None

^^^ See here....

> > +
> > +#
> > +# Handle trivial newer c domain tags that are part of Sphinx 3.1 c domain tags
> > +# - Convert :c:expr:`foo` into ``foo``
> > +# - Store the namespace if ".. c:namespace::" tag is found
> > +
> > +RE_namespace = re.compile(r'^\s*..\s*c:namespace::\s*(\S+)\s*$')
> > +RE_expr = re.compile(r':c:expr:`([^\`]+)`')
> > +
> > +def markup_namespace(match):
> > + namespace = match.group(1)
> > +
> > + return ""
> > +
>
> How can this possibly work without a "global namespace" declaration in
> markup_namespace()?

... While I'm not a python expert, the namespace variable is global
because it was defined outside the "markup_namespace" function.

-

On a quick check at the internet, this is supposed to work properly:

https://www.programiz.com/python-programming/global-local-nonlocal-variables

-

In any cases, on my tests, this is working properly.

Anyway, I'm sending a version 2 of the series, addressing the
namespace for the remaining files under userspace-api/media.

You can try building the media books without and with the
patch series, in order to see the differences.

There are still ~200 warnings produced after that, but it
sounds that the remaining issues will require changes at
kernel-doc.


Thanks,
Mauro