Skip to content

Commit 1225b17

Browse files
committed
Add simple tests
1 parent 079356b commit 1225b17

File tree

2 files changed

+124
-16
lines changed

2 files changed

+124
-16
lines changed

setup.py

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import os
22
from datetime import datetime, MAXYEAR
3+
from collections import namedtuple
4+
35
from setuptools import setup
46
from setuptools.command.install import install
57

@@ -8,6 +10,33 @@
810
LONG_DESCRIPTION = f.read()
911

1012

13+
def get_brownout_schedule():
14+
all_start_dates = [datetime(2022, 12, 1)] + [
15+
datetime(2023, 2 * i, 1) for i in range(1, 7)
16+
]
17+
date_in_the_far_future = datetime(MAXYEAR, 12, 31, 23, 59, 59)
18+
all_end_dates = all_start_dates[1:] + [date_in_the_far_future]
19+
all_check_functions = [
20+
lambda dt: dt.minute < 5,
21+
lambda dt: dt.minute < 10,
22+
lambda dt: dt.minute < 15,
23+
lambda dt: (dt.minute < 10) or (30 <= dt.minute < 40),
24+
lambda dt: (dt.minute < 15) or (30 <= dt.minute < 45),
25+
lambda dt: (dt.minute < 20) or (30 <= dt.minute < 50),
26+
lambda dt: True,
27+
]
28+
29+
CheckedDatetimeWindow = namedtuple(
30+
"CheckedDatetimeWindow", "start_datetime end_datetime check_function"
31+
)
32+
brownout_schedule = [
33+
CheckedDatetimeWindow(*each)
34+
for each in zip(all_start_dates, all_end_dates, all_check_functions)
35+
]
36+
37+
return brownout_schedule
38+
39+
1140
def maybe_raise_error(checked_datetime):
1241
accept_deprecated_sklearn_package_install = os.environ.get(
1342
"SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL", "use-brownout-schedule"
@@ -25,22 +54,6 @@ def maybe_raise_error(checked_datetime):
2554
"because SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=False is set"
2655
)
2756

