Skip to content

Commit 08095e9

Browse files
committed
ENH: added api_rst_coverage.py
1 parent 2ca6fd8 commit 08095e9

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

scripts/api_rst_coverage.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import pandas as pd
2+
import inspect
3+
import re
4+
5+
def main():
6+
7+
# classes whose members to check
8+
classes = [pd.Series, pd.DataFrame, pd.Panel, pd.Panel4D]
9+
10+
def class_name(cls):
11+
return str(cls).rsplit('.')[-1][:-2]
12+
13+
def class_name_sort_key(x):
14+
if x.startswith('Series'):
15+
# make sure Series precedes DataFrame, Panel, and Panel4D
16+
return ' ' + x
17+
else:
18+
return x
19+
20+
# class members
21+
class_members = set()
22+
for cls in classes:
23+
class_members.update([class_name(cls) + '.' + x[0] for x in inspect.getmembers(cls)])
24+
25+
# class members referenced in api.rst
26+
api_rst_members = set()
27+
file_name = '../doc/source/api.rst'
28+
with open(file_name, 'r') as f:
29+
for line in f:
30+
match = re.search('({})\.(\w+)'.format('|'.join([class_name(cls) for cls in classes])), line)
31+
if match:
32+
api_rst_members.add(match.group(0))
33+
34+
print()
35+
print("Class members in api.rst that aren't actual members:")
36+
for x in sorted(api_rst_members.difference(class_members), key=class_name_sort_key):
37+
print(x)
38+
39+
print()
40+
print("Class members (other than those beginning with '_') missing from api.rst:")
41+
for x in sorted(class_members.difference(api_rst_members), key=class_name_sort_key):
42+
if '._' not in x:
43+
print(x)
44+
45+
if __name__ == "__main__":
46+
main()

0 commit comments

Comments
 (0)