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

From: Jonathan Corbet
Date: Thu Sep 24 2020 - 12:22:31 EST


On Thu, 24 Sep 2020 18:13:54 +0200
Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> wrote:

> > 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.

Assignments within functions are *always* local unless declared global.

Try this:

$ python3
>>> x = 0
>>> def y(v):
>>> x = v
>>>
>>> y(1)
>>> x
0
>>>

So your assignment to "namespace" in markup_namespace() cannot change the
global, since it's not declared global.

jon