Hi all! On Mon, Oct 26, 2020 at 03:45:54PM +0200, Adrian Bunk wrote: > The error is "FTBFS with Sphinx 3.2". > Sphinx 3.2 entered unstable on August 9th. > > Dmitry (Cc'ed) might know more regarding what is the problem.
Let me explain what happens here:
- Sphinx' inspect module is capable of fetching the docstrings for parent
classes when the child class does not have its own.
- To do that, it checks the __mro__ property that is defined for classes
(and contains the tuple of parent classes).
- The top-level intake module (intake/__init__.py) defines a very generic
__getattr__ function, which is defined this way:
def __getattr__(attr):
if attr == 'Catalog':
...
If attr != 'Catalog', this function does not raise AttributeError exception
(and returns None).
So basically, that module has *every* possible attribute, including one
named "__mro__" (and that attribute is None).
- Sphinx tries to iterate through __mro__ (because it expects it to be a
tuple) but fails (because it's None, not a tuple).
To fix this, __getattr__('__mro__') should raise an AttributeError, not return
None.
So you can either:
- Remove that function completely (it is provided for compatibility reasons).
- Update to a newer upstream snapshot where that function is refactored and
does raise AttributeError (see https://github.com/intake/intake/pull/526).
- Add these two lines as a temporary measure:
elif attr == '__mro__':
raise AttributeError
--
Dmitry Shachnev
signature.asc
Description: PGP signature

