Skip to content
This repository was archived by the owner on Jan 2, 2023. It is now read-only.
This repository was archived by the owner on Jan 2, 2023. It is now read-only.

Support for dataclasses #84

@lgvaz

Description

@lgvaz

When parsing a @dataclass, DocumentationGenerator.generate fails with AttributeError: module 'mantisshrimp.core.bbox' has no attribute '__create_fn__' (full stack trace at the bottom).

What happens is that the __init__ representation from dataclasses is different than for normal classes.

For normal classes we have:

<function DocumentationGenerator.__init__ at 0x104e56710>

While for dataclasses:

<function __create_fn__.<locals>.__init__ at 0x13b3c1290>

If I understood the problem correctly, get_class_from_method is trying to get the name of the class from the representation, but the name of the class is not present in the dataclass __init__.


Traceback (most recent call last):
  File "autogen.py", line 340, in <module>
    generate(mantisshrimp_dir / "docs" / "sources")
  File "autogen.py", line 256, in generate
    doc_generator.generate(dest_dir)
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/autogen.py", line 82, in generate
    markdown_text += self._render(element)
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/autogen.py", line 109, in _render
    return self._render_from_object(object_, signature_override)
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/autogen.py", line 116, in _render_from_object
    object_, signature_override, self.max_signature_line_length
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/get_signatures.py", line 51, in get_signature
    return get_class_signature(object_, override, max_line_length)
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/get_signatures.py", line 45, in get_class_signature
    signature_end = get_signature_end(cls.__init__)
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/get_signatures.py", line 25, in get_signature_end
    if utils.ismethod(function):
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/utils.py", line 80, in ismethod
    return get_class_from_method(function) is not None
  File "/Users/lgvaz/anaconda3/envs/mantis/lib/python3.7/site-packages/keras_autodoc/utils.py", line 73, in get_class_from_method
    meth.__qualname__.split('.<locals>', 1)[0].rsplit('.', 1)[0])

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