Commit 790e599 1 parent f4850c2 commit 790e599 Copy full SHA for 790e599
File tree 2 files changed +39
-0
lines changed
2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change 29
29
"get_data" ,
30
30
"models" ,
31
31
"post" ,
32
+ "puzzle" ,
32
33
"runner" ,
33
34
"submit" ,
34
35
"types" ,
37
38
38
39
if t .TYPE_CHECKING :
39
40
data : str
41
+ puzzle : models .Puzzle
40
42
submit = _impartial_submit
41
43
42
44
43
45
def __getattr__ (name : str ) -> t .Any :
44
46
if name == "data" :
45
47
day , year = get_day_and_year ()
46
48
return get_data (day = day , year = year )
49
+ if name == "puzzle" :
50
+ day , year = get_day_and_year ()
51
+ return get .get_puzzle (day = day , year = year )
47
52
if name == "submit" :
48
53
try :
49
54
day , year = get_day_and_year ()
Original file line number Diff line number Diff line change @@ -54,6 +54,40 @@ def get_data(
54
54
return puzzle .input_data
55
55
56
56
57
+ def get_puzzle (
58
+ session : str | None = None ,
59
+ day : int | None = None ,
60
+ year : int | None = None ,
61
+ block : bool = False ,
62
+ ) -> Puzzle :
63
+ """
64
+ Get puzzle for day (1-25) and year (2015+).
65
+ User's session cookie (str) is needed - puzzle inputs differ by user.
66
+ If `block` is True and the puzzle is still locked, will wait until unlock
67
+ before returning data.
68
+ """
69
+ if session is None :
70
+ user = default_user ()
71
+ else :
72
+ user = User (token = session )
73
+ if day is None :
74
+ day = current_day ()
75
+ log .info ("current day=%s" , day )
76
+ if year is None :
77
+ year = most_recent_year ()
78
+ log .info ("most recent year=%s" , year )
79
+ puzzle = Puzzle (year = year , day = day , user = user )
80
+ try :
81
+ _ = puzzle .input_data
82
+ return puzzle
83
+ except PuzzleLockedError :
84
+ if not block :
85
+ raise
86
+ q = block == "q"
87
+ blocker (quiet = q , until = (year , day ))
88
+ return puzzle
89
+
90
+
57
91
def most_recent_year () -> int :
58
92
"""
59
93
This year, if it's December.
You can’t perform that action at this time.
0 commit comments