Skip to content

Prevent passing invalid kwds to DateOffset constructors #18226

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 35 commits into from
Nov 25, 2017
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
b9fe60e
Patch __init__ to prevent passing invalid kwds
jbrockmendel Nov 11, 2017
f10a1c6
cast n to integer, assert equality
jbrockmendel Nov 11, 2017
807d769
whatsnew note
jbrockmendel Nov 11, 2017
687e3b7
parameterize tests, define fixture where it is used
jbrockmendel Nov 11, 2017
d5443ca
fixup
jbrockmendel Nov 11, 2017
5e5e0c0
exclude base classes from testing
jbrockmendel Nov 11, 2017
17f7b5a
exclude base classes from testing
jbrockmendel Nov 11, 2017
3834ef8
dummy commit to force CI
jbrockmendel Nov 12, 2017
1c54e96
edits per reviewer suggestions
jbrockmendel Nov 12, 2017
0e37a24
whatsnew whitespace
jbrockmendel Nov 12, 2017
a572368
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 13, 2017
d0ff381
whitespace fixup
jbrockmendel Nov 13, 2017
409dbd0
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 14, 2017
6a9233e
break up hour test to debug appveyor error (segfault?)
jbrockmendel Nov 15, 2017
4406df8
break down segfaulting test to debug
jbrockmendel Nov 16, 2017
44891cd
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 16, 2017
573abb6
fixturize
jbrockmendel Nov 16, 2017
c6cc8bc
troubleshoot segfault by moving __eq__ to _BaseOffset
jbrockmendel Nov 17, 2017
a68f4a7
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 17, 2017
c8224c1
try sorting rd_kwds to fix segfault, revert other troubleshooting gue…
jbrockmendel Nov 17, 2017
55779d8
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 17, 2017
d5b8302
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 19, 2017
b54e26b
implement _validate_n method
jbrockmendel Nov 19, 2017
fade4a2
test for _validate_n
jbrockmendel Nov 19, 2017
38c2238
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 22, 2017
fe895ff
Raise TypeError, not ValueError
jbrockmendel Nov 22, 2017
11ba1a9
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 22, 2017
bc90a19
Catch ValueError in int(n)
jbrockmendel Nov 22, 2017
0b3dca0
fixup extra imports
jbrockmendel Nov 22, 2017
9c841fc
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 22, 2017
adee395
remove unnecessary re-definitions, add tests, improve error msg
jbrockmendel Nov 23, 2017
43dc17e
Add docstring to validate_n
jbrockmendel Nov 23, 2017
4ff8c22
fixup missing format
jbrockmendel Nov 24, 2017
d261be9
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 24, 2017
b4b9e15
Merge branch 'master' of https://github.com/pandas-dev/pandas into ts…
jbrockmendel Nov 25, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
parameterize tests, define fixture where it is used
  • Loading branch information
jbrockmendel committed Nov 13, 2017
commit 687e3b7946a6d8554872ce347c7773ece0aa80a6
6 changes: 0 additions & 6 deletions pandas/tests/tseries/conftest.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
import pytest
import pandas.tseries.offsets as offsets


@pytest.fixture(params=[getattr(offsets, o) for o in offsets.__all__])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this serves the entire sub-directory, why are you removing?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because it isn't moved outside test_offsets and causes a "where the heck is this defined" reaction to a new reader. Will revert.

def offset_types(request):
return request.param


@pytest.fixture(params=[None, 'UTC', 'Asia/Tokyo', 'US/Eastern',
Expand Down
36 changes: 19 additions & 17 deletions pandas/tests/tseries/test_offsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@
from pandas.tseries.holiday import USFederalHolidayCalendar


offset_classes = [getattr(offsets, x) for x in dir(offsets)]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, pls just use the fixture (you can certainly create more if needed)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK.

offset_classes = [x for x in offset_classes if inspect.isclass(x) and
issubclass(x, DateOffset)]


@pytest.fixture(params=offset_classes)
def offset_types(request):
return request.param


def test_monthrange():
import calendar
for y in range(2000, 2013):
Expand Down Expand Up @@ -4904,23 +4914,15 @@ def test_all_offset_classes(self):

# ---------------------------------------------------------------------

offset_classes = [getattr(offsets, x) for x in dir(offsets)]
offset_classes = [x for x in offset_classes if inspect.isclass(x) and
issubclass(x, DateOffset)]
month_classes = [x for x in offset_classes if
issubclass(x, offsets.MonthOffset)]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would just make these fixtures


tick_classes = [x for x in offset_classes if issubclass(x, offsets.Tick)]


def test_valid_attributes():
@pytest.parametrize('cls', month_classes+tick_classes)
@pytest.parametrize('kwd', _rd_kwds)
def test_valid_attributes(kwd, cls):
# check that we cannot create e.g. MonthEnd(weeks=3)
month_classes = [x for x in offset_classes if
issubclass(x, offsets.MonthOffset)]

for cls in month_classes:
for kwd in _rd_kwds:
with pytest.raises(TypeError):
cls(**{kwd: 3})

tick_classes = [x for x in offset_classes if issubclass(x, offsets.Tick)]
for cls in tick_classes:
for kwd in _rd_kwds:
with pytest.raises(TypeError):
cls(**{kwd: 4})
with pytest.raises(TypeError):
cls(**{kwd: 3})