28-
all_start_dates = [datetime(2022, 12, 1)] + [
29-
datetime(2023, 2 * i, 1) for i in range(1, 7)
30-
]
31-
date_in_the_far_future = datetime(MAXYEAR, 12, 31, 23, 59, 59)
32-
all_end_dates = all_start_dates[1:] + [date_in_the_far_future]
33-
all_check_functions = [
34-
lambda dt: dt.minute < 5,
35-
lambda dt: dt.minute < 10,
36-
lambda dt: dt.minute < 15,
37-
lambda dt: (dt.minute < 10) or (30 < dt.minute < 40),
38-
lambda dt: (dt.minute < 15) or (30 < dt.minute < 45),
39-
lambda dt: (dt.minute < 20) or (30 < dt.minute < 50),
40-
lambda dt: True,
41-
]
42-
brownout_schedule = zip(all_start_dates, all_end_dates, all_check_functions)
43-
4457
error_message = "\n".join(
4558
[
4659
"The 'sklearn' PyPI package is deprecated, use 'scikit-learn' ",
@@ -63,6 +76,8 @@ def maybe_raise_error(checked_datetime):
6376
"https://github.com/scikit-learn/sklearn-pypi-package/issues/new",
6477
]
6578
)
79+
80+
brownout_schedule = get_brownout_schedule()
6681
for start_date, end_date, check_function in brownout_schedule:
6782
if (start_date <= checked_datetime < end_date) and check_function(
6883
checked_datetime

test_brownout.py

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
from datetime import timedelta
2+
from datetime import datetime
3+
4+
import pytest
5+
6+
from setup import get_brownout_schedule
7+
from setup import maybe_raise_error
8+
9+
10+
def test_brownout():
11+
brownout_schedule = get_brownout_schedule()
12+
13+
brownout_iter = iter(brownout_schedule)
14+
15+
start_datetime = next(brownout_iter).start_datetime
16+
with pytest.raises(SystemExit):
17+
maybe_raise_error(start_datetime)
18+
with pytest.raises(SystemExit):
19+
maybe_raise_error(start_datetime + timedelta(minutes=4))
20+
maybe_raise_error(start_datetime + timedelta(minutes=5))
21+
22+
start_datetime = next(brownout_iter).start_datetime
23+
with pytest.raises(SystemExit):
24+
maybe_raise_error(start_datetime)
25+
with pytest.raises(SystemExit):
26+
maybe_raise_error(start_datetime + timedelta(minutes=9))
27+
28+
maybe_raise_error(start_datetime + timedelta(minutes=10))
29+
30+
start_datetime = next(brownout_iter).start_datetime
31+
with pytest.raises(SystemExit):
32+
maybe_raise_error(start_datetime)
33+
with pytest.raises(SystemExit):
34+
maybe_raise_error(start_datetime + timedelta(minutes=14))
35+
maybe_raise_error(start_datetime + timedelta(minutes=15))
36+
37+
start_datetime = next(brownout_iter).start_datetime
38+
with pytest.raises(SystemExit):
39+
maybe_raise_error(start_datetime)
40+
with pytest.raises(SystemExit):
41+
maybe_raise_error(start_datetime + timedelta(minutes=9))
42+
maybe_raise_error(start_datetime + timedelta(minutes=10))
43+
with pytest.raises(SystemExit):
44+
maybe_raise_error(start_datetime + timedelta(minutes=30))
45+
with pytest.raises(SystemExit):
46+
maybe_raise_error(start_datetime + timedelta(minutes=39))
47+
maybe_raise_error(start_datetime + timedelta(minutes=40))
48+
49+
start_datetime = next(brownout_iter).start_datetime
50+
with pytest.raises(SystemExit):
51+
maybe_raise_error(start_datetime)
52+
with pytest.raises(SystemExit):
53+
maybe_raise_error(start_datetime + timedelta(minutes=14))
54+
maybe_raise_error(start_datetime + timedelta(minutes=15))
55+
with pytest.raises(SystemExit):
56+
maybe_raise_error(start_datetime + timedelta(minutes=30))
57+
with pytest.raises(SystemExit):
58+
maybe_raise_error(start_datetime + timedelta(minutes=44))
59+
maybe_raise_error(start_datetime + timedelta(minutes=45))
60+
61+
start_datetime = next(brownout_iter).start_datetime
62+
with pytest.raises(SystemExit):
63+
maybe_raise_error(start_datetime)
64+
with pytest.raises(SystemExit):
65+
maybe_raise_error(start_datetime + timedelta(minutes=19))
66+
maybe_raise_error(start_datetime + timedelta(minutes=20))
67+
with pytest.raises(SystemExit):
68+
maybe_raise_error(start_datetime + timedelta(minutes=30))
69+
with pytest.raises(SystemExit):
70+
maybe_raise_error(start_datetime + timedelta(minutes=49))
71+
maybe_raise_error(start_datetime + timedelta(minutes=50))
72+
73+
start_datetime = next(brownout_iter).start_datetime
74+
with pytest.raises(SystemExit):
75+
maybe_raise_error(start_datetime)
76+
with pytest.raises(SystemExit):
77+
maybe_raise_error(start_datetime + timedelta(minutes=59))
78+
79+
checked_datetime = datetime(2030, 1, 1)
80+
with pytest.raises(SystemExit):
81+
maybe_raise_error(checked_datetime)
82+
83+
84+
def test_allow_sklearn_package_install_environment_variable(monkeypatch):
85+
with monkeypatch.context() as context:
86+
context.setenv("SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL", "True")
87+
checked_datetime = datetime(2030, 1, 1)
88+
maybe_raise_error(checked_datetime)
89+
90+
context.setenv("SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL", "False")
91+
checked_datetime = datetime(2020, 1, 1)
92+
with pytest.raises(SystemExit):
93+
maybe_raise_error(checked_datetime)

0 commit comments

Comments
 (0)