Skip to content

Error in nbdev_readme due to potential bug in _non_empty_keys(d: dict) #1322

@nikolas-claussen

Description

@nikolas-claussen

I got an error when running nbdev_readme. Traceback:

concurrent.futures.process._RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/IPython/core/formatters.py", line 221, in catch_format_error
    r = method(self, *args, **kwargs)
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/IPython/core/formatters.py", line 342, in __call__
    return method()
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/nbdev/showdoc.py", line 175, in _repr_markdown_
    if self.dm.has_docment: doc += f"\n\n{self.dm}"
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/nbdev/showdoc.py", line 64, in has_docment
    def has_docment(self): return 'docment' in self._columns and self._row_list
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/nbdev/showdoc.py", line 59, in _columns
    cols = set(flatten(L(self.dm.values()).filter().map(_non_empty_keys)))
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/fastcore/foundation.py", line 156, in map
    def map(self, f, *args, gen=False, **kwargs): return self._new(map_ex(self, f, *args, gen=gen, **kwargs))
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/fastcore/basics.py", line 840, in map_ex
    return list(res)
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/fastcore/basics.py", line 825, in __call__
    return self.func(*fargs, **kwargs)
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/nbdev/showdoc.py", line 23, in _non_empty_keys
    def _non_empty_keys(d:dict): return L([k for k,v in d.items() if v != inspect._empty])
  File "/home/nikolas/Programs/miniconda3/lib/python3.9/site-packages/nbdev/showdoc.py", line 23, in <listcomp>
    def _non_empty_keys(d:dict): return L([k for k,v in d.items() if v != inspect._empty])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Fixed this as follows:
In nbs/api/08_showdoc.ipynb,
modify the function _non_empty_keys to

def _non_empty_keys(d:dict): return L([k for k,v in d.items() if all(v != inspect._empty)])

nbdev_readme then works and creates the correct output.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions