@@ -114,7 +114,7 @@ def __getattr__(self, item: str) -> "Any": # type: ignore[explicit-any] # noqa
114114 if item in self ._settings :
115115 return self ._settings [item ]
116116
117- if re .fullmatch (r"\A[A-Z](?:[A-Z_]*[A-Z])?\Z" , item ):
117+ if re .fullmatch (pattern = r"\A[A-Z](?:[A-Z_]*[A-Z])?\Z" , string = item ):
118118 INVALID_SETTINGS_KEY_MESSAGE : Final [str ] = self .get_invalid_settings_key_message (
119119 item
120120 )
@@ -137,7 +137,9 @@ def __getitem__(self, item: str) -> "Any": # type: ignore[explicit-any] # noqa
137137
138138 @staticmethod
139139 def _setup_console_logging () -> None :
140- raw_console_log_level : str = os .getenv ("CONSOLE_LOG_LEVEL" , "INFO" ).upper ().strip ()
140+ raw_console_log_level : str = (
141+ os .getenv ("CONSOLE_LOG_LEVEL" , default = "INFO" ).upper ().strip ()
142+ )
141143
142144 if raw_console_log_level not in LOG_LEVEL_CHOICES :
143145 INVALID_LOG_LEVEL_MESSAGE : Final [str ] = f"CONSOLE_LOG_LEVEL must be one of {
@@ -159,7 +161,7 @@ def _setup_console_logging() -> None:
159161
160162 @staticmethod
161163 def _setup_discord_log_level () -> None :
162- raw_discord_log_level : str = os .getenv ("DISCORD_LOG_LEVEL" , "" ).upper ().strip ()
164+ raw_discord_log_level : str = os .getenv ("DISCORD_LOG_LEVEL" , default = "" ).upper ().strip ()
163165
164166 if not raw_discord_log_level :
165167 logger .debug ("DISCORD_LOG_LEVEL is not set, skipping Discord logging setup." )
@@ -193,8 +195,8 @@ def _setup_discord_bot_token(cls) -> None:
193195 raw_discord_bot_token : str = os .getenv ("DISCORD_BOT_TOKEN" , default = "" ).strip ()
194196
195197 if not raw_discord_bot_token or not re .fullmatch (
196- r"\A([A-Za-z0-9_-]{24,26})\.([A-Za-z0-9_-]{6})\.([A-Za-z0-9_-]{27,38})\Z" ,
197- raw_discord_bot_token ,
198+ pattern = r"\A([A-Za-z0-9_-]{24,26})\.([A-Za-z0-9_-]{6})\.([A-Za-z0-9_-]{27,38})\Z" ,
199+ string = raw_discord_bot_token ,
198200 ):
199201 INVALID_DISCORD_BOT_TOKEN_MESSAGE : Final [str ] = (
200202 "DISCORD_BOT_TOKEN must be set to a valid Discord bot token " # noqa: S105
@@ -207,7 +209,7 @@ def _setup_discord_bot_token(cls) -> None:
207209 @classmethod
208210 def _setup_discord_log_channel_webhook (cls ) -> "Logger" :
209211 raw_discord_log_channel_webhook_url : str = os .getenv (
210- "DISCORD_LOG_CHANNEL_WEBHOOK_URL" , ""
212+ "DISCORD_LOG_CHANNEL_WEBHOOK_URL" , default = ""
211213 ).strip ()
212214
213215 if not raw_discord_log_channel_webhook_url :
@@ -248,7 +250,7 @@ def _setup_discord_guild_id(cls) -> None:
248250 raw_discord_guild_id : str = os .getenv ("DISCORD_GUILD_ID" , default = "" ).strip ()
249251
250252 if not raw_discord_guild_id or not re .fullmatch (
251- r"\A\d{17,20}\Z" , raw_discord_guild_id
253+ pattern = r"\A\d{17,20}\Z" , string = raw_discord_guild_id
252254 ):
253255 INVALID_DISCORD_GUILD_ID_MESSAGE : Final [str ] = (
254256 "DISCORD_GUILD_ID must be a valid Discord guild ID "
@@ -266,7 +268,9 @@ def _setup_group_full_name(cls) -> None:
266268 cls ._settings ["_GROUP_FULL_NAME" ] = None
267269 return
268270
269- if not re .fullmatch (r"\A[A-Za-z0-9 '&!?:,.#%\"-]+\Z" , raw_group_full_name ):
271+ if not re .fullmatch (
272+ pattern = r"\A[A-Za-z0-9 '&!?:,.#%\"-]+\Z" , string = raw_group_full_name
273+ ):
270274 INVALID_GROUP_FULL_NAME : Final [str ] = (
271275 "GROUP_NAME must not contain any invalid characters."
272276 )
@@ -282,7 +286,9 @@ def _setup_group_short_name(cls) -> None:
282286 cls ._settings ["_GROUP_SHORT_NAME" ] = None
283287 return
284288
285- if not re .fullmatch (r"\A[A-Za-z0-9'&!?:,.#%\"-]+\Z" , raw_group_short_name ):
289+ if not re .fullmatch (
290+ pattern = r"\A[A-Za-z0-9'&!?:,.#%\"-]+\Z" , string = raw_group_short_name
291+ ):
286292 INVALID_GROUP_SHORT_NAME : Final [str ] = (
287293 "GROUP_SHORT_NAME must not contain any invalid characters."
288294 )
@@ -494,7 +500,9 @@ def _setup_roles_messages(cls) -> None:
494500 def _setup_organisation_id (cls ) -> None :
495501 raw_organisation_id : str = os .getenv ("ORGANISATION_ID" , default = "" ).strip ()
496502
497- if not raw_organisation_id or not re .fullmatch (r"\A\d{4,5}\Z" , raw_organisation_id ):
503+ if not raw_organisation_id or not re .fullmatch (
504+ pattern = r"\A\d{4,5}\Z" , string = raw_organisation_id
505+ ):
498506 INVALID_ORGANISATION_ID_MESSAGE : Final [str ] = (
499507 "ORGANISATION_ID must be an integer 4 to 5 digits long."
500508 )
@@ -510,7 +518,7 @@ def _setup_su_platform_access_cookie(cls) -> None:
510518 ).strip ()
511519
512520 if not raw_su_platform_access_cookie or not re .fullmatch (
513- r"\A[\w-]{512,1024}\Z" , raw_su_platform_access_cookie
521+ pattern = r"\A[\w-]{512,1024}\Z" , string = raw_su_platform_access_cookie
514522 ):
515523 INVALID_SU_PLATFORM_ACCESS_COOKIE_MESSAGE : Final [str ] = (
516524 "SU_PLATFORM_ACCESS_COOKIE must be a valid .AspNet.SharedCookie cookie."
@@ -522,7 +530,9 @@ def _setup_su_platform_access_cookie(cls) -> None:
522530 @classmethod
523531 def _setup_auto_su_platform_access_cookie_checking (cls ) -> None :
524532 raw_auto_auth_session_cookie_checking : str = (
525- os .getenv ("AUTO_SU_PLATFORM_ACCESS_COOKIE_CHECKING" , "False" ).lower ().strip ()
533+ os .getenv ("AUTO_SU_PLATFORM_ACCESS_COOKIE_CHECKING" , default = "False" )
534+ .lower ()
535+ .strip ()
526536 )
527537
528538 if raw_auto_auth_session_cookie_checking not in TRUE_VALUES | FALSE_VALUES :
@@ -550,18 +560,22 @@ def _setup_auto_su_platform_access_cookie_checking_interval(cls) -> None:
550560
551561 raw_auto_su_platform_access_cookie_checking_interval : re .Match [str ] | None = (
552562 re .fullmatch (
553- r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?(?:(?P<days>(?:\d*\.)?\d+)d)?(?:(?P<weeks>(?:\d*\.)?\d+)w)?\Z" ,
554- os .getenv ("AUTO_SU_PLATFORM_ACCESS_COOKIE_CHECKING_INTERVAL" , "24h" )
555- .strip ()
556- .lower ()
557- .replace (" " , "" ),
563+ pattern = r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?\Z" ,
564+ string = (
565+ os .getenv (
566+ "AUTO_SU_PLATFORM_ACCESS_COOKIE_CHECKING_INTERVAL" , default = "24h"
567+ )
568+ .strip ()
569+ .lower ()
570+ .replace (" " , "" )
571+ ),
558572 )
559573 )
560574
561575 if not raw_auto_su_platform_access_cookie_checking_interval :
562576 INVALID_AUTO_SU_PLATFORM_ACCESS_COOKIE_CHECKING_INTERVAL_MESSAGE : Final [str ] = (
563577 "AUTO_SU_PLATFORM_ACCESS_COOKIE_CHECKING_INTERVAL must contain the delay "
564- "in any combination of seconds, minutes, hours, days or weeks ."
578+ "in any combination of seconds, minutes or hours ."
565579 )
566580 logger .debug (raw_auto_su_platform_access_cookie_checking_interval )
567581 raise ImproperlyConfiguredError (
@@ -597,7 +611,7 @@ def _setup_auto_su_platform_access_cookie_checking_interval(cls) -> None:
597611 @classmethod
598612 def _setup_send_introduction_reminders (cls ) -> None :
599613 raw_send_introduction_reminders : str | bool = (
600- os .getenv ("SEND_INTRODUCTION_REMINDERS" , "Once" ).lower ().strip ()
614+ os .getenv ("SEND_INTRODUCTION_REMINDERS" , default = "Once" ).lower ().strip ()
601615 )
602616
603617 if raw_send_introduction_reminders not in VALID_SEND_INTRODUCTION_REMINDERS_VALUES :
@@ -624,11 +638,13 @@ def _setup_send_introduction_reminders_delay(cls) -> None:
624638 raise RuntimeError (INVALID_SETUP_ORDER_MESSAGE )
625639
626640 raw_send_introduction_reminders_delay : re .Match [str ] | None = re .fullmatch (
627- r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?(?:(?P<days>(?:\d*\.)?\d+)d)?(?:(?P<weeks>(?:\d*\.)?\d+)w)?\Z" ,
628- os .getenv ("SEND_INTRODUCTION_REMINDERS_DELAY" , "40h" )
629- .strip ()
630- .lower ()
631- .replace (" " , "" ),
641+ pattern = r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?(?:(?P<days>(?:\d*\.)?\d+)d)?(?:(?P<weeks>(?:\d*\.)?\d+)w)?\Z" ,
642+ string = (
643+ os .getenv ("SEND_INTRODUCTION_REMINDERS_DELAY" , default = "40h" )
644+ .strip ()
645+ .lower ()
646+ .replace (" " , "" )
647+ ),
632648 )
633649
634650 raw_timedelta_send_introduction_reminders_delay : datetime .timedelta = (
@@ -675,11 +691,13 @@ def _setup_send_introduction_reminders_interval(cls) -> None:
675691 raise RuntimeError (INVALID_SETUP_ORDER_MESSAGE )
676692
677693 raw_send_introduction_reminders_interval : re .Match [str ] | None = re .fullmatch (
678- r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?\Z" ,
679- os .getenv ("SEND_INTRODUCTION_REMINDERS_INTERVAL" , "6h" )
680- .strip ()
681- .lower ()
682- .replace (" " , "" ),
694+ pattern = r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?\Z" ,
695+ string = (
696+ os .getenv ("SEND_INTRODUCTION_REMINDERS_INTERVAL" , default = "6h" )
697+ .strip ()
698+ .lower ()
699+ .replace (" " , "" )
700+ ),
683701 )
684702
685703 raw_timedelta_details_send_introduction_reminders_interval : Mapping [str , float ] = {
@@ -722,7 +740,7 @@ def _setup_send_introduction_reminders_interval(cls) -> None:
722740 @classmethod
723741 def _setup_send_get_roles_reminders (cls ) -> None :
724742 raw_send_get_roles_reminders : str = (
725- os .getenv ("SEND_GET_ROLES_REMINDERS" , "True" ).lower ().strip ()
743+ os .getenv ("SEND_GET_ROLES_REMINDERS" , default = "True" ).lower ().strip ()
726744 )
727745
728746 if raw_send_get_roles_reminders not in TRUE_VALUES | FALSE_VALUES :
@@ -743,11 +761,13 @@ def _setup_send_get_roles_reminders_delay(cls) -> None:
743761 raise RuntimeError (INVALID_SETUP_ORDER_MESSAGE )
744762
745763 raw_send_get_roles_reminders_delay : re .Match [str ] | None = re .fullmatch (
746- r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?(?:(?P<days>(?:\d*\.)?\d+)d)?(?:(?P<weeks>(?:\d*\.)?\d+)w)?\Z" ,
747- os .getenv ("SEND_GET_ROLES_REMINDERS_DELAY" , "40h" )
748- .strip ()
749- .lower ()
750- .replace (" " , "" ),
764+ pattern = r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?(?:(?P<days>(?:\d*\.)?\d+)d)?(?:(?P<weeks>(?:\d*\.)?\d+)w)?\Z" ,
765+ string = (
766+ os .getenv ("SEND_GET_ROLES_REMINDERS_DELAY" , default = "40h" )
767+ .strip ()
768+ .lower ()
769+ .replace (" " , "" )
770+ ),
751771 )
752772
753773 raw_timedelta_send_get_roles_reminders_delay : datetime .timedelta = datetime .timedelta ()
@@ -790,11 +810,13 @@ def _setup_advanced_send_get_roles_reminders_interval(cls) -> None:
790810 raise RuntimeError (INVALID_SETUP_ORDER_MESSAGE )
791811
792812 raw_advanced_send_get_roles_reminders_interval : re .Match [str ] | None = re .fullmatch (
793- r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?\Z" ,
794- os .getenv ("ADVANCED_SEND_GET_ROLES_REMINDERS_INTERVAL" , "24h" )
795- .strip ()
796- .lower ()
797- .replace (" " , "" ),
813+ pattern = r"\A(?:(?P<seconds>(?:\d*\.)?\d+)s)?(?:(?P<minutes>(?:\d*\.)?\d+)m)?(?:(?P<hours>(?:\d*\.)?\d+)h)?\Z" ,
814+ string = (
815+ os .getenv ("ADVANCED_SEND_GET_ROLES_REMINDERS_INTERVAL" , default = "24h" )
816+ .strip ()
817+ .lower ()
818+ .replace (" " , "" )
819+ ),
798820 )
799821
800822 raw_timedelta_details_advanced_send_get_roles_reminders_interval : Mapping [
@@ -827,7 +849,9 @@ def _setup_advanced_send_get_roles_reminders_interval(cls) -> None:
827849 def _setup_statistics_days (cls ) -> None :
828850 e : ValueError
829851 try :
830- raw_statistics_days : float = float (os .getenv ("STATISTICS_DAYS" , "30" ).strip ())
852+ raw_statistics_days : float = float (
853+ os .getenv ("STATISTICS_DAYS" , default = "30" ).strip ()
854+ )
831855 except ValueError as e :
832856 INVALID_STATISTICS_DAYS_MESSAGE : Final [str ] = (
833857 "STATISTICS_DAYS must contain the statistics period in days."
@@ -929,7 +953,7 @@ def _setup_strike_performed_manually_warning_location(cls) -> None:
929953 @classmethod
930954 def _setup_auto_add_committee_to_threads (cls ) -> None :
931955 raw_auto_add_committee_to_threads : str = (
932- os .getenv ("AUTO_ADD_COMMITTEE_TO_THREADS" , "True" ).lower ().strip ()
956+ os .getenv ("AUTO_ADD_COMMITTEE_TO_THREADS" , default = "True" ).lower ().strip ()
933957 )
934958
935959 if raw_auto_add_committee_to_threads not in TRUE_VALUES | FALSE_VALUES :
0 commit comments