File tree Expand file tree Collapse file tree 5 files changed +24
-19
lines changed Expand file tree Collapse file tree 5 files changed +24
-19
lines changed Original file line number Diff line number Diff line change 1- from typing import List
1+ from typing import Dict , List , Optional
22
33
44class Challenge :
55 """Singleton Model class for daily challenge."""
66
77 title : str = ''
8- raw_tags : List [dict ] = None
8+ raw_tags : List [Dict [ str , str ]] = []
99 ac_rate : float = 0
10- difficulty : str = None
11- question_id : int = None
10+ difficulty : str = ''
11+ question_id : int = 0
1212 title_slug : str = ''
13- date : str = None
13+ date : str = ''
1414
1515 def __new__ (cls ):
1616 """Override default class creation logic."""
@@ -26,7 +26,7 @@ def problem_link(self) -> str:
2626 )
2727
2828 @property
29- def tags (self ) -> List [str ]:
29+ def tags (self ) -> List [Optional [ str ] ]:
3030 """Return the link of the problem."""
3131 tags = []
3232 for tag in self .raw_tags :
Original file line number Diff line number Diff line change 22
33from notifypy import Notify
44
5+ from leeteasy .models .challenge import Challenge
56from leeteasy .services .request_handler import RequestHandler
67from leeteasy .services .request_parser import RequestParser
78
@@ -11,7 +12,7 @@ class Notifier:
1112
1213 target_difficulty = ['Easy' ]
1314 app_name = 'LeetEasy'
14- challenge = None
15+ challenge : Challenge
1516
1617 @classmethod
1718 def prepare_notification (cls ):
Original file line number Diff line number Diff line change 11import time
2- from typing import Union
2+ from typing import Dict
33
44import requests
55
99class RequestHandler :
1010 """Provides services for requesting leetcode API."""
1111
12+ url = Constant .LEETCODE_API_ENDPOINT
13+ query = Constant .DAILY_CODING_CHALLENGE_QUERY
14+ max_retries = Constant .HTTP_CALL_RETRIES
15+
1216 @classmethod
13- def get_challenge_info (cls ) -> Union [ dict , None ] :
17+ def get_challenge_info (cls ) -> Dict :
1418 """Get daily challenge info from leetcode API."""
15- url = Constant .LEETCODE_API_ENDPOINT
16- query = Constant .DAILY_CODING_CHALLENGE_QUERY
17- max_retries = Constant .HTTP_CALL_RETRIES # Change HTTP_CALL_RETRIES for more retries
18-
19- for iteration in range (max_retries ):
19+ for iteration in range (cls .max_retries ):
2020 try :
21- response = requests .post (url , json = {'query' : query })
21+ response = requests .post (cls . url , json = {'query' : cls . query })
2222 return response .json ().get ('data' ).get ('activeDailyCodingChallengeQuestion' )
2323 except Exception :
2424 time .sleep (((iteration + 1 ) * 10 ) * 60 )
Original file line number Diff line number Diff line change 1+ from typing import Dict
2+
13from leeteasy .models .challenge import Challenge
24
35
46class RequestParser :
57 """Parse responses of leetcode API."""
68
79 @classmethod
8- def parse (cls , challenge_info : dict ) -> Challenge :
10+ def parse (cls , challenge_info : Dict ) -> Challenge :
911 """Parse API data ans update challenge model."""
1012 return cls ._parse_challenge_info (challenge_info )
1113
Original file line number Diff line number Diff line change @@ -82,20 +82,22 @@ allow_redefinition = False
8282check_untyped_defs = True
8383disallow_untyped_decorators = True
8484disallow_any_explicit = True
85- disallow_any_generics = True
86- disallow_untyped_calls = True
85+ ; disallow_any_generics = True
86+ ; disallow_untyped_calls = True
8787ignore_errors = False
8888ignore_missing_imports = True
8989implicit_reexport = False
9090local_partial_types = True
91- strict_optional = True
91+ # strict_optional = True
9292strict_equality = True
9393no_implicit_optional = True
9494warn_unused_ignores = True
9595warn_redundant_casts = True
9696warn_unused_configs = True
9797warn_unreachable = True
9898warn_no_return = True
99+ show_error_codes = True
100+
99101
100102[options.entry_points]
101103console_scripts =
You can’t perform that action at this time.
0 commit comments