Skip to content

Commit e52f063

Browse files
nmusolinojreback
authored andcommitted
Fix minor error in dynamic load function (#25256)
1 parent 42a6246 commit e52f063

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

scripts/tests/test_validate_docstrings.py

+28
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import textwrap
55
import pytest
66
import numpy as np
7+
import pandas as pd
8+
79
import validate_docstrings
810
validate_one = validate_docstrings.validate_one
911

@@ -1004,6 +1006,32 @@ def test_item_subsection(self, idx, subsection):
10041006
assert result[idx][3] == subsection
10051007

10061008

1009+
class TestDocstringClass(object):
1010+
@pytest.mark.parametrize('name, expected_obj',
1011+
[('pandas.isnull', pd.isnull),
1012+
('pandas.DataFrame', pd.DataFrame),
1013+
('pandas.Series.sum', pd.Series.sum)])
1014+
def test_resolves_class_name(self, name, expected_obj):
1015+
d = validate_docstrings.Docstring(name)
1016+
assert d.obj is expected_obj
1017+
1018+
@pytest.mark.parametrize('invalid_name', ['panda', 'panda.DataFrame'])
1019+
def test_raises_for_invalid_module_name(self, invalid_name):
1020+
msg = 'No module can be imported from "{}"'.format(invalid_name)
1021+
with pytest.raises(ImportError, match=msg):
1022+
validate_docstrings.Docstring(invalid_name)
1023+
1024+
@pytest.mark.parametrize('invalid_name',
1025+
['pandas.BadClassName',
1026+
'pandas.Series.bad_method_name'])
1027+
def test_raises_for_invalid_attribute_name(self, invalid_name):
1028+
name_components = invalid_name.split('.')
1029+
obj_name, invalid_attr_name = name_components[-2], name_components[-1]
1030+
msg = "'{}' has no attribute '{}'".format(obj_name, invalid_attr_name)
1031+
with pytest.raises(AttributeError, match=msg):
1032+
validate_docstrings.Docstring(invalid_name)
1033+
1034+
10071035
class TestMainFunction(object):
10081036
def test_exit_status_for_validate_one(self, monkeypatch):
10091037
monkeypatch.setattr(

scripts/validate_docstrings.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ def _load_obj(name):
267267
else:
268268
continue
269269

270-
if 'module' not in locals():
270+
if 'obj' not in locals():
271271
raise ImportError('No module can be imported '
272272
'from "{}"'.format(name))
273273

0 commit comments

Comments
 (0)