Skip to content
This repository has been archived by the owner on Nov 23, 2024. It is now read-only.

Commit

Permalink
feat: store full_docstring of classes and functions again (#87)
Browse files Browse the repository at this point in the history
Closes #83.

### Summary of Changes

Store the full docstring of classes and functions again in the created
docstring. This was removed in #82.
  • Loading branch information
lars-reimann authored Apr 3, 2023
1 parent 1fdab33 commit a28393b
Show file tree
Hide file tree
Showing 17 changed files with 134 additions and 95 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,18 @@ def get_class_documentation(self, class_node: astroid.ClassDef) -> ClassDocument
docstring = get_full_docstring(class_node)
docstring_obj = parse_docstring(docstring, style=DocstringStyle.EPYDOC)

return ClassDocumentation(description=get_description(docstring_obj))
return ClassDocumentation(
description=get_description(docstring_obj),
full_docstring=docstring,
)

def get_function_documentation(self, function_node: astroid.FunctionDef) -> FunctionDocumentation:
docstring = get_full_docstring(function_node)
docstring_obj = self.__get_cached_function_numpydoc_string(function_node, docstring)

return FunctionDocumentation(
description=get_description(self.__get_cached_function_numpydoc_string(function_node, docstring)),
description=get_description(docstring_obj),
full_docstring=docstring,
)

def get_parameter_documentation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,19 @@ def get_class_documentation(self, class_node: astroid.ClassDef) -> ClassDocument
docstring = get_full_docstring(class_node)
docstring_obj = parse_docstring(docstring, style=DocstringStyle.NUMPYDOC)

return ClassDocumentation(description=get_description(docstring_obj))
return ClassDocumentation(
description=get_description(docstring_obj),
full_docstring=docstring,
)

def get_function_documentation(self, function_node: astroid.FunctionDef) -> FunctionDocumentation:
docstring = get_full_docstring(function_node)
docstring_obj = self.__get_cached_function_numpydoc_string(function_node, docstring)

return FunctionDocumentation(description=get_description(docstring_obj))
return FunctionDocumentation(
description=get_description(docstring_obj),
full_docstring=docstring,
)

def get_parameter_documentation(
self,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,19 @@ class PlaintextDocstringParser(AbstractDocstringParser):
"""Parses documentation in any format. Should not be used if there is another parser for the specific format."""

def get_class_documentation(self, class_node: astroid.ClassDef) -> ClassDocumentation:
docstring = get_full_docstring(class_node)

return ClassDocumentation(
description=get_full_docstring(class_node),
description=docstring,
full_docstring=docstring,
)

def get_function_documentation(self, function_node: astroid.FunctionDef) -> FunctionDocumentation:
docstring = get_full_docstring(function_node)

return FunctionDocumentation(
description=get_full_docstring(function_node),
description=docstring,
full_docstring=docstring,
)

def get_parameter_documentation(
Expand Down
2 changes: 2 additions & 0 deletions src/library_analyzer/processing/api/model/_documentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
@dataclass(frozen=True)
class ClassDocumentation:
description: str = ""
full_docstring: str = ""

@staticmethod
def from_dict(d: dict) -> ClassDocumentation:
Expand All @@ -19,6 +20,7 @@ def to_dict(self) -> dict:
@dataclass(frozen=True)
class FunctionDocumentation:
description: str = ""
full_docstring: str = ""

@staticmethod
def from_dict(d: dict) -> FunctionDocumentation:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,15 @@ class C:
class_with_documentation,
ClassDocumentation(
description="Lorem ipsum. Code::\n\npass\n\nDolor sit amet.",
full_docstring="Lorem ipsum. Code::\n\n pass\n\nDolor sit amet.",
),
),
(
class_without_documentation,
ClassDocumentation(description=""),
ClassDocumentation(
description="",
full_docstring="",
),
),
],
ids=[
Expand Down Expand Up @@ -87,11 +91,17 @@ def f():
[
(
function_with_documentation,
FunctionDocumentation(description="Lorem ipsum. Code::\n\npass\n\nDolor sit amet."),
FunctionDocumentation(
description="Lorem ipsum. Code::\n\npass\n\nDolor sit amet.",
full_docstring="Lorem ipsum. Code::\n\n pass\n\nDolor sit amet.",
),
),
(
function_without_documentation,
FunctionDocumentation(description=""),
FunctionDocumentation(
description="",
full_docstring="",
),
),
],
ids=[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,15 @@ class C:
class_with_documentation,
ClassDocumentation(
description="Lorem ipsum. Code::\n\npass\n\nDolor sit amet.",
full_docstring="Lorem ipsum. Code::\n\n pass\n\nDolor sit amet.",
),
),
(
class_without_documentation,
ClassDocumentation(description=""),
ClassDocumentation(
description="",
full_docstring="",
),
),
],
ids=[
Expand Down Expand Up @@ -87,6 +91,7 @@ def f():
function_with_documentation,
FunctionDocumentation(
description="Lorem ipsum. Code::\n\npass\n\nDolor sit amet.",
full_docstring="Lorem ipsum. Code::\n\n pass\n\nDolor sit amet.",
),
),
(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,15 @@ class C:
class_with_documentation,
ClassDocumentation(
description="Lorem ipsum.\n\nDolor sit amet.",
full_docstring="Lorem ipsum.\n\nDolor sit amet.",
),
),
(
class_without_documentation,
ClassDocumentation(description=""),
ClassDocumentation(
description="",
full_docstring="",
),
),
],
ids=[
Expand Down Expand Up @@ -88,6 +92,7 @@ def f(p: int):
function_with_documentation,
FunctionDocumentation(
description="Lorem ipsum.\n\nDolor sit amet.",
full_docstring="Lorem ipsum.\n\nDolor sit amet.",
),
),
(
Expand Down
2 changes: 1 addition & 1 deletion tests/library_analyzer/processing/api/model/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ def test_cut_documentation_from_code(code: str, expected_code: str) -> None:
results=[],
is_public=True,
reexported_by=[],
documentation=FunctionDocumentation(""),
documentation=FunctionDocumentation(),
code=code,
)
assert api_element.get_formatted_code(cut_documentation=True) == expected_code + "\n"
Loading

0 comments on commit a28393b

Please sign in to comment.