175 lines
3.2 KiB
Python
175 lines
3.2 KiB
Python
import pytest
|
|
|
|
from statsmodels.tools.docstring import Docstring, remove_parameters, Parameter
|
|
|
|
good = """
|
|
This is the summary.
|
|
|
|
This is the extended summary.
|
|
|
|
Parameters
|
|
----------
|
|
x : int
|
|
The first parameter.
|
|
y : float
|
|
The second parameter.
|
|
z : {int, float, None}
|
|
The final parameter.
|
|
|
|
Returns
|
|
-------
|
|
float
|
|
Some floating point value.
|
|
|
|
See Also
|
|
--------
|
|
statsmodels.api
|
|
The main API location.
|
|
|
|
Notes
|
|
-----
|
|
This is where the notes go.
|
|
|
|
.. index: default
|
|
:refguide: something, else, and more
|
|
|
|
References
|
|
----------
|
|
.. [*] Reference 1 here
|
|
|
|
Examples
|
|
--------
|
|
Using the API is simple
|
|
|
|
>>> import statsmodels.api
|
|
"""
|
|
|
|
bad = """
|
|
Returns
|
|
-------
|
|
float
|
|
Some floating point value.
|
|
|
|
Unknown
|
|
-------
|
|
I don't know what this section does.
|
|
"""
|
|
|
|
repeat = """
|
|
Returns
|
|
-------
|
|
float
|
|
Some floating point value.
|
|
|
|
Returns
|
|
-------
|
|
float
|
|
Some floating point value.
|
|
"""
|
|
|
|
bad_yields = """
|
|
Returns
|
|
-------
|
|
float
|
|
The return.
|
|
|
|
Yields
|
|
------
|
|
float
|
|
Can't also yield.
|
|
"""
|
|
|
|
with_sig = """
|
|
func(x)
|
|
func(x, y)
|
|
func(x, y, z=1)
|
|
""" + good
|
|
|
|
|
|
def test_remove_parameter():
|
|
ds = Docstring(good)
|
|
ds.remove_parameters('x')
|
|
assert 'x : int' not in str(ds)
|
|
|
|
ds = Docstring(good)
|
|
ds.remove_parameters(['x', 'y'])
|
|
assert 'x : int' not in str(ds)
|
|
assert 'y : float' not in str(ds)
|
|
|
|
with pytest.raises(ValueError):
|
|
Docstring(good).remove_parameters(['w'])
|
|
|
|
ds = remove_parameters(good, 'x')
|
|
assert 'x : int' not in ds
|
|
assert isinstance(ds, str)
|
|
|
|
|
|
def test_insert_parameters():
|
|
new = Parameter('w', 'ndarray', ['An array input.'])
|
|
ds = Docstring(good)
|
|
ds.insert_parameters('y', new)
|
|
assert 'w : ndarray' in str(ds)
|
|
assert 'An array input.' in str(ds)
|
|
|
|
other = Parameter('q', 'DataFrame', ['A pandas dataframe.'])
|
|
ds = Docstring(good)
|
|
ds.insert_parameters(None, [new, other])
|
|
assert 'w : ndarray' in str(ds)
|
|
assert 'An array input.' in str(ds)
|
|
assert 'q : DataFrame' in str(ds)
|
|
assert 'A pandas dataframe.' in str(ds)
|
|
assert '---\nw : ndarray' in str(ds)
|
|
|
|
ds = Docstring(good)
|
|
with pytest.raises(ValueError):
|
|
ds.insert_parameters('unknown', new)
|
|
|
|
|
|
def test_set_unknown():
|
|
ds = Docstring(good)
|
|
with pytest.raises(ValueError):
|
|
ds._ds['Unknown'] = ['unknown']
|
|
|
|
|
|
def test_replace_block():
|
|
ds = Docstring(good)
|
|
ds.replace_block('summary', ['The is the new summary.'])
|
|
assert 'The is the new summary.' in str(ds)
|
|
|
|
ds = Docstring(good)
|
|
ds.replace_block('summary', 'The is the new summary.')
|
|
assert 'The is the new summary.' in str(ds)
|
|
|
|
with pytest.raises(ValueError):
|
|
ds.replace_block('unknown', ['The is the new summary.'])
|
|
|
|
|
|
def test_repeat():
|
|
with pytest.raises(ValueError):
|
|
Docstring(repeat)
|
|
|
|
|
|
def test_bad():
|
|
with pytest.raises(ValueError):
|
|
Docstring(bad)
|
|
|
|
|
|
def test_empty_ds():
|
|
ds = Docstring(None)
|
|
ds.replace_block('summary', ['The is the new summary.'])
|
|
|
|
ds.remove_parameters('x')
|
|
|
|
new = Parameter('w', 'ndarray', ['An array input.'])
|
|
ds.insert_parameters('y', new)
|
|
assert str(ds) == 'None'
|
|
|
|
|
|
def test_yield_return():
|
|
with pytest.raises(ValueError):
|
|
Docstring(bad_yields)
|
|
|
|
|
|
def test_multiple_sig():
|
|
Docstring(with_sig)
|