Skip to content

Commit 28eef27

Browse files
Merge main into msl-auth
2 parents 573e4e9 + ceb9ac7 commit 28eef27

1 file changed

Lines changed: 66 additions & 42 deletions

File tree

config.py

Lines changed: 66 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)