Skip to content

Commit ae20cb6

Browse files
committed
Merge main into branch
2 parents 36281d4 + f81e9c3 commit ae20cb6

File tree

2 files changed

+42
-26
lines changed

2 files changed

+42
-26
lines changed

docstring.py

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,38 @@
55
import re
66

77

8-
def get_docstring_args(docstring):
8+
def get_docstring_args(fd):
99
"""
10-
Extract parameter arguments from docstring
10+
Extract docstring parameters from function definition
1111
"""
12+
docstring = ast.get_docstring(fd)
1213
args = re.findall(r"(\w+)\s+\:", docstring)
13-
args = [a for a in args if a != "self"]
14+
args = set([a for a in args])
1415
return args
1516

1617

18+
def get_signature_args(fd):
19+
"""
20+
Extract signature arguments from function definition
21+
"""
22+
return set([a.arg for a in fd.args.args if a.arg != "self"])
23+
24+
25+
def check_args(doc_args, sig_args, file_name, func_name, class_name=None):
26+
"""
27+
Compare docstring arguments and signature argments
28+
"""
29+
diff_args = signature_args.difference(docstring_args)
30+
if len(diff_args) > 0:
31+
msg = "Found one or more arguments/parameters with missing docstring in \n"
32+
msg += f"file: {file_name}\n"
33+
if class_name is not None:
34+
msg += f"class: {class_name}\n"
35+
msg += f"function/method: {func_name}\n"
36+
msg += f"parameter(s): {diff_args}\n"
37+
raise RuntimeError(msg)
38+
39+
1740
ignore = ["__init__.py", "__pycache__"]
1841

1942
stumpy_path = pathlib.Path(__file__).parent / "stumpy"
@@ -30,17 +53,9 @@ def get_docstring_args(docstring):
3053
node for node in module.body if isinstance(node, ast.FunctionDef)
3154
]
3255
for fd in function_definitions:
33-
docstring_args = set(get_docstring_args(ast.get_docstring(fd)))
34-
signature_args = set([a.arg for a in fd.args.args])
35-
diff_args = signature_args.difference(docstring_args)
36-
if len(diff_args) > 0:
37-
print("Found one or more parameters with missing docstring:")
38-
print(f" File: {filepath.name}")
39-
print(f" Function: {fd.name}")
40-
print(f" Parameters: {diff_args}")
41-
# print(ast.get_docstring(fd))
42-
# print(docstring_args)
43-
# print(signature_args)
56+
docstring_args = get_docstring_args(fd)
57+
signature_args = get_signature_args(fd)
58+
check_args(docstring_args, signature_args, filepath.name, fd.name)
4459

4560
# Check Class Methods
4661
class_definitions = [
@@ -49,15 +64,8 @@ def get_docstring_args(docstring):
4964
for cd in class_definitions:
5065
methods = [node for node in cd.body if isinstance(node, ast.FunctionDef)]
5166
for fd in methods:
52-
docstring_args = set(get_docstring_args(ast.get_docstring(fd)))
53-
signature_args = set([a.arg for a in fd.args.args if a.arg != "self"])
54-
diff_args = signature_args.difference(docstring_args)
55-
if len(diff_args) > 0:
56-
print("Found one or more parameters with missing docstring:")
57-
print(f" File: {filepath.name}")
58-
print(f" Class: {cd.name}")
59-
print(f" Method: {fd.name}")
60-
print(f" Parameters: {diff_args}")
61-
# print(ast.get_docstring(fd))
62-
# print(docstring_args)
63-
# print(signature_args)
67+
docstring_args = get_docstring_args(fd)
68+
signature_args = get_signature_args(fd)
69+
check_args(
70+
docstring_args, signature_args, filepath.name, fd.name, cd.name
71+
)

test.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ check_black()
4848
check_errs $?
4949
}
5050

51+
check_docstrings()
52+
{
53+
echo "Checking Missing Docstrings"
54+
./docstring.py
55+
check_errs $?
56+
}
57+
5158
check_flake()
5259
{
5360
echo "Checking Flake8 Style Guide Enforcement"
@@ -225,6 +232,7 @@ clean_up()
225232
clean_up
226233
check_black
227234
check_flake
235+
check_docstrings
228236
check_print
229237
check_naive
230238

0 commit comments

Comments
 (0)