From e5d278bfdaf5a2297d78167384dd270b8f401900 Mon Sep 17 00:00:00 2001 From: ptrstr Date: Wed, 7 Oct 2020 22:18:03 -0400 Subject: [PATCH 01/69] Added mention option for /repeat --- pybot/endpoints/slack/commands.py | 3 ++- pybot/endpoints/slack/utils/command_utils.py | 4 ++-- pybot/endpoints/slack/utils/slash_repeat.py | 11 +++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pybot/endpoints/slack/commands.py b/pybot/endpoints/slack/commands.py index af1e46a..3208889 100644 --- a/pybot/endpoints/slack/commands.py +++ b/pybot/endpoints/slack/commands.py @@ -112,9 +112,10 @@ async def slash_repeat(command: Command, app: SirBot): channel_id = command["channel_id"] slack_id = command["user_id"] slack = app["plugins"]["slack"].api + arguments = command["text"].split(" ") method_type, message = get_slash_repeat_messages( - slack_id, channel_id, command["text"] + slack_id, channel_id, arguments ) await slack.query(method_type, message) diff --git a/pybot/endpoints/slack/utils/command_utils.py b/pybot/endpoints/slack/utils/command_utils.py index 96d2ca9..6d6dec4 100644 --- a/pybot/endpoints/slack/utils/command_utils.py +++ b/pybot/endpoints/slack/utils/command_utils.py @@ -3,13 +3,13 @@ from pybot.endpoints.slack.utils.slash_repeat import repeat_items -def get_slash_repeat_messages(user_id, channel, text): +def get_slash_repeat_messages(user_id, channel, arguments): response_type = { "ephemeral": methods.CHAT_POST_EPHEMERAL, "message": methods.CHAT_POST_MESSAGE, } - values_dict = repeat_items(text, user_id, channel) + values_dict = repeat_items(arguments, user_id, channel) return response_type[values_dict["type"]], values_dict["message"] diff --git a/pybot/endpoints/slack/utils/slash_repeat.py b/pybot/endpoints/slack/utils/slash_repeat.py index 647fb4a..910aa5d 100644 --- a/pybot/endpoints/slack/utils/slash_repeat.py +++ b/pybot/endpoints/slack/utils/slash_repeat.py @@ -36,16 +36,13 @@ def modify_params(modify_options: dict) -> dict: ], } - message["attachments"][0][ - "pretext" - ] = f'<@{modify_options["slack_id"]}>: {modify_options["pretext"]}' - message["attachments"][0]["title"] = modify_options["title"] + message["attachments"][0]["pretext"] = f'<{modify_options["arguments"][1]}>: {modify_options["pretext"]} (sent by: <@{modify_options["slack_id"]}>)' if len(modify_options["arguments"]) >= 2 else f'<@{modify_options["slack_id"]}>: {modify_options["pretext"]}' message["attachments"][0]["title_link"] = modify_options["link"] return message -def repeat_items(requested_text: str, slack_id: str, channel_id: str) -> dict: +def repeat_items(arguments: list, slack_id: str, channel_id: str) -> dict: # TODO: get better way of only showing unique values # for keys instead of my wonky way of adding more options messages = { @@ -81,11 +78,13 @@ def repeat_items(requested_text: str, slack_id: str, channel_id: str) -> dict: "resource": find_resources(), } - modify_options = messages.get(requested_text.lower()) + modify_options = messages.get(arguments[0].lower()) if modify_options: modify_options["slack_id"] = slack_id modify_options["channel_id"] = channel_id + modify_options["arguments"] = arguments + return {"type": "message", "message": modify_params(modify_options)} else: return { From e61efc3dbd7293fa4194dcfa030e0de373c2a211 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 27 Oct 2020 21:34:40 -0700 Subject: [PATCH 02/69] Add event table to README --- README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d2e8a57..099b807 100644 --- a/README.md +++ b/README.md @@ -212,16 +212,26 @@ example: https://123_random_code_321.ngrok.io/slack/events -Additional setup may needed depending on the type of events pybot is subscribing to. -For example, in order to work on the app's functionality on a `team_join` event, you need to: +Additional setup may be needed depending on the type of events pybot is subscribing to. +For example, in order to work on the app's functionality on a `team_join` event, you need to: * Add `team_join` to workspace event * Make sure `greetings` channel exists and ensure the app is invited to the channel * Add necessary OAuth scopes to the app e.g. `users:read`, `chat:write`, etc. +In the section which says "Subscribe to events on behalf of users", you must add the following events: + +Event Name | Required OAuth Scope +------- | ----------- +member_joined_channel | channels:read or groups:read +message.channels | channels:history +message.groups | groups:history +message.im | im:history +team_join | users:read + #### Slash Commands -You can follow the instructions (and read helpful relation information) on the +You can follow the instructions (and read helpful related information) on the [Enabling interactivity with Slash Commands](https://api.slack.com/interactivity/slash-commands) page on Slack to setup pybot slash commands. When configuring a Slash command, make sure you configure the request URL to match the Base-URI that pybot is From 82fdef2d4e2c7ae17206b0d61213afd053179f05 Mon Sep 17 00:00:00 2001 From: Chinwe Promise <74402389+wendeee@users.noreply.github.com> Date: Tue, 22 Dec 2020 01:31:08 +0100 Subject: [PATCH 03/69] Remove Reference link to Hacktoberfest (#259) * Remove Hacktoberfest banner * Remove reference link to Hacktoberfest Co-authored-by: unknown --- README.md | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/README.md b/README.md index 099b807..d850cd5 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,3 @@ -
- - Operation Code Hacktoberfest Banner - -
-
-
- -# 🎃 Hacktoberfest 🎃 - -[All the details you need](https://github.com/OperationCode/START_HERE/blob/master/README.md#-hacktoberfest-) before participating with us during Hacktoberfest. - -
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Twitter Follow](https://img.shields.io/twitter/follow/operation_code.svg?style=social&label=Follow&style=social)](https://twitter.com/operation_code) [![Code-style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) From 56affa9f4c8ac11796b52aa9351b7df76a625f5c Mon Sep 17 00:00:00 2001 From: Aaron Suarez Date: Fri, 6 Aug 2021 15:50:43 -0500 Subject: [PATCH 04/69] Upgrade pip to latest version before installing poetry deps --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d4b67e0..73806f1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -81,7 +81,8 @@ jobs: - run: name: Installing dependencies command: | - sudo pip install poetry + pip install --upgrade pip + pip install poetry poetry install - save_cache: From a816cab706406df400a8df3ecf3950d618d9e66c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 29 Apr 2021 19:45:41 +0000 Subject: [PATCH 05/69] Upgrade to GitHub-native Dependabot --- .github/dependabot.yml | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..7601031 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,57 @@ +version: 2 +updates: +- package-ecosystem: pip + directory: "/" + schedule: + interval: daily + time: "07:00" + timezone: America/Los_Angeles + open-pull-requests-limit: 10 + ignore: + - dependency-name: black + versions: + - 21.4b0 + - 21.4b1 + - dependency-name: pytest-asyncio + versions: + - 0.15.0 + - dependency-name: python-dotenv + versions: + - 0.15.0 + - 0.16.0 + - dependency-name: isort + versions: + - 5.7.0 + - 5.8.0 + - dependency-name: flake8 + versions: + - 3.8.4 + - 3.9.0 + - dependency-name: sentry-sdk + versions: + - 0.19.5 + - 0.20.0 + - 0.20.2 + - 0.20.3 + - 1.0.0 + - dependency-name: aiohttp + versions: + - 3.7.4 + - dependency-name: cython + versions: + - 0.29.22 + - dependency-name: pytest + versions: + - 6.2.2 + - dependency-name: pyyaml + versions: + - 5.4.1 + - dependency-name: pytest-mock + versions: + - 3.5.1 + - dependency-name: requests + versions: + - 2.25.1 + - dependency-name: cchardet + versions: + - 2.1.7 From 59015ea62dcf43422a5c1fa348067a55ddbb97bb Mon Sep 17 00:00:00 2001 From: Rochelle Edwards <78165151+RochelleLynn-programmer@users.noreply.github.com> Date: Fri, 6 Aug 2021 16:17:50 -0500 Subject: [PATCH 06/69] Delayed "Call To Action" message created for new users (#311) * test * WIP: Change this commit message when it's ready for prod * reformatted delayed message string to fit pattern of code base, added slack tutorial based off open issue, and updated time for delayed message send Co-authored-by: Ubuntu --- README.md | 1 + pybot/endpoints/slack/commands.py | 4 +--- pybot/endpoints/slack/events.py | 20 ++++++++++++++++ pybot/endpoints/slack/utils/event_messages.py | 22 +++++++++++++++++ pybot/endpoints/slack/utils/event_utils.py | 24 ++++++++++++++++++- pybot/endpoints/slack/utils/slash_repeat.py | 6 ++++- 6 files changed, 72 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d850cd5..1a25a49 100644 --- a/README.md +++ b/README.md @@ -276,3 +276,4 @@ BOT_USER_OAUTH_ACCESS_TOKEN | The bot user specific OAuth token used to authenti ## License This package is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). + diff --git a/pybot/endpoints/slack/commands.py b/pybot/endpoints/slack/commands.py index ca3a510..a927965 100644 --- a/pybot/endpoints/slack/commands.py +++ b/pybot/endpoints/slack/commands.py @@ -111,9 +111,7 @@ async def slash_repeat(command: Command, app: SirBot): slack = app["plugins"]["slack"].api arguments = command["text"].split(" ") - method_type, message = get_slash_repeat_messages( - slack_id, channel_id, arguments - ) + method_type, message = get_slash_repeat_messages(slack_id, channel_id, arguments) await slack.query(method_type, message) diff --git a/pybot/endpoints/slack/events.py b/pybot/endpoints/slack/events.py index ece715a..b8027ac 100644 --- a/pybot/endpoints/slack/events.py +++ b/pybot/endpoints/slack/events.py @@ -10,6 +10,8 @@ link_backend_user, send_community_notification, send_user_greetings, + build_delayed_messages, + send_social_cta, ) logger = logging.getLogger(__name__) @@ -17,6 +19,7 @@ def create_endpoints(plugin): plugin.on_event("team_join", team_join, wait=False) + plugin.on_event("team_join", team_join_delayed, wait=False) async def team_join(event: Event, app: SirBot) -> None: @@ -43,3 +46,20 @@ async def team_join(event: Event, app: SirBot) -> None: headers = await get_backend_auth_headers(app.http_session) if headers: await link_backend_user(user_id, headers, slack_api, app.http_session) + + +async def team_join_delayed(event: Event, app: SirBot) -> None: + """ + Handler for when the Slack workspace has a new member join. + + After 1 day sends the new user a greeting, a call to action to join social media + """ + slack_api = app.plugins["slack"].api + user_id = event["user"]["id"] + + social_media_messages = build_delayed_messages(user_id) + future = [send_social_cta(social_media_messages, slack_api)] + + logger.info(f"Scheduling delayed message") + await asyncio.sleep(900) + await asyncio.wait(future) diff --git a/pybot/endpoints/slack/utils/event_messages.py b/pybot/endpoints/slack/utils/event_messages.py index 73e14c0..709de9a 100644 --- a/pybot/endpoints/slack/utils/event_messages.py +++ b/pybot/endpoints/slack/utils/event_messages.py @@ -25,6 +25,28 @@ def second_team_join_message() -> str: ) +def third_team_join_message() -> str: + return f"If this is your first time using Slack, please watch this to get familiar with the app." + + +def delayed_team_join_message() -> str: + return ( + f"Welcome to Operation Code's Slack Community, we're glad you're here! " + f"Please share with us in #general what brings you to Operation Code, " + f"and how we can assist you. Also, consider adding to your Operation Code " + f"profile the links to your LinkedIn and GitHub accounts. " + f"Lastly, consider connecting with us on our social media accounts: " + f", " + f", " + f", " + f" and " + f"" + f", and contribute to our open source platform on " + f". If you have any immediate needs, " + f"please tag our @outreach-team in any public channel. " + ) + + def external_button_attachments() -> List[dict]: return [ { diff --git a/pybot/endpoints/slack/utils/event_utils.py b/pybot/endpoints/slack/utils/event_utils.py index b028e25..6d810c3 100644 --- a/pybot/endpoints/slack/utils/event_utils.py +++ b/pybot/endpoints/slack/utils/event_utils.py @@ -21,6 +21,8 @@ external_button_attachments, second_team_join_message, team_join_initial_message, + delayed_team_join_message, + third_team_join_message, ) logger = logging.getLogger(__name__) @@ -33,7 +35,9 @@ def base_user_message(user_id: str) -> Message: return message -def build_messages(user_id) -> Tuple[Message, Message, Message, Message, Message]: +def build_messages( + user_id, +) -> Tuple[Message, Message, Message, Message, Message, Message]: initial_message = base_user_message(user_id) initial_message["text"] = team_join_initial_message(user_id) @@ -41,6 +45,9 @@ def build_messages(user_id) -> Tuple[Message, Message, Message, Message, Message second_message["text"] = second_team_join_message() second_message["attachments"] = external_button_attachments() + third_message = base_user_message(user_id) + third_message["text"] = third_team_join_message() + action_menu = base_user_message(user_id) action_menu["text"] = "We recommend the following resources." action_menu["attachments"] = base_resources() @@ -61,12 +68,20 @@ def build_messages(user_id) -> Tuple[Message, Message, Message, Message, Message return ( initial_message, second_message, + third_message, action_menu, community_message, outreach_team_message, ) +def build_delayed_messages(user_id) -> Tuple[Message]: + social_media_message = base_user_message(user_id) + social_media_message["text"] = delayed_team_join_message() + + return (social_media_message,) + + async def send_user_greetings( user_messages: List[Message], slack_api: SlackAPI ) -> None: @@ -80,6 +95,13 @@ async def send_community_notification( return await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=community_message) +async def send_social_cta( + social_media_messages: List[Message], slack_api: SlackAPI +) -> None: + for message in social_media_messages: + await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=message) + + async def link_backend_user( slack_id: str, auth_header: Dict[str, str], diff --git a/pybot/endpoints/slack/utils/slash_repeat.py b/pybot/endpoints/slack/utils/slash_repeat.py index 910aa5d..45ba2a6 100644 --- a/pybot/endpoints/slack/utils/slash_repeat.py +++ b/pybot/endpoints/slack/utils/slash_repeat.py @@ -36,7 +36,11 @@ def modify_params(modify_options: dict) -> dict: ], } - message["attachments"][0]["pretext"] = f'<{modify_options["arguments"][1]}>: {modify_options["pretext"]} (sent by: <@{modify_options["slack_id"]}>)' if len(modify_options["arguments"]) >= 2 else f'<@{modify_options["slack_id"]}>: {modify_options["pretext"]}' + message["attachments"][0]["pretext"] = ( + f'<{modify_options["arguments"][1]}>: {modify_options["pretext"]} (sent by: <@{modify_options["slack_id"]}>)' + if len(modify_options["arguments"]) >= 2 + else f'<@{modify_options["slack_id"]}>: {modify_options["pretext"]}' + ) message["attachments"][0]["title_link"] = modify_options["link"] return message From d976ed09e9ea8f1cb0c27680802ac63fc67312ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Aug 2021 21:07:26 +0000 Subject: [PATCH 07/69] Bump requests from 2.24.0 to 2.26.0 Bumps [requests](https://github.com/psf/requests) from 2.24.0 to 2.26.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.24.0...v2.26.0) --- updated-dependencies: - dependency-name: requests dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 437 ++++++++++++++++++++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 229 insertions(+), 210 deletions(-) diff --git a/poetry.lock b/poetry.lock index f706c1c..6f64c55 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,26 +1,26 @@ [[package]] -category = "main" -description = "Asyncio support for PEP-567 contextvars backport." name = "aiocontextvars" +version = "0.2.2" +description = "Asyncio support for PEP-567 contextvars backport." +category = "main" optional = false python-versions = ">=3.5" -version = "0.2.2" [[package]] -category = "main" -description = "File support for asyncio." name = "aiofiles" +version = "0.4.0" +description = "File support for asyncio." +category = "main" optional = false python-versions = "*" -version = "0.4.0" [[package]] -category = "main" -description = "Async http client/server framework (asyncio)" name = "aiohttp" +version = "3.6.2" +description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.5.3" -version = "3.6.2" [package.dependencies] async-timeout = ">=3.0,<4.0" @@ -33,24 +33,23 @@ yarl = ">=1.0,<2.0" speedups = ["aiodns", "brotlipy", "cchardet"] [[package]] -category = "dev" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = "*" -version = "1.4.4" [[package]] -category = "main" -description = "In-process task scheduler with Cron-like capabilities" name = "apscheduler" +version = "3.6.3" +description = "In-process task scheduler with Cron-like capabilities" +category = "main" optional = false python-versions = "*" -version = "3.6.3" [package.dependencies] pytz = "*" -setuptools = ">=0.7" six = ">=1.4.0" tzlocal = ">=1.2" @@ -68,72 +67,71 @@ twisted = ["twisted"] zookeeper = ["kazoo"] [[package]] -category = "main" -description = "Timeout context manager for asyncio programs" name = "async-timeout" +version = "3.0.1" +description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.5.3" -version = "3.0.1" [[package]] -category = "main" -description = "Decorator that turns async generator functions into async context managers." name = "asyncio-contextmanager" +version = "1.0.1" +description = "Decorator that turns async generator functions into async context managers." +category = "main" optional = false python-versions = "*" -version = "1.0.1" [[package]] -category = "main" -description = "An asyncio PosgtreSQL driver" name = "asyncpg" +version = "0.18.3" +description = "An asyncio PosgtreSQL driver" +category = "main" optional = false python-versions = ">=3.5.0" -version = "0.18.3" [package.extras] -dev = ["Cython (0.29)", "pytest (>=3.6.0)", "Sphinx (>=1.7.3,<1.8.0)", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0)", "sphinx-rtd-theme (>=0.2.4,<0.3.0)", "flake8 (>=3.5.0,<3.6.0)", "uvloop (>=0.8.0)"] +dev = ["Cython (==0.29)", "pytest (>=3.6.0)", "Sphinx (>=1.7.3,<1.8.0)", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0)", "sphinx-rtd-theme (>=0.2.4,<0.3.0)", "flake8 (>=3.5.0,<3.6.0)", "uvloop (>=0.8.0)"] docs = ["Sphinx (>=1.7.3,<1.8.0)", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0)", "sphinx-rtd-theme (>=0.2.4,<0.3.0)"] test = ["flake8 (>=3.5.0,<3.6.0)", "uvloop (>=0.8.0)"] [[package]] -category = "dev" -description = "Enhance the standard unittest package with features for testing asyncio libraries" name = "asynctest" +version = "0.13.0" +description = "Enhance the standard unittest package with features for testing asyncio libraries" +category = "dev" optional = false python-versions = ">=3.5" -version = "0.13.0" [[package]] -category = "dev" -description = "Atomic file writes." -marker = "sys_platform == \"win32\"" name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.0" [[package]] -category = "main" -description = "Classes Without Boilerplate" name = "attrs" +version = "20.2.0" +description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.2.0" [package.extras] -dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] [[package]] -category = "dev" -description = "The uncompromising code formatter." name = "black" +version = "20.8b1" +description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.6" -version = "20.8b1" [package.dependencies] appdirs = "*" @@ -150,78 +148,85 @@ colorama = ["colorama (>=0.4.3)"] d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] [[package]] -category = "main" -description = "cChardet is high speed universal character encoding detector." name = "cchardet" +version = "2.1.6" +description = "cChardet is high speed universal character encoding detector." +category = "main" optional = false python-versions = "*" -version = "2.1.6" [[package]] -category = "main" -description = "Python package for providing Mozilla's CA Bundle." name = "certifi" +version = "2020.6.20" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = "*" -version = "2020.6.20" [[package]] -category = "main" -description = "Universal encoding detector for Python 2 and 3" name = "chardet" +version = "3.0.4" +description = "Universal encoding detector for Python 2 and 3" +category = "main" optional = false python-versions = "*" -version = "3.0.4" [[package]] +name = "charset-normalizer" +version = "2.0.4" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "dev" -description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] name = "click" +version = "7.1.2" +description = "Composable command line interface toolkit" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "7.1.2" [[package]] -category = "dev" -description = "Cross-platform colored terminal text." -marker = "sys_platform == \"win32\"" name = "colorama" +version = "0.4.3" +description = "Cross-platform colored terminal text." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.4.3" [[package]] -category = "main" -description = "The Cython compiler for writing C extensions for the Python language." name = "cython" +version = "0.29.21" +description = "The Cython compiler for writing C extensions for the Python language." +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.29.21" [[package]] -category = "dev" -description = "the modular source code checker: pep8 pyflakes and co" name = "flake8" +version = "3.8.3" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "3.8.3" [package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} mccabe = ">=0.6.0,<0.7.0" pycodestyle = ">=2.6.0a1,<2.7.0" pyflakes = ">=2.2.0,<2.3.0" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" - [[package]] -category = "main" -description = "An async GitHub API library" name = "gidgethub" +version = "3.3.0" +description = "An async GitHub API library" +category = "main" optional = false python-versions = ">=3.6" -version = "3.3.0" [package.dependencies] uritemplate = ">=3.0.0" @@ -236,21 +241,20 @@ tornado = ["tornado"] treq = ["treq", "twisted"] [[package]] -category = "main" -description = "Internationalized Domain Names in Applications (IDNA)" name = "idna" +version = "2.10" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.10" [[package]] -category = "dev" -description = "Read metadata from Python packages" -marker = "python_version < \"3.8\"" name = "importlib-metadata" +version = "2.0.0" +description = "Read metadata from Python packages" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "2.0.0" [package.dependencies] zipp = ">=0.5" @@ -260,20 +264,20 @@ docs = ["sphinx", "rst.linker"] testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] [[package]] -category = "dev" -description = "iniconfig: brain-dead simple config-ini parsing" name = "iniconfig" +version = "1.0.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = "*" -version = "1.0.1" [[package]] -category = "dev" -description = "A Python utility / library to sort Python imports." name = "isort" +version = "4.3.21" +description = "A Python utility / library to sort Python imports." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "4.3.21" [package.extras] pipfile = ["pipreqs", "requirementslib"] @@ -282,142 +286,137 @@ requirements = ["pipreqs", "pip-api"] xdg_home = ["appdirs (>=1.4.0)"] [[package]] -category = "dev" -description = "McCabe checker, plugin for flake8" name = "mccabe" +version = "0.6.1" +description = "McCabe checker, plugin for flake8" +category = "dev" optional = false python-versions = "*" -version = "0.6.1" [[package]] -category = "main" -description = "multidict implementation" name = "multidict" +version = "4.7.6" +description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.5" -version = "4.7.6" [[package]] -category = "dev" -description = "Experimental type system extensions for programs checked with the mypy typechecker." name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" optional = false python-versions = "*" -version = "0.4.3" [[package]] -category = "dev" -description = "Core utilities for Python packages" name = "packaging" +version = "20.4" +description = "Core utilities for Python packages" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.4" [package.dependencies] pyparsing = ">=2.0.2" six = "*" [[package]] -category = "dev" -description = "Utility library for gitignore style pattern matching of file paths." name = "pathspec" +version = "0.8.0" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.8.0" [[package]] -category = "dev" -description = "plugin and hook calling mechanisms for python" name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.13.1" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} [package.extras] dev = ["pre-commit", "tox"] [[package]] -category = "dev" -description = "library with cross-python path, ini-parsing, io, code, log facilities" name = "py" +version = "1.9.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.9.0" [[package]] -category = "dev" -description = "Python style guide checker" name = "pycodestyle" +version = "2.6.0" +description = "Python style guide checker" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.6.0" [[package]] -category = "dev" -description = "passive checker of Python programs" name = "pyflakes" +version = "2.2.0" +description = "passive checker of Python programs" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.2.0" [[package]] -category = "dev" -description = "Python parsing module" name = "pyparsing" +version = "2.4.7" +description = "Python parsing module" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.4.7" [[package]] -category = "dev" -description = "pytest: simple powerful testing with Python" name = "pytest" +version = "6.1.0" +description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.5" -version = "6.1.0" [package.dependencies] -atomicwrites = ">=1.0" +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=17.4.0" -colorama = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<1.0" py = ">=1.8.2" toml = "*" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" - [package.extras] -checkqa_mypy = ["mypy (0.780)"] +checkqa_mypy = ["mypy (==0.780)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] [[package]] -category = "dev" -description = "pytest plugin for aiohttp support" name = "pytest-aiohttp" +version = "0.3.0" +description = "pytest plugin for aiohttp support" +category = "dev" optional = false python-versions = "*" -version = "0.3.0" [package.dependencies] aiohttp = ">=2.3.5" pytest = "*" [[package]] -category = "dev" -description = "Pytest support for asyncio." name = "pytest-asyncio" +version = "0.14.0" +description = "Pytest support for asyncio." +category = "dev" optional = false python-versions = ">= 3.5" -version = "0.14.0" [package.dependencies] pytest = ">=5.4.0" @@ -426,12 +425,12 @@ pytest = ">=5.4.0" testing = ["async-generator (>=1.3)", "coverage", "hypothesis (>=5.7.1)"] [[package]] -category = "dev" -description = "Thin-wrapper around the mock package for easier use with pytest" name = "pytest-mock" +version = "3.3.1" +description = "Thin-wrapper around the mock package for easier use with pytest" +category = "dev" optional = false python-versions = ">=3.5" -version = "3.3.1" [package.dependencies] pytest = ">=5.0" @@ -440,65 +439,65 @@ pytest = ">=5.0" dev = ["pre-commit", "tox", "pytest-asyncio"] [[package]] -category = "main" -description = "Add .env support to your django/flask apps in development and deployments" name = "python-dotenv" +version = "0.14.0" +description = "Add .env support to your django/flask apps in development and deployments" +category = "main" optional = false python-versions = "*" -version = "0.14.0" [package.extras] cli = ["click (>=5.0)"] [[package]] -category = "main" -description = "World timezone definitions, modern and historical" name = "pytz" +version = "2020.1" +description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" -version = "2020.1" [[package]] -category = "main" -description = "YAML parser and emitter for Python" name = "pyyaml" +version = "5.3.1" +description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "5.3.1" [[package]] -category = "dev" -description = "Alternative regular expression module, to replace re." name = "regex" +version = "2020.9.27" +description = "Alternative regular expression module, to replace re." +category = "dev" optional = false python-versions = "*" -version = "2020.9.27" [[package]] -category = "dev" -description = "Python HTTP for Humans." name = "requests" +version = "2.26.0" +description = "Python HTTP for Humans." +category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.24.0" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.dependencies] certifi = ">=2017.4.17" -chardet = ">=3.0.2,<4" -idna = ">=2.5,<3" -urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" [package.extras] -security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] -category = "main" -description = "Python client for Sentry (https://sentry.io)" name = "sentry-sdk" +version = "0.17.8" +description = "Python client for Sentry (https://sentry.io)" +category = "main" optional = false python-versions = "*" -version = "0.17.8" [package.dependencies] certifi = "*" @@ -521,12 +520,12 @@ sqlalchemy = ["sqlalchemy (>=1.2)"] tornado = ["tornado (>=5)"] [[package]] -category = "main" -description = "The good Sir Bot-a-lot. An asynchronous python bot framework." name = "sirbot" +version = "0.1.1" +description = "The good Sir Bot-a-lot. An asynchronous python bot framework." +category = "main" optional = false python-versions = ">=3.6,<4.0" -version = "0.1.1" [package.dependencies] aiofiles = ">=0.4.0,<0.5.0" @@ -539,131 +538,128 @@ slack-sansio = ">=1.0.0,<2.0.0" ujson = ">=1.35,<2.0" [[package]] -category = "main" -description = "Python 2 and 3 compatibility utilities" name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "1.15.0" [[package]] -category = "main" -description = "Python (a)sync Slack API library" name = "slack-sansio" +version = "1.1.0" +description = "Python (a)sync Slack API library" +category = "main" optional = false python-versions = ">=3.6,<4.0" -version = "1.1.0" [package.extras] +requests = ["requests (>=2.20,<3.0)", "websocket-client (>=0.54.0,<0.55.0)"] aiohttp = ["aiohttp (>=3.4,<4.0)"] curio = ["curio (>=0.9.0,<0.10.0)", "asks (>=2.2,<3.0)"] -requests = ["requests (>=2.20,<3.0)", "websocket-client (>=0.54.0,<0.55.0)"] trio = ["asks (>=2.2,<3.0)", "trio (>=0.11.0,<0.12.0)"] [[package]] -category = "dev" -description = "Python Library for Tom's Obvious, Minimal Language" name = "toml" +version = "0.10.1" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" optional = false python-versions = "*" -version = "0.10.1" [[package]] -category = "dev" -description = "a fork of Python 2 and 3 ast modules with type comment support" name = "typed-ast" +version = "1.4.1" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "dev" optional = false python-versions = "*" -version = "1.4.1" [[package]] -category = "main" -description = "Backported and Experimental Type Hints for Python 3.5+" name = "typing-extensions" +version = "3.7.4.3" +description = "Backported and Experimental Type Hints for Python 3.5+" +category = "main" optional = false python-versions = "*" -version = "3.7.4.3" [[package]] -category = "main" -description = "tzinfo object for the local timezone" name = "tzlocal" +version = "2.1" +description = "tzinfo object for the local timezone" +category = "main" optional = false python-versions = "*" -version = "2.1" [package.dependencies] pytz = "*" [[package]] -category = "main" -description = "Ultra fast JSON encoder and decoder for Python" name = "ujson" +version = "1.35" +description = "Ultra fast JSON encoder and decoder for Python" +category = "main" optional = false python-versions = "*" -version = "1.35" [[package]] -category = "main" -description = "URI templates" name = "uritemplate" +version = "3.0.1" +description = "URI templates" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "3.0.1" [[package]] -category = "main" -description = "HTTP library with thread-safe connection pooling, file post, and more." name = "urllib3" +version = "1.25.10" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -version = "1.25.10" [package.extras] brotli = ["brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] -category = "main" -description = "Yet another URL library" name = "yarl" +version = "1.6.0" +description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.5" -version = "1.6.0" [package.dependencies] idna = ">=2.0" multidict = ">=4.0" - -[package.dependencies.typing-extensions] -python = "<3.8" -version = ">=3.7.4" +typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} [[package]] -category = "main" -description = "No-SQLite U.S. zipcode validation Python package, ready for use in AWS Lambda" name = "zipcodes" +version = "1.1.2" +description = "No-SQLite U.S. zipcode validation Python package, ready for use in AWS Lambda" +category = "main" optional = false python-versions = "*" -version = "1.1.2" [[package]] -category = "dev" -description = "Backport of pathlib-compatible object wrapper for zip files" -marker = "python_version < \"3.8\"" name = "zipp" +version = "3.2.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" optional = false python-versions = ">=3.6" -version = "3.2.0" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] +testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [metadata] -content-hash = "2d587eba0ef9a049615cc107242e107195490bfdc7f3182b64ac397dd6a110e4" +lock-version = "1.1" python-versions = "^3.7" +content-hash = "d7bc692ed5170763b7a246b938dc44a2cefa5026cda0dec2dc9796dddb873ff2" [metadata.files] aiocontextvars = [ @@ -775,6 +771,10 @@ chardet = [ {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, ] +charset-normalizer = [ + {file = "charset-normalizer-2.0.4.tar.gz", hash = "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"}, + {file = "charset_normalizer-2.0.4-py3-none-any.whl", hash = "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b"}, +] click = [ {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, @@ -815,6 +815,8 @@ cython = [ {file = "Cython-0.29.21-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:603b9f1b8e93e8b494d3e89320c410679e21018e48b6cbc77280f5db71f17dc0"}, {file = "Cython-0.29.21-cp38-cp38-win32.whl", hash = "sha256:473df5d5e400444a36ed81c6596f56a5b52a3481312d0a48d68b777790f730ae"}, {file = "Cython-0.29.21-cp38-cp38-win_amd64.whl", hash = "sha256:b8a8a31b9e8860634adbca30fea1d0c7f08e208b3d7611f3e580e5f20992e5d7"}, + {file = "Cython-0.29.21-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7ebaa8800c376bcdae596fb1372cb4232a5ef957619d35839520d2786f2debb9"}, + {file = "Cython-0.29.21-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:c111ac9abdf715762e4fb87395e59d61c0fbb6ce79eb2e24167700b6cfa8ba79"}, {file = "Cython-0.29.21-py2.py3-none-any.whl", hash = "sha256:5c4276fdcbccdf1e3c1756c7aeb8395e9a36874fa4d30860e7694f43d325ae13"}, {file = "Cython-0.29.21.tar.gz", hash = "sha256:e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad"}, ] @@ -932,6 +934,8 @@ pyyaml = [ {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"}, {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"}, {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"}, + {file = "PyYAML-5.3.1-cp39-cp39-win32.whl", hash = "sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a"}, + {file = "PyYAML-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e"}, {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"}, ] regex = [ @@ -955,11 +959,17 @@ regex = [ {file = "regex-2020.9.27-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:8d69cef61fa50c8133382e61fd97439de1ae623fe943578e477e76a9d9471637"}, {file = "regex-2020.9.27-cp38-cp38-win32.whl", hash = "sha256:f2388013e68e750eaa16ccbea62d4130180c26abb1d8e5d584b9baf69672b30f"}, {file = "regex-2020.9.27-cp38-cp38-win_amd64.whl", hash = "sha256:4318d56bccfe7d43e5addb272406ade7a2274da4b70eb15922a071c58ab0108c"}, + {file = "regex-2020.9.27-cp39-cp39-manylinux1_i686.whl", hash = "sha256:84cada8effefe9a9f53f9b0d2ba9b7b6f5edf8d2155f9fdbe34616e06ececf81"}, + {file = "regex-2020.9.27-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:816064fc915796ea1f26966163f6845de5af78923dfcecf6551e095f00983650"}, + {file = "regex-2020.9.27-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:5d892a4f1c999834eaa3c32bc9e8b976c5825116cde553928c4c8e7e48ebda67"}, + {file = "regex-2020.9.27-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c9443124c67b1515e4fe0bb0aa18df640965e1030f468a2a5dc2589b26d130ad"}, + {file = "regex-2020.9.27-cp39-cp39-win32.whl", hash = "sha256:49f23ebd5ac073765ecbcf046edc10d63dcab2f4ae2bce160982cb30df0c0302"}, + {file = "regex-2020.9.27-cp39-cp39-win_amd64.whl", hash = "sha256:3d20024a70b97b4f9546696cbf2fd30bae5f42229fbddf8661261b1eaff0deb7"}, {file = "regex-2020.9.27.tar.gz", hash = "sha256:a6f32aea4260dfe0e55dc9733ea162ea38f0ea86aa7d0f77b15beac5bf7b369d"}, ] requests = [ - {file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"}, - {file = "requests-2.24.0.tar.gz", hash = "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b"}, + {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, + {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"}, ] sentry-sdk = [ {file = "sentry-sdk-0.17.8.tar.gz", hash = "sha256:e159f7c919d19ae86e5a4ff370fccc45149fab461fbeb93fb5a735a0b33a9cb1"}, @@ -989,19 +999,28 @@ typed-ast = [ {file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"}, {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"}, {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"}, + {file = "typed_ast-1.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fcf135e17cc74dbfbc05894ebca928ffeb23d9790b3167a674921db19082401f"}, {file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"}, {file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"}, {file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"}, {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"}, {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"}, + {file = "typed_ast-1.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:f208eb7aff048f6bea9586e61af041ddf7f9ade7caed625742af423f6bae3298"}, {file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"}, {file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"}, {file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"}, {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"}, {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"}, + {file = "typed_ast-1.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7e4c9d7658aaa1fc80018593abdf8598bf91325af6af5cce4ce7c73bc45ea53d"}, {file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"}, {file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"}, {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"}, + {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:92c325624e304ebf0e025d1224b77dd4e6393f18aab8d829b5b7e04afe9b7a2c"}, + {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d648b8e3bf2fe648745c8ffcee3db3ff903d0817a01a12dd6a6ea7a8f4889072"}, + {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fac11badff8313e23717f3dada86a15389d0708275bddf766cca67a84ead3e91"}, + {file = "typed_ast-1.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:0d8110d78a5736e16e26213114a38ca35cb15b6515d535413b090bd50951556d"}, + {file = "typed_ast-1.4.1-cp39-cp39-win32.whl", hash = "sha256:b52ccf7cfe4ce2a1064b18594381bccf4179c2ecf7f513134ec2f993dd4ab395"}, + {file = "typed_ast-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:3742b32cf1c6ef124d57f95be609c473d7ec4c14d0090e5a5e05a15269fb4d0c"}, {file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"}, ] typing-extensions = [ diff --git a/pyproject.toml b/pyproject.toml index 0f3de3f..c702b7a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ pytest = "^6.0.2" pytest-aiohttp = "^0.3.0" pytest-asyncio = "^0.14.0" pytest-mock = "^3.3.1" -requests = "^2.22" +requests = "^2.26" [build-system] requires = ["poetry>=0.12"] From 929c8e0f3260f5d4c04ef4c6d4656a5715044faa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Aug 2021 21:25:23 +0000 Subject: [PATCH 08/69] Bump pyyaml from 5.3.1 to 5.4 Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.3.1 to 5.4. - [Release notes](https://github.com/yaml/pyyaml/releases) - [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES) - [Commits](https://github.com/yaml/pyyaml/compare/5.3.1...5.4) --- updated-dependencies: - dependency-name: pyyaml dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 40 ++++++++++++++++++++++++---------------- pyproject.toml | 2 +- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6f64c55..629926c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -459,11 +459,11 @@ python-versions = "*" [[package]] name = "pyyaml" -version = "5.3.1" +version = "5.4" description = "YAML parser and emitter for Python" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [[package]] name = "regex" @@ -659,7 +659,7 @@ testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "d7bc692ed5170763b7a246b938dc44a2cefa5026cda0dec2dc9796dddb873ff2" +content-hash = "5cedb157a62ca876dbdba428047ebc6b509ebc308cd04e8023b8f18eafb62382" [metadata.files] aiocontextvars = [ @@ -924,19 +924,27 @@ pytz = [ {file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"}, ] pyyaml = [ - {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"}, - {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"}, - {file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"}, - {file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"}, - {file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"}, - {file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"}, - {file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"}, - {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"}, - {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"}, - {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"}, - {file = "PyYAML-5.3.1-cp39-cp39-win32.whl", hash = "sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a"}, - {file = "PyYAML-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e"}, - {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"}, + {file = "PyYAML-5.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f7a21e3d99aa3095ef0553e7ceba36fb693998fbb1226f1392ce33681047465f"}, + {file = "PyYAML-5.4-cp27-cp27m-win32.whl", hash = "sha256:52bf0930903818e600ae6c2901f748bc4869c0c406056f679ab9614e5d21a166"}, + {file = "PyYAML-5.4-cp27-cp27m-win_amd64.whl", hash = "sha256:a36a48a51e5471513a5aea920cdad84cbd56d70a5057cca3499a637496ea379c"}, + {file = "PyYAML-5.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:5e7ac4e0e79a53451dc2814f6876c2fa6f71452de1498bbe29c0b54b69a986f4"}, + {file = "PyYAML-5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc552b6434b90d9dbed6a4f13339625dc466fd82597119897e9489c953acbc22"}, + {file = "PyYAML-5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0dc9f2eb2e3c97640928dec63fd8dc1dd91e6b6ed236bd5ac00332b99b5c2ff9"}, + {file = "PyYAML-5.4-cp36-cp36m-win32.whl", hash = "sha256:5a3f345acff76cad4aa9cb171ee76c590f37394186325d53d1aa25318b0d4a09"}, + {file = "PyYAML-5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:f3790156c606299ff499ec44db422f66f05a7363b39eb9d5b064f17bd7d7c47b"}, + {file = "PyYAML-5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:124fd7c7bc1e95b1eafc60825f2daf67c73ce7b33f1194731240d24b0d1bf628"}, + {file = "PyYAML-5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8b818b6c5a920cbe4203b5a6b14256f0e5244338244560da89b7b0f1313ea4b6"}, + {file = "PyYAML-5.4-cp37-cp37m-win32.whl", hash = "sha256:737bd70e454a284d456aa1fa71a0b429dd527bcbf52c5c33f7c8eee81ac16b89"}, + {file = "PyYAML-5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:7242790ab6c20316b8e7bb545be48d7ed36e26bbe279fd56f2c4a12510e60b4b"}, + {file = "PyYAML-5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cc547d3ead3754712223abb7b403f0a184e4c3eae18c9bb7fd15adef1597cc4b"}, + {file = "PyYAML-5.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8635d53223b1f561b081ff4adecb828fd484b8efffe542edcfdff471997f7c39"}, + {file = "PyYAML-5.4-cp38-cp38-win32.whl", hash = "sha256:26fcb33776857f4072601502d93e1a619f166c9c00befb52826e7b774efaa9db"}, + {file = "PyYAML-5.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2243dd033fd02c01212ad5c601dafb44fbb293065f430b0d3dbf03f3254d615"}, + {file = "PyYAML-5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:31ba07c54ef4a897758563e3a0fcc60077698df10180abe4b8165d9895c00ebf"}, + {file = "PyYAML-5.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:02c78d77281d8f8d07a255e57abdbf43b02257f59f50cc6b636937d68efa5dd0"}, + {file = "PyYAML-5.4-cp39-cp39-win32.whl", hash = "sha256:fdc6b2cb4b19e431994f25a9160695cc59a4e861710cc6fc97161c5e845fc579"}, + {file = "PyYAML-5.4-cp39-cp39-win_amd64.whl", hash = "sha256:8bf38641b4713d77da19e91f8b5296b832e4db87338d6aeffe422d42f1ca896d"}, + {file = "PyYAML-5.4.tar.gz", hash = "sha256:3c49e39ac034fd64fd576d63bb4db53cda89b362768a67f07749d55f128ac18a"}, ] regex = [ {file = "regex-2020.9.27-cp27-cp27m-win32.whl", hash = "sha256:d23a18037313714fb3bb5a94434d3151ee4300bae631894b1ac08111abeaa4a3"}, diff --git a/pyproject.toml b/pyproject.toml index c702b7a..20deff3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ aiocontextvars = "^0.2.2" cchardet = "^2.1.6" cython = "^0.29.21" python-dotenv = "^0.14.0" -pyyaml = "^5.3.1" +pyyaml = "^5.4" sentry-sdk = "^0.17.8" sirbot = "^0.1.1" zipcodes = "^1.1.2" From 8fcebe5d539b86c037c67753e9e81e0c88e16763 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Aug 2021 21:37:41 +0000 Subject: [PATCH 09/69] Bump zipcodes from 1.1.2 to 1.1.3 Bumps [zipcodes](https://github.com/seanpianka/zipcodes) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/seanpianka/zipcodes/releases) - [Commits](https://github.com/seanpianka/zipcodes/commits) --- updated-dependencies: - dependency-name: zipcodes dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 10 +++++----- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 629926c..08eab77 100644 --- a/poetry.lock +++ b/poetry.lock @@ -638,8 +638,8 @@ typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} [[package]] name = "zipcodes" -version = "1.1.2" -description = "No-SQLite U.S. zipcode validation Python package, ready for use in AWS Lambda" +version = "1.1.3" +description = "Query U.S. state zipcodes without SQLite." category = "main" optional = false python-versions = "*" @@ -659,7 +659,7 @@ testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "5cedb157a62ca876dbdba428047ebc6b509ebc308cd04e8023b8f18eafb62382" +content-hash = "7b09b6420eed2f1c0f3f1f427ada7cf35fc087e92ffa187b562cb4771a1c0b92" [metadata.files] aiocontextvars = [ @@ -1071,8 +1071,8 @@ yarl = [ {file = "yarl-1.6.0.tar.gz", hash = "sha256:61d3ea3c175fe45f1498af868879c6ffeb989d4143ac542163c45538ba5ec21b"}, ] zipcodes = [ - {file = "zipcodes-1.1.2-py2.py3-none-any.whl", hash = "sha256:66b69078c7336b1cd32d032d34251d9e961a8842a9add5e08dfcb628d8c4bc5e"}, - {file = "zipcodes-1.1.2.tar.gz", hash = "sha256:20673593a25c0b5c04ed5c1c0ed68be88e96ae79b0f1d12946809084165e5afb"}, + {file = "zipcodes-1.1.3-py2.py3-none-any.whl", hash = "sha256:b228fd678c1f035b67df1af39880c62e842a3b03c0d78dfeb2bf26069dec2a7a"}, + {file = "zipcodes-1.1.3.tar.gz", hash = "sha256:566a0bf8af3254d5b314cf902ca8d63046795f8811046d9d218fe30ce9ee3241"}, ] zipp = [ {file = "zipp-3.2.0-py3-none-any.whl", hash = "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6"}, diff --git a/pyproject.toml b/pyproject.toml index 20deff3..63f43a9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ python-dotenv = "^0.14.0" pyyaml = "^5.4" sentry-sdk = "^0.17.8" sirbot = "^0.1.1" -zipcodes = "^1.1.2" +zipcodes = "^1.1.3" [tool.poetry.dev-dependencies] asynctest = "^0.13.0" From 5b9623c57c8e34fe74c98a6140a862bd86b1fb4c Mon Sep 17 00:00:00 2001 From: aaron-suarez Date: Fri, 17 Dec 2021 21:13:31 +0000 Subject: [PATCH 10/69] Fix #301 - Send acknowledgement message to reporters --- pybot/endpoints/slack/commands.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pybot/endpoints/slack/commands.py b/pybot/endpoints/slack/commands.py index a927965..6089658 100644 --- a/pybot/endpoints/slack/commands.py +++ b/pybot/endpoints/slack/commands.py @@ -79,6 +79,13 @@ async def slash_report(command: Command, app: SirBot): await slack.query(methods.CHAT_POST_MESSAGE, response) + ack = { + "text": f"Your report has been submitted successfully. The moderation team will review. Your Report:\n\n{message}", + "channel": slack_id, + } + + await slack.query(methods.CHAT_POST_MESSAGE, ack) + @catch_command_slack_error async def slash_lunch(command: Command, app: SirBot): From 7420fc2aab5e85e7fd02d3184fa658deeec4a0ad Mon Sep 17 00:00:00 2001 From: Aaron Suarez Date: Wed, 22 Dec 2021 17:06:04 -0600 Subject: [PATCH 11/69] Fix off by 1 in /roll (#351) /roll misused randint and suffered from a possible off by 1 Co-authored-by: Allen Co-authored-by: Jeremy Mill --- README.md | 1 + pybot/endpoints/slack/commands.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a25a49..c5fdaff 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ [![CircleCI](https://circleci.com/gh/OperationCode/operationcode-pybot.svg?style=svg)](https://circleci.com/gh/OperationCode/operationcode-pybot) [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=OperationCode/operationcode-pybot)](https://dependabot.com) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://contributor-covenant.org/) # [OperationCode-Pybot](https://github.com/OperationCode/operationcode-pybot) diff --git a/pybot/endpoints/slack/commands.py b/pybot/endpoints/slack/commands.py index 6089658..c7c61d7 100644 --- a/pybot/endpoints/slack/commands.py +++ b/pybot/endpoints/slack/commands.py @@ -153,7 +153,7 @@ async def slash_roll(command: Command, app: SirBot): ) return await slack.query(methods.CHAT_POST_EPHEMERAL, response) - dice = [random.randint(1, typedice + 1) for _ in range(numdice)] + dice = [random.randint(1, typedice) for _ in range(numdice)] message = f"<@{slack_id}> Rolled {numdice} D{typedice}: {dice}" response = dict(channel=channel_id, text=message) await slack.query(methods.CHAT_POST_MESSAGE, response) From a8d5b5d49bd1f0616159fa4cd73f4842d2aa0884 Mon Sep 17 00:00:00 2001 From: Aaron Suarez Date: Wed, 22 Dec 2021 18:01:48 -0600 Subject: [PATCH 12/69] Update ECR to latest version (#354) --- .circleci/config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 73806f1..bc18203 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ version: 2.1 orbs: - aws-ecr: circleci/aws-ecr@4.0.1 + aws-ecr: circleci/aws-ecr@7.3.0 aws-ecs: circleci/aws-ecs@0.0.8 docker: circleci/docker@0.5.1 @@ -32,7 +32,7 @@ workflows: # push new Docker image to ECS - - aws-ecr/build_and_push_image: + - aws-ecr/build-and-push-image: repo: pybot tag: '${CIRCLE_BRANCH}' dockerfile: docker/Dockerfile @@ -52,7 +52,7 @@ workflows: container-image-name-updates: 'container=pybot,tag=${CIRCLE_BRANCH}' verify-revision-is-deployed: true requires: - - aws-ecr/build_and_push_image + - aws-ecr/build-and-push-image filters: branches: only: @@ -64,7 +64,7 @@ jobs: docker: - image: circleci/python:3.7.1 environment: # environment variables for primary container - PIPENV_VENV_IN_PROJECT: true + PIPENV_VENV_IN_PROJECT: "true" steps: - checkout From d397ae755563118ee678526319b699f0badaf35c Mon Sep 17 00:00:00 2001 From: Aaron Suarez Date: Wed, 22 Dec 2021 18:28:04 -0600 Subject: [PATCH 13/69] Upgrade pip so cryptography will build successfully (#355) --- docker/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index 9c83c85..c87c460 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -15,6 +15,8 @@ ENV PATH="/opt/venv/bin:$PATH" COPY poetry.lock pyproject.toml ./ +RUN pip install pip==21.3.1 + RUN pip install poetry && \ poetry config virtualenvs.create false && \ poetry install --no-dev --no-interaction From 0eae0ca5e16310549625645478b66d4689c19265 Mon Sep 17 00:00:00 2001 From: Aaron Suarez Date: Wed, 22 Dec 2021 19:52:48 -0600 Subject: [PATCH 14/69] Upgrade ecs orb to 2.2.1 (#356) --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bc18203..0b8e120 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 orbs: aws-ecr: circleci/aws-ecr@7.3.0 - aws-ecs: circleci/aws-ecs@0.0.8 + aws-ecs: circleci/aws-ecs@2.2.1 docker: circleci/docker@0.5.1 workflows: From 17b738a869472781dcfb2ccf0021ee48f3ff39ae Mon Sep 17 00:00:00 2001 From: Aaron Suarez Date: Tue, 28 Dec 2021 12:28:28 -0600 Subject: [PATCH 15/69] Set logging to info for debugging on staging (#357) --- pybot/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pybot/__main__.py b/pybot/__main__.py index b2a7b67..dafe76a 100644 --- a/pybot/__main__.py +++ b/pybot/__main__.py @@ -58,6 +58,6 @@ # Add route to respond to AWS health check bot.router.add_get("/health", handle_health_check) - logging.getLogger("aiohttp.access").setLevel(logging.WARNING) + logging.getLogger("aiohttp.access").setLevel(logging.INFO) bot.start(host=HOST, port=PORT, print=logger.info) From 4714bb550993f10aed5bbd676f53c376bd837a41 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 2 Jan 2022 09:48:29 -0600 Subject: [PATCH 16/69] Replaces majority of code with rewrite code --- .dockerignore | 2 +- .flake8 | 15 - .github/dependabot.yml | 48 - .gitignore | 17 +- .isort.cfg | 6 - Dockerfile | 15 + Pipfile | 28 + Pipfile.lock | 1184 +++++++++++++++++ README.md | 71 +- docker-compose.yml | 14 + logging.yml | 32 - main.py | 233 ++++ .../message_templates => modules}/__init__.py | 0 modules/airtable/__init__.py | 26 + modules/airtable/daily_programmer_table.py | 45 + modules/airtable/mentorship_tables.py | 185 +++ modules/airtable/message_text_table.py | 43 + modules/airtable/scheduled_message_table.py | 25 + modules/airtable/shared_table.py | 31 + .../handlers}/__init__.py | 0 modules/handlers/channel_join_handler.py | 89 ++ modules/handlers/daily_programmer.py | 9 + modules/handlers/greeting_handler.py | 92 ++ modules/handlers/mentorship_handler.py | 222 ++++ modules/handlers/report_handler.py | 98 ++ .../api => modules/models}/__init__.py | 0 modules/models/daily_programmer_models.py | 41 + modules/models/greeting_models.py | 29 + modules/models/mentorship_models.py | 166 +++ modules/models/message_text_models.py | 26 + .../models/report_models.py | 0 modules/models/scheduled_message_models.py | 52 + modules/models/shared_models.py | 46 + modules/models/slack_models/__init__.py | 0 modules/models/slack_models/action_models.py | 36 + modules/models/slack_models/command_models.py | 41 + modules/models/slack_models/event_models.py | 30 + modules/models/slack_models/message_models.py | 0 modules/models/slack_models/shared_models.py | 319 +++++ modules/models/slack_models/slack_models.py | 97 ++ modules/models/slack_models/view_models.py | 22 + modules/slack/__init__.py | 0 modules/slack/blocks/__init__.py | 0 modules/slack/blocks/announcement_blocks.py | 19 + .../channel_join_request_blocks.json | 29 + .../general_announcement.json | 21 + .../block_kit_examples/greeting_block.json | 55 + .../mentorship/mentorship_claim_blocks.json | 45 + .../mentorship/mentorship_request_block.json | 588 ++++++++ .../mentorship/mentorship_request_modal.json | 573 ++++++++ .../block_kit_examples/new_join_delayed.json | 20 + .../new_join_immediate.json | 93 ++ .../reports/report_claim.json | 46 + .../reports/report_form.json | 49 + .../response_to_user_on_failed_report.json | 11 + ...response_to_user_on_successful_report.json | 11 + modules/slack/blocks/greeting_blocks.py | 67 + modules/slack/blocks/mentorship_blocks.py | 272 ++++ modules/slack/blocks/new_join_blocks.py | 133 ++ modules/slack/blocks/report_blocks.py | 117 ++ modules/slack/blocks/shared_blocks.py | 73 + modules/utils/__init__.py | 138 ++ modules/utils/daily_programmer_scheduler.py | 9 + .../mentorship_request_claim_action.json | 110 ++ .../pride_request_command.json | 14 + .../view_submission_request.json | 737 ++++++++++ .../example_responses/view_open_response.json | 649 +++++++++ modules/utils/message_scheduler.py | 62 + modules/utils/one_off_scripts.py | 59 + poetry.lock | 1080 --------------- pybot/__init__.py | 8 - pybot/__main__.py | 63 - pybot/customLogging.py | 6 - pybot/endpoints/__init__.py | 7 - pybot/endpoints/airtable/__init__.py | 5 - .../airtable/message_templates/messages.py | 39 - pybot/endpoints/airtable/requests.py | 50 - pybot/endpoints/airtable/utils.py | 97 -- pybot/endpoints/api/__init__.py | 5 - pybot/endpoints/api/slack_api.py | 70 - pybot/endpoints/api/utils.py | 105 -- pybot/endpoints/slack/__init__.py | 8 - pybot/endpoints/slack/actions/__init__.py | 89 -- .../slack/actions/general_actions.py | 52 - .../endpoints/slack/actions/mentor_request.py | 145 -- .../slack/actions/mentor_volunteer.py | 80 -- pybot/endpoints/slack/actions/new_member.py | 97 -- .../endpoints/slack/actions/report_message.py | 36 - pybot/endpoints/slack/commands.py | 159 --- pybot/endpoints/slack/events.py | 65 - .../slack/message_templates/block_action.py | 95 -- .../slack/message_templates/commands.py | 211 --- .../slack/message_templates/mentor_request.py | 273 ---- .../message_templates/mentor_volunteer.py | 99 -- .../endpoints/slack/message_templates/tech.py | 129 -- pybot/endpoints/slack/messages.py | 98 -- pybot/endpoints/slack/utils/__init__.py | 30 - .../endpoints/slack/utils/action_messages.py | 366 ----- pybot/endpoints/slack/utils/command_utils.py | 20 - pybot/endpoints/slack/utils/event_messages.py | 124 -- pybot/endpoints/slack/utils/event_utils.py | 144 -- pybot/endpoints/slack/utils/general_utils.py | 42 - pybot/endpoints/slack/utils/slash_lunch.py | 124 -- pybot/endpoints/slack/utils/slash_repeat.py | 101 -- pybot/plugins/__init__.py | 2 - pybot/plugins/airtable/__init__.py | 1 - pybot/plugins/airtable/api.py | 146 -- pybot/plugins/airtable/endpoints.py | 53 - pybot/plugins/airtable/plugin.py | 55 - pybot/plugins/api/__init__.py | 1 - pybot/plugins/api/endpoints.py | 52 - pybot/plugins/api/plugin.py | 49 - pybot/plugins/api/request.py | 88 -- pyproject.toml | 32 - tests/conftest.py | 58 +- tests/data/__init__.py | 1 - tests/data/actions.py | 58 - tests/data/events.py | 166 --- .../endpoints/api/test_slack_api_endpoint.py | 47 - tests/endpoints/slack/test_slack_actions.py | 34 - tests/endpoints/slack/test_slack_events.py | 41 - tests/unit/__init__.py | 0 ...iliation_table_has_all_desired_fields.yaml | 61 + ...on_table_has_correct_number_of_fields.yaml | 63 + ...t_mentor_table_has_all_desired_fields.yaml | 62 + ...or_table_has_correct_number_of_fields.yaml | 64 + ...iliation_table_has_all_desired_fields.yaml | 60 + ...on_table_has_correct_number_of_fields.yaml | 62 + ...iliation_table_has_all_desired_fields.yaml | 63 + ...on_table_has_correct_number_of_fields.yaml | 65 + ...services_table_has_all_desired_fields.yaml | 60 + ...es_table_has_correct_number_of_fields.yaml | 62 + ...killsets_table_has_all_desired_fields.yaml | 60 + ...ts_table_has_correct_number_of_fields.yaml | 62 + ...iliation_table_has_all_desired_fields.yaml | 60 + ...on_table_has_correct_number_of_fields.yaml | 62 + ...iliation_table_has_all_desired_fields.yaml | 61 + ...on_table_has_correct_number_of_fields.yaml | 63 + tests/unit/test_airtable.py | 215 +++ 139 files changed, 8500 insertions(+), 5146 deletions(-) delete mode 100644 .flake8 delete mode 100644 .isort.cfg create mode 100644 Dockerfile create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 docker-compose.yml delete mode 100644 logging.yml create mode 100644 main.py rename {pybot/endpoints/slack/message_templates => modules}/__init__.py (100%) create mode 100644 modules/airtable/__init__.py create mode 100644 modules/airtable/daily_programmer_table.py create mode 100644 modules/airtable/mentorship_tables.py create mode 100644 modules/airtable/message_text_table.py create mode 100644 modules/airtable/scheduled_message_table.py create mode 100644 modules/airtable/shared_table.py rename {tests/endpoints => modules/handlers}/__init__.py (100%) create mode 100644 modules/handlers/channel_join_handler.py create mode 100644 modules/handlers/daily_programmer.py create mode 100644 modules/handlers/greeting_handler.py create mode 100644 modules/handlers/mentorship_handler.py create mode 100644 modules/handlers/report_handler.py rename {tests/endpoints/api => modules/models}/__init__.py (100%) create mode 100644 modules/models/daily_programmer_models.py create mode 100644 modules/models/greeting_models.py create mode 100644 modules/models/mentorship_models.py create mode 100644 modules/models/message_text_models.py rename tests/endpoints/slack/__init__.py => modules/models/report_models.py (100%) create mode 100644 modules/models/scheduled_message_models.py create mode 100644 modules/models/shared_models.py create mode 100644 modules/models/slack_models/__init__.py create mode 100644 modules/models/slack_models/action_models.py create mode 100644 modules/models/slack_models/command_models.py create mode 100644 modules/models/slack_models/event_models.py create mode 100644 modules/models/slack_models/message_models.py create mode 100644 modules/models/slack_models/shared_models.py create mode 100644 modules/models/slack_models/slack_models.py create mode 100644 modules/models/slack_models/view_models.py create mode 100644 modules/slack/__init__.py create mode 100644 modules/slack/blocks/__init__.py create mode 100644 modules/slack/blocks/announcement_blocks.py create mode 100644 modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json create mode 100644 modules/slack/blocks/block_kit_examples/general_announcement.json create mode 100644 modules/slack/blocks/block_kit_examples/greeting_block.json create mode 100644 modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json create mode 100644 modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json create mode 100644 modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json create mode 100644 modules/slack/blocks/block_kit_examples/new_join_delayed.json create mode 100644 modules/slack/blocks/block_kit_examples/new_join_immediate.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/report_claim.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/report_form.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json create mode 100644 modules/slack/blocks/greeting_blocks.py create mode 100644 modules/slack/blocks/mentorship_blocks.py create mode 100644 modules/slack/blocks/new_join_blocks.py create mode 100644 modules/slack/blocks/report_blocks.py create mode 100644 modules/slack/blocks/shared_blocks.py create mode 100644 modules/utils/__init__.py create mode 100644 modules/utils/daily_programmer_scheduler.py create mode 100644 modules/utils/example_requests/mentorship_request_claim_action.json create mode 100644 modules/utils/example_requests/pride_request_command.json create mode 100644 modules/utils/example_requests/view_submission_request.json create mode 100644 modules/utils/example_responses/view_open_response.json create mode 100644 modules/utils/message_scheduler.py create mode 100644 modules/utils/one_off_scripts.py delete mode 100644 poetry.lock delete mode 100644 pybot/__init__.py delete mode 100644 pybot/__main__.py delete mode 100644 pybot/customLogging.py delete mode 100644 pybot/endpoints/__init__.py delete mode 100644 pybot/endpoints/airtable/__init__.py delete mode 100644 pybot/endpoints/airtable/message_templates/messages.py delete mode 100644 pybot/endpoints/airtable/requests.py delete mode 100644 pybot/endpoints/airtable/utils.py delete mode 100644 pybot/endpoints/api/__init__.py delete mode 100644 pybot/endpoints/api/slack_api.py delete mode 100644 pybot/endpoints/api/utils.py delete mode 100644 pybot/endpoints/slack/__init__.py delete mode 100644 pybot/endpoints/slack/actions/__init__.py delete mode 100644 pybot/endpoints/slack/actions/general_actions.py delete mode 100644 pybot/endpoints/slack/actions/mentor_request.py delete mode 100644 pybot/endpoints/slack/actions/mentor_volunteer.py delete mode 100644 pybot/endpoints/slack/actions/new_member.py delete mode 100644 pybot/endpoints/slack/actions/report_message.py delete mode 100644 pybot/endpoints/slack/commands.py delete mode 100644 pybot/endpoints/slack/events.py delete mode 100644 pybot/endpoints/slack/message_templates/block_action.py delete mode 100644 pybot/endpoints/slack/message_templates/commands.py delete mode 100644 pybot/endpoints/slack/message_templates/mentor_request.py delete mode 100644 pybot/endpoints/slack/message_templates/mentor_volunteer.py delete mode 100644 pybot/endpoints/slack/message_templates/tech.py delete mode 100644 pybot/endpoints/slack/messages.py delete mode 100644 pybot/endpoints/slack/utils/__init__.py delete mode 100644 pybot/endpoints/slack/utils/action_messages.py delete mode 100644 pybot/endpoints/slack/utils/command_utils.py delete mode 100644 pybot/endpoints/slack/utils/event_messages.py delete mode 100644 pybot/endpoints/slack/utils/event_utils.py delete mode 100644 pybot/endpoints/slack/utils/general_utils.py delete mode 100644 pybot/endpoints/slack/utils/slash_lunch.py delete mode 100644 pybot/endpoints/slack/utils/slash_repeat.py delete mode 100644 pybot/plugins/__init__.py delete mode 100644 pybot/plugins/airtable/__init__.py delete mode 100644 pybot/plugins/airtable/api.py delete mode 100644 pybot/plugins/airtable/endpoints.py delete mode 100644 pybot/plugins/airtable/plugin.py delete mode 100644 pybot/plugins/api/__init__.py delete mode 100644 pybot/plugins/api/endpoints.py delete mode 100644 pybot/plugins/api/plugin.py delete mode 100644 pybot/plugins/api/request.py delete mode 100644 pyproject.toml delete mode 100644 tests/data/__init__.py delete mode 100644 tests/data/actions.py delete mode 100644 tests/data/events.py delete mode 100644 tests/endpoints/api/test_slack_api_endpoint.py delete mode 100644 tests/endpoints/slack/test_slack_actions.py delete mode 100644 tests/endpoints/slack/test_slack_events.py create mode 100644 tests/unit/__init__.py create mode 100644 tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/test_airtable.py diff --git a/.dockerignore b/.dockerignore index 4f509e5..2eea525 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1 @@ -*.env \ No newline at end of file +.env \ No newline at end of file diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 45e50cb..0000000 --- a/.flake8 +++ /dev/null @@ -1,15 +0,0 @@ -[flake8] -max-line-length = 88 - -select = C,E,F,W,B,B950 - -max-complexity = 10 - -ignore = - E501 - F401 - W503 - -exclude = - __pycache__ - testing.py diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7601031..442ccd0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,51 +7,3 @@ updates: time: "07:00" timezone: America/Los_Angeles open-pull-requests-limit: 10 - ignore: - - dependency-name: black - versions: - - 21.4b0 - - 21.4b1 - - dependency-name: pytest-asyncio - versions: - - 0.15.0 - - dependency-name: python-dotenv - versions: - - 0.15.0 - - 0.16.0 - - dependency-name: isort - versions: - - 5.7.0 - - 5.8.0 - - dependency-name: flake8 - versions: - - 3.8.4 - - 3.9.0 - - dependency-name: sentry-sdk - versions: - - 0.19.5 - - 0.20.0 - - 0.20.2 - - 0.20.3 - - 1.0.0 - - dependency-name: aiohttp - versions: - - 3.7.4 - - dependency-name: cython - versions: - - 0.29.22 - - dependency-name: pytest - versions: - - 6.2.2 - - dependency-name: pyyaml - versions: - - 5.4.1 - - dependency-name: pytest-mock - versions: - - 3.5.1 - - dependency-name: requests - versions: - - 2.25.1 - - dependency-name: cchardet - versions: - - 2.1.7 diff --git a/.gitignore b/.gitignore index f9441aa..4933ab1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,4 @@ -.idea -*.env -.pytest_cache -!/docker/example.env - +### Python template # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] @@ -19,6 +15,7 @@ dist/ downloads/ eggs/ .eggs/ +lib/ lib64/ parts/ sdist/ @@ -42,7 +39,6 @@ pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ -.nox/ .coverage .coverage.* .cache @@ -77,10 +73,6 @@ target/ # Jupyter Notebook .ipynb_checkpoints -# IPython -profile_default/ -ipython_config.py - # pyenv .python-version @@ -111,8 +103,5 @@ venv.bak/ # mypy .mypy_cache/ -.dmypy.json -dmypy.json -# Pyre type checker -.pyre/ \ No newline at end of file +.idea/* \ No newline at end of file diff --git a/.isort.cfg b/.isort.cfg deleted file mode 100644 index 2df5cc3..0000000 --- a/.isort.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[settings] -line_length = 88 -multi_line_output = 3 -include_trailing_comma = true -force_grid_wrap = 0 -use_parentheses = true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c7786c5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.10 + +ENV PYTHONDONTWRITEBYTECODE=1 + +WORKDIR /pybot + +RUN python3 -m pip install --upgrade pip + +RUN pip install pipenv + +COPY Pipfile Pipfile.lock /pybot/ + +RUN pipenv install --system --dev --pre + +COPY . /pybot/ \ No newline at end of file diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..069b83c --- /dev/null +++ b/Pipfile @@ -0,0 +1,28 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +fastapi = "*" +uvicorn = {extras = ["standard"], version = "*"} +slack-bolt = "*" +requests = "*" +slack-sdk = "*" +airtable = "*" +pyairtable = "*" +pydantic = "*" +apscheduler = "*" +dailyprogrammer = "*" +aiohttp = "==3.8.1" + +[dev-packages] +pytest = "*" +black = "*" +pytest-vcr = "*" + +[requires] +python_version = "3.10" + +[pipenv] +allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..a022280 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,1184 @@ +{ + "_meta": { + "hash": { + "sha256": "0f3dbde60d7424db45b5115d0b2b1731ecf3c41b12bbbeb9a9627dd78d8896f0" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.10" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "aiohttp": { + "hashes": [ + "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3", + "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782", + "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75", + "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf", + "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7", + "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675", + "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1", + "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785", + "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4", + "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf", + "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5", + "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15", + "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca", + "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8", + "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac", + "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8", + "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef", + "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516", + "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700", + "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2", + "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8", + "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0", + "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676", + "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad", + "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155", + "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db", + "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd", + "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091", + "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602", + "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411", + "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93", + "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd", + "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec", + "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51", + "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7", + "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17", + "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d", + "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00", + "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923", + "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440", + "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32", + "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e", + "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1", + "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724", + "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a", + "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8", + "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2", + "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33", + "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b", + "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2", + "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632", + "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b", + "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2", + "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316", + "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74", + "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96", + "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866", + "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44", + "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950", + "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa", + "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c", + "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a", + "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd", + "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd", + "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9", + "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421", + "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2", + "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922", + "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4", + "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237", + "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642", + "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578" + ], + "index": "pypi", + "version": "==3.8.1" + }, + "aiosignal": { + "hashes": [ + "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", + "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.0" + }, + "airtable": { + "hashes": [ + "sha256:d653e1b3b92297e3f0cc4226215d43d7fa99c72f38918e9371e445abf0baa70c", + "sha256:fb667e55da3af1341e0f2946014cc29e7d0613e69f3ee20528051c4075aee75c" + ], + "index": "pypi", + "version": "==0.4.8" + }, + "anyio": { + "hashes": [ + "sha256:24adc69309fb5779bc1e06158e143e0b6d2c56b302a3ac3de3083c705a6ed39d", + "sha256:2855a9423524abcdd652d942f8932fda1735210f77a6b392eafd9ff34d3fe020" + ], + "markers": "python_full_version >= '3.6.2'", + "version": "==3.4.0" + }, + "apscheduler": { + "hashes": [ + "sha256:5cf344ebcfbdaa48ae178c029c055cec7bc7a4a47c21e315e4d1f08bd35f2355", + "sha256:c22cb14b411a31435eb2c530dfbbec948ac63015b517087c7978adb61b574865" + ], + "index": "pypi", + "version": "==3.8.1" + }, + "asgiref": { + "hashes": [ + "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9", + "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214" + ], + "markers": "python_version >= '3.6'", + "version": "==3.4.1" + }, + "async-timeout": { + "hashes": [ + "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", + "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.2" + }, + "attrs": { + "hashes": [ + "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", + "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==21.4.0" + }, + "certifi": { + "hashes": [ + "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", + "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + ], + "version": "==2021.10.8" + }, + "charset-normalizer": { + "hashes": [ + "sha256:1eecaa09422db5be9e29d7fc65664e6c33bd06f9ced7838578ba40d58bdf3721", + "sha256:b0b883e8e874edfdece9c28f314e3dd5badf067342e42fb162203335ae61aa2c" + ], + "markers": "python_version >= '3'", + "version": "==2.0.9" + }, + "click": { + "hashes": [ + "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", + "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" + ], + "markers": "python_version >= '3.6'", + "version": "==8.0.3" + }, + "dailyprogrammer": { + "hashes": [ + "sha256:1540a01c59b3b99a5b3f1dcd94032b639a09afae730ee7d80267a532be014949", + "sha256:32391ed029daebbc052ebc2a6c28e1ef97006338c396f2ae9958413eb1c137fc", + "sha256:5d646f22e2983b2b21486cf169f2a02faa423b63cfce30a2b985499e95a784b1" + ], + "index": "pypi", + "version": "==1.0" + }, + "decorator": { + "hashes": [ + "sha256:7b12e7c3c6ab203a29e157335e9122cb03de9ab7264b137594103fd4a683b374", + "sha256:e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7" + ], + "markers": "python_version >= '3.5'", + "version": "==5.1.0" + }, + "fastapi": { + "hashes": [ + "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06", + "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748" + ], + "index": "pypi", + "version": "==0.70.1" + }, + "frozenlist": { + "hashes": [ + "sha256:01d79515ed5aa3d699b05f6bdcf1fe9087d61d6b53882aa599a10853f0479c6c", + "sha256:0a7c7cce70e41bc13d7d50f0e5dd175f14a4f1837a8549b0936ed0cbe6170bf9", + "sha256:11ff401951b5ac8c0701a804f503d72c048173208490c54ebb8d7bb7c07a6d00", + "sha256:14a5cef795ae3e28fb504b73e797c1800e9249f950e1c964bb6bdc8d77871161", + "sha256:16eef427c51cb1203a7c0ab59d1b8abccaba9a4f58c4bfca6ed278fc896dc193", + "sha256:16ef7dd5b7d17495404a2e7a49bac1bc13d6d20c16d11f4133c757dd94c4144c", + "sha256:181754275d5d32487431a0a29add4f897968b7157204bc1eaaf0a0ce80c5ba7d", + "sha256:1cf63243bc5f5c19762943b0aa9e0d3fb3723d0c514d820a18a9b9a5ef864315", + "sha256:1cfe6fef507f8bac40f009c85c7eddfed88c1c0d38c75e72fe10476cef94e10f", + "sha256:1fef737fd1388f9b93bba8808c5f63058113c10f4e3c0763ced68431773f72f9", + "sha256:25b358aaa7dba5891b05968dd539f5856d69f522b6de0bf34e61f133e077c1a4", + "sha256:26f602e380a5132880fa245c92030abb0fc6ff34e0c5500600366cedc6adb06a", + "sha256:28e164722ea0df0cf6d48c4d5bdf3d19e87aaa6dfb39b0ba91153f224b912020", + "sha256:2de5b931701257d50771a032bba4e448ff958076380b049fd36ed8738fdb375b", + "sha256:3457f8cf86deb6ce1ba67e120f1b0128fcba1332a180722756597253c465fc1d", + "sha256:351686ca020d1bcd238596b1fa5c8efcbc21bffda9d0efe237aaa60348421e2a", + "sha256:406aeb340613b4b559db78d86864485f68919b7141dec82aba24d1477fd2976f", + "sha256:41de4db9b9501679cf7cddc16d07ac0f10ef7eb58c525a1c8cbff43022bddca4", + "sha256:41f62468af1bd4e4b42b5508a3fe8cc46a693f0cdd0ca2f443f51f207893d837", + "sha256:4766632cd8a68e4f10f156a12c9acd7b1609941525569dd3636d859d79279ed3", + "sha256:47b2848e464883d0bbdcd9493c67443e5e695a84694efff0476f9059b4cb6257", + "sha256:4a495c3d513573b0b3f935bfa887a85d9ae09f0627cf47cad17d0cc9b9ba5c38", + "sha256:4ad065b2ebd09f32511ff2be35c5dfafee6192978b5a1e9d279a5c6e121e3b03", + "sha256:4c457220468d734e3077580a3642b7f682f5fd9507f17ddf1029452450912cdc", + "sha256:4f52d0732e56906f8ddea4bd856192984650282424049c956857fed43697ea43", + "sha256:54a1e09ab7a69f843cd28fefd2bcaf23edb9e3a8d7680032c8968b8ac934587d", + "sha256:5a72eecf37eface331636951249d878750db84034927c997d47f7f78a573b72b", + "sha256:5df31bb2b974f379d230a25943d9bf0d3bc666b4b0807394b131a28fca2b0e5f", + "sha256:66a518731a21a55b7d3e087b430f1956a36793acc15912e2878431c7aec54210", + "sha256:6790b8d96bbb74b7a6f4594b6f131bd23056c25f2aa5d816bd177d95245a30e3", + "sha256:68201be60ac56aff972dc18085800b6ee07973c49103a8aba669dee3d71079de", + "sha256:6e105013fa84623c057a4381dc8ea0361f4d682c11f3816cc80f49a1f3bc17c6", + "sha256:705c184b77565955a99dc360f359e8249580c6b7eaa4dc0227caa861ef46b27a", + "sha256:72cfbeab7a920ea9e74b19aa0afe3b4ad9c89471e3badc985d08756efa9b813b", + "sha256:735f386ec522e384f511614c01d2ef9cf799f051353876b4c6fb93ef67a6d1ee", + "sha256:82d22f6e6f2916e837c91c860140ef9947e31194c82aaeda843d6551cec92f19", + "sha256:83334e84a290a158c0c4cc4d22e8c7cfe0bba5b76d37f1c2509dabd22acafe15", + "sha256:84e97f59211b5b9083a2e7a45abf91cfb441369e8bb6d1f5287382c1c526def3", + "sha256:87521e32e18a2223311afc2492ef2d99946337da0779ddcda77b82ee7319df59", + "sha256:878ebe074839d649a1cdb03a61077d05760624f36d196884a5cafb12290e187b", + "sha256:89fdfc84c6bf0bff2ff3170bb34ecba8a6911b260d318d377171429c4be18c73", + "sha256:8b4c7665a17c3a5430edb663e4ad4e1ad457614d1b2f2b7f87052e2ef4fa45ca", + "sha256:8b54cdd2fda15467b9b0bfa78cee2ddf6dbb4585ef23a16e14926f4b076dfae4", + "sha256:94728f97ddf603d23c8c3dd5cae2644fa12d33116e69f49b1644a71bb77b89ae", + "sha256:954b154a4533ef28bd3e83ffdf4eadf39deeda9e38fb8feaf066d6069885e034", + "sha256:977a1438d0e0d96573fd679d291a1542097ea9f4918a8b6494b06610dfeefbf9", + "sha256:9ade70aea559ca98f4b1b1e5650c45678052e76a8ab2f76d90f2ac64180215a2", + "sha256:9b6e21e5770df2dea06cb7b6323fbc008b13c4a4e3b52cb54685276479ee7676", + "sha256:a0d3ffa8772464441b52489b985d46001e2853a3b082c655ec5fad9fb6a3d618", + "sha256:a37594ad6356e50073fe4f60aa4187b97d15329f2138124d252a5a19c8553ea4", + "sha256:a8d86547a5e98d9edd47c432f7a14b0c5592624b496ae9880fb6332f34af1edc", + "sha256:aa44c4740b4e23fcfa259e9dd52315d2b1770064cde9507457e4c4a65a04c397", + "sha256:acc4614e8d1feb9f46dd829a8e771b8f5c4b1051365d02efb27a3229048ade8a", + "sha256:af2a51c8a381d76eabb76f228f565ed4c3701441ecec101dd18be70ebd483cfd", + "sha256:b2ae2f5e9fa10805fb1c9adbfefaaecedd9e31849434be462c3960a0139ed729", + "sha256:b46f997d5ed6d222a863b02cdc9c299101ee27974d9bbb2fd1b3c8441311c408", + "sha256:bc93f5f62df3bdc1f677066327fc81f92b83644852a31c6aa9b32c2dde86ea7d", + "sha256:bfbaa08cf1452acad9cb1c1d7b89394a41e712f88df522cea1a0f296b57782a0", + "sha256:c1e8e9033d34c2c9e186e58279879d78c94dd365068a3607af33f2bc99357a53", + "sha256:c5328ed53fdb0a73c8a50105306a3bc013e5ca36cca714ec4f7bd31d38d8a97f", + "sha256:c6a9d84ee6427b65a81fc24e6ef589cb794009f5ca4150151251c062773e7ed2", + "sha256:c98d3c04701773ad60d9545cd96df94d955329efc7743fdb96422c4b669c633b", + "sha256:cb3957c39668d10e2b486acc85f94153520a23263b6401e8f59422ef65b9520d", + "sha256:e63ad0beef6ece06475d29f47d1f2f29727805376e09850ebf64f90777962792", + "sha256:e74f8b4d8677ebb4015ac01fcaf05f34e8a1f22775db1f304f497f2f88fdc697", + "sha256:e7d0dd3e727c70c2680f5f09a0775525229809f1a35d8552b92ff10b2b14f2c2", + "sha256:ec6cf345771cdb00791d271af9a0a6fbfc2b6dd44cb753f1eeaa256e21622adb", + "sha256:ed58803563a8c87cf4c0771366cf0ad1aa265b6b0ae54cbbb53013480c7ad74d", + "sha256:f0081a623c886197ff8de9e635528fd7e6a387dccef432149e25c13946cb0cd0", + "sha256:f025f1d6825725b09c0038775acab9ae94264453a696cc797ce20c0769a7b367", + "sha256:f5f3b2942c3b8b9bfe76b408bbaba3d3bb305ee3693e8b1d631fe0a0d4f93673", + "sha256:fbd4844ff111449f3bbe20ba24fbb906b5b1c2384d0f3287c9f7da2354ce6d23" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.0" + }, + "h11": { + "hashes": [ + "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6", + "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042" + ], + "markers": "python_version >= '3.6'", + "version": "==0.12.0" + }, + "httptools": { + "hashes": [ + "sha256:04114db99605c9b56ea22a8ec4d7b1485b908128ed4f4a8f6438489c428da794", + "sha256:074afd8afdeec0fa6786cd4a1676e0c0be23dc9a017a86647efa6b695168104f", + "sha256:113816f9af7dcfc4aa71ebb5354d77365f666ecf96ac7ff2aa1d24b6bca44165", + "sha256:1a8f26327023fa1a947d36e60a0582149e182fbbc949c8a65ec8665754dbbe69", + "sha256:2119fa619a4c53311f594f25c0205d619350fcb32140ec5057f861952e9b2b4f", + "sha256:21e948034f70e47c8abfa2d5e6f1a5661f87a2cddc7bcc70f61579cc87897c70", + "sha256:32a10a5903b5bc0eb647d01cd1e95bec3bb614a9bf53f0af1e01360b2debdf81", + "sha256:3787c1f46e9722ef7f07ea5c76b0103037483d1b12e34a02c53ceca5afa4e09a", + "sha256:3f82eb106e1474c63dba36a176067e65b48385f4cecddf3616411aa5d1fbdfec", + "sha256:3f9b4856d46ba1f0c850f4e84b264a9a8b4460acb20e865ec00978ad9fbaa4cf", + "sha256:4137137de8976511a392e27bfdcf231bd926ac13d375e0414e927b08217d779e", + "sha256:4687dfc116a9f1eb22a7d797f0dc6f6e17190d406ca4e729634b38aa98044b17", + "sha256:47dba2345aaa01b87e4981e8756af441349340708d5b60712c98c55a4d28f4af", + "sha256:5a836bd85ae1fb4304f674808488dae403e136d274aa5bafd0e6ee456f11c371", + "sha256:6e676bc3bb911b11f3d7e2144b9a53600bf6b9b21e0e4437aa308e1eef094d97", + "sha256:72ee0e3fb9c6437ab3ae34e9abee67fcee6876f4f58504e3f613dd5882aafdb7", + "sha256:79717080dc3f8b1eeb7f820b9b81528acbc04be6041f323fdd97550da2062575", + "sha256:8ac842df4fc3952efa7820b277961ea55e068bbc54cb59a0820400de7ae358d8", + "sha256:9f475b642c48b1b78584bdd12a5143e2c512485664331eade9c29ef769a17598", + "sha256:b8ac7dee63af4346e02b1e6d32202e3b5b3706a9928bec6da6d7a5b066217422", + "sha256:c0ac2e0ce6733c55858932e7d37fcc7b67ba6bb23e9648593c55f663de031b93", + "sha256:c14576b737d9e6e4f2a86af04918dbe9b62f57ce8102a8695c9a382dbe405c7f", + "sha256:cdc3975db86c29817e6d13df14e037c931fc893a710fb71097777a4147090068", + "sha256:eda95634027200f4b2a6d499e7c2e7fa9b8ee57e045dfda26958ea0af27c070b" + ], + "version": "==0.3.0" + }, + "idna": { + "hashes": [ + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + ], + "markers": "python_version >= '3'", + "version": "==3.3" + }, + "jsonpath-rw": { + "hashes": [ + "sha256:05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec" + ], + "version": "==1.4.0" + }, + "jsonpath-rw-ext": { + "hashes": [ + "sha256:0947e018c4e6d46f9d04c56487793c702eb225fa252891aa4ed41a9ca26f3d84", + "sha256:a9e44e803b6d87d135b09d1e5af0db4d4cf97ba62711a80aa51c8c721980a994" + ], + "version": "==1.2.2" + }, + "multidict": { + "hashes": [ + "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b", + "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031", + "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0", + "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce", + "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda", + "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858", + "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5", + "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8", + "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22", + "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac", + "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e", + "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6", + "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5", + "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0", + "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11", + "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a", + "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55", + "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341", + "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b", + "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704", + "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b", + "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1", + "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621", + "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d", + "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5", + "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7", + "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac", + "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d", + "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef", + "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0", + "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f", + "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02", + "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b", + "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37", + "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23", + "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d", + "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065", + "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86", + "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6", + "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded", + "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4", + "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7", + "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a", + "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17", + "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3", + "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21", + "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24", + "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940", + "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac", + "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c", + "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422", + "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628", + "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0", + "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf", + "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e", + "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677", + "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f", + "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c", + "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4", + "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b", + "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747", + "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0", + "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01", + "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8", + "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9", + "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64", + "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d", + "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0", + "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52", + "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1", + "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae", + "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d" + ], + "markers": "python_version >= '3.6'", + "version": "==5.2.0" + }, + "pbr": { + "hashes": [ + "sha256:176e8560eaf61e127817ef93d8a844803abb27a4d4637f0ff3bb783129be2e0a", + "sha256:672d8ebee84921862110f23fcec2acea191ef58543d34dfe9ef3d9f13c31cddf" + ], + "markers": "python_version >= '2.6'", + "version": "==5.8.0" + }, + "ply": { + "hashes": [ + "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", + "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce" + ], + "version": "==3.11" + }, + "pyairtable": { + "hashes": [ + "sha256:4132af74f96e185ed04ab5bb73c1b7fcccd0b6e1578e41af149f1b9c1383788c", + "sha256:cfb5f26a2d5a75b3896428eb87def47427c3e570ac08bb61dec70927fe9b1117" + ], + "index": "pypi", + "version": "==1.0.0.post1" + }, + "pydantic": { + "hashes": [ + "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3", + "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398", + "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1", + "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65", + "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4", + "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16", + "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2", + "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c", + "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6", + "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce", + "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9", + "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3", + "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034", + "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c", + "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a", + "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77", + "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b", + "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6", + "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f", + "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721", + "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37", + "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032", + "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d", + "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed", + "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6", + "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054", + "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25", + "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46", + "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5", + "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c", + "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070", + "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1", + "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7", + "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d", + "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145" + ], + "index": "pypi", + "version": "==1.9.0" + }, + "python-dotenv": { + "hashes": [ + "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3", + "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f" + ], + "version": "==0.19.2" + }, + "pytz": { + "hashes": [ + "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c", + "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" + ], + "version": "==2021.3" + }, + "pytz-deprecation-shim": { + "hashes": [ + "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", + "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.1.0.post0" + }, + "pyyaml": { + "hashes": [ + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + ], + "version": "==6.0" + }, + "requests": { + "hashes": [ + "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", + "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" + ], + "index": "pypi", + "version": "==2.26.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "slack-bolt": { + "hashes": [ + "sha256:0b1d77f5f26fe4fc0318593e0faa9398766229123dab2cbe466e54abc368f1d1", + "sha256:2399f65ae76af4864cd7b0248a61a622fdf8d199a21f5b14ab6ed5b53df27636" + ], + "index": "pypi", + "version": "==1.11.1" + }, + "slack-sdk": { + "hashes": [ + "sha256:54f2a5f7419f1ab932af9e3200f7f2f93db96e0f0eb8ad7d3b4214aa9f124641", + "sha256:aae6ce057e286a5e7fe7a9f256e85b886eee556def8e04b82b08f699e64d7f67" + ], + "index": "pypi", + "version": "==3.13.0" + }, + "sniffio": { + "hashes": [ + "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663", + "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de" + ], + "markers": "python_version >= '3.5'", + "version": "==1.2.0" + }, + "starlette": { + "hashes": [ + "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f", + "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870" + ], + "markers": "python_version >= '3.6'", + "version": "==0.16.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e", + "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.1" + }, + "tzdata": { + "hashes": [ + "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5", + "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21" + ], + "markers": "python_version >= '3.6'", + "version": "==2021.5" + }, + "tzlocal": { + "hashes": [ + "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09", + "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f" + ], + "markers": "python_version >= '3.6'", + "version": "==4.1" + }, + "urllib3": { + "hashes": [ + "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece", + "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.7" + }, + "uvicorn": { + "extras": [ + "standard" + ], + "hashes": [ + "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2", + "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d" + ], + "index": "pypi", + "version": "==0.16.0" + }, + "uvloop": { + "hashes": [ + "sha256:04ff57aa137230d8cc968f03481176041ae789308b4d5079118331ab01112450", + "sha256:089b4834fd299d82d83a25e3335372f12117a7d38525217c2258e9b9f4578897", + "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861", + "sha256:30ba9dcbd0965f5c812b7c2112a1ddf60cf904c1c160f398e7eed3a6b82dcd9c", + "sha256:3a19828c4f15687675ea912cc28bbcb48e9bb907c801873bd1519b96b04fb805", + "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d", + "sha256:647e481940379eebd314c00440314c81ea547aa636056f554d491e40503c8464", + "sha256:6ccd57ae8db17d677e9e06192e9c9ec4bd2066b77790f9aa7dede2cc4008ee8f", + "sha256:772206116b9b57cd625c8a88f2413df2fcfd0b496eb188b82a43bed7af2c2ec9", + "sha256:8e0d26fa5875d43ddbb0d9d79a447d2ace4180d9e3239788208527c4784f7cab", + "sha256:98d117332cc9e5ea8dfdc2b28b0a23f60370d02e1395f88f40d1effd2cb86c4f", + "sha256:b572256409f194521a9895aef274cea88731d14732343da3ecdb175228881638", + "sha256:bd53f7f5db562f37cd64a3af5012df8cac2c464c97e732ed556800129505bd64", + "sha256:bd8f42ea1ea8f4e84d265769089964ddda95eb2bb38b5cbe26712b0616c3edee", + "sha256:e814ac2c6f9daf4c36eb8e85266859f42174a4ff0d71b99405ed559257750382", + "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228" + ], + "version": "==0.16.0" + }, + "watchgod": { + "hashes": [ + "sha256:48140d62b0ebe9dd9cf8381337f06351e1f2e70b2203fa9c6eff4e572ca84f29", + "sha256:d6c1ea21df37847ac0537ca0d6c2f4cdf513562e95f77bb93abbcf05573407b7" + ], + "version": "==0.7" + }, + "websockets": { + "hashes": [ + "sha256:002071169d2e44ce8eb9e5ebac9fbce142ba4b5146eef1cfb16b177a27662657", + "sha256:05e7f098c76b0a4743716590bb8f9706de19f1ef5148d61d0cf76495ec3edb9c", + "sha256:08a42856158307e231b199671c4fce52df5786dd3d703f36b5d8ac76b206c485", + "sha256:0d93b7cadc761347d98da12ec1930b5c71b2096f1ceed213973e3cda23fead9c", + "sha256:10edd9d7d3581cfb9ff544ac09fc98cab7ee8f26778a5a8b2d5fd4b0684c5ba5", + "sha256:14e9cf68a08d1a5d42109549201aefba473b1d925d233ae19035c876dd845da9", + "sha256:181d2b25de5a437b36aefedaf006ecb6fa3aa1328ec0236cdde15f32f9d3ff6d", + "sha256:189ed478395967d6a98bb293abf04e8815349e17456a0a15511f1088b6cb26e4", + "sha256:1d858fb31e5ac992a2cdf17e874c95f8a5b1e917e1fb6b45ad85da30734b223f", + "sha256:1dafe98698ece09b8ccba81b910643ff37198e43521d977be76caf37709cf62b", + "sha256:3477146d1f87ead8df0f27e8960249f5248dceb7c2741e8bbec9aa5338d0c053", + "sha256:38db6e2163b021642d0a43200ee2dec8f4980bdbda96db54fde72b283b54cbfc", + "sha256:3a02ab91d84d9056a9ee833c254895421a6333d7ae7fff94b5c68e4fa8095519", + "sha256:3bbf080f3892ba1dc8838786ec02899516a9d227abe14a80ef6fd17d4fb57127", + "sha256:3ef6f73854cded34e78390dbdf40dfdcf0b89b55c0e282468ef92646fce8d13a", + "sha256:468f0031fdbf4d643f89403a66383247eb82803430b14fa27ce2d44d2662ca37", + "sha256:483edee5abed738a0b6a908025be47f33634c2ad8e737edd03ffa895bd600909", + "sha256:531d8eb013a9bc6b3ad101588182aa9b6dd994b190c56df07f0d84a02b85d530", + "sha256:5560558b0dace8312c46aa8915da977db02738ac8ecffbc61acfbfe103e10155", + "sha256:5bb6256de5a4fb1d42b3747b4e2268706c92965d75d0425be97186615bf2f24f", + "sha256:667c41351a6d8a34b53857ceb8343a45c85d438ee4fd835c279591db8aeb85be", + "sha256:6b014875fae19577a392372075e937ebfebf53fd57f613df07b35ab210f31534", + "sha256:6fdec1a0b3e5630c58e3d8704d2011c678929fce90b40908c97dfc47de8dca72", + "sha256:7bdd3d26315db0a9cf8a0af30ca95e0aa342eda9c1377b722e71ccd86bc5d1dd", + "sha256:7c9407719f42cb77049975410490c58a705da6af541adb64716573e550e5c9db", + "sha256:7d6673b2753f9c5377868a53445d0c321ef41ff3c8e3b6d57868e72054bfce5f", + "sha256:816ae7dac2c6522cfa620947ead0ca95ac654916eebf515c94d7c28de5601a6e", + "sha256:882c0b8bdff3bf1bd7f024ce17c6b8006042ec4cceba95cf15df57e57efa471c", + "sha256:8877861e3dee38c8d302eee0d5dbefa6663de3b46dc6a888f70cd7e82562d1f7", + "sha256:888a5fa2a677e0c2b944f9826c756475980f1b276b6302e606f5c4ff5635be9e", + "sha256:89e985d40d407545d5f5e2e58e1fdf19a22bd2d8cd54d20a882e29f97e930a0a", + "sha256:97b4b68a2ddaf5c4707ae79c110bfd874c5be3c6ac49261160fb243fa45d8bbb", + "sha256:98de71f86bdb29430fd7ba9997f47a6b10866800e3ea577598a786a785701bb0", + "sha256:9f304a22ece735a3da8a51309bc2c010e23961a8f675fae46fdf62541ed62123", + "sha256:9fd62c6dc83d5d35fb6a84ff82ec69df8f4657fff05f9cd6c7d9bec0dd57f0f6", + "sha256:a249139abc62ef333e9e85064c27fefb113b16ffc5686cefc315bdaef3eefbc8", + "sha256:b66e6d514f12c28d7a2d80bb2a48ef223342e99c449782d9831b0d29a9e88a17", + "sha256:b68b6caecb9a0c6db537aa79750d1b592a841e4f1a380c6196091e65b2ad35f9", + "sha256:baa83174390c0ff4fc1304fbe24393843ac7a08fdd59295759c4b439e06b1536", + "sha256:bb01ea7b5f52e7125bdc3c5807aeaa2d08a0553979cf2d96a8b7803ea33e15e7", + "sha256:cfae282c2aa7f0c4be45df65c248481f3509f8c40ca8b15ed96c35668ae0ff69", + "sha256:d0d81b46a5c87d443e40ce2272436da8e6092aa91f5fbeb60d1be9f11eff5b4c", + "sha256:d9b245db5a7e64c95816e27d72830e51411c4609c05673d1ae81eb5d23b0be54", + "sha256:ddab2dc69ee5ae27c74dbfe9d7bb6fee260826c136dca257faa1a41d1db61a89", + "sha256:e1b60fd297adb9fc78375778a5220da7f07bf54d2a33ac781319650413fc6a60", + "sha256:e259be0863770cb91b1a6ccf6907f1ac2f07eff0b7f01c249ed751865a70cb0d", + "sha256:e3872ae57acd4306ecf937d36177854e218e999af410a05c17168cd99676c512", + "sha256:e4819c6fb4f336fd5388372cb556b1f3a165f3f68e66913d1a2fc1de55dc6f58" + ], + "version": "==10.1" + }, + "yarl": { + "hashes": [ + "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac", + "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8", + "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e", + "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746", + "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98", + "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125", + "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d", + "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d", + "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986", + "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d", + "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec", + "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8", + "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee", + "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3", + "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1", + "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd", + "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b", + "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de", + "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0", + "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8", + "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6", + "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245", + "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23", + "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332", + "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1", + "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c", + "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4", + "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0", + "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8", + "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832", + "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58", + "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6", + "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1", + "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52", + "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92", + "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185", + "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d", + "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d", + "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b", + "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739", + "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05", + "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63", + "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d", + "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa", + "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913", + "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe", + "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b", + "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b", + "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656", + "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1", + "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4", + "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e", + "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63", + "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271", + "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed", + "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d", + "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda", + "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265", + "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f", + "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c", + "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba", + "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c", + "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b", + "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523", + "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a", + "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef", + "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95", + "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72", + "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794", + "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41", + "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", + "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" + ], + "markers": "python_version >= '3.6'", + "version": "==1.7.2" + } + }, + "develop": { + "attrs": { + "hashes": [ + "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", + "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==21.4.0" + }, + "black": { + "hashes": [ + "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3", + "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f" + ], + "index": "pypi", + "version": "==21.12b0" + }, + "click": { + "hashes": [ + "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", + "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" + ], + "markers": "python_version >= '3.6'", + "version": "==8.0.3" + }, + "idna": { + "hashes": [ + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + ], + "markers": "python_version >= '3'", + "version": "==3.3" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "multidict": { + "hashes": [ + "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b", + "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031", + "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0", + "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce", + "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda", + "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858", + "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5", + "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8", + "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22", + "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac", + "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e", + "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6", + "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5", + "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0", + "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11", + "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a", + "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55", + "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341", + "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b", + "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704", + "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b", + "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1", + "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621", + "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d", + "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5", + "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7", + "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac", + "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d", + "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef", + "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0", + "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f", + "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02", + "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b", + "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37", + "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23", + "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d", + "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065", + "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86", + "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6", + "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded", + "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4", + "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7", + "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a", + "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17", + "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3", + "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21", + "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24", + "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940", + "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac", + "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c", + "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422", + "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628", + "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0", + "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf", + "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e", + "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677", + "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f", + "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c", + "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4", + "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b", + "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747", + "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0", + "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01", + "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8", + "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9", + "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64", + "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d", + "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0", + "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52", + "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1", + "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae", + "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d" + ], + "markers": "python_version >= '3.6'", + "version": "==5.2.0" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, + "packaging": { + "hashes": [ + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "pathspec": { + "hashes": [ + "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", + "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + ], + "version": "==0.9.0" + }, + "platformdirs": { + "hashes": [ + "sha256:1d7385c7db91728b83efd0ca99a5afb296cab9d0ed8313a45ed8ba17967ecfca", + "sha256:440633ddfebcc36264232365d7840a970e75e1018d15b4327d11f91909045fda" + ], + "markers": "python_version >= '3.7'", + "version": "==2.4.1" + }, + "pluggy": { + "hashes": [ + "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", + "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" + ], + "markers": "python_version >= '3.6'", + "version": "==1.0.0" + }, + "py": { + "hashes": [ + "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", + "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.11.0" + }, + "pyparsing": { + "hashes": [ + "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4", + "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81" + ], + "markers": "python_version >= '3.6'", + "version": "==3.0.6" + }, + "pytest": { + "hashes": [ + "sha256:8fc363e0b7407a9397e660ef81e1634e4504faaeb6ad1d2416da4c38d29a0f45", + "sha256:e1af71303d633af3376130b388e028342815cff74d2f3be4aeb22f3fd94325e6" + ], + "index": "pypi", + "version": "==7.0.0rc1" + }, + "pytest-vcr": { + "hashes": [ + "sha256:23ee51b75abbcc43d926272773aae4f39f93aceb75ed56852d0bf618f92e1896", + "sha256:2f316e0539399bea0296e8b8401145c62b6f85e9066af7e57b6151481b0d6d9c" + ], + "index": "pypi", + "version": "==1.0.2" + }, + "pyyaml": { + "hashes": [ + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + ], + "version": "==6.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "tomli": { + "hashes": [ + "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f", + "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.3" + }, + "typing-extensions": { + "hashes": [ + "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e", + "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.1" + }, + "vcrpy": { + "hashes": [ + "sha256:12c3fcdae7b88ecf11fc0d3e6d77586549d4575a2ceee18e82eee75c1f626162", + "sha256:57095bf22fc0a2d99ee9674cdafebed0f3ba763018582450706f7d3a74fff599" + ], + "markers": "python_version >= '3.5'", + "version": "==4.1.1" + }, + "wrapt": { + "hashes": [ + "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179", + "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096", + "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374", + "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df", + "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185", + "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785", + "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7", + "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909", + "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918", + "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33", + "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068", + "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829", + "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af", + "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79", + "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce", + "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc", + "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36", + "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade", + "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca", + "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32", + "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125", + "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e", + "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709", + "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f", + "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b", + "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb", + "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb", + "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489", + "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640", + "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb", + "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851", + "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d", + "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44", + "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13", + "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2", + "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb", + "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b", + "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9", + "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755", + "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c", + "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a", + "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf", + "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3", + "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229", + "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e", + "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de", + "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554", + "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10", + "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80", + "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056", + "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.13.3" + }, + "yarl": { + "hashes": [ + "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac", + "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8", + "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e", + "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746", + "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98", + "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125", + "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d", + "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d", + "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986", + "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d", + "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec", + "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8", + "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee", + "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3", + "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1", + "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd", + "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b", + "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de", + "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0", + "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8", + "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6", + "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245", + "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23", + "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332", + "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1", + "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c", + "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4", + "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0", + "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8", + "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832", + "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58", + "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6", + "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1", + "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52", + "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92", + "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185", + "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d", + "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d", + "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b", + "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739", + "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05", + "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63", + "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d", + "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa", + "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913", + "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe", + "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b", + "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b", + "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656", + "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1", + "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4", + "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e", + "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63", + "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271", + "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed", + "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d", + "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda", + "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265", + "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f", + "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c", + "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba", + "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c", + "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b", + "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523", + "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a", + "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef", + "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95", + "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72", + "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794", + "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41", + "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", + "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" + ], + "markers": "python_version >= '3.6'", + "version": "==1.7.2" + } + } +} diff --git a/README.md b/README.md index c5fdaff..925da52 100644 --- a/README.md +++ b/README.md @@ -4,53 +4,44 @@ [![CircleCI](https://circleci.com/gh/OperationCode/operationcode-pybot.svg?style=svg)](https://circleci.com/gh/OperationCode/operationcode-pybot) -[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=OperationCode/operationcode-pybot)](https://dependabot.com) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://contributor-covenant.org/) -# [OperationCode-Pybot](https://github.com/OperationCode/operationcode-pybot) +# OperationCode-Pybot -OperationCode PyBot is a Python [Slack Bot](https://api.slack.com) -extending [Pyslacker's](https://pyslackers.com/) -[sir-bot-a-lot](https://github.com/pyslackers/sir-bot-a-lot-2) -framework. +OperationCode PyBot is a Python [Slack](https://api.slack.com) Bot utilizing [Slack Bolt](https://github.com/SlackAPI/bolt-python). ## Resources -* [Slack Bot Tutorial](https://www.digitalocean.com/community/tutorials/how-to-build-a-slackbot-in-python-on-ubuntu-20-04) -* [Slack Events API Framework](https://github.com/slackapi/python-slack-events-api) -* [sir-bot-a-lot](https://github.com/pyslackers/sir-bot-a-lot-2) +* [Slack Web API Methods](https://api.slack.com/methods) - used to interact with Slack beyond the built-in Slack Bolt capabilities +* [Slack Block Kit](https://api.slack.com/block-kit) - used to build the blocks used in various requests and responses +* [Slack Bolt](https://slack.dev/bolt-python/tutorial/getting-started) - the underlying framework of the bot +* [Slack Bolt API Reference](https://slack.dev/bolt-python/api-docs/slack_bolt/index.html) +* [Slack Python SDK API Reference](https://slack.dev/python-slack-sdk/api-docs/slack_sdk/index.html) ## Contributing -Bug reports and pull requests are welcome on [Github](https://github.com/OperationCode/operationcode-pybot). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. If you wish to assist, join the [\#oc-python-projects](https://operation-code.slack.com/messages/C7NJLCCMB/) rewrite to learn how to contribute. +[Bug reports](https://github.com/OperationCode/operationcode-pybot/issues) and [pull requests](https://github.com/OperationCode/operationcode-pybot/pulls) are welcome on [our Github repo](https://github.com/OperationCode/operationcode-pybot). +This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. +The best place to get assistance with OperationCode-Pybot is on [Slack](https://operationcode.org/join) in the `#oc-python-project` channel. ## Quick Start Recommended versions of tools used within the repo: -- `python@3.7` or greater (in some environments, you may need to specify version of python i.e. `python test.py` vs `python3 test.py`)) -- `git@2.17.1` or greater -- `poetry@0.12.11` or greater - - [Poetry](https://poetry.eustace.io/) is a packaging and dependency manager, similar to pip or pipenv - - Poetry provides a custom installer that can be ran via `curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python` - - Alternatively, poetry can be installed via pip/pip3 with `pip install --user poetry` or `pip3 install --user poetry` - - See https://poetry.eustace.io/docs/ - +- `python@3.10` or greater +- `pipenv@2021.5.29` or greater - [pipenv](https://github.com/pypa/pipenv) is a package manager similar to poetry that utilizes `pip` to manage project dependencies, along with creating new virtual environments +and deterministic builds ```bash -# Install dependencies (ensure poetry is already installed) -poetry install +# Ensure you have pipenv already installed +pipenv install --dev -# Run local development -poetry run python -m pybot +# Start up your virtual environment +pipenv shell -# Run testing suite -poetry run pytest +# Run the test suite +pytest -# Run formatting and linting -poetry run black . -# the next line shouldn't output anything to the terminal if it passes -poetry run flake8 -poetry run isort -rc . +# Run the code formatter +black . ``` - ## How to Test Integration With Slack After having developed some new feature, or having in hand what you believe is @@ -278,3 +269,23 @@ BOT_USER_OAUTH_ACCESS_TOKEN | The bot user specific OAuth token used to authenti ## License This package is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). + + +## Notes +Option 1 - Create your own Slack workspace to use for testing. +Follow [this guide](https://slack.dev/bolt-python/tutorial/getting-started-http) + + +Start the application with WebSockets instead of HTTP for better development experience? Requires the use of the SLACK_APP_TOKEN. +Would need to set an environment variable to determine if we were in development or staging/production. + +Database to store history of events or just use logging? Probably best to use a database to store history of requests and responses? +Easier to track interactions that way. + +Utilizing FastAPI allows us to take advantage of things like Pydantic, inherent typing, models, and a better handler +for the HTTP requests themselves. + +Utilizing [FastAPI](https://fastapi.tiangolo.com/) and [Slack-Bolt](https://slack.dev/bolt-python/tutorial/getting-started-http). + +All the interactive elements of this bot were built using the Slack [Block Kit Builder](https://app.slack.com/block-kit-builder/). +The example JSON for each interactive element can be found in the `modules/slack/blocks/block_kit_examples` folder. \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..92294f4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3" + +services: + web: + build: . + command: bash -c "uvicorn main:app --host 0.0.0.0 --port 8001 --reload" + volumes: + - .:/pybot + ports: + - "8001:8001" + redis: + image: "redis:6.2.6" + ports: + - "6379:6379" diff --git a/logging.yml b/logging.yml deleted file mode 100644 index 271bca5..0000000 --- a/logging.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: 1 -disable_existing_loggers: false -formatters: - simple: - format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s' -filters: - messages: - (): 'pybot.customLogging.SlackMessageFilter' - -handlers: - console: - class: logging.StreamHandler - level: DEBUG - filters: - - messages - formatter: simple - stream: ext://sys.stdout -loggers: - sirbot: - level: DEBUG - propagate: true - pyback: - level: DEBUG - propagate: true - slack: - level: DEBUG - propagate: true -root: - level: DEBUG - handlers: - - console -propagate: no \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..a4b166c --- /dev/null +++ b/main.py @@ -0,0 +1,233 @@ +import os +import re +import uvicorn +import logging +from typing import Any +from dotenv import load_dotenv +from fastapi import FastAPI, Request +from slack_bolt.context.async_context import AsyncBoltContext +from slack_bolt.async_app import AsyncApp +from slack_bolt.context.ack.async_ack import AsyncAck +from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler +from slack_sdk.web.async_client import AsyncWebClient +from apscheduler.schedulers.asyncio import AsyncIOScheduler +from apscheduler.triggers.interval import IntervalTrigger + +from modules.handlers.channel_join_handler import ( + handle_channel_join_request, + handle_channel_join_request_claim, + handle_channel_join_request_claim_reset, +) +from modules.handlers.mentorship_handler import ( + handle_mentor_request, + handle_mentorship_request_form_submit, + handle_mentorship_request_claim, + handle_mentorship_request_claim_reset, +) +from modules.handlers.greeting_handler import ( + handle_new_member_join, + handle_greeting_new_user_claim, + handle_resetting_greeting_new_user_claim, +) +from modules.handlers.report_handler import ( + handle_report, + handle_report_submit, + handle_report_claim, + handle_reset_report_claim, +) +from modules.models.slack_models.event_models import MemberJoinedChannelEvent +from modules.models.slack_models.slack_models import ( + SlackResponseBody, + SlackUserInfo, +) +from modules.models.slack_models.command_models import SlackCommandRequestBody +from modules.models.slack_models.view_models import SlackViewRequestBody +from modules.models.slack_models.action_models import SlackActionRequestBody + +load_dotenv() +logging.basicConfig(level=os.getenv("LOGGING_LEVEL", "INFO")) + +logger = logging.getLogger(__name__) + +# TODO: Add in /moderators slash command that lists the moderators pulled from Airtable +# TODO: Change mentorship view to dynamically add descriptions for the mentorship service block - will require dispatching an action on select and updating the block +# TODO: Allow matching mentor to mentee based on time zone, number of mentees a mentor already has (will need integration with Dreami to track long term relationships) +# TODO: Integrate with current backend to grab information about the mentee after a request is sent to allow for better matching (could be related to time zone, zip code, etc) +# TODO: On startup, check for mentor request threads that haven't been claimed that have been open for more than 24 hours - if there are any, tag @mentor-coordinators in the thread +# TODO: Related to the above TODO, spawn a job when a mentorship request is received to check to make sure it's been claimed in 24 hours - if not, ping @mentor-coordinators +# TODO: Evaluate the above TODOs and maybe decide on a job that checks twice a day? 10 AM CDT and 7 PM CDT? Use Airtable instead of threads to check +# TODO: Track view closures to see when people open and then close without submission +# TODO: Use discriminators and Unions to conditionally return different types depending on a particular field - see https://github.com/samuelcolvin/pydantic/issues/619 +# TODO: Flush the cache using a webhook from Airtable when records are added or updated on various tables +# TODO: Check the membership of the mentors internal channel when linking for a mentorship request + +# Start an asynchronous Slack Bolt application +app = AsyncApp( + token=os.environ.get("SLACK_BOT_TOKEN"), + signing_secret=os.environ.get("SLACK_SIGNING_SECRET"), +) + +# Define the application handler for the async Slack Bolt application - this adapter is specific to FastAPI +app_handler = AsyncSlackRequestHandler(app) + +# Define the API +api = FastAPI() + +# Initialize an AsyncIOScheduler object to schedule tasks +Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) +Trigger = IntervalTrigger(seconds=30) + + +# Start up our job scheduler on FastAPI startup and schedule jobs as needed +@api.on_event("startup") +async def startup_event() -> None: + Scheduler.start() + # job = Scheduler.add_job(schedule_messages, trigger=Trigger) + # logging.debug(f"Scheduled {job.name} with job_id: {job.id}") + + +# On shutdown, shutdown the scheduler service first +@api.on_event("shutdown") +async def shutdown_event(): + await Scheduler.shutdown() + + +# The base URI for Slack to communicate with our application - this URI is used for events, commands, and any other interaction +@api.post("/slack/events") +async def base_endpoint(req: Request): + return await app_handler.handle(req) + + +@app.command("/mentor_request") +async def handle_mentor_request_command( + context: AsyncBoltContext, + body: dict[str, Any], +) -> None: + await handle_mentor_request(SlackCommandRequestBody(**body), context) + + +@app.view("mentorship_request_form_submit") +async def handle_mentorship_request_form_view_submit( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + await handle_mentorship_request_form_submit(SlackViewRequestBody(**body), context) + + +@app.action("claim_mentorship_request") +async def handle_mentorship_request_claim_click( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing a mentorship request claim...") + await handle_mentorship_request_claim(SlackActionRequestBody(**body), context) + + +@app.action("reset_mentorship_request_claim") +async def handle_mentorship_request_claim_reset_click( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing a mentorship request claim reset...") + await handle_mentorship_request_claim_reset(SlackActionRequestBody(**body), context) + + +# TODO: Change this back to an event +@app.command("/new_join") +async def handle_new_member_join_event( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.debug(f"Received body: {body}") + await handle_new_member_join(SlackCommandRequestBody(**body), context) + + +@app.event("member_joined_channel") +async def handle_new_member_join_event( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.debug(f"Received body: {body}") + await handle_new_member_join(MemberJoinedChannelEvent(**body), context) + + +@app.action("greet_new_user_claim") +async def handle_greeting_new_user_claim_action( + context: AsyncBoltContext, + body: dict[str, Any], +) -> None: + await handle_greeting_new_user_claim(body, context) + + +@app.action("reset_greet_new_user_claim") +async def handle_resetting_greeting_new_user_claim_action( + context: AsyncBoltContext, body: dict[str, Any] +) -> None: + await handle_resetting_greeting_new_user_claim(body, context) + + +@app.command("/report") +async def handle_report_command( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + await handle_report(body, context) + + +@app.view("report_form_submit") +async def handle_report_view_submit( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + await handle_report_submit(body, context) + + +@app.action("report_claim") +async def handle_report_claim_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + await handle_report_claim( + SlackResponseBody(**body, originating_user=SlackUserInfo(**body["user"])), + context, + ) + + +@app.action("reset_report_claim") +async def handle_reset_report_claim_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + await handle_reset_report_claim( + SlackResponseBody(**body, originating_user=SlackUserInfo(**body["user"])), + context, + ) + + +@app.command("/join-pride") +@app.command("/join-blacks-in-tech") +async def handle_channel_join_request_command( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling pride channel join request...") + await handle_channel_join_request(SlackCommandRequestBody(**body), context) + + +@app.action("invite_to_channel_click") +async def handle_invite_to_channel_click_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + await handle_channel_join_request_claim(SlackActionRequestBody(**body), context) + + +@app.action("reset_channel_invite") +async def handle_invite_to_channel_reset_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + await handle_channel_join_request_claim_reset( + SlackActionRequestBody(**body), context + ) + + +@app.message(re.compile(r"(={2}.*={3})|(\[.*?])")) +async def handle_daily_programmer_post( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + pass + + +if __name__ == "__main__": + if os.environ.get("RUN_ENV") == "development": + # noinspection PyTypeChecker + uvicorn.run(api, host="0.0.0.0", port=8010) diff --git a/pybot/endpoints/slack/message_templates/__init__.py b/modules/__init__.py similarity index 100% rename from pybot/endpoints/slack/message_templates/__init__.py rename to modules/__init__.py diff --git a/modules/airtable/__init__.py b/modules/airtable/__init__.py new file mode 100644 index 0000000..b902476 --- /dev/null +++ b/modules/airtable/__init__.py @@ -0,0 +1,26 @@ +from modules.airtable.daily_programmer_table import DailyProgrammerTable +from modules.airtable.mentorship_tables import ( + MentorshipServicesTable, + MentorshipSkillsetsTable, + MentorshipRequestsTable, + MentorshipMentorsTable, + MentorshipAffiliationsTable, +) +from modules.airtable.message_text_table import MessageTextTable +from modules.airtable.scheduled_message_table import ScheduledMessagesTable + +# General message related tables +message_text_table = MessageTextTable() + +# Scheduled message related tables +scheduled_message_table = ScheduledMessagesTable() + +# Daily Programmer related table +daily_programmer_table = DailyProgrammerTable() + +# Mentorship related tables +mentor_table = MentorshipMentorsTable() +mentorship_services_table = MentorshipServicesTable() +mentorship_skillsets_table = MentorshipSkillsetsTable() +mentorship_requests_table = MentorshipRequestsTable() +mentorship_affiliations_table = MentorshipAffiliationsTable() diff --git a/modules/airtable/daily_programmer_table.py b/modules/airtable/daily_programmer_table.py new file mode 100644 index 0000000..5e71b2a --- /dev/null +++ b/modules/airtable/daily_programmer_table.py @@ -0,0 +1,45 @@ +import logging +from typing import Any +from pydantic import ValidationError + +from modules.airtable.shared_table import BaseAirtableTable +from modules.models.daily_programmer_models import DailyProgrammerInfo +from modules.utils import snake_case + +logger = logging.getLogger(__name__) + + +class DailyProgrammerTable(BaseAirtableTable): + def __init__(self): + super().__init__("Daily Programmer") + + @staticmethod + def parse_daily_programmer_row(row: dict[str, Any]) -> DailyProgrammerInfo: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return DailyProgrammerInfo( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def retrieve_valid_daily_programmer_row_by_slug( + self, slug: str + ) -> DailyProgrammerInfo: + return self.parse_daily_programmer_row( + self.first( + formula=f"{{Slug}} = '{slug}'", + view="Valid", + ) + ) + + def retrieve_valid_daily_programmer_by_view( + self, view_name: str + ) -> dict[str, DailyProgrammerInfo]: + logger.info("STAGE: Retrieving daily programmer rows by view") + logger.debug(f"With view_name: {view_name}") + messages = {} + for row in self.all(view=view_name): + parsed_row = self.parse_daily_programmer_row(row) + messages[parsed_row.slug] = parsed_row + return messages diff --git a/modules/airtable/mentorship_tables.py b/modules/airtable/mentorship_tables.py new file mode 100644 index 0000000..6ab13ad --- /dev/null +++ b/modules/airtable/mentorship_tables.py @@ -0,0 +1,185 @@ +import logging +from pydantic.error_wrappers import ValidationError +from typing import Any +from functools import cached_property +from itertools import chain + +from modules.airtable.shared_table import BaseAirtableTable +from modules.utils import snake_case +from modules.models.mentorship_models import ( + MentorshipService, + MentorshipSkillset, + Mentor, + MentorshipAffiliation, + MentorshipRequest, +) + +logger = logging.getLogger(__name__) + + +class MentorshipAffiliationsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Affiliations") + + @cached_property + def valid_affiliations(self) -> list[MentorshipAffiliation]: + return [self.parse_affiliation_row(row) for row in self.all(view="Valid")] + + @staticmethod + def parse_affiliation_row(row: dict[str, Any]) -> MentorshipAffiliation: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipAffiliation( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + +class MentorshipMentorsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Mentors") + + @cached_property + def valid_mentors(self) -> list[Mentor]: + """Returns the mentors from the table sorted by row ID + + :return: list of mentors + :rtype: list[Mentor] + """ + try: + return [self.parse_mentor_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @staticmethod + def parse_mentor_row(row: dict[str, Any]) -> Mentor: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return Mentor( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + +class MentorshipSkillsetsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Skillsets") + + @cached_property + def valid_skillsets(self) -> list[MentorshipSkillset]: + """Returns the skillsets from the table + + :return: list of skillsets + :rtype: list[MentorshipSkillset] + """ + try: + return [self.parse_skillset_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @cached_property + def mentors_by_skillsets(self) -> dict[str, str]: + try: + mentors_by_skillset = {} + for row in self.all(fields=["Name", "Mentors"], view="Valid"): + mentors_by_skillset[row["Name"]] = row["Mentors"] + return mentors_by_skillset + except Exception as e: + logger.warning(f"Issue retrieving mentor IDs by skillset: {e}") + raise e + + @staticmethod + def parse_skillset_row(row: dict[str, Any]) -> MentorshipSkillset: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipSkillset( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def mentors_by_skillset(self, skillsets_to_search: list[str]) -> set[str]: + logger.info("STAGE: Returning mentors by skillset...") + try: + mentors = [] + formula = [f"{{Name}} = '{skillset}'," for skillset in skillsets_to_search] + for row in self.all( + fields=["Name", "Mentors"], + view="Valid", + formula=("OR(" + "".join(formula)[:-1] + ")"), + ): + try: + mentors.append( + row["fields"]["Mentors"] if row["fields"]["Mentors"] else [] + ) + except KeyError as key_e: + logger.warning(f"Key error intercepted: {key_e}") + pass + + # Flatten the array and get unique values + return set(chain(*mentors)) + except Exception as e: + logger.warning( + f"Issue retrieving mentor IDs with particular skillsets: {skillsets_to_search}, error: {e}" + ) + + +class MentorshipServicesTable(BaseAirtableTable): + def __init__(self): + super().__init__("Services") + + @cached_property + def valid_services(self) -> list[MentorshipService]: + """Returns the services from the table + + :return: list of services from the table + :rtype: list[MentorshipService] + """ + try: + return [self.parse_service_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @staticmethod + def parse_service_row(row: dict[str, Any]) -> MentorshipService: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipService( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + +class MentorshipRequestsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Mentor Requests") + + @cached_property + def valid_services(self) -> list[MentorshipRequest]: + """Returns the services from the table + + :return: list of services from the table + :rtype: list[MentorshipService] + """ + try: + return [self.parse_request_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @staticmethod + def parse_request_row(row: dict[str, Any]) -> MentorshipRequest: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipRequest( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def return_record_by_slack_message_ts(self, timestamp: str) -> MentorshipRequest: + row = self.first(formula=f"{{Slack Message TS}} = '{timestamp}'") + logger.debug(f"Returned row: {row}") + return self.parse_request_row(row) diff --git a/modules/airtable/message_text_table.py b/modules/airtable/message_text_table.py new file mode 100644 index 0000000..188025f --- /dev/null +++ b/modules/airtable/message_text_table.py @@ -0,0 +1,43 @@ +import logging +from typing import Any +from pydantic import ValidationError + +from modules.airtable.shared_table import BaseAirtableTable +from modules.models.message_text_models import MessageTextInfo +from modules.utils import snake_case + +logger = logging.getLogger(__name__) + + +class MessageTextTable(BaseAirtableTable): + def __init__(self): + super().__init__("Message Text") + + @staticmethod + def parse_message_text_row(row: dict[str, Any]) -> MessageTextInfo: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MessageTextInfo( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def retrieve_valid_message_row(self, message_slug: str) -> MessageTextInfo: + return self.parse_message_text_row( + self.first( + formula=f"{{Slug}} = '{message_slug}'", + view="Valid", + ) + ) + + def retrieve_valid_messages_by_view( + self, view_name: str + ) -> dict[str, MessageTextInfo]: + logger.info("STAGE: Retrieving valid messages by view") + logger.debug(f"With view_name: {view_name}") + messages = {} + for row in self.all(view=view_name): + parsed_row = self.parse_message_text_row(row) + messages[parsed_row.slug] = parsed_row + return messages diff --git a/modules/airtable/scheduled_message_table.py b/modules/airtable/scheduled_message_table.py new file mode 100644 index 0000000..0b8351a --- /dev/null +++ b/modules/airtable/scheduled_message_table.py @@ -0,0 +1,25 @@ +from typing import Any +from pydantic.error_wrappers import ValidationError + +from modules.airtable.shared_table import BaseAirtableTable +from modules.models.scheduled_message_models import ScheduledMessageInfo +from modules.utils import snake_case + + +class ScheduledMessagesTable(BaseAirtableTable): + def __init__(self): + super().__init__("Scheduled Messages") + + @property + def all_valid_scheduled_messages(self) -> list[ScheduledMessageInfo]: + return [self.parse_scheduled_message_row(row) for row in self.all(view="Valid")] + + @staticmethod + def parse_scheduled_message_row(row: dict[str, Any]) -> ScheduledMessageInfo: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return ScheduledMessageInfo( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e diff --git a/modules/airtable/shared_table.py b/modules/airtable/shared_table.py new file mode 100644 index 0000000..5511d4b --- /dev/null +++ b/modules/airtable/shared_table.py @@ -0,0 +1,31 @@ +import os +from typing import Any +from pyairtable import Table + +from modules.utils import table_fields + + +class BaseAirtableTable(Table): + def __init__(self, table_name: str): + super().__init__( + api_key=os.getenv("AIRTABLE_API_KEY"), + base_id=os.getenv("AIRTABLE_BASE_ID"), + table_name=f"{table_name}", + ) + + @property + def table_fields(self) -> list[str]: + """Returns snake cased columns (fields in Airtable parlance) on the table + + :return: list of fields + :rtype: list[str] + """ + return table_fields(self) + + def update_record( + self, airtable_id: str, fields_to_update: dict[str, Any] + ) -> dict[str, Any]: + return self.update(airtable_id, fields=fields_to_update, typecast=True) + + def create_record(self, record_to_create: dict[str, Any]) -> dict[str, Any]: + return self.create(fields=record_to_create, typecast=True) diff --git a/tests/endpoints/__init__.py b/modules/handlers/__init__.py similarity index 100% rename from tests/endpoints/__init__.py rename to modules/handlers/__init__.py diff --git a/modules/handlers/channel_join_handler.py b/modules/handlers/channel_join_handler.py new file mode 100644 index 0000000..e7a26b2 --- /dev/null +++ b/modules/handlers/channel_join_handler.py @@ -0,0 +1,89 @@ +import os +import logging +from slack_bolt.context.async_context import AsyncBoltContext + +from modules.models.slack_models.action_models import SlackActionRequestBody +from modules.models.slack_models.command_models import SlackCommandRequestBody +from modules.slack.blocks.shared_blocks import ( + channel_join_request_blocks, + channel_join_request_successful_block, + channel_join_request_reset_action, + channel_join_request_action, +) +from modules.utils import slack_team, log_to_thread + +logger = logging.getLogger(__name__) + + +async def handle_channel_join_request( + parsed_body: SlackCommandRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling channel join command...") + await context.ack() + channel_id = "" + channel_name = "" + try: + if parsed_body.command == "/join-pride": + channel_id = slack_team.pride_channel.id + channel_name = os.getenv("PRIDE_CHANNEL_NAME") + if parsed_body.command == "/join-blacks-in-tech": + channel_id = slack_team.blacks_in_tech.id + channel_name = os.getenv("BLACKS_IN_TECH_CHANNEL_NAME") + await context.client.chat_postMessage( + channel=channel_id, + blocks=channel_join_request_blocks(parsed_body.user_name), + text="New channel join request...", + ) + await context.client.chat_postEphemeral( + channel=parsed_body.user_id, + user=parsed_body.user_id, + blocks=[channel_join_request_successful_block(channel_name)], + text=f"Your request to join {channel_name} was successful...", + ) + except Exception as e: + logger.warning(f"Unable to handle the channel join request, error: {e}") + raise e + + +async def handle_channel_join_request_claim( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling channel join request claim...") + await context.ack() + blocks = parsed_body.message.blocks + blocks[-1] = channel_join_request_reset_action(parsed_body.user.username) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Someone has claimed the invite request...", + blocks=blocks, + replace_original=True, + ) + + +async def handle_channel_join_request_claim_reset( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling channel join request claim reset...") + await context.ack() + blocks = parsed_body.message.blocks + blocks[-1] = channel_join_request_action() + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=False, + ) + await context.respond( + text="Someone has reset the invite request...", + blocks=blocks, + replace_original=True, + ) diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py new file mode 100644 index 0000000..6dc39bc --- /dev/null +++ b/modules/handlers/daily_programmer.py @@ -0,0 +1,9 @@ +import logging +from slack_bolt.context.async_context import AsyncBoltContext + +logger = logging.getLogger(__name__) + + +async def handle_daily_programmer_post(parsed_body, context: AsyncBoltContext) -> None: + logger.info("STAGE: Beginning task populate_daily_programmer_table...") + logger.debug(f"Received body: {parsed_body}") diff --git a/modules/handlers/greeting_handler.py b/modules/handlers/greeting_handler.py new file mode 100644 index 0000000..ef6897f --- /dev/null +++ b/modules/handlers/greeting_handler.py @@ -0,0 +1,92 @@ +import re +from typing import Any +from datetime import datetime, timezone, timedelta +from slack_bolt.context.async_context import AsyncBoltContext + +from modules.models.slack_models.event_models import MemberJoinedChannelEvent +from modules.slack.blocks.new_join_blocks import ( + new_join_immediate_welcome_blocks, + new_join_delayed_welcome_blocks, +) +from modules.utils import get_team_info, get_slack_user_by_id, log_to_thread +from modules.slack.blocks.greeting_blocks import ( + initial_greet_user_blocks, + greeting_block_claimed_button, + greeting_block_button, +) + + +async def handle_new_member_join( + parsed_body: MemberJoinedChannelEvent, context: AsyncBoltContext +) -> None: + await context.ack() + slack_team = get_team_info() + user = await get_slack_user_by_id(context.client, parsed_body.user) + await context.client.chat_postMessage( + channel=slack_team.greetings_channel.id, + blocks=initial_greet_user_blocks(user), + text="A new member has joined!", + ) + user_info = await context.client.users_info(user=parsed_body.user) + # Add one minute to the current timestamp + immediate_message_timestamp = datetime.now(timezone.utc).timestamp() + 60 + await context.client.chat_scheduleMessage( + channel=parsed_body.user, + user=parsed_body.user, + post_at=int(immediate_message_timestamp), + text="Welcome to Operation Code Slack!", + blocks=new_join_immediate_welcome_blocks(user_info["body"]["name"]), + unfurl_links=False, + unfurl_media=False, + ) + # Schedule the delayed message for the next day at 1600 UTC (10 AM CST/CDT) + # This could be in two days, by popular measure, if UTC has already rolled over midnight + delayed_message_timestamp = ( + (datetime.now(timezone.utc) + timedelta(days=1)) + .replace(hour=16, minute=00) + .timestamp() + ) + await context.client.chat_scheduleMessage( + channel=parsed_body.user, + user=parsed_body.user, + post_at=int(delayed_message_timestamp), + text="We're happy to have you at Operation Code!", + blocks=new_join_delayed_welcome_blocks(), + unfurl_media=False, + unfurl_links=False, + ) + + +async def handle_greeting_new_user_claim( + body: dict[str, Any], + context: AsyncBoltContext, +) -> None: + await context.ack() + original_blocks = body["message"]["blocks"] + original_blocks[-1] = greeting_block_claimed_button(body["user"]["username"]) + modified_blocks = original_blocks + await log_to_thread(context.client, body, claim=True) + await context.respond( + text="Modified the claim to greet the new user...", + blocks=modified_blocks, + replace_original=True, + ) + + +async def handle_resetting_greeting_new_user_claim( + body: dict[str, Any], + context: AsyncBoltContext, +) -> None: + await context.ack() + original_blocks = body["message"]["blocks"] + # Extract out the username of the new user (the user we are greeting) + original_blocks[-1] = greeting_block_button( + str(re.match(r"\((@.*)\)", body["message"]["blocks"][0]["text"]["text"])) + ) + modified_blocks = original_blocks + await log_to_thread(context.client, body, claim=False) + await context.respond( + text="Modified the claim to greet the new user...", + blocks=modified_blocks, + replace_original=True, + ) diff --git a/modules/handlers/mentorship_handler.py b/modules/handlers/mentorship_handler.py new file mode 100644 index 0000000..cc76cbe --- /dev/null +++ b/modules/handlers/mentorship_handler.py @@ -0,0 +1,222 @@ +import logging +from datetime import timezone, datetime +from typing import Any +from slack_bolt.context.async_context import AsyncBoltContext +from modules.airtable import ( + mentorship_services_table, + mentorship_skillsets_table, + mentorship_affiliations_table, + mentorship_requests_table, + mentor_table, +) +from modules.models.greeting_models import UserInfo +from modules.models.mentorship_models import MentorshipRequestCreate +from modules.models.slack_models.action_models import SlackActionRequestBody +from modules.models.slack_models.view_models import SlackViewRequestBody +from modules.models.slack_models.shared_models import SlackViewInfo +from modules.models.slack_models.command_models import SlackCommandRequestBody +from modules.slack.blocks.mentorship_blocks import ( + mentorship_request_view, + request_successful_block, + request_unsuccessful_block, + request_claim_blocks, + request_claim_details_block, + request_claim_tagged_users_block, + request_claim_reset_button, + request_claim_button, +) +from modules.utils import get_slack_user_by_id, slack_team, log_to_thread + +logger = logging.getLogger(__name__) + + +async def handle_mentor_request( + parsed_body: SlackCommandRequestBody, context: AsyncBoltContext +) -> None: + logging.info("STAGE: Handling the mentor request...") + await context.ack() + response = await context.client.views_open( + trigger_id=parsed_body.trigger_id, + view=mentorship_request_view( + services=mentorship_services_table.valid_services, + skillsets=mentorship_skillsets_table.valid_skillsets, + affiliations=mentorship_affiliations_table.valid_affiliations, + ), + ) + if response["ok"]: + logger.debug("View opened successfully") + + else: + logger.warning(f"Unable to open the view, given response: {response}") + + +async def handle_mentorship_request_form_submit( + parsed_body: SlackViewRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling the mentorship request form submission...") + await context.ack() + try: + slack_user_info = await get_slack_user_by_id( + context.client, parsed_body.user.id + ) + mentorship_request, airtable_record = create_mentor_request_record( + parsed_body, slack_user_info + ) + mentors_channel_response = await context.client.chat_postMessage( + channel=slack_team.mentors_internal_channel.id, + blocks=request_claim_blocks( + mentorship_request.service, + mentorship_request.skillsets_requested, + mentorship_request.affiliation, + mentorship_request.slack_name, + ), + text="New mentorship request received...", + ) + mentorship_requests_table.update_record( + airtable_id=airtable_record["id"], + fields_to_update={"Slack Message TS": mentors_channel_response["ts"]}, + ) + await context.client.chat_postMessage( + channel=slack_team.mentors_internal_channel.id, + thread_ts=mentors_channel_response["ts"], + text="Additional details added to mentorship request...", + blocks=[request_claim_details_block(mentorship_request.additional_details)], + ) + matching_mentors = mentorship_skillsets_table.mentors_by_skillset( + mentorship_request.skillsets_requested + ) + retrieve_mentor_slack_names = [ + mentor.slack_name + for mentor in mentor_table.valid_mentors + if mentor.airtable_id in matching_mentors + ] + await context.client.chat_postMessage( + channel=slack_team.mentors_internal_channel.id, + thread_ts=mentors_channel_response["ts"], + text="Tagged users for mentorship request...", + blocks=[request_claim_tagged_users_block(retrieve_mentor_slack_names)], + link_names=True, + ) + await context.client.chat_postEphemeral( + channel=parsed_body.user.id, + user=parsed_body.user.id, + text="Successfully sent mentorship request...", + blocks=[request_successful_block()], + ) + except Exception as e: + logger.exception( + f"Unable to create the mentorship request record due to error: {e}" + ) + await context.client.chat_postEphemeral( + channel=parsed_body.user.id, + user=parsed_body.user.id, + text="Mentorship request was unsuccessful...", + blocks=[request_unsuccessful_block()], + ) + + +async def handle_mentorship_request_claim( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling mentorship request claim...") + await context.ack() + blocks = parsed_body.message.blocks + blocks[-1] = request_claim_reset_button(parsed_body.user.username) + request_record = mentorship_requests_table.return_record_by_slack_message_ts( + timestamp=str(parsed_body.message.ts) + ) + mentorship_requests_table.update_record( + airtable_id=request_record.airtable_id, + fields_to_update={ + "Claimed": "true", + "Claimed By": parsed_body.user.username, + "Claimed On": str(datetime.now(timezone.utc)), + "Reset By": "", + }, + ) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Someone claimed the mentorship request...", + blocks=blocks, + replace_original=True, + ) + + +async def handle_mentorship_request_claim_reset( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling mentorship request claim reset...") + await context.ack() + blocks = parsed_body.message.blocks + blocks[-1] = request_claim_button() + request_record = mentorship_requests_table.return_record_by_slack_message_ts( + timestamp=parsed_body.message.ts + ) + mentorship_requests_table.update_record( + airtable_id=request_record.airtable_id, + fields_to_update={ + "Claimed": "false", + "Claimed By": "", + "Reset By": parsed_body.user.username, + "Reset On": str(datetime.now(timezone.utc)), + "Reset Count": int(request_record.reset_count) + 1, + }, + ) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=False, + ) + await context.respond( + text="Someone reset the claimed mentorship request...", + blocks=blocks, + replace_original=True, + ) + + +def create_mentor_request_record( + parsed_body: SlackViewRequestBody, slack_user_info: UserInfo +) -> tuple[MentorshipRequestCreate, dict[str, Any]]: + logger.info("STAGE: Creating the mentorship request record...") + try: + mentorship_request = MentorshipRequestCreate( + slack_name=slack_user_info.name, + email=slack_user_info.email, + service=parsed_body.view.state["values"]["mentorship_service_input"][ + "mentorship_service_selection" + ]["selected_option"]["value"], + additional_details=parsed_body.view.state["values"]["details_input_block"][ + "details_text_input" + ]["value"], + skillsets_requested=[ + skill["value"] + for skill in parsed_body.view.state["values"]["mentor_skillset_input"][ + "mentorship_skillset_multi_selection" + ]["selected_options"] + ], + affiliation=parsed_body.view.state["values"][ + "mentorship_affiliation_input" + ]["mentorship_affiliation_selection"]["selected_option"]["text"]["text"], + ) + modified_request = { + k.title().replace("_", " "): v + for k, v in mentorship_request.__dict__.items() + } + created_record = mentorship_requests_table.create_record(modified_request) + return mentorship_request, created_record + except Exception as exc: + logger.exception( + f"Unable to create the Airtable record for user: {slack_user_info.name} due to an exception", + exc, + ) + raise exc diff --git a/modules/handlers/report_handler.py b/modules/handlers/report_handler.py new file mode 100644 index 0000000..8b19177 --- /dev/null +++ b/modules/handlers/report_handler.py @@ -0,0 +1,98 @@ +import logging +from typing import Any +from slack_bolt.context.async_context import AsyncBoltContext + +from modules.models.slack_models.slack_models import SlackResponseBody +from modules.models.slack_models.shared_models import SlackUserInfo +from modules.slack.blocks.report_blocks import ( + report_form_view_elements, + report_claim_blocks, + report_claim_claimed_button, + report_claim_button, + report_received_ephemeral_message, + report_failed_ephemeral_message, +) +from modules.utils import get_team_info, log_to_thread + +logger = logging.getLogger(__name__) + + +async def handle_report(body: dict[str, Any], context: AsyncBoltContext) -> None: + await context.ack() + await context.client.views_open( + trigger_id=body["trigger_id"], view=report_form_view_elements() + ) + + +async def handle_report_submit(body: dict[str, Any], context: AsyncBoltContext) -> None: + await context.ack() + slack_team = get_team_info() + logger.debug(f"Parsing received body: {body}") + parsed_body = SlackResponseBody( + **body, originating_user=SlackUserInfo(**body["user"]) + ) + response = await context.client.chat_postMessage( + channel=slack_team.moderators_channel.id, + blocks=report_claim_blocks( + parsed_body.originating_user.username, + parsed_body.view.state["values"]["report_input"]["report_input_field"][ + "value" + ], + ), + ) + if response.data["ok"]: + await context.client.chat_postEphemeral( + channel=parsed_body.originating_user.id, + text="Successfully sent report to moderators...", + blocks=[report_received_ephemeral_message()], + user=parsed_body.originating_user.id, + ) + else: + await context.client.chat_postEphemeral( + channel=parsed_body.originating_user.id, + text="There was an issue sending your report...", + blocks=[report_failed_ephemeral_message()], + user=parsed_body.originating_user.id, + ) + + +async def handle_report_claim( + body: SlackResponseBody, context: AsyncBoltContext +) -> None: + await context.ack() + blocks = body.message.blocks + blocks[-1] = report_claim_claimed_button(body.originating_user.username) + await log_to_thread( + client=context.client, + channel_id=body.channel.id, + message_ts=body.message.ts, + username=body.originating_user.username, + action_ts=body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Modified the claim to reach out about the report...", + blocks=blocks, + replace_original=True, + ) + + +async def handle_reset_report_claim( + body: SlackResponseBody, context: AsyncBoltContext +) -> None: + await context.ack() + blocks = body.message.blocks + blocks[-1] = report_claim_button() + await log_to_thread( + client=context.client, + channel_id=body.channel.id, + message_ts=body.message.ts, + username=body.originating_user.username, + action_ts=body.actions[0].action_ts, + claim=False, + ) + await context.respond( + text="Modified the claim to reach out about the report...", + blocks=blocks, + replace_original=True, + ) diff --git a/tests/endpoints/api/__init__.py b/modules/models/__init__.py similarity index 100% rename from tests/endpoints/api/__init__.py rename to modules/models/__init__.py diff --git a/modules/models/daily_programmer_models.py b/modules/models/daily_programmer_models.py new file mode 100644 index 0000000..c4fa3b6 --- /dev/null +++ b/modules/models/daily_programmer_models.py @@ -0,0 +1,41 @@ +from pydantic import Field +from datetime import datetime + +from modules.models.shared_models import AirtableRowBaseModel + + +class DailyProgrammerInfo(AirtableRowBaseModel): + name: str = Field( + ..., + example="Minimum Absolute Difference", + description="The display name of the daily programmer entry - will be wrapped in [] in the text from Slack", + ) + slug: str = Field( + ..., + example="minimum_absolute_difference", + description="A more parseable representation of the name of the message - should be snake cased; this is set by formula in Airtable based on the Message Name field", + ) + text: str = Field( + ..., + example="Your report has been received :check_mark:", + description="The text of the message - utilizes Slack's mrkdwn format", + ) + category: str = Field( + ..., + example="mentorship_request", + description="Snake cased category of the message", + ) + initially_posted_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted datetime in UTC for when the message was first posted to the channel", + ) + last_posted_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted datetime in UTC for when the message was last posted to the channel", + ) + posted_count: int = Field( + ..., + description="The number of time this message has been posted to the channel", + ) diff --git a/modules/models/greeting_models.py b/modules/models/greeting_models.py new file mode 100644 index 0000000..5b8561d --- /dev/null +++ b/modules/models/greeting_models.py @@ -0,0 +1,29 @@ +from pydantic import BaseModel, Field + + +class UserInfo(BaseModel): + id: str = Field( + ..., example="U02RK2AL5LZ", description="The Slack ID of the new user" + ) + name: str = Field( + ..., example="julio123", description="The Slack name of the new user" + ) + first_name: str = Field( + None, example="Julio", description="The first name of the new user" + ) + last_name: str = Field( + None, example="Mendez", description="The last name of the new user" + ) + display_name: str = Field( + None, example="julio123", description="The display name chosen by the user" + ) + real_name: str = Field( + None, + example="Julio Mendez", + description="The display name of the new user as entered by the user", + ) + email: str = Field(..., example="test@example.com", description="Email of the user") + zip_code: str = Field(None, example="12345", description="The zip code of the user") + joined_date: str = Field( + None, example="2013-01-30", description="The date the user joined the OC Slack" + ) diff --git a/modules/models/mentorship_models.py b/modules/models/mentorship_models.py new file mode 100644 index 0000000..a59f1ab --- /dev/null +++ b/modules/models/mentorship_models.py @@ -0,0 +1,166 @@ +from pydantic import Field, BaseModel +from datetime import datetime +from typing import Union + +from modules.models.shared_models import AirtableRowBaseModel, AirtableUser + + +class MentorshipService(AirtableRowBaseModel): + name: str = Field( + ..., example="Pair Programming", description="Name of the service" + ) + slug: str = Field( + ..., + example="pair_programming", + description="Snake cased value for the service, used for identification and other purposes", + ) + description: str = Field( + ..., + example="Work on a programming problem with a mentor while on a call", + description="Description of the service", + ) + + +class MentorshipSkillset(AirtableRowBaseModel): + name: str = Field( + ..., example="Pair Programming", description="Name of the service" + ) + slug: str = Field( + ..., + example="pair_programming", + description="Snake cased value for the service, used for identification and other purposes", + ) + mentors: list[str] = Field( + None, + example="['recoakW045JkGgQB7', 'rec9Un0YIvPsFjPZh', 'recnfnbHDZdie8jcD']", + description="List of Airtable record IDs for mentors that have this skillset", + ) + + +class MentorshipAffiliation(AirtableRowBaseModel): + name: str = Field( + ..., example="US Veteran", description="The name of the affiliation" + ) + slug: str = Field( + ..., + example="us_veteran", + description="A more parseable slug for the affiliation, set by a formula in Airtable", + ) + description: str = Field( + ..., + example="Veterans are former members of the United States military.", + description="A short description of the affiliation", + ) + + +class Mentor(AirtableRowBaseModel): + slack_name: str = Field( + ..., example="john123", description="The Slack username for the mentor" + ) + full_name: str = Field( + ..., example="John Smith", description="The full name of the mentor" + ) + email: str = Field(..., example="test@example.com", description="Email of the user") + active: bool = Field(..., description="Whether or not the mentor is current active") + skills: list[str] = Field( + ..., + example="['recoakW045JkGgQB7', 'rec9Un0YIvPsFjPZh', 'recnfnbHDZdie8jcD']", + description="The Airtable provided IDs of the skillsets the mentor has added", + ) + desired_mentorship_hours_per_week: int = Field( + ..., + description="The number of hours the mentor has specified they would like to mentor for", + ) + time_zone: str = Field( + ..., example="Indian/Maldives", description="The mentor's time zone" + ) + max_mentees: int = Field( + ..., + description="The maximum number of mentees this mentor wants to work with at one time", + ) + bio: str = Field(None, description="The self provided bio for the mentor") + notes: str = Field(None, description="Any additional notes on the mentor") + mentees_worked_with: list[str] = Field( + None, + example="['recCMMhN5j51NoagK']", + description="The Airtable provided IDs of the mentees that the mentor has worked with, found on the Mentor Request table", + ) + code_of_conduct_accepted: bool = Field( + ..., description="Whether or not the mentor has accepted the code of conduct" + ) + guidebook_read: bool = Field( + ..., description="Whether or not the mentor has read the guidebook" + ) + row_id: int = Field(..., description="Row ID from the Airtable table") + + +class MentorshipRequestBase(BaseModel): + slack_name: str = Field( + ..., + example="john123", + description="The Slack username for the user making the mentorship request", + ) + email: str = Field( + ..., example="test@example.com", description="Email of the requesting user" + ) + service: str = Field( + ..., + example="Career Guidance", + description="Service requested for the mentorship session", + ) + additional_details: str = Field( + ..., + example="I need help with choosing a career path.", + description="Details provided by the user making the request", + ) + skillsets_requested: list[str] = Field( + ..., + example="['Go', 'React', 'Code Review']", + description="List of all skillsets selected by the user making the request - this is used to match a mentor", + ) + affiliation: Union[str, list[str]] = Field( + ..., + example="recCMMhN5j51NoagK", + description="The Airtable created ID of a record on the Affiliations table", + ) + claimed: bool = Field( + False, description="Whether or not the mentor request has been claimed" + ) + claimed_by: Union[str, list[str]] = Field( + None, + description="The Airtable ID of the user who has claimed the request - this is pulled from the Mentor table", + ) + claimed_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted UTC time when the request was claimed", + ) + reset_by: str = Field( + None, + example="john123", + description="Slack username of the user who reset the claim", + ) + reset_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted UTC time when the request claim was reset", + ) + reset_count: int = Field( + 0, description="The number of times the request claim was reset" + ) + + +class MentorshipRequest(MentorshipRequestBase, AirtableRowBaseModel): + row_id: int = Field( + None, + description="The Airtable created row ID of the row, primarily used for sorting", + ) + slack_message_ts: float = Field( + ..., + example=1640727458.000000, + description="The message timestamp - this along with the channel ID allow the message to be found", + ) + + +class MentorshipRequestCreate(MentorshipRequestBase): + pass diff --git a/modules/models/message_text_models.py b/modules/models/message_text_models.py new file mode 100644 index 0000000..ba49f36 --- /dev/null +++ b/modules/models/message_text_models.py @@ -0,0 +1,26 @@ +from pydantic import Field + +from modules.models.shared_models import AirtableRowBaseModel + + +class MessageTextInfo(AirtableRowBaseModel): + name: str = Field( + ..., + example="Report Received", + description="The display name of the message text", + ) + slug: str = Field( + ..., + example="report_received", + description="A more parseable representation of the name of the message - should be snake cased; this is set by formula in Airtable based on the Message Name field", + ) + text: str = Field( + ..., + example="Your report has been received :check_mark:", + description="The text of the message - utilizes Slack's mrkdwn format", + ) + category: str = Field( + ..., + example="mentorship_request", + description="Snake cased category of the message", + ) diff --git a/tests/endpoints/slack/__init__.py b/modules/models/report_models.py similarity index 100% rename from tests/endpoints/slack/__init__.py rename to modules/models/report_models.py diff --git a/modules/models/scheduled_message_models.py b/modules/models/scheduled_message_models.py new file mode 100644 index 0000000..d59f2b5 --- /dev/null +++ b/modules/models/scheduled_message_models.py @@ -0,0 +1,52 @@ +from datetime import datetime +from pydantic import Field +from enum import Enum + +from modules.models.shared_models import AirtableRowBaseModel + + +class FrequencyEnum(str, Enum): + daily = "daily" + weekly = "weekly" + monthly = "monthly" + + +class ScheduledMessageInfo(AirtableRowBaseModel): + name: str = Field( + ..., + example="Mentorship Reminder", + description="The display name of the message to be scheduled", + ) + slug: str = Field( + ..., + example="mentorship_reminder", + description="A more parseable representation of the name of the scheduled message - should be snake cased", + ) + channel: str = Field( + ..., example="general", description="Channel to send the message to" + ) + message_text: str = Field( + ..., + example="Don't forget you can use the `/mentor` command to request a 1 on 1 session with a mentor!", + description="A text string that can contain markdown syntax to be posted to Slack", + ) + initial_date_time_to_send: datetime = Field( + ..., + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted datetime in UTC to send the first message - this is used to set the schedule for this message", + ) + frequency: FrequencyEnum = Field( + ..., + example="daily", + description="Frequency to send the message - one of daily, weekly, monthly", + ) + last_sent: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="When the message was last sent", + ) + when_to_send: datetime = Field( + ..., + example="2021-04-23T10:20:30.400+00:00", + description="When to send the message - this is calculated using a formula on the Airtable table", + ) diff --git a/modules/models/shared_models.py b/modules/models/shared_models.py new file mode 100644 index 0000000..c8b1350 --- /dev/null +++ b/modules/models/shared_models.py @@ -0,0 +1,46 @@ +from pydantic import BaseModel, Field +from datetime import datetime +from enum import Enum + + +class ValidEnum(str, Enum): + valid = "valid" + invalid = "invalid" + + +class AirtableUser(BaseModel): + id: str = Field( + ..., + example="usrAuExK7DEWFNiI6", + description="Airtable provided unique ID of the user", + ) + email: str = Field(..., example="test@example.com", description="Email of the user") + name: str = Field(..., example="John Smith", description="Name of the user") + + +class AirtableRowBaseModel(BaseModel): + airtable_id: str = Field( + ..., + example="rec8CRVRJOKYBIDIL", + description="Airtable provided unique ID for the row", + ) + created_at: datetime = Field( + ..., + example="2021-04-23T10:20:30.400+00:00", + description="When the Airtable record was created", + ) + last_modified: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="When the Airtable record was last updated", + ) + last_modified_by: AirtableUser = Field( + None, + example="JulioMendez", + description="Name of the user who last modified the Airtable record", + ) + valid: ValidEnum = Field( + None, + example="invalid", + description="Whether or not the record is valid - this is calculated on the Airtable table and has a value of valid if all fields are filled out", + ) diff --git a/modules/models/slack_models/__init__.py b/modules/models/slack_models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/models/slack_models/action_models.py b/modules/models/slack_models/action_models.py new file mode 100644 index 0000000..0ca54e9 --- /dev/null +++ b/modules/models/slack_models/action_models.py @@ -0,0 +1,36 @@ +from pydantic import Field + +from modules.models.slack_models.shared_models import ( + BasicSlackRequest, + SlackUserInfo, + SlackActionContainerInfo, + BaseSlackTeamInfo, + SlackChannelInfo, + SlackMessageInfo, + SlackActionInfo, +) + + +class SlackActionRequestBody(BasicSlackRequest): + type: str = Field(..., example="block_actions", description="The type of action") + user: SlackUserInfo = Field( + ..., description="The user who triggered the action request" + ) + container: SlackActionContainerInfo = Field( + ..., description="The container where the action was triggered" + ) + team: BaseSlackTeamInfo = Field(..., description="Basic team information") + channel: SlackChannelInfo = Field( + ..., description="The channel the action was triggered in" + ) + message: SlackMessageInfo = Field( + ..., description="The original message where the action was triggered" + ) + response_url: str = Field( + ..., + example="https://hooks.slack.com/actions/T01SBLCQ57A/2899731511204/xb8gxI4ldtCaVwbdsddM0nb", + description="The response URL where a response can be sent if needed", + ) + actions: list[SlackActionInfo] = Field( + ..., description="The action information about the action that was triggered" + ) diff --git a/modules/models/slack_models/command_models.py b/modules/models/slack_models/command_models.py new file mode 100644 index 0000000..54fe90c --- /dev/null +++ b/modules/models/slack_models/command_models.py @@ -0,0 +1,41 @@ +from pydantic import Field + +from modules.models.slack_models.shared_models import BasicSlackRequest + + +class SlackCommandRequestBody(BasicSlackRequest): + command: str = Field( + ..., + example="/mentor_request", + description="The command that triggered the request", + ) + user_id: str = Field( + ..., + example="U01RN31JSTT", + description="The Slack user ID for the user who triggered the request", + ) + user_name: str = Field( + ..., + example="john123", + description="The Slack user name for the user who triggered the request", + ) + channel_id: str = Field( + ..., + example="D02R6CR6DMG", + description="The Slack channel ID where the command was triggered", + ) + channel_name: str = Field( + ..., + example="directmessage", + description="The name of the channel where the command was triggered", + ) + response_url: str = Field( + None, + example="https://hooks.slack.com/actions/T01SBLfdsaQ57A/2902419552385/BiWpNhRSURKF9CvqujZ3x1MQ", + description="The URL to send the response to that will automatically put the response in the right place", + ) + team_id: str = Field( + ..., + example="T01SBLCQ57A", + description="The Slack ID of the team that the command came from", + ) diff --git a/modules/models/slack_models/event_models.py b/modules/models/slack_models/event_models.py new file mode 100644 index 0000000..3f44b75 --- /dev/null +++ b/modules/models/slack_models/event_models.py @@ -0,0 +1,30 @@ +from pydantic import BaseModel, Field + + +class MemberJoinedChannelEvent(BaseModel): + type: str = Field( + ..., + example="member_joined_channel", + description="The type of event, should always be member_joined_channel", + ) + user: str = Field( + ..., + example="U123456789", + description="The Slack ID of the user who joined the channel", + ) + channel: str = Field( + ..., + example="C0698JE0H", + description="The Slack ID of the channel the user joined", + ) + channel_type: str = Field( + ..., + example="C", + description="The channel type - C is typically a public channel and G is for a private channel or group", + ) + team: str = Field(..., example="T024BE7LD", description="The Slack ID of the team") + inviter: str = Field( + None, + example="U123456789", + description="The Slack user ID of the user who invited the joining user - is optional and won't show up for default channels, for example", + ) diff --git a/modules/models/slack_models/message_models.py b/modules/models/slack_models/message_models.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py new file mode 100644 index 0000000..0d9501d --- /dev/null +++ b/modules/models/slack_models/shared_models.py @@ -0,0 +1,319 @@ +import os +from functools import cached_property +from typing import Any, Union, Optional + +from pydantic import BaseModel, Field + + +class SlackUserInfo(BaseModel): + id: str = Field( + ..., + example="U01RN31JSTD", + description="Slack ID of the user", + ) + username: str = Field( + ..., example="julio123", description="The Slack username of the user" + ) + name: str = Field( + ..., example="JulioMendez", description="The Slack display name of the user" + ) + + +class SlackEditedInfo(BaseModel): + user: str = Field( + ..., example="B02QRQ4KU5V", description="The user who last edited the message" + ) + ts: str = Field( + ..., + example="1640727458.000000", + description="The Unix Epoch timestamp of when the message was last edited", + ) + + +class SlackTextObjectInfo(BaseModel): + type: str = Field(..., example="mrkdwn", description="The type of text object") + text: str = Field( + ..., + example="Testing text for a text object", + description="The text that makes up the text object", + ) + + +class SlackBlockInfo(BaseModel): + type: str = Field(..., example="section", description="The type of block") + block_id: str = Field( + ..., + example="report_title_block", + description="ID of the block - must be unique within the immediate set of blocks. Will be added by Slack if it's missing in the definition", + ) + text: SlackTextObjectInfo = Field( + None, description="Optional text object for this block" + ) + + class Config: + # Allows extra attributes on this model + extra = "allow" + + +class SlackViewInfo(BaseModel): + id: str = Field( + ..., + example="V02S65HDH9Q", + description="Slack ID of the view", + ) + type: str = Field(..., example="modal", description="The type of view") + blocks: list[SlackBlockInfo] = Field( + ..., description="List of blocks in the view - there must be at least one" + ) + private_metadata: str = Field( + None, + description="Private data that can be included on a view and sent with a submission - not visible to the user", + ) + callback_id: str = Field( + ..., + example="report_form_submit", + description="Callback for the submission action of the view, used to handle the submission", + ) + state: dict[str, Any] = Field( + None, + description="State of a view, if it exists - contains the value of the input elements in the view", + ) + hash: str = Field( + ..., + example="1640903702.u8C2NM3Y", + description="Hash string sent with the submission of the view, this is used by the update and publish views API calls to ensure that only the most recent view is updated or published", + ) + title: SlackTextObjectInfo = Field( + None, description="The text object used for the title of the view" + ) + previous_view_id: str = Field( + None, + example="V02S65HDH9Q", + description="The previous view's ID - typically used in workflows", + ) + root_view_id: str = Field( + None, example="V02S65HDH9Q", description="The root view's ID" + ) + external_id: str = Field( + None, + example="report_form_modal", + description="The optional external ID for the view, must be unique across all views - this is added by the bot", + ) + bot_id: str = Field( + None, + example="B02QRQ4KU5V", + description="The ID of the bot that generated the view", + ) + + +class SlackMessageInfo(BaseModel): + bot_id: str = Field( + None, + example="B02QRQ4KU5V", + description="Slack ID of the bot that sent the message - provided if the original message was sent from a bot", + ) + type: str = Field(..., example="message", description="The type of message") + text: str = Field( + None, + example="Typical fallback text...", + description="If blocks are provided, this is the fallback text for the message. If no blocks are present, this is the message", + ) + user: str = Field( + ..., + example="U02RK2AL5LZ", + description="Slack user ID of the user who triggered the action", + ) + blocks: list[Union[Any, SlackBlockInfo]] = Field( + None, description="The list of blocks for a particular message" + ) + ts: str = Field( + ..., + example="1640727423.003500", + description="Unix Epoch timestamp the message was received by Slack - typically used to locate the message", + ) + edited: SlackEditedInfo = Field( + None, description="Information about who and when the message was last edited" + ) + thread_ts: str = Field( + None, + example="1640727423.003500", + description="The Unix Epoch timestamp the thread was created", + ) + reply_count: int = Field(None, description="The number of replies the message has") + reply_users_count: int = Field( + None, description="The number of users who have replied to the message" + ) + latest_reply: str = Field( + None, + example="1640727423.003500", + description="The Unix Epoch timestamp of when the latest reply was created", + ) + reply_users: list[str] = Field( + None, + example=["U02RK2AL5LZ"], + description="A list of Slack user IDs of users who have replied to the message", + ) + last_read: str = Field( + None, + example="1640727423.003500", + description="The Unix Epoch timestamp of when the message was last read", + ) + + class Config: + arbitrary_types_allowed = True + + +class SlackActionInfo(BaseModel): + action_id: str = Field( + ..., + example="reset_greet_new_user_claim", + description="The ID that identifies this particular action and allows the application to handle it when triggered", + ) + block_id: str = Field( + None, + example="reset_claim_action", + description="The ID that identifies the block the action is part of", + ) + text: SlackTextObjectInfo = Field( + None, + description="The text object that represents the text on the action (button, etc)", + ) + value: Optional[dict[str, Any]] = Field( + None, + description="The value sent to the application when the action is triggered", + ) + style: str = Field( + None, + example="danger", + description="The style of the action, typically the style of the button", + ) + type: str = Field(..., example="button", description="The type of action") + action_ts: str = Field( + ..., + example="1640727423.003500", + description="The Unix Epoch timestamp of when the action was triggered", + ) + + +class SlackActionContainerInfo(BaseModel): + type: str = Field( + ..., example="message", description="The type of container the action came from" + ) + message_ts: str = Field( + ..., + example="1640752131.000200", + description="Unix Epoch timestamp of when the message was sent to Slack, typically used to locate the message", + ) + channel_id: str = Field( + ..., example="C01S0K034TB", description="The channel ID the message came from" + ) + is_ephemeral: bool = Field( + ..., description="Whether or not the message is ephemeral" + ) + + +class SlackChannelInfo(BaseModel): + id: str = Field(..., example="C01S0K034TB", description="Slack ID of the channel") + name: str = Field(..., example="general", description="Name of the channel") + + +class BasicSlackRequest(BaseModel): + trigger_id: str = Field( + ..., + example="2875577934983.1895692821248.5b6bb2ed4127b90954e8d32a86e2cafc", + description="The ID of the trigger for this request, typically used to respond to the correct place and user", + ) + api_app_id: str = Field( + ..., example="A02R6C6S9JN", description="The Slack application ID" + ) + + +class SlackConversationInfo(BaseModel): + """Slack used to call these channels, but now they are called conversations, of which channels are a subset along with IMs and MPIMs (Multi Person IMs)""" + + id: str = Field( + ..., + example="C012AB3CD", + description="Slack ID of the conversation", + ) + name: str = Field(..., example="general", description="Name of the conversation") + is_channel: bool = Field( + ..., description="Whether the conversation is a channel or not" + ) + is_im: bool = Field(..., description="Whether the conversation is an IM or not") + is_mpim: bool = Field( + ..., description="Whether the conversation is a Multi Person IM or not" + ) + is_private: bool = Field( + ..., description="Whether the conversation is private or not" + ) + + +class BaseSlackTeamInfo(BaseModel): + id: str = Field( + ..., + example="T01SBLCQ57A", + description="Slack ID of the team", + ) + domain: str = Field( + None, example="bot-testing-field", description="The domain of the team" + ) + + +class SlackTeamInfo(BaseSlackTeamInfo): + """Slack used to call these workspaces, but they are referred to as teams now""" + + name: str = Field( + ..., example="Bot-Testing-Field", description="The name of the Slack workspace" + ) + conversations: list[SlackConversationInfo] = Field( + ..., description="The list of Slack channels in this workspace" + ) + + +class SlackTeam: + def __init__(self, team_info: SlackTeamInfo) -> None: + self._team_info = team_info + + def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: + return [ + conversation + for conversation in self.full_conversation_list + if conversation.name == channel_name + ][0] + + @cached_property + def slack_id(self) -> str: + return self._team_info.id + + @cached_property + def name(self) -> str: + return self._team_info.name + + @cached_property + def full_conversation_list(self) -> list[SlackConversationInfo]: + return self._team_info.conversations + + @cached_property + def greetings_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("GREETINGS_CHANNEL_NAME")) + + @cached_property + def mentors_internal_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("MENTORS_CHANNEL_NAME")) + + @cached_property + def moderators_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("MODERATORS_CHANNEL_NAME")) + + @cached_property + def general_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("GENERAL_CHANNEL_NAME")) + + @cached_property + def pride_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("PRIDE_CHANNEL_NAME")) + + @cached_property + def blacks_in_tech(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("BLACKS_IN_TECH_CHANNEL_NAME")) diff --git a/modules/models/slack_models/slack_models.py b/modules/models/slack_models/slack_models.py new file mode 100644 index 0000000..f523215 --- /dev/null +++ b/modules/models/slack_models/slack_models.py @@ -0,0 +1,97 @@ +from pydantic import BaseModel, Field + +from modules.models.slack_models.shared_models import ( + SlackUserInfo, + SlackViewInfo, + SlackMessageInfo, + SlackActionInfo, + SlackActionContainerInfo, + SlackChannelInfo, + BasicSlackRequest, +) + + +class SlackResponseBody(BasicSlackRequest): + type: str = Field( + ..., + example="view_submission", + description="The type of request the reponse is responding to", + ) + originating_user: SlackUserInfo = Field( + ..., description="The info of the user who triggered the request" + ) + view: SlackViewInfo = Field( + None, description="View object of the original message if it exists" + ) + container: SlackActionContainerInfo = Field( + None, description="The container that the action originated from if it exists" + ) + channel: SlackChannelInfo = Field( + None, + description="The channel information for where the original request was from", + ) + message: SlackMessageInfo = Field( + None, description="The original message from the request, if it exists" + ) + response_urls: list[str] = Field( + None, + description="List of response URLs, typically included with a view response", + ) + actions: list[SlackActionInfo] = Field( + None, description="The list of actions in this message" + ) + + +class BotInfo(BaseModel): + slack_id: str = Field( + ..., + example="B02QRQ4KU5V", + description="Slack ID for the bot that sent the request", + ) + app_id: str = Field( + ..., example="A02R6C6S9JN", description="Slack ID for the parent application" + ) + name: str = Field( + ..., + example="retrieval-bot", + description="Name of the bot that sent the request", + ) + team_id: str = Field( + ..., + example="T01SBLCQ57A", + description="Slack team ID of the bot that sent the request", + ) + + +class BasicSlackBotResponse(BaseModel): + date_time_received: str = Field( + ..., + example="Tue, 28 Dec 2021 05:36:22 GMT", + description="Timestamp for when the response was received", + ) + oauth_scopes: str = Field( + ..., + example="app_mentions:read,channels:history,channels:read,channels:join,emoji:read", + description="List of oauth scopes the bot is authorized to use", + ) + status_ok: bool = Field( + ..., + description="Status of the request that triggered the response, true means the request was successful while false means it was in error", + ) + received_timestamp: str = Field( + ..., + example="1640669783.000100", + description="Unix epoch timestamp for when the request was received", + ) + + +class SlackBotResponseContent(BasicSlackBotResponse): + channel: str = Field( + ..., example="D02R6CR6DMG", description="Channel the request was sent to" + ) + bot_info: BotInfo = Field( + ..., description="Information about the bot that sent the request" + ) + request_blocks: list[dict] = Field( + None, description="List of blocks in the original request" + ) diff --git a/modules/models/slack_models/view_models.py b/modules/models/slack_models/view_models.py new file mode 100644 index 0000000..877b069 --- /dev/null +++ b/modules/models/slack_models/view_models.py @@ -0,0 +1,22 @@ +from pydantic import Field + +from modules.models.slack_models.shared_models import ( + BasicSlackRequest, + SlackUserInfo, + SlackViewInfo, +) + + +class SlackViewRequestBody(BasicSlackRequest): + user: SlackUserInfo = Field( + ..., + description="The Slack user object of the user who triggered the submission of the view", + ) + view: SlackViewInfo = Field( + ..., description="The information of the view that was submitted" + ) + response_urls: list[str] = Field( + [], + example="['https://hooks.slack.com/actions/T01SBLfdsaQ57A/2902419552385/BiWpNhRSURKF9CvqujZ3x1MQ']", + description="List of URLs to be used for responses depending on if the view has elements that are configured to generate a response URL", + ) diff --git a/modules/slack/__init__.py b/modules/slack/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/slack/blocks/__init__.py b/modules/slack/blocks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/slack/blocks/announcement_blocks.py b/modules/slack/blocks/announcement_blocks.py new file mode 100644 index 0000000..83cf4bf --- /dev/null +++ b/modules/slack/blocks/announcement_blocks.py @@ -0,0 +1,19 @@ +from typing import Union +from slack_sdk.models.blocks.blocks import HeaderBlock, SectionBlock +from slack_sdk.models.blocks.basic_components import PlainTextObject, MarkdownTextObject + + +def general_announcement_blocks( + header_text: str, text: str +) -> list[Union[HeaderBlock, SectionBlock]]: + return [general_announcement_header(header_text), general_announcement_body(text)] + + +def general_announcement_header(header_text: str) -> HeaderBlock: + text = PlainTextObject(text="[" + header_text + "]", emoji=True) + return HeaderBlock(block_id="general_announcement_header", text=text) + + +def general_announcement_body(text: str) -> SectionBlock: + text = MarkdownTextObject(text=text) + return SectionBlock(text=text, block_id="general_announcement_body") diff --git a/modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json b/modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json new file mode 100644 index 0000000..31c16f8 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json @@ -0,0 +1,29 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "request_main", + "text": { + "type": "mrkdwn", + "text": ":tada: has requested to join the channel." + } + }, + { + "type": "actions", + "block_id": "invite_to_channel_claim", + "elements": [ + { + "type": "button", + "text": { + "type": "plain_text", + "text": "I'll Invite Them!", + "emoji": true + }, + "style": "primary", + "value": "juilio.mendez", + "action_id": "invite_to_channel_click" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/general_announcement.json b/modules/slack/blocks/block_kit_examples/general_announcement.json new file mode 100644 index 0000000..6d6ac68 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/general_announcement.json @@ -0,0 +1,21 @@ +{ + "blocks": [ + { + "type": "header", + "block_id": "general_announcement_header", + "text": { + "type": "plain_text", + "text": "[Scholarship Opportunity]", + "emoji": true + } + }, + { + "type": "section", + "block_id": "general_announcement_body", + "text": { + "type": "mrkdwn", + "text": "*Coursera:* Prepare for in-demand jobs in Data Analytics, IT Support, Project Management, and UX design. ends on December 31st 2022." + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/greeting_block.json b/modules/slack/blocks/block_kit_examples/greeting_block.json new file mode 100644 index 0000000..1e2b2de --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/greeting_block.json @@ -0,0 +1,55 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":tada: has joined our community! :tada:" + } + }, + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "*First Name:*" + }, + { + "type": "mrkdwn", + "text": "Julio" + }, + { + "type": "mrkdwn", + "text": "*Last Name:*" + }, + { + "type": "mrkdwn", + "text": "Mendez" + }, + { + "type": "mrkdwn", + "text": "*When:*" + }, + { + "type": "mrkdwn", + "text": "August 10th, 2021" + } + ] + }, + { + "type": "actions", + "elements": [ + { + "type": "button", + "text": { + "type": "plain_text", + "emoji": true, + "text": "I will greet them!" + }, + "style": "primary", + "value": "greet_user" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json new file mode 100644 index 0000000..814bcf5 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json @@ -0,0 +1,45 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_service_text", + "text": { + "type": "mrkdwn", + "text": "User has requested a mentor for Code Review." + } + }, + { + "type": "section", + "block_id": "mentorship_request_skillset_text", + "text": { + "type": "mrkdwn", + "text": "*Requested Skillset(s):* SQL, C / C++" + } + }, + { + "type": "section", + "block_id": "mentorship_request_affiliation_text", + "text": { + "type": "mrkdwn", + "text": "*Requestor Affiliation:* US Military Veteran" + } + }, + { + "type": "actions", + "block_id": "claim_button_action_block", + "elements": [ + { + "type": "button", + "text": { + "type": "plain_text", + "text": "Claim Mentorship Request", + "emoji": true + }, + "style": "primary", + "value": "JulioMendez", + "action_id": "claim_mentorship_request" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json new file mode 100644 index 0000000..a2b243e --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json @@ -0,0 +1,588 @@ + +{ + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_title", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_divider_1" + }, + { + "type": "section", + "block_id": "mentor_service", + "text": { + "type": "mrkdwn", + "text": "*Type of Mentorship Service*", + "verbatim": false + }, + "accessory": { + "type": "static_select", + "action_id": "mentor_service_select", + "placeholder": { + "type": "plain_text", + "text": "Type of Service", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + }, + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + } + ] + } + }, + { + "type": "section", + "block_id": "mentor_skillset", + "text": { + "type": "mrkdwn", + "text": "*Desired Mentor Skillsets*", + "verbatim": false + }, + "accessory": { + "type": "multi_static_select", + "action_id": "mentor_skillset_select", + "placeholder": { + "type": "plain_text", + "text": "Desired Mentor Skillsets", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_backend" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c#_.net" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c++" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_frontend" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + } + ] + } + }, + { + "type": "section", + "block_id": "comments", + "text": { + "type": "mrkdwn", + "text": "*Add details* (required)", + "verbatim": false + }, + "accessory": { + "type": "button", + "action_id": "details_btn", + "text": { + "type": "plain_text", + "text": "Add details", + "emoji": true + }, + "value": "add_details" + }, + "fields": [ + { + "type": "plain_text", + "text": " ", + "emoji": true + } + ] + }, + { + "type": "divider", + "block_id": "jeZsB" + }, + { + "type": "section", + "block_id": "affiliation", + "text": { + "type": "mrkdwn", + "text": "*I certify that I am a member of the following group*", + "verbatim": false + }, + "accessory": { + "type": "static_select", + "action_id": "affiliation_select", + "placeholder": { + "type": "plain_text", + "text": "Military affiliation", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Veteran", + "emoji": true + }, + "value": "Veteran" + }, + { + "text": { + "type": "plain_text", + "text": "Active Duty", + "emoji": true + }, + "value": "Active Duty" + }, + { + "text": { + "type": "plain_text", + "text": "Military Spouse", + "emoji": true + }, + "value": "Military Spouse" + }, + { + "text": { + "type": "plain_text", + "text": "Non Veteran", + "emoji": true + }, + "value": "Non Veteran" + } + ] + } + }, + { + "type": "divider", + "block_id": "2+AO" + }, + { + "type": "actions", + "block_id": "submission", + "elements": [ + { + "type": "button", + "action_id": "submit_mentor_btn", + "text": { + "type": "plain_text", + "text": "Submit", + "emoji": true + }, + "style": "primary", + "value": "submit" + }, + { + "type": "button", + "action_id": "cancel_btn", + "text": { + "type": "plain_text", + "text": "Cancel", + "emoji": true + }, + "style": "danger", + "value": "cancel" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json new file mode 100644 index 0000000..2544395 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json @@ -0,0 +1,573 @@ +{ + "type": "modal", + "title": { + "type": "plain_text", + "text": "OC Mentor Request", + "emoji": true + }, + "submit": { + "type": "plain_text", + "text": "Submit Request", + "emoji": true + }, + "close": { + "type": "plain_text", + "text": "Cancel", + "emoji": true + }, + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_main_text", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators. *NOTE*: Mentors are typically available within a couple hours; however, on weekends or holidays the timeframe may be longer before someone reaches out.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_1" + }, + { + "type": "input", + "block_id": "mentorship_service_input", + "element": { + "type": "static_select", + "placeholder": { + "type": "plain_text", + "text": "Type of service...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + } + ], + "action_id": "mentorship_service_selection" + }, + "label": { + "type": "plain_text", + "text": "Mentorship Service*", + "emoji": true + } + }, + { + "type": "input", + "block_id": "mentorship_skillset_input", + "element": { + "type": "multi_static_select", + "placeholder": { + "type": "plain_text", + "text": "Skills related to your request...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_backend" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c#_.net" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c++" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_frontend" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + } + ], + "action_id": "mentorship_skillset_multi_selection" + }, + "label": { + "type": "plain_text", + "text": "Skillsets Related to Your Request*", + "emoji": true + } + }, + { + "type": "input", + "block_id": "details_input_field", + "element": { + "type": "plain_text_input", + "multiline": true, + "action_id": "details_text_input", + "min_length": 10, + "placeholder": { + "type": "plain_text", + "text": "Please enter more information about your request. The more specific you are the easier it is to match you with a great mentor!", + "emoji": true + } + }, + "label": { + "type": "plain_text", + "text": "Request Details*", + "emoji": true + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_2" + }, + { + "type": "input", + "block_id": "mentorship_affiliation_input", + "element": { + "type": "static_select", + "placeholder": { + "type": "plain_text", + "text": "Please select a group...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Veteran", + "emoji": true + }, + "value": "us_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "Active Duty", + "emoji": true + }, + "value": "us_active_duty" + }, + { + "text": { + "type": "plain_text", + "text": "Military Spouse", + "emoji": true + }, + "value": "us_military_spouse" + }, + { + "text": { + "type": "plain_text", + "text": "Non Veteran", + "emoji": true + }, + "value": "non_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "Foreign Military", + "emoji": true + }, + "value": "foreign_military" + } + ], + "action_id": "affiliation_selection" + }, + "label": { + "type": "plain_text", + "text": "I certify that I am affiliated with one of the following groups:*", + "emoji": true + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/new_join_delayed.json b/modules/slack/blocks/block_kit_examples/new_join_delayed.json new file mode 100644 index 0000000..a8c5455 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/new_join_delayed.json @@ -0,0 +1,20 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "delayed_welcome_first_text", + "text": { + "type": "mrkdwn", + "text": "Again, welcome to Operation Code's Slack Community, we're very glad you are here! Please share with us in #general what brings you to Operation Code if you haven't already. Also please let us know how we can assist you on your journey. Consider adding links to your LinkedIn and Github profiles on your Operation Code profile. Lastly, consider connecting with us on our , , , and . If you'd like to contribute to our Open Source software, you can do so on ." + } + }, + { + "type": "section", + "block_id": "delayed_welcome_second_text", + "text": { + "type": "mrkdwn", + "text": "We're excited to have you! If you have any immediate needs, please tag @outreach-team in any public channel." + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/new_join_immediate.json b/modules/slack/blocks/block_kit_examples/new_join_immediate.json new file mode 100644 index 0000000..25bc482 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/new_join_immediate.json @@ -0,0 +1,93 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "immediate_welcome_main_text", + "text": { + "type": "mrkdwn", + "text": "Hello ! Welcome to Operation Code! I'm a bot designed to help you navigate this Slack workspace. Our goal here at Operation Code is to get veterans and their families started on the path to a career in tech. We do that through providing you with scholarships, mentoring, career development opportunities, conference tickets, and more! You can check out more information about us ." + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Much of the provided aid requires veteran or military spouse status. Please verify your status on your profile at https://operationcode.org if you haven't already." + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "You are currently in Slack, a chat application that serves as the hub of Operation Code. If you are visiting us via your browser, Slack provides a to make staying in touch even more convenient." + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "All active Operation Code open source projects are located on our . Lastly, please take a moment to review our ." + } + }, + { + "type": "section", + "block_id": "oc_homepage_button", + "text": { + "type": "mrkdwn", + "text": "Operation Code Homepage" + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "OC Homepage", + "emoji": true + }, + "value": "oc_home_page", + "url": "https://operationcode.org", + "action_id": "oc_greeting_homepage_click", + "style": "primary" + } + }, + { + "type": "section", + "block_id": "slack_download_button", + "text": { + "type": "mrkdwn", + "text": "Slack Download" + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "Slack Download", + "emoji": true + }, + "value": "slack_download", + "url": "https://slack.com/downloads/", + "style": "primary", + "action_id": "oc_greeting_slack_download_click" + } + }, + { + "type": "section", + "block_id": "oc_coc_button", + "text": { + "type": "mrkdwn", + "text": "Operation Code CoC" + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "Operation Code CoC", + "emoji": true + }, + "value": "operation_code_coc", + "url": "https://github.com/OperationCode/community/blob/master/code_of_conduct.md", + "style": "primary", + "action_id": "oc_greeting_coc_click" + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/report_claim.json b/modules/slack/blocks/block_kit_examples/reports/report_claim.json new file mode 100644 index 0000000..258a741 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/report_claim.json @@ -0,0 +1,46 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "report_claim_title", + "text": { + "type": "mrkdwn", + "text": ":warning: has submitted a report. :warning:" + } + }, + { + "type": "header", + "block_id": "report_claim_header", + "text": { + "type": "plain_text", + "text": "Report details:", + "emoji": true + } + }, + { + "type": "section", + "block_id": "report_claim_details", + "text": { + "type": "mrkdwn", + "text": "I have an issue with the post made by x: blah blah blah" + } + }, + { + "type": "actions", + "block_id": "report_claim_button", + "elements": [ + { + "type": "button", + "action_id": "report_claim_button_click", + "text": { + "type": "plain_text", + "emoji": true, + "text": "I Will Reach Out to Them" + }, + "style": "primary", + "value": "claim_report" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/report_form.json b/modules/slack/blocks/block_kit_examples/reports/report_form.json new file mode 100644 index 0000000..ef83478 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/report_form.json @@ -0,0 +1,49 @@ +{ + "title": { + "type": "plain_text", + "text": "OC Slack - Report", + "emoji": true + }, + "type": "modal", + "callback_id": "report_modal", + "blocks": [ + { + "type": "section", + "block_id": "report_title_block", + "text": { + "type": "mrkdwn", + "text": ":warning: Thank you for taking the time to report an issue to the moderation team. Please fill out the below input field with the text of the message you'd like to report. If you'd like, you can include a short description of why you are reporting it. The report will only be shown to the moderators of the OC Slack workspace.:warning:" + } + }, + { + "type": "input", + "block_id": "report_input", + "element": { + "type": "plain_text_input", + "action_id": "report_input_field", + "multiline": true, + "focus_on_load": true, + "min_length": 2, + "placeholder": { + "type": "plain_text", + "text": "You can copy and paste the text of the message you'd like to report or tell us a bit about what you are reporting..." + } + }, + "label": { + "type": "plain_text", + "text": "Text of message you are reporting or reason for your report*", + "emoji": true + } + } + ], + "close": { + "type": "plain_text", + "text": "Cancel", + "emoji": true + }, + "submit": { + "type": "plain_text", + "text": "Submit Report", + "emoji": true + } +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json new file mode 100644 index 0000000..c528019 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json @@ -0,0 +1,11 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":warning: Your report was not sent to the moderators due to an unspecified error. Please contact @moderators and let them know so we can investigate the issue and take care of your report. :warning:" + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json new file mode 100644 index 0000000..8fd4d8f --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json @@ -0,0 +1,11 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":white_check_mark: Your report has been received by the moderator team and someone will be reaching out shortly! Please don't hesistate to contact @moderators if you have any other questions. :white_check_mark:" + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/greeting_blocks.py b/modules/slack/blocks/greeting_blocks.py new file mode 100644 index 0000000..037498d --- /dev/null +++ b/modules/slack/blocks/greeting_blocks.py @@ -0,0 +1,67 @@ +from slack_sdk.models.blocks.blocks import SectionBlock, ActionsBlock +from slack_sdk.models.blocks.basic_components import MarkdownTextObject, PlainTextObject +from slack_sdk.models.blocks.block_elements import ButtonElement + +from modules.models.greeting_models import UserInfo + + +def initial_greet_user_blocks(user_info: UserInfo) -> list: + return [ + greeting_blocks_title(user_info.name), + greeting_blocks_user_info(user_info), + greeting_block_button(user_info.id), + ] + + +def greeting_blocks_title(slack_name: str) -> SectionBlock: + greeting_text = MarkdownTextObject( + text=f"🎉 <@{slack_name}> has joined our community! 🎉" + ) + return SectionBlock(block_id="title_text", text=greeting_text) + + +def greeting_blocks_user_info(user_info: UserInfo) -> SectionBlock: + greeting_fields = [] + for key, value in user_info.__dict__.items(): + if key in ("zip_code", "email", "id"): + pass + elif value is None: + pass + else: + greeting_fields.append( + MarkdownTextObject(text=f"*{key.replace('_', ' ').title()}:*") + ) + greeting_fields.append(MarkdownTextObject(text=f"{value}")) + return SectionBlock(block_id="user_info", fields=greeting_fields) + + +def greeting_block_button(new_user_id: str) -> ActionsBlock: + button_text = PlainTextObject(text="I will greet them!", emoji=True) + greet_button = ButtonElement( + text=button_text, + action_id="greet_new_user_claim", + style="primary", + value=f"{new_user_id}", + ) + return ActionsBlock( + block_id="claim_action", + elements=[greet_button], + ) + + +def greeting_block_claimed_button(claiming_user_name: str) -> ActionsBlock: + """Creates an ActionsBlock that contains a button showing who claimed the greeting - this button allows anyone to reset the claim + + :param claiming_user_name: username of the user claiming the greeting + :type claiming_user_name: str + :return: an ActionsBlock with the claimed button that allows a reset + :rtype: ActionsBlock + """ + button_text = PlainTextObject(text=f"Greeted by {claiming_user_name}!") + claimed_greet_button = ButtonElement( + text=button_text, + action_id="reset_greet_new_user_claim", + style="danger", + value=f"{claiming_user_name}", + ) + return ActionsBlock(block_id="reset_claim_action", elements=[claimed_greet_button]) diff --git a/modules/slack/blocks/mentorship_blocks.py b/modules/slack/blocks/mentorship_blocks.py new file mode 100644 index 0000000..9c0d7af --- /dev/null +++ b/modules/slack/blocks/mentorship_blocks.py @@ -0,0 +1,272 @@ +import logging +from slack_sdk.models.views import View +from slack_sdk.models.blocks.blocks import SectionBlock, InputBlock, ActionsBlock, Block +from slack_sdk.models.blocks.block_elements import ( + StaticSelectElement, + StaticMultiSelectElement, + PlainTextInputElement, + ButtonElement, +) +from slack_sdk.models.blocks.basic_components import ( + Option, + MarkdownTextObject, + PlainTextObject, +) + +from modules.airtable import message_text_table +from modules.models.mentorship_models import ( + MentorshipService, + MentorshipSkillset, + MentorshipAffiliation, +) +from modules.slack.blocks import shared_blocks + +logger = logging.getLogger(__name__) + + +def mentorship_request_view( + services: list[MentorshipService], + skillsets: list[MentorshipSkillset], + affiliations: list[MentorshipAffiliation], +) -> View: + logger.info("STAGE: Building mentorship request form view...") + return View( + type="modal", + callback_id="mentorship_request_form_submit", + title=PlainTextObject(text="OC Mentor Request", emoji=True), + submit=PlainTextObject(text="Submit Request", emoji=True), + cancel=PlainTextObject(text="Cancel", emoji=True), + external_id="mentorship_request_form_modal", + blocks=mentorship_request_blocks(services, skillsets, affiliations), + ) + + +def mentorship_request_blocks( + services: list[MentorshipService], + skillsets: list[MentorshipSkillset], + affiliations: list[MentorshipAffiliation], +) -> list: + logger.info("STAGE: Building the mentorship request blocks...") + messages = message_text_table.retrieve_valid_messages_by_view( + "Valid Mentorship Requests" + ) + return [ + request_view_main_text(messages["mentorship_request_main"].text), + shared_blocks.generic_divider_block(block_id="mentorship_request_divider_1"), + request_view_services_input( + services, + messages["mentorship_request_service_label"].text, + messages["mentorship_request_service_placeholder"].text, + ), + request_view_skillsets_input( + skillsets, + messages["mentorship_request_skillset_label"].text, + messages["mentorship_request_skillset_placeholder"].text, + ), + request_view_details_input( + messages["mentorship_request_details_label"].text, + messages["mentorship_request_details_placeholder"].text, + ), + shared_blocks.generic_divider_block(block_id="mentorship_request_divider_2"), + request_view_affiliations_input( + affiliations, + messages["mentorship_request_affiliation_label"].text, + messages["mentorship_request_affiliation_placeholder"].text, + ), + ] + + +def request_view_main_text(main_text: str) -> SectionBlock: + logger.info("STAGE: Building mentorship request form main section block...") + return SectionBlock( + block_id="mentorship_request_main_text", text=MarkdownTextObject(text=main_text) + ) + + +def request_view_services_input( + services: list[MentorshipService], services_label: str, services_placeholder: str +) -> InputBlock: + logger.info("STAGE: Building mentorship request form services input block...") + service_options = [ + Option(label=service.name, value=service.name) for service in services + ] + input_element = StaticSelectElement( + placeholder=PlainTextObject(text=services_placeholder, emoji=True), + action_id="mentorship_service_selection", + options=service_options, + ) + return InputBlock( + block_id="mentorship_service_input", + label=PlainTextObject(text=services_label, emoji=True), + element=input_element, + ) + + +def request_view_skillsets_input( + skillsets: list[MentorshipSkillset], + skillsets_label: str, + skillsets_placeholder: str, +) -> InputBlock: + logger.info("STAGE: Building mentorship request form skillsets input block...") + service_options = [ + Option(label=skillset.name, value=skillset.name) for skillset in skillsets + ] + input_element = StaticMultiSelectElement( + placeholder=PlainTextObject(text=skillsets_placeholder, emoji=True), + action_id="mentorship_skillset_multi_selection", + options=service_options, + ) + return InputBlock( + block_id="mentor_skillset_input", + label=PlainTextObject(text=skillsets_label, emoji=True), + element=input_element, + ) + + +def request_view_details_input( + details_label: str, details_placeholder: str +) -> InputBlock: + logger.info("STAGE: Building mentorship request form details input block...") + input_element = PlainTextInputElement( + action_id="details_text_input", + multiline=True, + min_length=10, + placeholder=PlainTextObject(text=details_placeholder, emoji=True), + ) + return InputBlock( + block_id="details_input_block", + label=PlainTextObject(text=details_label, emoji=True), + element=input_element, + ) + + +def request_view_affiliations_input( + affiliations: list[MentorshipAffiliation], + affiliations_label: str, + affiliations_placeholder: str, +) -> InputBlock: + logger.info("STAGE: Building mentorship request form affiliations input block...") + affiliation_options = [ + Option(label=affiliation.name, value=affiliation.name) + for affiliation in affiliations + ] + input_element = StaticSelectElement( + placeholder=PlainTextObject(text=affiliations_placeholder, emoji=True), + action_id="mentorship_affiliation_selection", + options=affiliation_options, + ) + return InputBlock( + block_id="mentorship_affiliation_input", + label=PlainTextObject(text=affiliations_label, emoji=True), + element=input_element, + ) + + +def request_successful_block() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_received_successfully" + ) + return SectionBlock( + block_id="mentorship_request_received_successfully", + text=MarkdownTextObject(text=message_row.text), + ) + + +def request_unsuccessful_block() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_unsuccessful" + ) + return SectionBlock( + block_id="mentorship_request_unsuccessful", + text=MarkdownTextObject(text=message_row.text), + ) + + +def request_claim_blocks( + requested_service: str, + skillsets: list[str], + affiliation: str, + requesting_username: str, +) -> list[Block]: + return [ + request_claim_service_block(requesting_username, requested_service), + request_claim_skillset_block(skillsets), + request_claim_affiliation_block(affiliation), + request_claim_button(), + ] + + +def request_claim_service_block( + requesting_username: str, requested_service: str +) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_service_text" + ) + return SectionBlock( + block_id="mentorship_request_service_text", + text=MarkdownTextObject( + text=message_row.text.format(requesting_username, requested_service) + ), + ) + + +def request_claim_skillset_block(skillsets: list[str]) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_skillset_text" + ) + return SectionBlock( + block_id="mentorship_request_skillset_text", + text=MarkdownTextObject(text=message_row.text.format(", ".join(skillsets))), + ) + + +def request_claim_affiliation_block(affiliation: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_affiliation_text" + ) + return SectionBlock( + block_id="mentorship_request_affiliation_text", + text=MarkdownTextObject(text=message_row.text.format(affiliation)), + ) + + +def request_claim_button() -> ActionsBlock: + button_element = ButtonElement( + text=PlainTextObject(text="Claim Mentorship Request", emoji=True), + style="primary", + action_id="claim_mentorship_request", + ) + return ActionsBlock(block_id="claim_button_action_block", elements=[button_element]) + + +def request_claim_reset_button(claiming_username: str) -> ActionsBlock: + button_element = ButtonElement( + text=PlainTextObject( + text=f"Request Claimed By {claiming_username}", emoji=True + ), + style="danger", + action_id="reset_mentorship_request_claim", + ) + return ActionsBlock(block_id="claim_button_action_block", elements=[button_element]) + + +def request_claim_details_block(details: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_details_text" + ) + return SectionBlock( + block_id="mentorship_request_details_text", + text=MarkdownTextObject(text=message_row.text.format(details)), + ) + + +def request_claim_tagged_users_block(usernames: list[str]) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_tagged_users" + ) + return SectionBlock( + block_id="mentorship_request_tagged_users", + text=MarkdownTextObject( + text=message_row.text.format("@" + " @".join(usernames)) + ), + ) diff --git a/modules/slack/blocks/new_join_blocks.py b/modules/slack/blocks/new_join_blocks.py new file mode 100644 index 0000000..d1fcbad --- /dev/null +++ b/modules/slack/blocks/new_join_blocks.py @@ -0,0 +1,133 @@ +from slack_sdk.models.blocks import ( + Block, + SectionBlock, + PlainTextObject, + ButtonElement, + MarkdownTextObject, +) + +from modules.airtable import message_text_table + + +def new_join_immediate_welcome_blocks(joining_username: str) -> list[Block]: + return [ + new_join_immediate_welcome_first_text(joining_username), + new_join_immediate_welcome_second_text(), + new_join_immediate_welcome_third_text(), + new_join_immediate_welcome_fourth_text(), + new_join_immediate_welcome_oc_homepage_button(), + new_join_immediate_welcome_slack_download_button(), + new_join_immediate_welcome_oc_coc_button(), + ] + + +def new_join_delayed_welcome_blocks() -> list[Block]: + return [ + new_join_delayed_welcome_first_text(), + new_join_immediate_welcome_second_text(), + ] + + +def new_join_immediate_welcome_first_text(joining_username: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_first_text" + ) + return SectionBlock( + block_id="immediate_welcome_first_text", + text=MarkdownTextObject(text=message_row.text.format(joining_username)), + ) + + +def new_join_immediate_welcome_second_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_second_text" + ) + return SectionBlock( + block_id="immediate_welcome_second_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_immediate_welcome_third_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_third_text" + ) + return SectionBlock( + block_id="immediate_welcome_third_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_immediate_welcome_fourth_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_fourth_text" + ) + return SectionBlock( + block_id="immediate_welcome_fourth_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_immediate_welcome_oc_homepage_button() -> SectionBlock: + accessory = ButtonElement( + text=PlainTextObject(text="OC Homepage", emoji=True), + value="oc_home_page", + url="https://operationcode.org/", + action_id="oc_greeting_homepage_click", + style="primary", + ) + return SectionBlock( + block_id="oc_homepage_button", + text=MarkdownTextObject(text="Operation Code Homepage"), + accessory=accessory, + ) + + +def new_join_immediate_welcome_slack_download_button() -> SectionBlock: + accessory = ButtonElement( + text=PlainTextObject(text="Slack Download", emoji=True), + value="slack_download", + url="https://slack.com/downloads/", + action_id="oc_greeting_slack_download_click", + style="primary", + ) + return SectionBlock( + block_id="slack_download_button", + text=MarkdownTextObject(text="Slack Download"), + accessory=accessory, + ) + + +def new_join_immediate_welcome_oc_coc_button() -> SectionBlock: + accessory = ButtonElement( + text=PlainTextObject(text="Operation Code CoC", emoji=True), + value="operation_code_coc", + url="https://github.com/OperationCode/community/blob/master/code_of_conduct.md", + action_id="oc_greeting_coc_click", + style="primary", + ) + return SectionBlock( + block_id="oc_coc_button", + text=MarkdownTextObject(text="Operation Code CoC"), + accessory=accessory, + ) + + +def new_join_delayed_welcome_first_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_delayed_welcome_first_text" + ) + return SectionBlock( + block_id="delayed_welcome_first_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_delayed_welcome_second_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_delayed_welcome_second_text" + ) + return SectionBlock( + block_id="delayed_welcome_second_text", + text=MarkdownTextObject(text=message_row.text), + ) diff --git a/modules/slack/blocks/report_blocks.py b/modules/slack/blocks/report_blocks.py new file mode 100644 index 0000000..60062ba --- /dev/null +++ b/modules/slack/blocks/report_blocks.py @@ -0,0 +1,117 @@ +from slack_sdk.models.views import View +from slack_sdk.models.blocks.blocks import ( + SectionBlock, + InputBlock, + HeaderBlock, + ActionsBlock, +) +from slack_sdk.models.blocks.basic_components import MarkdownTextObject, PlainTextObject +from slack_sdk.models.blocks.block_elements import PlainTextInputElement, ButtonElement + +from modules.airtable import message_text_table + + +def report_form_view_elements() -> View: + title_text = PlainTextObject(text="OC Slack - Report", emoji=True) + close_button_text = PlainTextObject(text="Cancel") + submit_button_text = PlainTextObject(text="Submit Report") + return View( + type="modal", + callback_id="report_form_submit", + title=title_text, + close=close_button_text, + submit=submit_button_text, + blocks=report_form_modal_blocks(), + external_id="report_form_modal", + ) + + +def report_form_modal_blocks() -> list: + return [report_form_title_block(), report_form_input_block()] + + +def report_form_title_block() -> SectionBlock: + text = MarkdownTextObject( + text=":warning: Thank you for taking the time to report an issue to the moderation team. Please fill out the below input field with the text of the message you'd like to report. If you'd like, you can include a short description of why you are reporting it. The report will only be shown to the moderators of the OC Slack workspace.:warning:" + ) + return SectionBlock(block_id="report_title_block", text=text) + + +def report_form_input_block() -> InputBlock: + input_placeholder = PlainTextObject( + text="You can copy and paste the text of the message you'd like to report or tell us a bit about what you are reporting...", + emoji=True, + ) + input_label = PlainTextObject( + text="Text of message you are reporting or reason for your report*", emoji=True + ) + text_input = PlainTextInputElement( + action_id="report_input_field", + placeholder=input_placeholder, + focus_on_load=True, + multiline=True, + min_length=2, + ) + return InputBlock(block_id="report_input", element=text_input, label=input_label) + + +def report_claim_blocks(reporting_user_name: str, report_details: str) -> list: + return [ + report_claim_title_section(reporting_user_name), + report_claim_details_header(), + report_claim_details(report_details), + report_claim_button(), + ] + + +def report_claim_title_section(username: str) -> SectionBlock: + text = MarkdownTextObject( + text=f":warning: <@{username}> has submitted a report. :warning:" + ) + return SectionBlock(text=text, block_id="report_claim_title") + + +def report_claim_details_header() -> HeaderBlock: + text = PlainTextObject(text="Report details:", emoji=True) + return HeaderBlock(block_id="report_claim_header", text=text) + + +def report_claim_details(report_details: str) -> SectionBlock: + text = MarkdownTextObject(text=f"{report_details}") + return SectionBlock(text=text, block_id="report_claim_details") + + +def report_claim_button() -> ActionsBlock: + button_text = PlainTextObject(text="I Will Reach Out to Them") + button_element = ButtonElement( + text=button_text, + style="primary", + action_id="report_claim", + ) + return ActionsBlock(block_id="report_claim_button", elements=[button_element]) + + +def report_claim_claimed_button(claiming_username: str) -> ActionsBlock: + button_text = PlainTextObject(text=f"Claimed by {claiming_username}!") + button_element = ButtonElement( + text=button_text, + style="danger", + action_id="reset_report_claim", + ) + return ActionsBlock(block_id="report_claim_button", elements=[button_element]) + + +def report_received_ephemeral_message() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="report_received" + ) + text = MarkdownTextObject(text=message_row.text) + return SectionBlock(block_id="report_received", text=text) + + +def report_failed_ephemeral_message() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="report_not_received" + ) + text = MarkdownTextObject(text=message_row.text) + return SectionBlock(block_id="report_not_received", text=text) diff --git a/modules/slack/blocks/shared_blocks.py b/modules/slack/blocks/shared_blocks.py new file mode 100644 index 0000000..1c3b0f5 --- /dev/null +++ b/modules/slack/blocks/shared_blocks.py @@ -0,0 +1,73 @@ +from slack_sdk.models.blocks import ( + DividerBlock, + SectionBlock, + MarkdownTextObject, + ButtonElement, + PlainTextObject, + ActionsBlock, + Block, +) + +from modules.airtable import message_text_table + + +def generic_divider_block(block_id: str) -> DividerBlock: + return DividerBlock(block_id=block_id) + + +def channel_join_request_successful_block(channel_name: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="channel_join_request_successful" + ) + return SectionBlock( + block_id="channel_join_request_successful_block", + text=MarkdownTextObject(text=message_row.text.format(channel_name)), + ) + + +def channel_join_request_unsuccessful_block() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="channel_join_request_unsuccessful" + ) + return SectionBlock( + block_id="channel_join_request_unsuccessful_block", + text=MarkdownTextObject(text=message_row.text), + ) + + +def channel_join_request_blocks(requesting_username: str) -> list[Block]: + return [ + channel_join_request_main(requesting_username), + channel_join_request_action(), + ] + + +def channel_join_request_main(requesting_username: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="channel_join_request_main_text" + ) + return SectionBlock( + block_id="request_main", + text=MarkdownTextObject(text=message_row.text.format(requesting_username)), + ) + + +def channel_join_request_action() -> ActionsBlock: + button_element = ButtonElement( + text=PlainTextObject(text="I'll Invite Them!", emoji=True), + style="primary", + action_id="invite_to_channel_click", + ) + return ActionsBlock(block_id="channel_invite_action", elements=[button_element]) + + +def channel_join_request_reset_action(claiming_username: str) -> ActionsBlock: + button_text = PlainTextObject(text=f"Invited by {claiming_username}!") + button_element = ButtonElement( + text=button_text, + style="danger", + action_id="reset_channel_invite", + ) + return ActionsBlock( + block_id="reset_channel_invite_action", elements=[button_element] + ) diff --git a/modules/utils/__init__.py b/modules/utils/__init__.py new file mode 100644 index 0000000..c525c0e --- /dev/null +++ b/modules/utils/__init__.py @@ -0,0 +1,138 @@ +import os +import logging +from datetime import datetime +from pathlib import Path +from re import sub +from functools import lru_cache +from pyairtable import Table +from slack_bolt.app import App +from slack_sdk.models.blocks import SectionBlock, MarkdownTextObject +from slack_sdk.web.async_client import AsyncWebClient +from dotenv import load_dotenv + +from modules.models.greeting_models import UserInfo +from modules.models.slack_models.shared_models import ( + SlackConversationInfo, + SlackTeamInfo, + SlackTeam, +) + +logger = logging.getLogger(__name__) + + +def snake_case(s: str) -> str: + """Snake cases a string using regex - from + https://www.w3resource.com/python-exercises/string/python-data-type-string-exercise-97.php + + :param s: string to be snake cased + :type s: str + :return: snake cased string + :rtype: str + """ + return "_".join( + sub( + "([A-Z][a-z]+)", r" \1", sub("([A-Z]+)", r" \1", s.replace("-", " ")) + ).split() + ).lower() + + +@lru_cache +def get_team_info() -> SlackTeam: + logger.info("STAGE: Retrieving team information...") + try: + synchronous_app = App( + token=os.environ.get("SLACK_BOT_TOKEN"), + signing_secret=os.environ.get("SLACK_SIGNING_SECRET"), + ) + team_info = synchronous_app.client.team_info() + conversations = synchronous_app.client.conversations_list( + exclude_archived=True, types=["public_channel", "private_channel"] + ) + slack_team_response = SlackTeam( + SlackTeamInfo( + id=team_info["team"]["id"], + name=team_info["team"]["name"], + conversations=[ + SlackConversationInfo(**conversation) + for conversation in conversations.data["channels"] + ], + ) + ) + del synchronous_app + return slack_team_response + except Exception as e: + raise e + + +async def get_slack_user_from_email(client: AsyncWebClient, email: str) -> UserInfo: + slack_user = await client.users_lookupByEmail(email=email) + return UserInfo( + **slack_user.data["user"], email=slack_user.data["user"]["profile"]["email"] + ) + + +async def get_slack_user_by_id(client: AsyncWebClient, user_id: str) -> UserInfo: + slack_user = await client.users_info(user=user_id) + print(slack_user) + return UserInfo( + **slack_user.data["user"], email=slack_user.data["user"]["profile"]["email"] + ) + + +async def log_to_thread( + client: AsyncWebClient, + channel_id: str, + message_ts: str, + username: str, + action_ts: str, + claim: bool, +) -> None: + await client.chat_postMessage( + channel=channel_id, + thread_ts=message_ts, + text="Logging to greeting thread...", + blocks=[threaded_action_logging(username, action_ts, claim)], + ) + + +def threaded_action_logging(username: str, timestamp: str, claim: bool) -> SectionBlock: + """Returns a block that is used to log a claim or reset to a thread + + :param username: username of the user performing the action + :type username: str + :param timestamp: string timestamp of the action in Unix Epoch Time + :type timestamp: str + :param claim: whether it's a claim action or not + :type claim: bool + :return: a section block to be threaded on the original message + :rtype: SectionBlock + """ + if claim: + text = MarkdownTextObject( + text=f"Claimed by {username} at {datetime.utcfromtimestamp(float(timestamp)).strftime('%Y-%m-%d %H:%M:%S')} UTC!" + ) + else: + text = MarkdownTextObject( + text=f"Reset by {username} at {datetime.utcfromtimestamp(float(timestamp)).strftime('%Y-%m-%d %H:%M:%S')} UTC!" + ) + return SectionBlock(block_id="greeting_log_reply", text=text) + + +def table_fields(table: Table) -> list[str]: + """Returns snake cased columns (fields in Airtable parlance) on the table + Because we don't have access to the Airtable metadata API, we must set up a view on every table with every column + filled in since as the Airtable API says - "Returned records do not include any fields with "empty" values, e.g. "", [], or false." + + :return: list of fields + :rtype: list[str] + """ + try: + first_record = table.first(view="Fields") + return [snake_case(field) for field in first_record["fields"].keys()] + except Exception as e: + raise e + + +load_dotenv(dotenv_path=f"{str(Path(__file__).parent.parent.parent)}/.env") + +slack_team = get_team_info() diff --git a/modules/utils/daily_programmer_scheduler.py b/modules/utils/daily_programmer_scheduler.py new file mode 100644 index 0000000..6dc39bc --- /dev/null +++ b/modules/utils/daily_programmer_scheduler.py @@ -0,0 +1,9 @@ +import logging +from slack_bolt.context.async_context import AsyncBoltContext + +logger = logging.getLogger(__name__) + + +async def handle_daily_programmer_post(parsed_body, context: AsyncBoltContext) -> None: + logger.info("STAGE: Beginning task populate_daily_programmer_table...") + logger.debug(f"Received body: {parsed_body}") diff --git a/modules/utils/example_requests/mentorship_request_claim_action.json b/modules/utils/example_requests/mentorship_request_claim_action.json new file mode 100644 index 0000000..b246c8d --- /dev/null +++ b/modules/utils/example_requests/mentorship_request_claim_action.json @@ -0,0 +1,110 @@ +{ + "type": "block_actions", + "user": { + "id": "U01RN31JSTD", + "username": "judson.stevens", + "name": "judson.stevens", + "team_id": "T01SBLCQ57A" + }, + "api_app_id": "A02R6C6S9JN", + "token": "ZdW4MAeWALbwTKtzdfhyvrGW", + "container": { + "type": "message", + "message_ts": "1640986475.006500", + "channel_id": "C01R77KM8H5", + "is_ephemeral": false, + "thread_ts": "1640986475.006500" + }, + "trigger_id": "2921169898672.1895692821248.8f353dfbf0be6d23ed09354b247e0b89", + "team": { + "id": "T01SBLCQ57A", + "domain": "bot-testing-field" + }, + "enterprise": "None", + "is_enterprise_install": false, + "channel": { + "id": "C01R77KM8H5", + "name": "mentors-internal" + }, + "message": { + "bot_id": "B02QRQ4KU5V", + "type": "message", + "text": "New mentorship request received...", + "user": "U02RK2AL5LZ", + "ts": "1640986475.006500", + "team": "T01SBLCQ57A", + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_service_text", + "text": { + "type": "mrkdwn", + "text": "User <@U01RN31JSTD> has requested a mentor for General Guidance.", + "verbatim": false + } + }, + { + "type": "section", + "block_id": "mentorship_request_skillset_text", + "text": { + "type": "mrkdwn", + "text": "*Requested Skillset(s):* Architecture, Career Advice, Cloud / AWS / GCP / Azure", + "verbatim": false + } + }, + { + "type": "section", + "block_id": "mentorship_request_affiliation_text", + "text": { + "type": "mrkdwn", + "text": "*Requestor Affiliation:* US Military Spouse", + "verbatim": false + } + }, + { + "type": "actions", + "block_id": "claim_button_action_block", + "elements": [ + { + "type": "button", + "action_id": "claim_mentorship_request", + "text": { + "type": "plain_text", + "text": "Claim Mentorship Request", + "emoji": true + }, + "style": "primary" + } + ] + } + ], + "thread_ts": "1640986475.006500", + "reply_count": 2, + "reply_users_count": 1, + "latest_reply": "1640986477.006800", + "reply_users": [ + "U02RK2AL5LZ" + ], + "is_locked": false, + "subscribed": true, + "last_read": "1640986477.006800" + }, + "state": { + "values": {} + }, + "response_url": "https://hooks.slack.com/actions/T01SBLCQ57A/2899731511204/xb8gxI24ldtCaVwbdsddM0nb", + "actions": [ + { + "action_id": "claim_mentorship_request", + "block_id": "claim_button_action_block", + "text": { + "type": "plain_text", + "text": "Claim Mentorship Request", + "emoji": true + }, + "style": "primary", + "type": "button", + "action_ts": "1640986929.354736" + } + ] +} diff --git a/modules/utils/example_requests/pride_request_command.json b/modules/utils/example_requests/pride_request_command.json new file mode 100644 index 0000000..bbd3317 --- /dev/null +++ b/modules/utils/example_requests/pride_request_command.json @@ -0,0 +1,14 @@ +{ + "token": "ZdW4MAeWALbwTKtzdfhyvrGW", + "team_id": "T01SBLCQ57A", + "team_domain": "bot-testing-field", + "channel_id": "D02R6CR6DMG", + "channel_name": "directmessage", + "user_id": "U01RN31JSTD", + "user_name": "judson.stevens", + "command": "/pride", + "api_app_id": "A02R6C6S9JN", + "is_enterprise_install": "false", + "response_url": "https://hooks.slack.com/commands/T01SBLCQ57A/2897652965298/c11hovXK7EMpPtnWOcRvFE4m", + "trigger_id": "2921387427888.1895692821248.08d2864bfc4f49d666e25ead52fb95ca" +} \ No newline at end of file diff --git a/modules/utils/example_requests/view_submission_request.json b/modules/utils/example_requests/view_submission_request.json new file mode 100644 index 0000000..761414d --- /dev/null +++ b/modules/utils/example_requests/view_submission_request.json @@ -0,0 +1,737 @@ +{ + "type": "view_submission", + "team": { + "id": "T01SBLCQ57A", + "domain": "bot-testing-field" + }, + "user": { + "id": "U01RN31JSTD", + "username": "judson.stevens", + "name": "judson.stevens", + "team_id": "T01SBLCQ57A" + }, + "api_app_id": "A02R6C6S9JN", + "token": "ZdW4MAeWALbwTKtzdfhyvrGW", + "trigger_id": "2908311897777.1895692821248.89b9cdcdf45940f3a9ab14c5ff527489", + "view": { + "id": "V02S8ML6H8D", + "team_id": "T01SBLCQ57A", + "type": "modal", + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_main_text", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators. *NOTE*: Mentors are typically available within a couple hours; however, on weekends or holidays the timeframe may be longer before someone reaches out.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_1" + }, + { + "type": "input", + "block_id": "mentorship_service_input", + "label": { + "type": "plain_text", + "text": "Mentorship Service*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_service_selection", + "placeholder": { + "type": "plain_text", + "text": "Type of service...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + }, + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + } + ] + } + }, + { + "type": "input", + "block_id": "mentor_skillset_input", + "label": { + "type": "plain_text", + "text": "Skillsets Related to Your Request", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "multi_static_select", + "action_id": "mentorship_skillset_multi_selection", + "placeholder": { + "type": "plain_text", + "text": "Skills related to your request...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Architecture", + "emoji": true + }, + "value": "architecture" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c_plus_plus" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c_sharp_dotnet" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / Azure", + "emoji": true + }, + "value": "cloud_aws_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Cyber-security", + "emoji": true + }, + "value": "cyber_security" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Funding", + "emoji": true + }, + "value": "funding" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "React", + "emoji": true + }, + "value": "react" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_back_end" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_front_end" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + } + ] + } + }, + { + "type": "input", + "block_id": "details_input_block", + "label": { + "type": "plain_text", + "text": "Request Details*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "plain_text_input", + "action_id": "details_text_input", + "placeholder": { + "type": "plain_text", + "text": "Please enter more information about your request. The more specific you are the easier it is to match you with a great mentor!", + "emoji": true + }, + "multiline": true, + "min_length": 10, + "dispatch_action_config": { + "trigger_actions_on": [ + "on_enter_pressed" + ] + } + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_2" + }, + { + "type": "input", + "block_id": "mentorship_affiliation_input", + "label": { + "type": "plain_text", + "text": "I certify that I am affiliated with one of the following groups:*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_affiliation_selection", + "placeholder": { + "type": "plain_text", + "text": "Please select a group...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "US Veteran", + "emoji": true + }, + "value": "us_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "US Military Spouse", + "emoji": true + }, + "value": "us_military_spouse" + }, + { + "text": { + "type": "plain_text", + "text": "US Active Duty", + "emoji": true + }, + "value": "us_active_duty" + }, + { + "text": { + "type": "plain_text", + "text": "Non-Military", + "emoji": true + }, + "value": "non_military" + }, + { + "text": { + "type": "plain_text", + "text": "Foreign Military", + "emoji": true + }, + "value": "foreign_military" + } + ] + } + } + ], + "private_metadata": "", + "callback_id": "mentorship_request_form_submit", + "state": { + "values": { + "mentorship_service_input": { + "mentorship_service_selection": { + "type": "static_select", + "selected_option": { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + } + } + }, + "mentor_skillset_input": { + "mentorship_skillset_multi_selection": { + "type": "multi_static_select", + "selected_options": [ + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + } + ] + } + }, + "details_input_block": { + "details_text_input": { + "type": "plain_text_input", + "value": "Testing the details screen" + } + }, + "mentorship_affiliation_input": { + "mentorship_affiliation_selection": { + "type": "static_select", + "selected_option": { + "text": { + "type": "plain_text", + "text": "US Veteran", + "emoji": true + }, + "value": "us_veteran" + } + } + } + } + }, + "hash": "1640903702.u8C2NM3Y", + "title": { + "type": "plain_text", + "text": "OC Mentor Request", + "emoji": true + }, + "clear_on_close": false, + "notify_on_close": false, + "close": "None", + "submit": { + "type": "plain_text", + "text": "Submit Request", + "emoji": true + }, + "previous_view_id": "None", + "root_view_id": "V02S8ML6H8D", + "app_id": "A02R6C6S9JN", + "external_id": "mentorship_request_form_modal", + "app_installed_team_id": "T01SBLCQ57A", + "bot_id": "B02QRQ4KU5V" + }, + "response_urls": [], + "is_enterprise_install": false, + "enterprise": "None" +} \ No newline at end of file diff --git a/modules/utils/example_responses/view_open_response.json b/modules/utils/example_responses/view_open_response.json new file mode 100644 index 0000000..cd1dab6 --- /dev/null +++ b/modules/utils/example_responses/view_open_response.json @@ -0,0 +1,649 @@ +{ + "ok": true, + "view": { + "id": "V02S57SESLW", + "team_id": "T01SBLCQ57A", + "type": "modal", + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_main_text", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators. *NOTE*: Mentors are typically available within a couple hours; however, on weekends or holidays the timeframe may be longer before someone reaches out.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_1" + }, + { + "type": "input", + "block_id": "mentorship_service_input", + "label": { + "type": "plain_text", + "text": "Mentorship Service*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_service_selection", + "placeholder": { + "type": "plain_text", + "text": "Type of service...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + }, + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + } + ] + } + }, + { + "type": "input", + "block_id": "mentor_skillset_input", + "label": { + "type": "plain_text", + "text": "Skillsets Related to Your Request", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "multi_static_select", + "action_id": "mentorship_skillset_multi_selection", + "placeholder": { + "type": "plain_text", + "text": "Skills related to your request...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Architecture", + "emoji": true + }, + "value": "architecture" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c_plus_plus" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c_sharp_dotnet" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / Azure", + "emoji": true + }, + "value": "cloud_aws_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Cyber-security", + "emoji": true + }, + "value": "cyber_security" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Funding", + "emoji": true + }, + "value": "funding" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "React", + "emoji": true + }, + "value": "react" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_back_end" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_front_end" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + } + ] + } + }, + { + "type": "input", + "block_id": "details_input_block", + "label": { + "type": "plain_text", + "text": "Request Details*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "plain_text_input", + "action_id": "details_text_input", + "placeholder": { + "type": "plain_text", + "text": "Please enter more information about your request. The more specific you are the easier it is to match you with a great mentor!", + "emoji": true + }, + "multiline": true, + "min_length": 10, + "dispatch_action_config": { + "trigger_actions_on": [ + "on_enter_pressed" + ] + } + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_2" + }, + { + "type": "input", + "block_id": "mentorship_affiliation_input", + "label": { + "type": "plain_text", + "text": "I certify that I am affiliated with one of the following groups:*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_affiliation_selection", + "placeholder": { + "type": "plain_text", + "text": "Please select a group...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "US Veteran", + "emoji": true + }, + "value": "us_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "US Military Spouse", + "emoji": true + }, + "value": "us_military_spouse" + }, + { + "text": { + "type": "plain_text", + "text": "US Active Duty", + "emoji": true + }, + "value": "us_active_duty" + }, + { + "text": { + "type": "plain_text", + "text": "Non-Military", + "emoji": true + }, + "value": "non_military" + }, + { + "text": { + "type": "plain_text", + "text": "Foreign Military", + "emoji": true + }, + "value": "foreign_military" + } + ] + } + } + ], + "private_metadata": "", + "callback_id": "mentorship_request_form_submit", + "state": { + "values": {} + }, + "hash": "1640917120.htsuStxA", + "title": { + "type": "plain_text", + "text": "OC Mentor Request", + "emoji": true + }, + "clear_on_close": false, + "notify_on_close": false, + "close": "None", + "submit": { + "type": "plain_text", + "text": "Submit Request", + "emoji": true + }, + "previous_view_id": "None", + "root_view_id": "V02S57SESLW", + "app_id": "A02R6C6S9JN", + "external_id": "mentorship_request_form_modal", + "app_installed_team_id": "T01SBLCQ57A", + "bot_id": "B02QRQ4KU5V" + } +} diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py new file mode 100644 index 0000000..74ec17b --- /dev/null +++ b/modules/utils/message_scheduler.py @@ -0,0 +1,62 @@ +import logging +from datetime import datetime, timezone, timedelta +from slack_bolt.async_app import AsyncApp + +from modules.airtable.scheduled_message_table import ScheduledMessagesTable +from modules.slack.blocks.announcement_blocks import general_announcement_blocks +from modules.utils import slack_team + +logger = logging.getLogger(__name__) + + +async def schedule_messages(async_app: AsyncApp) -> None: + logging.info("STAGE: Beginning task schedule_messages...") + scheduled_message_table = ScheduledMessagesTable() + messages = scheduled_message_table.all_valid_scheduled_messages + logging.debug(f"Retrieved {len(messages)} total valid messages to be scheduled") + for message in messages: + # If the next send time is more than 119 days in the future, skip it as that's the limit for Slack + if message.when_to_send < message.when_to_send + timedelta(days=119): + # If the datetime in the table is in the past, schedule the message for now plus 2 minutes but update the + # table to have a datetime that is today with the same hour and minute as the first time to send + # This can be readjusted in the table if need be to get the correct next send time + if message.when_to_send < datetime.now(timezone.utc): + datetime_to_update = datetime( + datetime.utcnow().year, + datetime.utcnow().month, + datetime.utcnow().day, + message.initial_date_time_to_send.hour, + message.initial_date_time_to_send.minute, + tzinfo=timezone.utc, + ) + # Add on 120 seconds to the timestamp in order to not run into the "time in past" error + datetime_to_send_message = ( + int(datetime.now(timezone.utc).timestamp()) + 120 + ) + else: + datetime_to_send_message = int(message.when_to_send.timestamp()) + datetime_to_update = message.when_to_send + logging.debug( + f"Scheduling message with name: {message.name} to be sent at datetime: {str(datetime_to_send_message)}" + ) + response = await async_app.client.chat_scheduleMessage( + channel=slack_team.general_channel.id, + post_at=datetime_to_send_message, + text=f"Announcement in {message.channel}...", + blocks=general_announcement_blocks(message.name, message.message_text), + ) + if response.status_code == 200: + logging.debug( + f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" + ) + scheduled_message_table.update_record( + message.airtable_id, {"Last Sent": str(datetime_to_update)} + ) + else: + logger.warning( + f"Issue sending the scheduled message: {message.name}, scheduling failed with slack response: {response.__dict__}" + ) + else: + logging.warning( + f"Next send time for scheduled message: {message.name} is more than 119 days in the future" + ) diff --git a/modules/utils/one_off_scripts.py b/modules/utils/one_off_scripts.py new file mode 100644 index 0000000..cad5ef9 --- /dev/null +++ b/modules/utils/one_off_scripts.py @@ -0,0 +1,59 @@ +import sys +import os +import re +import json +from dotenv import load_dotenv +from modules.airtable import daily_programmer_table + + +load_dotenv() + + +def main(script_to_run: str) -> None: + if script_to_run == "process_daily_programmer_files": + process_daily_programmer_files(sys.argv[2]) + + +def process_daily_programmer_files(files_directory: str) -> None: + for filename in os.listdir(files_directory): + with open(files_directory + "/" + filename, "r") as file: + message_list = json.load(file) + for message in message_list: + if message["text"]: + print(f"Parsing a new message in file: {filename}") + title = re.search(r"(={2,3}.*={2,3})", message["text"]) + if title: + name = re.search(r"(\[.*?])", message["text"]) + if name: + try: + daily_programmer_table.create_record( + { + "Name": name[0] + .replace("[", "") + .replace("]", "") + .replace("*", ""), + "Text": message["text"][name.span()[1] + 1 :], + "Initially Posted On": filename.split(".")[0], + "Last Posted On": filename.split(".")[0], + "Posted Count": 1, + "Initial Slack TS": message["ts"], + "Blocks": message["blocks"], + } + ) + except KeyError: + daily_programmer_table.create_record( + { + "Name": name[0] + .replace("[", "") + .replace("]", ""), + "Text": message["text"][name.span()[1] + 1 :], + "Initially Posted On": filename.split(".")[0], + "Last Posted On": filename.split(".")[0], + "Posted Count": 1, + "Initial Slack TS": message["ts"], + } + ) + + +if __name__ == "__main__": + main(sys.argv[1]) diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 08eab77..0000000 --- a/poetry.lock +++ /dev/null @@ -1,1080 +0,0 @@ -[[package]] -name = "aiocontextvars" -version = "0.2.2" -description = "Asyncio support for PEP-567 contextvars backport." -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "aiofiles" -version = "0.4.0" -description = "File support for asyncio." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "aiohttp" -version = "3.6.2" -description = "Async http client/server framework (asyncio)" -category = "main" -optional = false -python-versions = ">=3.5.3" - -[package.dependencies] -async-timeout = ">=3.0,<4.0" -attrs = ">=17.3.0" -chardet = ">=2.0,<4.0" -multidict = ">=4.5,<5.0" -yarl = ">=1.0,<2.0" - -[package.extras] -speedups = ["aiodns", "brotlipy", "cchardet"] - -[[package]] -name = "appdirs" -version = "1.4.4" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "apscheduler" -version = "3.6.3" -description = "In-process task scheduler with Cron-like capabilities" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -pytz = "*" -six = ">=1.4.0" -tzlocal = ">=1.2" - -[package.extras] -asyncio = ["trollius"] -doc = ["sphinx", "sphinx-rtd-theme"] -gevent = ["gevent"] -mongodb = ["pymongo (>=2.8)"] -redis = ["redis (>=3.0)"] -rethinkdb = ["rethinkdb (>=2.4.0)"] -sqlalchemy = ["sqlalchemy (>=0.8)"] -testing = ["pytest", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] -tornado = ["tornado (>=4.3)"] -twisted = ["twisted"] -zookeeper = ["kazoo"] - -[[package]] -name = "async-timeout" -version = "3.0.1" -description = "Timeout context manager for asyncio programs" -category = "main" -optional = false -python-versions = ">=3.5.3" - -[[package]] -name = "asyncio-contextmanager" -version = "1.0.1" -description = "Decorator that turns async generator functions into async context managers." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "asyncpg" -version = "0.18.3" -description = "An asyncio PosgtreSQL driver" -category = "main" -optional = false -python-versions = ">=3.5.0" - -[package.extras] -dev = ["Cython (==0.29)", "pytest (>=3.6.0)", "Sphinx (>=1.7.3,<1.8.0)", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0)", "sphinx-rtd-theme (>=0.2.4,<0.3.0)", "flake8 (>=3.5.0,<3.6.0)", "uvloop (>=0.8.0)"] -docs = ["Sphinx (>=1.7.3,<1.8.0)", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0)", "sphinx-rtd-theme (>=0.2.4,<0.3.0)"] -test = ["flake8 (>=3.5.0,<3.6.0)", "uvloop (>=0.8.0)"] - -[[package]] -name = "asynctest" -version = "0.13.0" -description = "Enhance the standard unittest package with features for testing asyncio libraries" -category = "dev" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "atomicwrites" -version = "1.4.0" -description = "Atomic file writes." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "attrs" -version = "20.2.0" -description = "Classes Without Boilerplate" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] - -[[package]] -name = "black" -version = "20.8b1" -description = "The uncompromising code formatter." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -appdirs = "*" -click = ">=7.1.2" -mypy-extensions = ">=0.4.3" -pathspec = ">=0.6,<1" -regex = ">=2020.1.8" -toml = ">=0.10.1" -typed-ast = ">=1.4.0" -typing-extensions = ">=3.7.4" - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] - -[[package]] -name = "cchardet" -version = "2.1.6" -description = "cChardet is high speed universal character encoding detector." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "certifi" -version = "2020.6.20" -description = "Python package for providing Mozilla's CA Bundle." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "chardet" -version = "3.0.4" -description = "Universal encoding detector for Python 2 and 3" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "charset-normalizer" -version = "2.0.4" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "dev" -optional = false -python-versions = ">=3.5.0" - -[package.extras] -unicode_backport = ["unicodedata2"] - -[[package]] -name = "click" -version = "7.1.2" -description = "Composable command line interface toolkit" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "colorama" -version = "0.4.3" -description = "Cross-platform colored terminal text." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "cython" -version = "0.29.21" -description = "The Cython compiler for writing C extensions for the Python language." -category = "main" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "flake8" -version = "3.8.3" -description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" - -[package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.6.0a1,<2.7.0" -pyflakes = ">=2.2.0,<2.3.0" - -[[package]] -name = "gidgethub" -version = "3.3.0" -description = "An async GitHub API library" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -uritemplate = ">=3.0.0" - -[package.extras] -aiohttp = ["aiohttp"] -dev = ["aiohttp", "httpx", "mypy", "pytest-cov", "treq", "twisted", "tornado"] -doc = ["sphinx"] -httpx = ["httpx (>=0.11.0)"] -test = ["pytest (>=3.0.0)", "pytest-asyncio", "pytest-tornasync"] -tornado = ["tornado"] -treq = ["treq", "twisted"] - -[[package]] -name = "idna" -version = "2.10" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "importlib-metadata" -version = "2.0.0" -description = "Read metadata from Python packages" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["sphinx", "rst.linker"] -testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] - -[[package]] -name = "iniconfig" -version = "1.0.1" -description = "iniconfig: brain-dead simple config-ini parsing" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "isort" -version = "4.3.21" -description = "A Python utility / library to sort Python imports." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.extras] -pipfile = ["pipreqs", "requirementslib"] -pyproject = ["toml"] -requirements = ["pipreqs", "pip-api"] -xdg_home = ["appdirs (>=1.4.0)"] - -[[package]] -name = "mccabe" -version = "0.6.1" -description = "McCabe checker, plugin for flake8" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "multidict" -version = "4.7.6" -description = "multidict implementation" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "packaging" -version = "20.4" -description = "Core utilities for Python packages" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.dependencies] -pyparsing = ">=2.0.2" -six = "*" - -[[package]] -name = "pathspec" -version = "0.8.0" -description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "pluggy" -version = "0.13.1" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} - -[package.extras] -dev = ["pre-commit", "tox"] - -[[package]] -name = "py" -version = "1.9.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pycodestyle" -version = "2.6.0" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pyflakes" -version = "2.2.0" -description = "passive checker of Python programs" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pyparsing" -version = "2.4.7" -description = "Python parsing module" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "pytest" -version = "6.1.0" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=17.4.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<1.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -checkqa_mypy = ["mypy (==0.780)"] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-aiohttp" -version = "0.3.0" -description = "pytest plugin for aiohttp support" -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -aiohttp = ">=2.3.5" -pytest = "*" - -[[package]] -name = "pytest-asyncio" -version = "0.14.0" -description = "Pytest support for asyncio." -category = "dev" -optional = false -python-versions = ">= 3.5" - -[package.dependencies] -pytest = ">=5.4.0" - -[package.extras] -testing = ["async-generator (>=1.3)", "coverage", "hypothesis (>=5.7.1)"] - -[[package]] -name = "pytest-mock" -version = "3.3.1" -description = "Thin-wrapper around the mock package for easier use with pytest" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -pytest = ">=5.0" - -[package.extras] -dev = ["pre-commit", "tox", "pytest-asyncio"] - -[[package]] -name = "python-dotenv" -version = "0.14.0" -description = "Add .env support to your django/flask apps in development and deployments" -category = "main" -optional = false -python-versions = "*" - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "pytz" -version = "2020.1" -description = "World timezone definitions, modern and historical" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "pyyaml" -version = "5.4" -description = "YAML parser and emitter for Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" - -[[package]] -name = "regex" -version = "2020.9.27" -description = "Alternative regular expression module, to replace re." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "requests" -version = "2.26.0" -description = "Python HTTP for Humans." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} -urllib3 = ">=1.21.1,<1.27" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] - -[[package]] -name = "sentry-sdk" -version = "0.17.8" -description = "Python client for Sentry (https://sentry.io)" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -certifi = "*" -urllib3 = ">=1.10.0" - -[package.extras] -aiohttp = ["aiohttp (>=3.5)"] -beam = ["apache-beam (>=2.12)"] -bottle = ["bottle (>=0.12.13)"] -celery = ["celery (>=3)"] -chalice = ["chalice (>=1.16.0)"] -django = ["django (>=1.8)"] -falcon = ["falcon (>=1.4)"] -flask = ["flask (>=0.11)", "blinker (>=1.1)"] -pure_eval = ["pure-eval", "executing", "asttokens"] -pyspark = ["pyspark (>=2.4.4)"] -rq = ["rq (>=0.6)"] -sanic = ["sanic (>=0.8)"] -sqlalchemy = ["sqlalchemy (>=1.2)"] -tornado = ["tornado (>=5)"] - -[[package]] -name = "sirbot" -version = "0.1.1" -description = "The good Sir Bot-a-lot. An asynchronous python bot framework." -category = "main" -optional = false -python-versions = ">=3.6,<4.0" - -[package.dependencies] -aiofiles = ">=0.4.0,<0.5.0" -aiohttp = ">=3.4,<4.0" -apscheduler = ">=3.5,<4.0" -asyncio-contextmanager = ">=1.0,<2.0" -asyncpg = ">=0.18.2,<0.19.0" -gidgethub = ">=3.0,<4.0" -slack-sansio = ">=1.0.0,<2.0.0" -ujson = ">=1.35,<2.0" - -[[package]] -name = "six" -version = "1.15.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "slack-sansio" -version = "1.1.0" -description = "Python (a)sync Slack API library" -category = "main" -optional = false -python-versions = ">=3.6,<4.0" - -[package.extras] -requests = ["requests (>=2.20,<3.0)", "websocket-client (>=0.54.0,<0.55.0)"] -aiohttp = ["aiohttp (>=3.4,<4.0)"] -curio = ["curio (>=0.9.0,<0.10.0)", "asks (>=2.2,<3.0)"] -trio = ["asks (>=2.2,<3.0)", "trio (>=0.11.0,<0.12.0)"] - -[[package]] -name = "toml" -version = "0.10.1" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "typed-ast" -version = "1.4.1" -description = "a fork of Python 2 and 3 ast modules with type comment support" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "typing-extensions" -version = "3.7.4.3" -description = "Backported and Experimental Type Hints for Python 3.5+" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "tzlocal" -version = "2.1" -description = "tzinfo object for the local timezone" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -pytz = "*" - -[[package]] -name = "ujson" -version = "1.35" -description = "Ultra fast JSON encoder and decoder for Python" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "uritemplate" -version = "3.0.1" -description = "URI templates" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "urllib3" -version = "1.25.10" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" - -[package.extras] -brotli = ["brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "yarl" -version = "1.6.0" -description = "Yet another URL library" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" -typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} - -[[package]] -name = "zipcodes" -version = "1.1.3" -description = "Query U.S. state zipcodes without SQLite." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "zipp" -version = "3.2.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] - -[metadata] -lock-version = "1.1" -python-versions = "^3.7" -content-hash = "7b09b6420eed2f1c0f3f1f427ada7cf35fc087e92ffa187b562cb4771a1c0b92" - -[metadata.files] -aiocontextvars = [ - {file = "aiocontextvars-0.2.2-py2.py3-none-any.whl", hash = "sha256:885daf8261818767d8f7cbd79f9d4482d118f024b6586ef6e67980236a27bfa3"}, - {file = "aiocontextvars-0.2.2.tar.gz", hash = "sha256:f027372dc48641f683c559f247bd84962becaacdc9ba711d583c3871fb5652aa"}, -] -aiofiles = [ - {file = "aiofiles-0.4.0-py3-none-any.whl", hash = "sha256:1e644c2573f953664368de28d2aa4c89dfd64550429d0c27c4680ccd3aa4985d"}, - {file = "aiofiles-0.4.0.tar.gz", hash = "sha256:021ea0ba314a86027c166ecc4b4c07f2d40fc0f4b3a950d1868a0f2571c2bbee"}, -] -aiohttp = [ - {file = "aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:1e984191d1ec186881ffaed4581092ba04f7c61582a177b187d3a2f07ed9719e"}, - {file = "aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:50aaad128e6ac62e7bf7bd1f0c0a24bc968a0c0590a726d5a955af193544bcec"}, - {file = "aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:65f31b622af739a802ca6fd1a3076fd0ae523f8485c52924a89561ba10c49b48"}, - {file = "aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ae55bac364c405caa23a4f2d6cfecc6a0daada500274ffca4a9230e7129eac59"}, - {file = "aiohttp-3.6.2-cp36-cp36m-win32.whl", hash = "sha256:344c780466b73095a72c616fac5ea9c4665add7fc129f285fbdbca3cccf4612a"}, - {file = "aiohttp-3.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4c6efd824d44ae697814a2a85604d8e992b875462c6655da161ff18fd4f29f17"}, - {file = "aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:2f4d1a4fdce595c947162333353d4a44952a724fba9ca3205a3df99a33d1307a"}, - {file = "aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6206a135d072f88da3e71cc501c59d5abffa9d0bb43269a6dcd28d66bfafdbdd"}, - {file = "aiohttp-3.6.2-cp37-cp37m-win32.whl", hash = "sha256:b778ce0c909a2653741cb4b1ac7015b5c130ab9c897611df43ae6a58523cb965"}, - {file = "aiohttp-3.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e5f3b7e511aa850829fbe5aa32eb455e5534eaa4b1ce93231d00e2f76e5654"}, - {file = "aiohttp-3.6.2-py3-none-any.whl", hash = "sha256:460bd4237d2dbecc3b5ed57e122992f60188afe46e7319116da5eb8a9dfedba4"}, - {file = "aiohttp-3.6.2.tar.gz", hash = "sha256:259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326"}, -] -appdirs = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, -] -apscheduler = [ - {file = "APScheduler-3.6.3-py2.py3-none-any.whl", hash = "sha256:e8b1ecdb4c7cb2818913f766d5898183c7cb8936680710a4d3a966e02262e526"}, - {file = "APScheduler-3.6.3.tar.gz", hash = "sha256:3bb5229eed6fbbdafc13ce962712ae66e175aa214c69bed35a06bffcf0c5e244"}, -] -async-timeout = [ - {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"}, - {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"}, -] -asyncio-contextmanager = [ - {file = "asyncio-contextmanager-1.0.1.tar.gz", hash = "sha256:93b4620cd79623c3988c9f43e6f502263968645cd13aed3327a7ec8be43221d5"}, -] -asyncpg = [ - {file = "asyncpg-0.18.3-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:814343dc2baa489a11521ff9fad68f337a05c9ae0461fdf9f1ec7ac3541c13a9"}, - {file = "asyncpg-0.18.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:89e727fdba05d90a0156d9d18932fd44a2baa84e90e3368573f432a308ad8fd7"}, - {file = "asyncpg-0.18.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:84084f7dfed0b2d397a0c2fd7eaf29b01904c74f4320e5fe95ad3042042cf188"}, - {file = "asyncpg-0.18.3-cp35-cp35m-win32.whl", hash = "sha256:378a7ef11ce7b35f11eb816e5252bc1e779119f7583a872233b45a76effac02e"}, - {file = "asyncpg-0.18.3-cp35-cp35m-win_amd64.whl", hash = "sha256:fd2d13da29f55c2c71b1acc9d9f107c7a5176fffb3f62ff503f2b300f7ecd74e"}, - {file = "asyncpg-0.18.3-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:51a3d67a3fa43112b17ec510338723932e1e0611ad99a146acc9960d32210196"}, - {file = "asyncpg-0.18.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:4539bc2e63600a1ee999086bbb59bf717ab32ea771ac20b5b792a2234633b5fb"}, - {file = "asyncpg-0.18.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4a779a85302241782bed8ed0f2bcb38544805b3e107b16ee7489c5818d8f4228"}, - {file = "asyncpg-0.18.3-cp36-cp36m-win32.whl", hash = "sha256:c1fe1f0ef848f0f17bf63b90a4c3f446a14e4c899d8531ea988109cc0de014e5"}, - {file = "asyncpg-0.18.3-cp36-cp36m-win_amd64.whl", hash = "sha256:cc7aa61bf41273ee5d4c11e0e72c0d9340e9c4dbf752464ae2b6816abadaabce"}, - {file = "asyncpg-0.18.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:ab8b9d367e3ef48f35a059642940714a2bda7a7fce8b017b21bfbc4f8fbf8f5f"}, - {file = "asyncpg-0.18.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:d5450bdf8631fa1200c08a2e70cab06c2e8c09ef608629908531513444d12858"}, - {file = "asyncpg-0.18.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0677714b26b48d63db728867b812ef365ec3879d2be6fa1c9cf4328503f9a464"}, - {file = "asyncpg-0.18.3-cp37-cp37m-win32.whl", hash = "sha256:fd35a8082b97d5b97d26bcd1b010fdd65a56311d7a02bf2a7e2c56810b9961a7"}, - {file = "asyncpg-0.18.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2dee4fb251139f1c1ee4bd9959d516f930f4da37a2f33b07c2b902b837a76666"}, - {file = "asyncpg-0.18.3.tar.gz", hash = "sha256:58a5eccaac60fd326e32683226efe1046bfea558fa043360bdd1708e0e812c67"}, -] -asynctest = [ - {file = "asynctest-0.13.0-py3-none-any.whl", hash = "sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676"}, - {file = "asynctest-0.13.0.tar.gz", hash = "sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] -attrs = [ - {file = "attrs-20.2.0-py2.py3-none-any.whl", hash = "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"}, - {file = "attrs-20.2.0.tar.gz", hash = "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594"}, -] -black = [ - {file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"}, -] -cchardet = [ - {file = "cchardet-2.1.6-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:2aa1b008965c703ad6597361b0f6d427c8971fe94a2c99ec3724c228ae50d6a6"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:fd16f57ce42a72397cd9fe38977fc809eb02172731cb354572f28a6d8e4cf322"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:953fe382304b19f5aa8fc2da4b092a3bb58a477d33af4def4b81abdce4c9288c"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:ccb9f6f06265382028468b47e726f2d42539256fb498d1b0e473c39037b42b8a"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:2c05b66b12f9ab0493c5ffb666036fd8c9004a9cc9d5a9264dc24738b50ab8c3"}, - {file = "cchardet-2.1.6-cp35-cp35m-win32.whl", hash = "sha256:dff9480d9b6260f59ad10e1cec5be13905be5da88a4a2bd5a5bd4d49c49c4a05"}, - {file = "cchardet-2.1.6-cp35-cp35m-win_amd64.whl", hash = "sha256:84d2ce838cf3c2fe7f0517941702d42f7e598e5173632ec47a113cd521669b98"}, - {file = "cchardet-2.1.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4486f6e5bdf06f0081d13832f2a061d9e90597eb02093fda9d37e3985e3b2ef2"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7a2d98df461d3f36b403fdd8d7890c823ed05bd98eb074412ed56fbfedb94751"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:27b0f23088873d1dd36d2c8a2e45c9167e312e1aac7e4baeb47f7428a2669638"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:cf134e1cfb0c53f08abb1ab9158a7e7f859c3ddb451d5fe535a2cc5f2958a688"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:f5c94994d876d8709847c3a92643309d716f43716580a2e5831262366a9ee8b6"}, - {file = "cchardet-2.1.6-cp36-cp36m-win32.whl", hash = "sha256:217a7008bd399bdb61f6a0a2570acc5c3a9f96140e0a0d089b9e748c4d4e4c4e"}, - {file = "cchardet-2.1.6-cp36-cp36m-win_amd64.whl", hash = "sha256:2a958fb093f69ee5f16be7a1aee5122e07aff4350fa4dc9b953b87c34468e605"}, - {file = "cchardet-2.1.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4096759825a130cb27a58ddf6d58e10abdd0127d29fbf53fde26df7ad879737b"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:7bba1cbb4358dc9a2d2da00f4b38b159a5483d2f3b1d698a7c2cae518f955170"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0f6e4e464e332da776b9c1a34e4e83b6301d38c2724efc93848c46ade66d02bb"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:acc96b4a8f756af289fa90ffa67ddef57401d99131e51e71872e3609483941ce"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:79b0e113144c2ef0050bc9fe647c7657c5298f3012ecd8937d930b24ddd61404"}, - {file = "cchardet-2.1.6-cp37-cp37m-win32.whl", hash = "sha256:8b1d02c99f6444c63336a76638741eaf4ac4005b454e3b8252a40074bf0d84a1"}, - {file = "cchardet-2.1.6-cp37-cp37m-win_amd64.whl", hash = "sha256:e27771798c8ad50df1375e762d59369354af94eb8ac21eca5bfd1eeef589f545"}, - {file = "cchardet-2.1.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68409e00d75ff13dd7a192ec49559f5527ee8959a51a9f4dd7b168df972b4d44"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:40c199f9c0569ac479fae7c4e12d2e16fc1e8237836b928474fdd228b8d11477"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8f7ade2578b2326a0a554c03f60c8d079331220179a592e83e143c9556b7f5b2"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:5e38cfad9d3ca0f571c4352e9ca0f5ab718508f492a37d3236ae70810140e250"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:af284494ea6c40f9613b4d939abe585eb9290cb92037eab66122c93190fcb338"}, - {file = "cchardet-2.1.6-cp38-cp38-win32.whl", hash = "sha256:54d2653520237ebbd2928f2c0f2eb7c616ee2b5194d73d945060cd54a7846b64"}, - {file = "cchardet-2.1.6-cp38-cp38-win_amd64.whl", hash = "sha256:f245f045054e8d6dab2a0e366d3c74f3a47fb7dec2595ae2035b234b1a829c7a"}, - {file = "cchardet-2.1.6.tar.gz", hash = "sha256:b76afb2059ad69eab576949980a17413c1e9e5a5624abf9e43542d8853f146b3"}, -] -certifi = [ - {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, - {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, -] -chardet = [ - {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, - {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.0.4.tar.gz", hash = "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"}, - {file = "charset_normalizer-2.0.4-py3-none-any.whl", hash = "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b"}, -] -click = [ - {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, - {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, -] -colorama = [ - {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, - {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, -] -cython = [ - {file = "Cython-0.29.21-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c541b2b49c6638f2b5beb9316726db84a8d1c132bf31b942dae1f9c7f6ad3b92"}, - {file = "Cython-0.29.21-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b8d8497091c1dc8705d1575c71e908a93b1f127a174b2d472020f3d84263ac28"}, - {file = "Cython-0.29.21-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:695a6bcaf9e12b1e471dfce96bbecf22a1487adc2ac6106b15960a2b51b97f5d"}, - {file = "Cython-0.29.21-cp27-cp27m-win32.whl", hash = "sha256:171b9f70ceafcec5852089d0f9c1e75b0d554f46c882cd4e2e4acaba9bd7d148"}, - {file = "Cython-0.29.21-cp27-cp27m-win_amd64.whl", hash = "sha256:539e59949aab4955c143a468810123bf22d3e8556421e1ce2531ed4893914ca0"}, - {file = "Cython-0.29.21-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:e93acd1f603a0c1786e0841f066ae7cef014cf4750e3cd06fd03cfdf46361419"}, - {file = "Cython-0.29.21-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:2922e3031ba9ebbe7cb9200b585cc33b71d66023d78450dcb883f824f4969371"}, - {file = "Cython-0.29.21-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:497841897942f734b0abc2dead2d4009795ee992267a70a23485fd0e937edc0b"}, - {file = "Cython-0.29.21-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:0ac10bf476476a9f7ef61ec6e44c280ef434473124ad31d3132b720f7b0e8d2a"}, - {file = "Cython-0.29.21-cp34-cp34m-win32.whl", hash = "sha256:31c71a615f38401b0dc1f2a5a9a6c421ffd8908c4cd5bbedc4014c1b876488e8"}, - {file = "Cython-0.29.21-cp34-cp34m-win_amd64.whl", hash = "sha256:c4b78356074fcaac04ecb4de289f11d506e438859877670992ece11f9c90f37b"}, - {file = "Cython-0.29.21-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:b2f9172e4d6358f33ecce6a4339b5960f9f83eab67ea244baa812737793826b7"}, - {file = "Cython-0.29.21-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:856c7fb31d247ce713d60116375e1f8153d0291ab5e92cca7d8833a524ba9991"}, - {file = "Cython-0.29.21-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:715294cd2246b39a8edca464a8366eb635f17213e4a6b9e74e52d8b877a8cb63"}, - {file = "Cython-0.29.21-cp35-cp35m-win32.whl", hash = "sha256:23f3a00b843a19de8bb4468b087db5b413a903213f67188729782488d67040e0"}, - {file = "Cython-0.29.21-cp35-cp35m-win_amd64.whl", hash = "sha256:ccb77faeaad99e99c6c444d04862c6cf604204fe0a07d4c8f9cbf2c9012d7d5a"}, - {file = "Cython-0.29.21-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e272ed97d20b026f4f25a012b25d7d7672a60e4f72b9ca385239d693cd91b2d5"}, - {file = "Cython-0.29.21-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:8c6e25e9cc4961bb2abb1777c6fa9d0fa2d9b014beb3276cebe69996ff162b78"}, - {file = "Cython-0.29.21-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:57ead89128dee9609119c93d3926c7a2add451453063147900408a50144598c6"}, - {file = "Cython-0.29.21-cp36-cp36m-win32.whl", hash = "sha256:0e25c209c75df8785480dcef85db3d36c165dbc0f4c503168e8763eb735704f2"}, - {file = "Cython-0.29.21-cp36-cp36m-win_amd64.whl", hash = "sha256:a0674f246ad5e1571ef29d4c5ec1d6ecabe9e6c424ad0d6fee46b914d5d24d69"}, - {file = "Cython-0.29.21-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5da187bebe38030325e1c0b5b8a804d489410be2d384c0ef3ba39493c67eb51e"}, - {file = "Cython-0.29.21-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:9ce5e5209f8406ffc2b058b1293cce7a954911bb7991e623564d489197c9ba30"}, - {file = "Cython-0.29.21-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5e545a48f919e40079b0efe7b0e081c74b96f9ef25b9c1ff4cdbd95764426b58"}, - {file = "Cython-0.29.21-cp37-cp37m-win32.whl", hash = "sha256:c8435959321cf8aec867bbad54b83b7fb8343204b530d85d9ea7a1f5329d5ac2"}, - {file = "Cython-0.29.21-cp37-cp37m-win_amd64.whl", hash = "sha256:540b3bee0711aac2e99bda4fa0a46dbcd8c74941666bfc1ef9236b1a64eeffd9"}, - {file = "Cython-0.29.21-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:93f5fed1c9445fb7afe20450cdaf94b0e0356d47cc75008105be89c6a2e417b1"}, - {file = "Cython-0.29.21-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9207fdedc7e789a3dcaca628176b80c82fbed9ae0997210738cbb12536a56699"}, - {file = "Cython-0.29.21-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:603b9f1b8e93e8b494d3e89320c410679e21018e48b6cbc77280f5db71f17dc0"}, - {file = "Cython-0.29.21-cp38-cp38-win32.whl", hash = "sha256:473df5d5e400444a36ed81c6596f56a5b52a3481312d0a48d68b777790f730ae"}, - {file = "Cython-0.29.21-cp38-cp38-win_amd64.whl", hash = "sha256:b8a8a31b9e8860634adbca30fea1d0c7f08e208b3d7611f3e580e5f20992e5d7"}, - {file = "Cython-0.29.21-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7ebaa8800c376bcdae596fb1372cb4232a5ef957619d35839520d2786f2debb9"}, - {file = "Cython-0.29.21-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:c111ac9abdf715762e4fb87395e59d61c0fbb6ce79eb2e24167700b6cfa8ba79"}, - {file = "Cython-0.29.21-py2.py3-none-any.whl", hash = "sha256:5c4276fdcbccdf1e3c1756c7aeb8395e9a36874fa4d30860e7694f43d325ae13"}, - {file = "Cython-0.29.21.tar.gz", hash = "sha256:e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad"}, -] -flake8 = [ - {file = "flake8-3.8.3-py2.py3-none-any.whl", hash = "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c"}, - {file = "flake8-3.8.3.tar.gz", hash = "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"}, -] -gidgethub = [ - {file = "gidgethub-3.3.0-py3-none-any.whl", hash = "sha256:4a456758a5fc8bfd581f297df90f2d09efbb830ccd209b1ceba4723705607d70"}, - {file = "gidgethub-3.3.0.tar.gz", hash = "sha256:3692d2df48a23c87ec4a5e74053ce343bc59cea7c34488a9136754a35aeb177a"}, -] -idna = [ - {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, - {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, -] -importlib-metadata = [ - {file = "importlib_metadata-2.0.0-py2.py3-none-any.whl", hash = "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3"}, - {file = "importlib_metadata-2.0.0.tar.gz", hash = "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"}, -] -iniconfig = [ - {file = "iniconfig-1.0.1-py3-none-any.whl", hash = "sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437"}, - {file = "iniconfig-1.0.1.tar.gz", hash = "sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69"}, -] -isort = [ - {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"}, - {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"}, -] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -multidict = [ - {file = "multidict-4.7.6-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:275ca32383bc5d1894b6975bb4ca6a7ff16ab76fa622967625baeebcf8079000"}, - {file = "multidict-4.7.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:1ece5a3369835c20ed57adadc663400b5525904e53bae59ec854a5d36b39b21a"}, - {file = "multidict-4.7.6-cp35-cp35m-win32.whl", hash = "sha256:5141c13374e6b25fe6bf092052ab55c0c03d21bd66c94a0e3ae371d3e4d865a5"}, - {file = "multidict-4.7.6-cp35-cp35m-win_amd64.whl", hash = "sha256:9456e90649005ad40558f4cf51dbb842e32807df75146c6d940b6f5abb4a78f3"}, - {file = "multidict-4.7.6-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:e0d072ae0f2a179c375f67e3da300b47e1a83293c554450b29c900e50afaae87"}, - {file = "multidict-4.7.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3750f2205b800aac4bb03b5ae48025a64e474d2c6cc79547988ba1d4122a09e2"}, - {file = "multidict-4.7.6-cp36-cp36m-win32.whl", hash = "sha256:f07acae137b71af3bb548bd8da720956a3bc9f9a0b87733e0899226a2317aeb7"}, - {file = "multidict-4.7.6-cp36-cp36m-win_amd64.whl", hash = "sha256:6513728873f4326999429a8b00fc7ceddb2509b01d5fd3f3be7881a257b8d463"}, - {file = "multidict-4.7.6-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:feed85993dbdb1dbc29102f50bca65bdc68f2c0c8d352468c25b54874f23c39d"}, - {file = "multidict-4.7.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fcfbb44c59af3f8ea984de67ec7c306f618a3ec771c2843804069917a8f2e255"}, - {file = "multidict-4.7.6-cp37-cp37m-win32.whl", hash = "sha256:4538273208e7294b2659b1602490f4ed3ab1c8cf9dbdd817e0e9db8e64be2507"}, - {file = "multidict-4.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:d14842362ed4cf63751648e7672f7174c9818459d169231d03c56e84daf90b7c"}, - {file = "multidict-4.7.6-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:c026fe9a05130e44157b98fea3ab12969e5b60691a276150db9eda71710cd10b"}, - {file = "multidict-4.7.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:51a4d210404ac61d32dada00a50ea7ba412e6ea945bbe992e4d7a595276d2ec7"}, - {file = "multidict-4.7.6-cp38-cp38-win32.whl", hash = "sha256:5cf311a0f5ef80fe73e4f4c0f0998ec08f954a6ec72b746f3c179e37de1d210d"}, - {file = "multidict-4.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:7388d2ef3c55a8ba80da62ecfafa06a1c097c18032a501ffd4cabbc52d7f2b19"}, - {file = "multidict-4.7.6.tar.gz", hash = "sha256:fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430"}, -] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] -packaging = [ - {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, - {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, -] -pathspec = [ - {file = "pathspec-0.8.0-py2.py3-none-any.whl", hash = "sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0"}, - {file = "pathspec-0.8.0.tar.gz", hash = "sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061"}, -] -pluggy = [ - {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, - {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, -] -py = [ - {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, - {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, -] -pycodestyle = [ - {file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"}, - {file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"}, -] -pyflakes = [ - {file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"}, - {file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"}, -] -pyparsing = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, -] -pytest = [ - {file = "pytest-6.1.0-py3-none-any.whl", hash = "sha256:1cd09785c0a50f9af72220dd12aa78cfa49cbffc356c61eab009ca189e018a33"}, - {file = "pytest-6.1.0.tar.gz", hash = "sha256:d010e24666435b39a4cf48740b039885642b6c273a3f77be3e7e03554d2806b7"}, -] -pytest-aiohttp = [ - {file = "pytest-aiohttp-0.3.0.tar.gz", hash = "sha256:c929854339637977375838703b62fef63528598bc0a9d451639eba95f4aaa44f"}, - {file = "pytest_aiohttp-0.3.0-py3-none-any.whl", hash = "sha256:0b9b660b146a65e1313e2083d0d2e1f63047797354af9a28d6b7c9f0726fa33d"}, -] -pytest-asyncio = [ - {file = "pytest-asyncio-0.14.0.tar.gz", hash = "sha256:9882c0c6b24429449f5f969a5158b528f39bde47dc32e85b9f0403965017e700"}, - {file = "pytest_asyncio-0.14.0-py3-none-any.whl", hash = "sha256:2eae1e34f6c68fc0a9dc12d4bea190483843ff4708d24277c41568d6b6044f1d"}, -] -pytest-mock = [ - {file = "pytest-mock-3.3.1.tar.gz", hash = "sha256:a4d6d37329e4a893e77d9ffa89e838dd2b45d5dc099984cf03c703ac8411bb82"}, - {file = "pytest_mock-3.3.1-py3-none-any.whl", hash = "sha256:024e405ad382646318c4281948aadf6fe1135632bea9cc67366ea0c4098ef5f2"}, -] -python-dotenv = [ - {file = "python-dotenv-0.14.0.tar.gz", hash = "sha256:8c10c99a1b25d9a68058a1ad6f90381a62ba68230ca93966882a4dbc3bc9c33d"}, - {file = "python_dotenv-0.14.0-py2.py3-none-any.whl", hash = "sha256:c10863aee750ad720f4f43436565e4c1698798d763b63234fb5021b6c616e423"}, -] -pytz = [ - {file = "pytz-2020.1-py2.py3-none-any.whl", hash = "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed"}, - {file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"}, -] -pyyaml = [ - {file = "PyYAML-5.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f7a21e3d99aa3095ef0553e7ceba36fb693998fbb1226f1392ce33681047465f"}, - {file = "PyYAML-5.4-cp27-cp27m-win32.whl", hash = "sha256:52bf0930903818e600ae6c2901f748bc4869c0c406056f679ab9614e5d21a166"}, - {file = "PyYAML-5.4-cp27-cp27m-win_amd64.whl", hash = "sha256:a36a48a51e5471513a5aea920cdad84cbd56d70a5057cca3499a637496ea379c"}, - {file = "PyYAML-5.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:5e7ac4e0e79a53451dc2814f6876c2fa6f71452de1498bbe29c0b54b69a986f4"}, - {file = "PyYAML-5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc552b6434b90d9dbed6a4f13339625dc466fd82597119897e9489c953acbc22"}, - {file = "PyYAML-5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0dc9f2eb2e3c97640928dec63fd8dc1dd91e6b6ed236bd5ac00332b99b5c2ff9"}, - {file = "PyYAML-5.4-cp36-cp36m-win32.whl", hash = "sha256:5a3f345acff76cad4aa9cb171ee76c590f37394186325d53d1aa25318b0d4a09"}, - {file = "PyYAML-5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:f3790156c606299ff499ec44db422f66f05a7363b39eb9d5b064f17bd7d7c47b"}, - {file = "PyYAML-5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:124fd7c7bc1e95b1eafc60825f2daf67c73ce7b33f1194731240d24b0d1bf628"}, - {file = "PyYAML-5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8b818b6c5a920cbe4203b5a6b14256f0e5244338244560da89b7b0f1313ea4b6"}, - {file = "PyYAML-5.4-cp37-cp37m-win32.whl", hash = "sha256:737bd70e454a284d456aa1fa71a0b429dd527bcbf52c5c33f7c8eee81ac16b89"}, - {file = "PyYAML-5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:7242790ab6c20316b8e7bb545be48d7ed36e26bbe279fd56f2c4a12510e60b4b"}, - {file = "PyYAML-5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cc547d3ead3754712223abb7b403f0a184e4c3eae18c9bb7fd15adef1597cc4b"}, - {file = "PyYAML-5.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8635d53223b1f561b081ff4adecb828fd484b8efffe542edcfdff471997f7c39"}, - {file = "PyYAML-5.4-cp38-cp38-win32.whl", hash = "sha256:26fcb33776857f4072601502d93e1a619f166c9c00befb52826e7b774efaa9db"}, - {file = "PyYAML-5.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2243dd033fd02c01212ad5c601dafb44fbb293065f430b0d3dbf03f3254d615"}, - {file = "PyYAML-5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:31ba07c54ef4a897758563e3a0fcc60077698df10180abe4b8165d9895c00ebf"}, - {file = "PyYAML-5.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:02c78d77281d8f8d07a255e57abdbf43b02257f59f50cc6b636937d68efa5dd0"}, - {file = "PyYAML-5.4-cp39-cp39-win32.whl", hash = "sha256:fdc6b2cb4b19e431994f25a9160695cc59a4e861710cc6fc97161c5e845fc579"}, - {file = "PyYAML-5.4-cp39-cp39-win_amd64.whl", hash = "sha256:8bf38641b4713d77da19e91f8b5296b832e4db87338d6aeffe422d42f1ca896d"}, - {file = "PyYAML-5.4.tar.gz", hash = "sha256:3c49e39ac034fd64fd576d63bb4db53cda89b362768a67f07749d55f128ac18a"}, -] -regex = [ - {file = "regex-2020.9.27-cp27-cp27m-win32.whl", hash = "sha256:d23a18037313714fb3bb5a94434d3151ee4300bae631894b1ac08111abeaa4a3"}, - {file = "regex-2020.9.27-cp27-cp27m-win_amd64.whl", hash = "sha256:84e9407db1b2eb368b7ecc283121b5e592c9aaedbe8c78b1a2f1102eb2e21d19"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5f18875ac23d9aa2f060838e8b79093e8bb2313dbaaa9f54c6d8e52a5df097be"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ae91972f8ac958039920ef6e8769277c084971a142ce2b660691793ae44aae6b"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:9a02d0ae31d35e1ec12a4ea4d4cca990800f66a917d0fb997b20fbc13f5321fc"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ebbe29186a3d9b0c591e71b7393f1ae08c83cb2d8e517d2a822b8f7ec99dfd8b"}, - {file = "regex-2020.9.27-cp36-cp36m-win32.whl", hash = "sha256:4707f3695b34335afdfb09be3802c87fa0bc27030471dbc082f815f23688bc63"}, - {file = "regex-2020.9.27-cp36-cp36m-win_amd64.whl", hash = "sha256:9bc13e0d20b97ffb07821aa3e113f9998e84994fe4d159ffa3d3a9d1b805043b"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f1b3afc574a3db3b25c89161059d857bd4909a1269b0b3cb3c904677c8c4a3f7"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5533a959a1748a5c042a6da71fe9267a908e21eded7a4f373efd23a2cbdb0ecc"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:1fe0a41437bbd06063aa184c34804efa886bcc128222e9916310c92cd54c3b4c"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:c570f6fa14b9c4c8a4924aaad354652366577b4f98213cf76305067144f7b100"}, - {file = "regex-2020.9.27-cp37-cp37m-win32.whl", hash = "sha256:eda4771e0ace7f67f58bc5b560e27fb20f32a148cbc993b0c3835970935c2707"}, - {file = "regex-2020.9.27-cp37-cp37m-win_amd64.whl", hash = "sha256:60b0e9e6dc45683e569ec37c55ac20c582973841927a85f2d8a7d20ee80216ab"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux1_i686.whl", hash = "sha256:088afc8c63e7bd187a3c70a94b9e50ab3f17e1d3f52a32750b5b77dbe99ef5ef"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eaf548d117b6737df379fdd53bdde4f08870e66d7ea653e230477f071f861121"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:41bb65f54bba392643557e617316d0d899ed5b4946dccee1cb6696152b29844b"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:8d69cef61fa50c8133382e61fd97439de1ae623fe943578e477e76a9d9471637"}, - {file = "regex-2020.9.27-cp38-cp38-win32.whl", hash = "sha256:f2388013e68e750eaa16ccbea62d4130180c26abb1d8e5d584b9baf69672b30f"}, - {file = "regex-2020.9.27-cp38-cp38-win_amd64.whl", hash = "sha256:4318d56bccfe7d43e5addb272406ade7a2274da4b70eb15922a071c58ab0108c"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux1_i686.whl", hash = "sha256:84cada8effefe9a9f53f9b0d2ba9b7b6f5edf8d2155f9fdbe34616e06ececf81"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:816064fc915796ea1f26966163f6845de5af78923dfcecf6551e095f00983650"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:5d892a4f1c999834eaa3c32bc9e8b976c5825116cde553928c4c8e7e48ebda67"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c9443124c67b1515e4fe0bb0aa18df640965e1030f468a2a5dc2589b26d130ad"}, - {file = "regex-2020.9.27-cp39-cp39-win32.whl", hash = "sha256:49f23ebd5ac073765ecbcf046edc10d63dcab2f4ae2bce160982cb30df0c0302"}, - {file = "regex-2020.9.27-cp39-cp39-win_amd64.whl", hash = "sha256:3d20024a70b97b4f9546696cbf2fd30bae5f42229fbddf8661261b1eaff0deb7"}, - {file = "regex-2020.9.27.tar.gz", hash = "sha256:a6f32aea4260dfe0e55dc9733ea162ea38f0ea86aa7d0f77b15beac5bf7b369d"}, -] -requests = [ - {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, - {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"}, -] -sentry-sdk = [ - {file = "sentry-sdk-0.17.8.tar.gz", hash = "sha256:e159f7c919d19ae86e5a4ff370fccc45149fab461fbeb93fb5a735a0b33a9cb1"}, - {file = "sentry_sdk-0.17.8-py2.py3-none-any.whl", hash = "sha256:c9c0fa1412bad87104c4eee8dd36c7bbf60b0d92ae917ab519094779b22e6d9a"}, -] -sirbot = [ - {file = "sirbot-0.1.1-py3-none-any.whl", hash = "sha256:3252a917f6336f37fd95223f472cc0e225dac98b6b3492c5ce9953d8cda3cc4f"}, - {file = "sirbot-0.1.1.tar.gz", hash = "sha256:97be6915ec814e76d7ecce504c1c037834d6be1dc618c3032653d6ecac0f1c0b"}, -] -six = [ - {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, - {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, -] -slack-sansio = [ - {file = "slack-sansio-1.1.0.tar.gz", hash = "sha256:4dec16e6f9ced6003de201c5e3bd1dbfc053ab8c8772ab29529772805b8a18a1"}, - {file = "slack_sansio-1.1.0-py3-none-any.whl", hash = "sha256:0403c02ba6c3e57f6de7e9522aef7973bd71e33453f5b2ea760ec513b619750a"}, -] -toml = [ - {file = "toml-0.10.1-py2.py3-none-any.whl", hash = "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"}, - {file = "toml-0.10.1.tar.gz", hash = "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f"}, -] -typed-ast = [ - {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3"}, - {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb"}, - {file = "typed_ast-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919"}, - {file = "typed_ast-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01"}, - {file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fcf135e17cc74dbfbc05894ebca928ffeb23d9790b3167a674921db19082401f"}, - {file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"}, - {file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"}, - {file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:f208eb7aff048f6bea9586e61af041ddf7f9ade7caed625742af423f6bae3298"}, - {file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"}, - {file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"}, - {file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7e4c9d7658aaa1fc80018593abdf8598bf91325af6af5cce4ce7c73bc45ea53d"}, - {file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"}, - {file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"}, - {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"}, - {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:92c325624e304ebf0e025d1224b77dd4e6393f18aab8d829b5b7e04afe9b7a2c"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d648b8e3bf2fe648745c8ffcee3db3ff903d0817a01a12dd6a6ea7a8f4889072"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fac11badff8313e23717f3dada86a15389d0708275bddf766cca67a84ead3e91"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:0d8110d78a5736e16e26213114a38ca35cb15b6515d535413b090bd50951556d"}, - {file = "typed_ast-1.4.1-cp39-cp39-win32.whl", hash = "sha256:b52ccf7cfe4ce2a1064b18594381bccf4179c2ecf7f513134ec2f993dd4ab395"}, - {file = "typed_ast-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:3742b32cf1c6ef124d57f95be609c473d7ec4c14d0090e5a5e05a15269fb4d0c"}, - {file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"}, -] -typing-extensions = [ - {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"}, - {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"}, - {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"}, -] -tzlocal = [ - {file = "tzlocal-2.1-py2.py3-none-any.whl", hash = "sha256:e2cb6c6b5b604af38597403e9852872d7f534962ae2954c7f35efcb1ccacf4a4"}, - {file = "tzlocal-2.1.tar.gz", hash = "sha256:643c97c5294aedc737780a49d9df30889321cbe1204eac2c2ec6134035a92e44"}, -] -ujson = [ - {file = "ujson-1.35.tar.gz", hash = "sha256:f66073e5506e91d204ab0c614a148d5aa938bdbf104751be66f8ad7a222f5f86"}, -] -uritemplate = [ - {file = "uritemplate-3.0.1-py2.py3-none-any.whl", hash = "sha256:07620c3f3f8eed1f12600845892b0e036a2420acf513c53f7de0abd911a5894f"}, - {file = "uritemplate-3.0.1.tar.gz", hash = "sha256:5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae"}, -] -urllib3 = [ - {file = "urllib3-1.25.10-py2.py3-none-any.whl", hash = "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"}, - {file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"}, -] -yarl = [ - {file = "yarl-1.6.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:db9eb8307219d7e09b33bcb43287222ef35cbcf1586ba9472b0a4b833666ada1"}, - {file = "yarl-1.6.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:e31fef4e7b68184545c3d68baec7074532e077bd1906b040ecfba659737df188"}, - {file = "yarl-1.6.0-cp35-cp35m-win32.whl", hash = "sha256:5d84cc36981eb5a8533be79d6c43454c8e6a39ee3118ceaadbd3c029ab2ee580"}, - {file = "yarl-1.6.0-cp35-cp35m-win_amd64.whl", hash = "sha256:5e447e7f3780f44f890360ea973418025e8c0cdcd7d6a1b221d952600fd945dc"}, - {file = "yarl-1.6.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:6f6898429ec3c4cfbef12907047136fd7b9e81a6ee9f105b45505e633427330a"}, - {file = "yarl-1.6.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d088ea9319e49273f25b1c96a3763bf19a882cff774d1792ae6fba34bd40550a"}, - {file = "yarl-1.6.0-cp36-cp36m-win32.whl", hash = "sha256:b7c199d2cbaf892ba0f91ed36d12ff41ecd0dde46cbf64ff4bfe997a3ebc925e"}, - {file = "yarl-1.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:67c5ea0970da882eaf9efcf65b66792557c526f8e55f752194eff8ec722c75c2"}, - {file = "yarl-1.6.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:04a54f126a0732af75e5edc9addeaa2113e2ca7c6fce8974a63549a70a25e50e"}, - {file = "yarl-1.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fcbe419805c9b20db9a51d33b942feddbf6e7fb468cb20686fd7089d4164c12a"}, - {file = "yarl-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:c604998ab8115db802cc55cb1b91619b2831a6128a62ca7eea577fc8ea4d3131"}, - {file = "yarl-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c22607421f49c0cb6ff3ed593a49b6a99c6ffdeaaa6c944cdda83c2393c8864d"}, - {file = "yarl-1.6.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:7ce35944e8e61927a8f4eb78f5bc5d1e6da6d40eadd77e3f79d4e9399e263921"}, - {file = "yarl-1.6.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c15d71a640fb1f8e98a1423f9c64d7f1f6a3a168f803042eaf3a5b5022fde0c1"}, - {file = "yarl-1.6.0-cp38-cp38-win32.whl", hash = "sha256:3cc860d72ed989f3b1f3abbd6ecf38e412de722fb38b8f1b1a086315cf0d69c5"}, - {file = "yarl-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:e32f0fb443afcfe7f01f95172b66f279938fbc6bdaebe294b0ff6747fb6db020"}, - {file = "yarl-1.6.0.tar.gz", hash = "sha256:61d3ea3c175fe45f1498af868879c6ffeb989d4143ac542163c45538ba5ec21b"}, -] -zipcodes = [ - {file = "zipcodes-1.1.3-py2.py3-none-any.whl", hash = "sha256:b228fd678c1f035b67df1af39880c62e842a3b03c0d78dfeb2bf26069dec2a7a"}, - {file = "zipcodes-1.1.3.tar.gz", hash = "sha256:566a0bf8af3254d5b314cf902ca8d63046795f8811046d9d218fe30ce9ee3241"}, -] -zipp = [ - {file = "zipp-3.2.0-py3-none-any.whl", hash = "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6"}, - {file = "zipp-3.2.0.tar.gz", hash = "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f"}, -] diff --git a/pybot/__init__.py b/pybot/__init__.py deleted file mode 100644 index bed8b88..0000000 --- a/pybot/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -from pathlib import Path - -from dotenv import load_dotenv - -""" Loads values from .env file for local development """ -url = Path(os.path.dirname(os.path.dirname(__file__))) / "docker" / "pybot.env" -load_dotenv(dotenv_path=url) diff --git a/pybot/__main__.py b/pybot/__main__.py deleted file mode 100644 index dafe76a..0000000 --- a/pybot/__main__.py +++ /dev/null @@ -1,63 +0,0 @@ -import logging.config -import os - -import sentry_sdk -import yaml -from sentry_sdk.integrations.aiohttp import AioHttpIntegration -from sirbot import SirBot -from sirbot.plugins.slack import SlackPlugin - -from pybot.endpoints import handle_health_check -from pybot.endpoints.slack.utils import HOST, PORT, slack_configs - -from . import endpoints -from .plugins import AirtablePlugin, APIPlugin - -logger = logging.getLogger(__name__) - -if __name__ == "__main__": - try: - with open( - os.path.join(os.path.dirname(os.path.realpath(__file__)), "../logging.yml") - ) as log_configfile: - logging.config.dictConfig( - yaml.load(log_configfile.read(), Loader=yaml.SafeLoader) - ) - except Exception as e: - logging.basicConfig(level=logging.DEBUG) - logger.exception(e) - - if "SENTRY_DSN" in os.environ: - sentry_sdk.init( - dsn=os.environ["SENTRY_DSN"], - release=os.environ.get("VERSION", "1.0.0"), - environment=os.environ.get("ENVIRONMENT", "production"), - integrations=[AioHttpIntegration()], - ) - - bot = SirBot() - - slack = SlackPlugin(**slack_configs) - endpoints.slack.create_endpoints(slack) - bot.load_plugin(slack) - - admin_configs = dict(**slack_configs) - admin_token = os.environ.get("APP_ADMIN_OAUTH_TOKEN", "FAKE_ADMIN_TOKEN") - if admin_token: - admin_configs["token"] = admin_token - admin_slack = SlackPlugin(**admin_configs) - bot.load_plugin(admin_slack, name="admin_slack") - - airtable = AirtablePlugin() - endpoints.airtable.create_endpoints(airtable) - bot.load_plugin(airtable) - - api_plugin = APIPlugin() - endpoints.api.create_endpoints(api_plugin) - bot.load_plugin(api_plugin) - - # Add route to respond to AWS health check - bot.router.add_get("/health", handle_health_check) - logging.getLogger("aiohttp.access").setLevel(logging.INFO) - - bot.start(host=HOST, port=PORT, print=logger.info) diff --git a/pybot/customLogging.py b/pybot/customLogging.py deleted file mode 100644 index 10e2aee..0000000 --- a/pybot/customLogging.py +++ /dev/null @@ -1,6 +0,0 @@ -import logging - - -class SlackMessageFilter(logging.Filter): - def filter(self, record): - return record.funcName != "_incoming_message" diff --git a/pybot/endpoints/__init__.py b/pybot/endpoints/__init__.py deleted file mode 100644 index bff287d..0000000 --- a/pybot/endpoints/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from aiohttp.web_response import Response - -from . import airtable, api, slack - - -async def handle_health_check(request): - return Response(status=200) diff --git a/pybot/endpoints/airtable/__init__.py b/pybot/endpoints/airtable/__init__.py deleted file mode 100644 index b66cf71..0000000 --- a/pybot/endpoints/airtable/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from . import requests - - -def create_endpoints(plugin): - requests.create_endpoints(plugin) diff --git a/pybot/endpoints/airtable/message_templates/messages.py b/pybot/endpoints/airtable/message_templates/messages.py deleted file mode 100644 index 0fb302b..0000000 --- a/pybot/endpoints/airtable/message_templates/messages.py +++ /dev/null @@ -1,39 +0,0 @@ -from typing import List - - -def mentor_request_text( - user_id, service, skillsets, affiliation, requested_mentor_message=None -): - if not skillsets: - skillsets = "None provided" - text = ( - f"User <@{user_id}> has requested a mentor for {service}\n\n" - f"Requested Skillset(s): {skillsets.replace(',', ', ')}\n\n" - f"Requestor Affiliation: {affiliation}" - ) - - if requested_mentor_message: - text += requested_mentor_message - - return text - - -def claim_mentee_attachment(record: str) -> List[dict]: - return [ - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claim_mentee", - "attachment_type": "default", - "actions": [ - { - "name": f"{record}", - "text": "Claim Mentee", - "type": "button", - "style": "primary", - "value": "mentee_claimed", - } - ], - } - ] diff --git a/pybot/endpoints/airtable/requests.py b/pybot/endpoints/airtable/requests.py deleted file mode 100644 index 47f94d2..0000000 --- a/pybot/endpoints/airtable/requests.py +++ /dev/null @@ -1,50 +0,0 @@ -import asyncio -import logging - -from sirbot import SirBot - -from pybot.endpoints.airtable.utils import ( - _create_messages, - _get_matching_skillset_mentors, - _get_requested_mentor, - _post_messages, - _slack_user_id_from_email, -) - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin): - plugin.on_request("mentor_request", mentor_request) - - -async def mentor_request(request: dict, app: SirBot) -> None: - """ - Endpoint that receives the zapier POST when a new Mentor Request comes in. - - Queries Airtable to find mentors matching the requested skillsets and posts a message - in the Mentor slack channel. - """ - slack = app.plugins["slack"].api - airtable = app.plugins["airtable"].api - - id_fallback = f" [couldn't find user - email provided: {request['email']} ]" - slack_id = await _slack_user_id_from_email( - request["email"], slack, fallback=id_fallback - ) - - futures = [ - airtable.get_name_from_record_id("Services", request["service"]), - _get_requested_mentor(request.get("requested_mentor"), slack, airtable), - _get_matching_skillset_mentors(request.get("skillsets"), slack, airtable), - ] - - service_translation, requested_mentor_message, mentors = await asyncio.gather( - *futures - ) - - first_message, *children = _create_messages( - mentors, request, requested_mentor_message, service_translation, slack_id - ) - - await _post_messages(first_message, children, app) diff --git a/pybot/endpoints/airtable/utils.py b/pybot/endpoints/airtable/utils.py deleted file mode 100644 index c0801f9..0000000 --- a/pybot/endpoints/airtable/utils.py +++ /dev/null @@ -1,97 +0,0 @@ -from typing import List, Optional, Tuple - -from sirbot import SirBot -from slack import ROOT_URL, methods -from slack.events import Message -from slack.exceptions import SlackAPIError -from slack.io.aiohttp import SlackAPI - -from pybot.endpoints.slack.utils import MENTOR_CHANNEL -from pybot.plugins.airtable.api import AirtableAPI - -from .message_templates.messages import claim_mentee_attachment, mentor_request_text - - -async def _get_requested_mentor( - requested_mentor: Optional[str], slack: SlackAPI, airtable: AirtableAPI -) -> Optional[str]: - try: - if not requested_mentor: - return None - mentor = await airtable.get_row_from_record_id("Mentors", requested_mentor) - email = mentor["Email"] - slack_user_id = await _slack_user_id_from_email(email, slack) - return f" Requested mentor: <@{slack_user_id}>" - except SlackAPIError: - return None - - -async def _slack_user_id_from_email( - email: str, slack: SlackAPI, fallback: Optional[str] = None -) -> str: - try: - response = await slack.query( - url=ROOT_URL + "users.lookupByEmail", data={"email": email} - ) - return response["user"]["id"] - except SlackAPIError: - return fallback or "Slack User" - - -async def _get_matching_skillset_mentors( - skillsets: str, slack: SlackAPI, airtable: AirtableAPI -) -> List[str]: - if not skillsets: - return ["No skillset Given"] - mentors = await airtable.find_mentors_with_matching_skillsets(skillsets) - mentor_ids = [ - await _slack_user_id_from_email( - mentor["Email"], slack, fallback=mentor["Slack Name"] - ) - for mentor in mentors - ] - return [f"<@{mentor}>" for mentor in mentor_ids] - - -def _create_messages( - mentors: List[str], - request: dict, - requested_mentor_message: str, - service_translation: str, - slack_id: str, -) -> Tuple[dict, dict, dict]: - first_message = { - "text": mentor_request_text( - slack_id, - service_translation, - request.get("skillsets", None), - request.get("affiliation", "None Provided"), - requested_mentor_message, - ), - "attachments": claim_mentee_attachment(request["record"]), - "channel": MENTOR_CHANNEL, - } - - details_message = { - "text": f"Additional details: {request.get('details', 'None Given')}", - "channel": MENTOR_CHANNEL, - } - - matching_mentors_message = { - "text": "Mentors matching all or some of the requested skillsets: " - + " ".join(mentors), - "channel": MENTOR_CHANNEL, - } - - return first_message, details_message, matching_mentors_message - - -async def _post_messages(parent: Message, children: List[Message], app: SirBot) -> None: - response = await app.plugins["slack"].api.query( - url=methods.CHAT_POST_MESSAGE, data=parent - ) - timestamp = response["ts"] - - for child in children: - child["thread_ts"] = timestamp - await app.plugins["slack"].api.query(url=methods.CHAT_POST_MESSAGE, data=child) diff --git a/pybot/endpoints/api/__init__.py b/pybot/endpoints/api/__init__.py deleted file mode 100644 index 27b5aec..0000000 --- a/pybot/endpoints/api/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from . import slack_api - - -def create_endpoints(plugin): - slack_api.create_endpoints(plugin) diff --git a/pybot/endpoints/api/slack_api.py b/pybot/endpoints/api/slack_api.py deleted file mode 100644 index 3a15bb7..0000000 --- a/pybot/endpoints/api/slack_api.py +++ /dev/null @@ -1,70 +0,0 @@ -import logging - -from sirbot import SirBot -from slack import ROOT_URL -from slack.exceptions import SlackAPIError - -from pybot.endpoints.api.utils import ( - _slack_info_from_email, - handle_slack_invite_error, - production_only, -) -from pybot.plugins import APIPlugin -from pybot.plugins.api.request import SlackApiRequest - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin: APIPlugin): - plugin.on_get("verify", verify, wait=True) - plugin.on_get("invite", invite, wait=True) - - -async def verify(request: SlackApiRequest, app: SirBot) -> dict: - """ - Verifies whether a user exists in the configured slack group with - the given email - - :return: The user's slack id and displayName if they exist - """ - slack = app.plugins["slack"].api - email = request.query["email"] - - user = await _slack_info_from_email(email, slack) - if user: - return {"exists": True, "id": user["id"], "displayName": user["name"]} - return {"exists": False} - - -@production_only -async def invite(request: SlackApiRequest, app: SirBot): - """ - Pulls an email out of the querystring and sends it an invite - to the slack team - - :return: The request response from slack - """ - - admin_slack = app.plugins["admin_slack"].api - slack = app.plugins["slack"].api - body = await request.json() - - if "email" not in body: - return {"error": "Must contain `email` JSON value"} - email = body["email"] - - try: - response = await admin_slack.query( - url=ROOT_URL + "users.admin.invite", data={"email": email} - ) - return response - - except SlackAPIError as e: - logger.info("Slack invite resulted in SlackAPIError: " + e.error) - await handle_slack_invite_error(email, e, slack) - return e.data - - except Exception as e: - logger.exception(e) - await handle_slack_invite_error(email, e, slack) - return e diff --git a/pybot/endpoints/api/utils.py b/pybot/endpoints/api/utils.py deleted file mode 100644 index 973fcbb..0000000 --- a/pybot/endpoints/api/utils.py +++ /dev/null @@ -1,105 +0,0 @@ -import logging -from typing import Optional - -from slack import ROOT_URL -from slack.exceptions import SlackAPIError -from slack.io.abc import SlackAPI -from slack.methods import Methods - -from pybot.endpoints.slack.utils import OPS_CHANNEL, PYBOT_ENV -from pybot.endpoints.slack.utils.action_messages import ( - TICKET_OPTIONS, - not_claimed_attachment, -) -from pybot.plugins.api.request import SlackApiRequest - -logger = logging.getLogger(__name__) - - -async def _slack_info_from_email( - email: str, slack: SlackAPI, fallback: Optional[dict] = None -) -> dict: - try: - response = await slack.query( - url=ROOT_URL + "users.lookupByEmail", data={"email": email} - ) - return response["user"] - except SlackAPIError: - return fallback - - -def invite_failure_attachments(email: str, error: str) -> list: - attachments = [ - { - "text": "", - "callback_id": "ticket_status", - "response_type": "in_channel", - "fallback": "", - "fields": [ - {"title": "Email", "value": f"{email}", "short": True}, - {"title": "Error", "value": f"{error}", "short": True}, - ], - "actions": [ - { - "name": "status", - "text": "Current Status", - "type": "select", - "selected_options": [ - {"text": "Not Started", "value": "notStarted"} - ], - "options": [ - {"text": text, "value": value} - for value, text in TICKET_OPTIONS.items() - ], - } - ], - }, - not_claimed_attachment(), - ] - return attachments - - -async def handle_slack_invite_error(email, error, slack): - if error.error == "already_invited": - return error.data - - attachments = invite_failure_attachments(email, error) - - if error.error == "already_in_team": - slack_user = await _slack_info_from_email(email, slack) - attachments[0]["fields"].append( - { - "title": "Slack Username", - "value": f"<@{slack_user['id']}>", - "short": True, - } - ) - - response = { - "channel": OPS_CHANNEL, - "attachments": attachments, - "text": "User Slack Invite Error", - } - - return await slack.query(Methods.CHAT_POST_MESSAGE, response) - - -def production_only(func): - """ - Decorator for functions that shouldn't be called unless in - production environment. - - Used to avoid doing things like sending slack workspace invites to - staging environments. - """ - - async def not_prod(request: SlackApiRequest, app): - logger.info( - f"Received request on staging to {request.request.raw_path}. Returning 200" - ) - return {"ok": True, "details": "Development environment, returning 200"} - - if PYBOT_ENV != "PRODUCTION": - return not_prod - - return func diff --git a/pybot/endpoints/slack/__init__.py b/pybot/endpoints/slack/__init__.py deleted file mode 100644 index c616836..0000000 --- a/pybot/endpoints/slack/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from . import actions, commands, events, messages - - -def create_endpoints(plugin): - events.create_endpoints(plugin) - actions.create_endpoints(plugin) - commands.create_endpoints(plugin) - messages.create_endpoints(plugin) diff --git a/pybot/endpoints/slack/actions/__init__.py b/pybot/endpoints/slack/actions/__init__.py deleted file mode 100644 index eaf7585..0000000 --- a/pybot/endpoints/slack/actions/__init__.py +++ /dev/null @@ -1,89 +0,0 @@ -from sirbot.plugins.slack import SlackPlugin - -from .general_actions import claimed, delete_message, reset_claim -from .mentor_request import ( - add_skillset, - claim_mentee, - clear_mentor, - clear_skillsets, - mentor_details_submit, - mentor_request_submit, - open_details_dialog, - set_group, - set_requested_mentor, - set_requested_service, -) -from .mentor_volunteer import ( - add_volunteer_skillset, - clear_volunteer_skillsets, - submit_mentor_volunteer, -) -from .new_member import ( - member_greeted, - member_messaged, - open_suggestion, - post_suggestion, - reset_greet, - reset_message, - resource_buttons, -) -from .report_message import open_report_dialog, send_report - - -def create_endpoints(plugin: SlackPlugin): - # simple actions that can be used in multiple scenarios - plugin.on_action("claimed", claimed, name="claimed", wait=False) - plugin.on_action("claimed", reset_claim, name="reset_claim", wait=False) - plugin.on_block("submission", delete_message, action_id="cancel_btn", wait=False) - - # new member interactive actions - plugin.on_action("resource_buttons", resource_buttons, wait=False) - plugin.on_action("greeted", member_greeted, name="greeted", wait=False) - plugin.on_action("greeted", reset_greet, name="reset_greet", wait=False) - plugin.on_action("messaged", member_messaged, name="messaged", wait=False) - plugin.on_action("messaged", reset_message, name="reset_message", wait=False) - plugin.on_action("suggestion", open_suggestion, wait=False) - plugin.on_action("suggestion_modal", post_suggestion, wait=False) - - # reporting related interactive actions - plugin.on_action("report_message", open_report_dialog, wait=False) - plugin.on_action("report_dialog", send_report, wait=False) - - # mentorship related interactive actions - plugin.on_block( - "mentor_service", - set_requested_service, - wait=False, - action_id="mentor_service_select", - ) - plugin.on_block("skillset", add_skillset, action_id="skillset_select", wait=False) - plugin.on_block( - "clear_skillsets", clear_skillsets, action_id="clear_skillsets_btn", wait=False - ) - plugin.on_block( - "mentor", set_requested_mentor, action_id="mentor_select", wait=False - ) - plugin.on_block( - "comments", open_details_dialog, action_id="comments_btn", wait=False - ) - plugin.on_block("mentor_details_submit", mentor_details_submit, wait=False) - plugin.on_block( - "affiliation", set_group, action_id="affiliation_select", wait=False - ) - plugin.on_block( - "submission", mentor_request_submit, action_id="submit_mentor_btn", wait=False - ) - - # mentor volunteer actions - plugin.on_block("volunteer_skillset", add_volunteer_skillset, wait=False) - plugin.on_block("clear_volunteer_skillsets", clear_volunteer_skillsets, wait=False) - plugin.on_block( - "submission", - submit_mentor_volunteer, - action_id="submit_mentor_volunteer_btn", - wait=False, - ) - - # mentorship claims - plugin.on_action("claim_mentee", claim_mentee, wait=False) - plugin.on_action("reset_claim_mentee", claim_mentee, wait=False) diff --git a/pybot/endpoints/slack/actions/general_actions.py b/pybot/endpoints/slack/actions/general_actions.py deleted file mode 100644 index 878e652..0000000 --- a/pybot/endpoints/slack/actions/general_actions.py +++ /dev/null @@ -1,52 +0,0 @@ -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.utils.action_messages import ( - base_response, - claimed_attachment, - not_claimed_attachment, -) - - -async def claimed(action: Action, app: SirBot): - """ - Provides basic "claim" functionality for use-cases that don't have any other effects. - - Simply updates the button to allow resets and displays the user and time it was clicked. - """ - response = base_response(action) - user_id = action["user"]["id"] - - attachments = action["original_message"]["attachments"] - - for index, attachment in enumerate(attachments): - if "callback_id" in attachment and attachment["callback_id"] == "claimed": - attachments[index] = claimed_attachment(user_id) - response["attachments"] = attachments - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def reset_claim(action: Action, app: SirBot): - """ - Provides basic "unclaim" functionality for use-cases that don't have any other effects. - - Updates the button back to its initial state - """ - response = base_response(action) - - attachments = action["original_message"]["attachments"] - for index, attachment in enumerate(attachments): - if "callback_id" in attachment and attachment["callback_id"] == "claimed": - attachments[index] = not_claimed_attachment() - - response["attachments"] = attachments - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def delete_message(action: Action, app: SirBot): - slack = app.plugins["slack"].api - params = {"ts": action["message"]["ts"], "channel": action["channel"]["id"]} - - await slack.query(methods.CHAT_DELETE, params) diff --git a/pybot/endpoints/slack/actions/mentor_request.py b/pybot/endpoints/slack/actions/mentor_request.py deleted file mode 100644 index de2e757..0000000 --- a/pybot/endpoints/slack/actions/mentor_request.py +++ /dev/null @@ -1,145 +0,0 @@ -import json -import logging - -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.message_templates.mentor_request import ( - MentorRequest, - MentorRequestClaim, -) -from pybot.endpoints.slack.utils.action_messages import mentor_details_dialog - -logger = logging.getLogger(__name__) - - -async def mentor_request_submit(action: Action, app: SirBot): - slack = app.plugins["slack"].api - airtable = app.plugins["airtable"].api - request = MentorRequest(action) - - if not request.validate_self(): - request.add_errors() - await request.update_message(slack) - return - - username = action["user"]["name"] - user_info = await slack.query(methods.USERS_INFO, {"user": action["user"]["id"]}) - email = user_info["user"]["profile"]["email"] - - airtable_response = await request.submit_request(username, email, airtable) - - if "error" in airtable_response: - await request.submission_error(airtable_response, slack) - else: - await request.submission_complete(slack) - - -async def mentor_details_submit(action: Action, app: SirBot): - slack = app.plugins["slack"].api - request = MentorRequest(action) - - state = json.loads(action["state"]) - channel = state["channel"] - ts = state["ts"] - search = {"inclusive": True, "channel": channel, "oldest": ts, "latest": ts} - - history = await slack.query(methods.CONVERSATIONS_HISTORY, search) - request["message"] = history["messages"][0] - request.details = action["submission"]["details"] - - await request.update_message(slack) - - -async def open_details_dialog(action: Action, app: SirBot): - request = MentorRequest(action) - cur_details = request.details - trigger_id = action["trigger_id"] - response = { - "trigger_id": trigger_id, - "dialog": mentor_details_dialog(action, cur_details), - } - await app.plugins["slack"].api.query(methods.DIALOG_OPEN, response) - - -async def clear_skillsets(action: Action, app: SirBot): - request = MentorRequest(action) - request.clear_skillsets() - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def clear_mentor(action: Action, app: SirBot): - slack = app.plugins["slack"].api - - request = MentorRequest(action) - request.mentor = "" - - await request.update_message(slack) - - -async def set_group(action: Action, app: SirBot): - request = MentorRequest(action) - request.affiliation = request.selected_option - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def set_requested_service(action: Action, app: SirBot): - request = MentorRequest(action) - - request.service = request.selected_option - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def set_requested_mentor(action: Action, app: SirBot): - request = MentorRequest(action) - request.mentor = request.selected_option - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def add_skillset(action: Action, app: SirBot): - request = MentorRequest(action) - selected_skill = request.selected_option - request.add_skillset(selected_skill["value"]) - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def claim_mentee(action: Action, app: SirBot): - """ - Called when a mentor clicks on the button to claim a mentor request. - - Attempts to update airtable with the new request status and updates the claim - button allowing it to be reset if needed. - """ - try: - slack = app.plugins["slack"].api - airtable = app.plugins["airtable"].api - - event = MentorRequestClaim(action, slack, airtable) - if event.is_claim(): - user_info = await slack.query(methods.USERS_INFO, {"user": event.clicker}) - clicker_email = user_info["user"]["profile"]["email"] - - mentor_records = await airtable.find_records( - table_name="Mentors", field="Email", value=clicker_email - ) - mentor_id = mentor_records[0]["id"] if mentor_records else False - - await event.claim_request(mentor_id) - else: - await event.unclaim_request() - - await event.update_message() - - except Exception as ex: - logger.exception("Exception while updating claim", ex) diff --git a/pybot/endpoints/slack/actions/mentor_volunteer.py b/pybot/endpoints/slack/actions/mentor_volunteer.py deleted file mode 100644 index 5f79fce..0000000 --- a/pybot/endpoints/slack/actions/mentor_volunteer.py +++ /dev/null @@ -1,80 +0,0 @@ -import logging - -from sirbot import SirBot -from slack import methods -from slack.actions import Action -from slack.exceptions import SlackAPIError - -from pybot.endpoints.slack.message_templates.mentor_volunteer import MentorVolunteer -from pybot.endpoints.slack.utils import MENTOR_CHANNEL - -logger = logging.getLogger(__name__) - - -async def add_volunteer_skillset(action: Action, app: SirBot) -> None: - slack = app.plugins["slack"].api - - request = MentorVolunteer(action) - - selected_skill = request.selected_option - request.add_skillset(selected_skill["value"]) - await request.update_message(slack) - - -async def clear_volunteer_skillsets(action: Action, app: SirBot) -> None: - slack = app.plugins["slack"].api - - request = MentorVolunteer(action) - - request.clear_skillsets() - await request.update_message(slack) - - -async def submit_mentor_volunteer(action: Action, app: SirBot) -> None: - slack = app.plugins["slack"].api - admin_slack = app.plugins["admin_slack"].api - airtable = app.plugins["airtable"].api - - request = MentorVolunteer(action) - - if not request.validate_self(): - request.add_errors() - await request.update_message(slack) - return - - user_id = action["user"]["id"] - user_info = await slack.query(methods.USERS_INFO, {"user": user_id}) - airtable_fields = await build_airtable_fields(action, request, user_info) - - airtable_response = await airtable.add_record( - "Mentors", {"fields": airtable_fields} - ) - - if "error" in airtable_response: - request.airtable_error(airtable_response) - else: - - try: - await admin_slack.query( - methods.CONVERSATIONS_INVITE, - {"channel": MENTOR_CHANNEL, "users": [user_id]}, - ) - except SlackAPIError as error: - logger.debug("Error during mentor channel invite %s", error.data["errors"]) - - request.on_submit_success() - - await request.update_message(slack) - - -async def build_airtable_fields(action, request, user_info): - username = action["user"]["name"] - email = user_info["user"]["profile"]["email"] - name = user_info["user"]["real_name"] - airtable_fields = { - "Slack Name": username, - "Full Name": name, - "Skillsets": request.skillsets[1:], # hack to filter out empty first option - "Email": email, - } - return airtable_fields diff --git a/pybot/endpoints/slack/actions/new_member.py b/pybot/endpoints/slack/actions/new_member.py deleted file mode 100644 index 0c0c10c..0000000 --- a/pybot/endpoints/slack/actions/new_member.py +++ /dev/null @@ -1,97 +0,0 @@ -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.utils import COMMUNITY_CHANNEL -from pybot.endpoints.slack.utils.action_messages import ( - HELP_MENU_RESPONSES, - base_response, - direct_messaged_attachment, - greeted_attachment, - new_suggestion_text, - not_direct_messaged_attachment, - not_greeted_attachment, - reset_greet_message, - suggestion_dialog, -) - - -async def resource_buttons(action: Action, app: SirBot): - """ - Edits the resource message with the clicked on resource - """ - name = action["actions"][0]["name"] - - response = base_response(action) - response["text"] = HELP_MENU_RESPONSES[name] - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def open_suggestion(action: Action, app: SirBot): - """ - Opens the suggestion modal when the user clicks on the "Are we missing something?" button - """ - trigger_id = action["trigger_id"] - response = {"trigger_id": trigger_id, "dialog": suggestion_dialog(trigger_id)} - - await app.plugins["slack"].api.query(methods.DIALOG_OPEN, response) - - -async def post_suggestion(action: Action, app: SirBot): - """ - Posts a suggestion supplied by the suggestion modal to the community channel - """ - suggesting_user = action["user"]["id"] - suggestion = action["submission"]["suggestion"] - - response = { - "text": new_suggestion_text(suggesting_user, suggestion), - "channel": COMMUNITY_CHANNEL, - } - - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -async def member_greeted(action: Action, app: SirBot): - """ - Called when a community member clicks the button saying they greeted the new member - """ - response = base_response(action) - user_id = action["user"]["id"] - response["attachments"] = greeted_attachment(user_id) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def reset_greet(action: Action, app: SirBot): - """ - Resets the claim greet button back to its initial state and appends the user that hit reset and the time - """ - response = base_response(action) - response["attachments"] = not_greeted_attachment() - response["attachments"][0]["text"] = reset_greet_message(action["user"]["id"]) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def member_messaged(action: Action, app: SirBot): - """ - Called when a outreach team member clicks the button saying they messaged the new member - """ - response = base_response(action) - user_id = action["user"]["id"] - response["attachments"] = direct_messaged_attachment(user_id) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def reset_message(action: Action, app: SirBot): - """ - Resets the claim messaged button back to its initial state and appends the user that hit reset and the time - """ - response = base_response(action) - response["attachments"] = not_direct_messaged_attachment() - response["attachments"][0]["text"] = reset_greet_message(action["user"]["id"]) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) diff --git a/pybot/endpoints/slack/actions/report_message.py b/pybot/endpoints/slack/actions/report_message.py deleted file mode 100644 index 8949ad1..0000000 --- a/pybot/endpoints/slack/actions/report_message.py +++ /dev/null @@ -1,36 +0,0 @@ -import json - -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.utils.action_messages import ( - build_report_message, - report_dialog, -) - - -async def send_report(action: Action, app: SirBot): - """ - Called when a user submits the report dialog. Pulls the original message - info from the state and posts the details to the moderators channel - """ - slack_id = action["user"]["id"] - details = action["submission"]["details"] - message_details = json.loads(action.action["state"]) - - response = build_report_message(slack_id, details, message_details) - - await app["plugins"]["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -async def open_report_dialog(action: Action, app: SirBot): - """ - Opens the message reporting dialog for the user to provide details. - - Adds the message that they're reporting to the dialog's hidden state - to be pulled out when submitted. - """ - trigger_id = action["trigger_id"] - response = {"trigger_id": trigger_id, "dialog": report_dialog(action)} - await app.plugins["slack"].api.query(methods.DIALOG_OPEN, response) diff --git a/pybot/endpoints/slack/commands.py b/pybot/endpoints/slack/commands.py deleted file mode 100644 index c7c61d7..0000000 --- a/pybot/endpoints/slack/commands.py +++ /dev/null @@ -1,159 +0,0 @@ -import logging -import random - -from sirbot import SirBot -from sirbot.plugins.slack import SlackPlugin -from slack import methods -from slack.commands import Command - -from pybot.endpoints.slack.message_templates.commands import ( - mentor_request_blocks, - mentor_volunteer_blocks, - ticket_dialog, -) -from pybot.endpoints.slack.utils import MODERATOR_CHANNEL -from pybot.endpoints.slack.utils.action_messages import not_claimed_attachment -from pybot.endpoints.slack.utils.command_utils import get_slash_repeat_messages -from pybot.endpoints.slack.utils.general_utils import catch_command_slack_error -from pybot.endpoints.slack.utils.slash_lunch import LunchCommand - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin: SlackPlugin): - plugin.on_command("/lunch", slash_lunch, wait=False) - plugin.on_command("/repeat", slash_repeat, wait=False) - plugin.on_command("/report", slash_report, wait=False) - plugin.on_command("/roll", slash_roll, wait=False) - plugin.on_command("/mentor", slash_mentor, wait=False) - plugin.on_command("/mentor-volunteer", slash_mentor_volunteer, wait=False) - - -@catch_command_slack_error -async def slash_mentor(command: Command, app: SirBot): - airtable = app.plugins["airtable"].api - services = await airtable.get_all_records("Services", "Name") - skillsets = await airtable.get_all_records("Skillsets", "Name") - - blocks = mentor_request_blocks(services, skillsets) - - response = { - "text": "Mentor Request Form", - "blocks": blocks, - "channel": command["user_id"], - "as_user": True, - } - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -@catch_command_slack_error -async def slash_mentor_volunteer(command: Command, app: SirBot) -> None: - - response = { - "text": "Please fill up the Mentor Sign up Form here: https://op.co.de/volunteer-signup", - "channel": command["user_id"], - "as_user": True, - } - - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -@catch_command_slack_error -async def slash_report(command: Command, app: SirBot): - """ - Sends text supplied with the /report command to the moderators channel along - with a button to claim the issue - """ - slack_id = command["user_id"] - text = command["text"] - - slack = app["plugins"]["slack"].api - - message = f"<@{slack_id}> sent report: {text}" - - response = { - "text": message, - "channel": MODERATOR_CHANNEL, - "attachments": [not_claimed_attachment()], - } - - await slack.query(methods.CHAT_POST_MESSAGE, response) - - ack = { - "text": f"Your report has been submitted successfully. The moderation team will review. Your Report:\n\n{message}", - "channel": slack_id, - } - - await slack.query(methods.CHAT_POST_MESSAGE, ack) - - -@catch_command_slack_error -async def slash_lunch(command: Command, app: SirBot): - """ - Provides the user with a random restaurant in their area. - """ - logger.debug(command) - lunch = LunchCommand( - command["channel_id"], - command["user_id"], - command.get("text"), - command["user_name"], - ) - - slack = app["plugins"]["slack"].api - - request = lunch.get_yelp_request() - async with app.http_session.get(**request) as r: - r.raise_for_status() - message_params = lunch.select_random_lunch(await r.json()) - - await slack.query(methods.CHAT_POST_EPHEMERAL, message_params) - - -@catch_command_slack_error -async def slash_repeat(command: Command, app: SirBot): - logger.info(f"repeat command data incoming {command}") - channel_id = command["channel_id"] - slack_id = command["user_id"] - slack = app["plugins"]["slack"].api - arguments = command["text"].split(" ") - - method_type, message = get_slash_repeat_messages(slack_id, channel_id, arguments) - - await slack.query(method_type, message) - - -@catch_command_slack_error -async def slash_roll(command: Command, app: SirBot): - """ - Invoked via the command /roll XdY, where X is an integer between 1 and 10, - and y is an integer between 1 and 20. - - Parses the number of dice and the type from the command - """ - slack = app["plugins"]["slack"].api - slack_id = command["user_id"] - channel_id = command["channel_id"] - text = command["text"] - - try: - text = text.lower() - numdice, typedice = [int(num) for num in text.split("d")] - if numdice <= 0 or numdice > 10 or typedice <= 0 or typedice > 20: - raise ValueError - except ValueError: - logger.debug("invalid input to roll: %s", text) - response = dict( - user=slack_id, - channel=channel_id, - text=( - "Sorry, I didn't understand your input. " - "Should be XDYY where X is the number of dice, and YY is the number of sides" - ), - ) - return await slack.query(methods.CHAT_POST_EPHEMERAL, response) - - dice = [random.randint(1, typedice) for _ in range(numdice)] - message = f"<@{slack_id}> Rolled {numdice} D{typedice}: {dice}" - response = dict(channel=channel_id, text=message) - await slack.query(methods.CHAT_POST_MESSAGE, response) diff --git a/pybot/endpoints/slack/events.py b/pybot/endpoints/slack/events.py deleted file mode 100644 index b8027ac..0000000 --- a/pybot/endpoints/slack/events.py +++ /dev/null @@ -1,65 +0,0 @@ -import asyncio -import logging - -from sirbot import SirBot -from slack.events import Event - -from pybot.endpoints.slack.utils.event_utils import ( - build_messages, - get_backend_auth_headers, - link_backend_user, - send_community_notification, - send_user_greetings, - build_delayed_messages, - send_social_cta, -) - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin): - plugin.on_event("team_join", team_join, wait=False) - plugin.on_event("team_join", team_join_delayed, wait=False) - - -async def team_join(event: Event, app: SirBot) -> None: - """ - Handler for when the Slack workspace has a new member join. - - After 30 seconds sends the new user a greeting, some resource links, and - notifies the community channel of the new member. - """ - slack_api = app.plugins["slack"].api - user_id = event["user"]["id"] - - *user_messages, community_message, outreach_team_message = build_messages(user_id) - futures = [ - send_user_greetings(user_messages, slack_api), - send_community_notification(community_message, slack_api), - send_community_notification(outreach_team_message, slack_api), - ] - - logger.info(f"New team join event: {event}") - await asyncio.sleep(30) - await asyncio.wait(futures) - - headers = await get_backend_auth_headers(app.http_session) - if headers: - await link_backend_user(user_id, headers, slack_api, app.http_session) - - -async def team_join_delayed(event: Event, app: SirBot) -> None: - """ - Handler for when the Slack workspace has a new member join. - - After 1 day sends the new user a greeting, a call to action to join social media - """ - slack_api = app.plugins["slack"].api - user_id = event["user"]["id"] - - social_media_messages = build_delayed_messages(user_id) - future = [send_social_cta(social_media_messages, slack_api)] - - logger.info(f"Scheduling delayed message") - await asyncio.sleep(900) - await asyncio.wait(future) diff --git a/pybot/endpoints/slack/message_templates/block_action.py b/pybot/endpoints/slack/message_templates/block_action.py deleted file mode 100644 index ac6b30b..0000000 --- a/pybot/endpoints/slack/message_templates/block_action.py +++ /dev/null @@ -1,95 +0,0 @@ -from __future__ import annotations - -from enum import IntEnum -from typing import Any, Coroutine, MutableMapping, Optional - -from slack import methods -from slack.actions import Action -from slack.io.abc import SlackAPI - - -class BlockAction(Action): - """ - Base class for working with Block format Slack Action events. - See https://api.slack.com/reference/messaging/blocks - and https://api.slack.com/messaging/composing/layouts - """ - - def __init__(self, raw_action: MutableMapping): - super().__init__(raw_action) - - @property - def original_message(self): - return self["message"] - - @property - def channel(self): - return self["channel"]["id"] - - @property - def blocks(self) -> list: - return self.original_message["blocks"] - - @blocks.setter - def blocks(self, value) -> None: - self.original_message["blocks"] = value - - @property - def attachments(self) -> list: - return self.original_message.get("attachments", []) - - @attachments.setter - def attachments(self, value) -> None: - self.original_message["attachments"] = value - - @property - def ts(self) -> str: - return self.original_message["ts"] - - @property - def actions(self): - return self["actions"] - - @property - def selected_option(self) -> Optional[dict]: - if "selected_option" in self.actions[0]: - return self.actions[0]["selected_option"] - return None - - def initial_option(self, index: IntEnum) -> str: - """ - Each section uses the `initial_option` key to store the latest - option selected by the user - """ - accessory = self.blocks[index]["accessory"] - if "initial_option" in accessory: - return accessory["initial_option"]["value"] - return "" - - @property - def update_params(self) -> dict: - return { - "channel": self.channel, - "ts": self.ts, - "blocks": self.blocks, - "attachments": self.attachments, - } - - def validate_self(self) -> bool: - """ - Should be overridden if action has any validation - """ - return True - - def update_message(self, slack: SlackAPI) -> Coroutine[Any, Any, dict]: - return slack.query(methods.CHAT_UPDATE, self.update_params) - - def add_errors(self): - error_attachment = { - "text": ":warning: Error - Cannot submit with current values :warning:", - "color": "danger", - } - self.attachments = [error_attachment] - - def clear_errors(self) -> None: - self.attachments = [] diff --git a/pybot/endpoints/slack/message_templates/commands.py b/pybot/endpoints/slack/message_templates/commands.py deleted file mode 100644 index 656e52a..0000000 --- a/pybot/endpoints/slack/message_templates/commands.py +++ /dev/null @@ -1,211 +0,0 @@ -from typing import List - - -def ticket_dialog(clicker_email, text): - return { - "callback_id": "open_ticket", - "title": "Open New Ticket", - "submit_label": "Submit", - "elements": [ - { - "type": "text", - "label": "Email", - "name": "email", - "subtype": "email", - "value": clicker_email, - }, - {"type": "text", "label": "Request Type", "name": "type", "value": text}, - {"type": "textarea", "label": "Details", "name": "details"}, - ], - } - - -def mentor_request_blocks(services, skillsets): - return [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ( - "👨‍🏫 Mentor Request Form 👩‍🏫\n" - "Thank you for signing up for a 30 minute mentoring session. Please fill out the form below" - ), - }, - }, - {"type": "divider"}, - { - "type": "section", - "block_id": "mentor_service", - "text": {"type": "mrkdwn", "text": "*Service*"}, - "accessory": { - "action_id": "mentor_service_select", - "type": "static_select", - "placeholder": {"type": "plain_text", "text": "Service"}, - "options": [ - {"text": {"type": "plain_text", "text": service}, "value": service} - for service in services - ], - }, - }, - { - "type": "section", - "block_id": "skillset", - "text": {"type": "mrkdwn", "text": "*Mentor Skillsets*\n"}, - "accessory": { - "type": "static_select", - "action_id": "skillset_select", - "placeholder": {"type": "plain_text", "text": "Skillset"}, - "options": [ - { - "text": {"type": "plain_text", "text": skillset}, - "value": skillset, - } - for skillset in sorted(skillsets) - ], - }, - }, - { - "type": "section", - "block_id": "clear_skillsets", - "text": {"type": "mrkdwn", "text": "*Selected Skillsets*"}, - "accessory": { - "type": "button", - "action_id": "clear_skillsets_btn", - "text": {"type": "plain_text", "text": "Reset Skillsets"}, - "value": "reset_skillsets", - }, - }, - { - "type": "section", - "block_id": "comments", - "text": {"type": "mrkdwn", "text": "*Add comments* (required)"}, - "accessory": { - "type": "button", - "action_id": "comments_btn", - "text": {"type": "plain_text", "text": "Add details"}, - "value": "addDetails", - }, - "fields": [{"type": "plain_text", "text": " "}], - }, - { - "type": "section", - "block_id": "affiliation", - "text": { - "type": "mrkdwn", - "text": "*I certify that I am a member of the following group*", - }, - "accessory": { - "type": "static_select", - "action_id": "affiliation_select", - "placeholder": {"type": "plain_text", "text": "Military affiliation"}, - "options": [ - { - "text": {"type": "plain_text", "text": "Veteran"}, - "value": "Veteran", - }, - { - "text": {"type": "plain_text", "text": "Active Duty"}, - "value": "Active Duty", - }, - { - "text": {"type": "plain_text", "text": "Military Spouse"}, - "value": "Military Spouse", - }, - { - "text": {"type": "plain_text", "text": "Non Veteran"}, - "value": "Non Veteran", - }, - ], - }, - }, - {"type": "divider"}, - { - "type": "actions", - "block_id": "submission", - "elements": [ - { - "type": "button", - "action_id": "submit_mentor_btn", - "text": {"type": "plain_text", "text": "Submit"}, - "style": "primary", - "value": "submit", - }, - { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Cancel"}, - "style": "danger", - "value": "cancel", - }, - ], - }, - ] - - -def mentor_volunteer_blocks(skillsets: List[str]) -> List[dict]: - return [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ( - "Thank you for volunteering to be a mentor for the Operation Code community! If you're looking " - "for the mentor request form, please use `/mentor` instead." - ), - }, - }, - {"type": "divider"}, - { - "type": "section", - "block_id": "volunteer_skillset", - "text": { - "type": "mrkdwn", - "text": "*What area(s) are you interested in mentoring in?*", - }, - "accessory": { - "type": "static_select", - "action_id": "skillset_select", - "placeholder": {"type": "plain_text", "text": "Skillset"}, - "options": [ - { - "text": {"type": "plain_text", "text": skillset}, - "value": skillset, - } - for skillset in sorted(skillsets) - ], - }, - }, - { - "type": "section", - "block_id": "clear_volunteer_skillsets", - "text": {"type": "mrkdwn", "text": "*Selected Skillsets*"}, - "fields": [{"type": "plain_text", "text": " ", "emoji": True}], - "accessory": { - "type": "button", - "action_id": "clear_skillsets_btn", - "text": {"type": "plain_text", "text": "Reset Skillsets"}, - "value": "reset_skillsets", - }, - }, - {"type": "divider"}, - { - "type": "actions", - "block_id": "submission", - "elements": [ - { - "type": "button", - "action_id": "submit_mentor_volunteer_btn", - "text": {"type": "plain_text", "text": "Submit"}, - "style": "primary", - "value": "submit", - }, - { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Cancel"}, - "style": "danger", - "value": "cancel", - }, - ], - }, - ] diff --git a/pybot/endpoints/slack/message_templates/mentor_request.py b/pybot/endpoints/slack/message_templates/mentor_request.py deleted file mode 100644 index 6506286..0000000 --- a/pybot/endpoints/slack/message_templates/mentor_request.py +++ /dev/null @@ -1,273 +0,0 @@ -from enum import IntEnum -from typing import Any, Coroutine, MutableMapping, Optional - -from slack import methods -from slack.actions import Action -from slack.io.abc import SlackAPI - -from pybot.endpoints.slack.utils.action_messages import now -from pybot.plugins.airtable.api import AirtableAPI - -from .block_action import BlockAction - - -class BlockIndex(IntEnum): - SERVICE = 2 - SKILLSET = 3 - SELECTED_SKILLSETS = 4 - COMMENTS = 5 - AFFILIATION = 6 - SUBMIT = 8 - - -class MentorRequest(BlockAction): - def __init__(self, raw_action: MutableMapping): - super().__init__(raw_action) - - @property - def service(self): - return self.initial_option(BlockIndex.SERVICE) - - @service.setter - def service(self, new_service): - block = self.blocks[BlockIndex.SERVICE] - block["accessory"]["initial_option"] = new_service - if self.validate_self(): - self.clear_errors() - - @property - def skillsets(self) -> [str]: - if self.skillset_fields: - return [field["text"] for field in self.skillset_fields] - return [] - - @property - def skillset_fields(self) -> list: - return self.blocks[BlockIndex.SELECTED_SKILLSETS].get("fields", []) - - def add_skillset(self, skillset: str) -> None: - """ - Appends the new skillset to the displayed skillsets - """ - if skillset not in self.skillsets: - new_field = {"type": "plain_text", "text": skillset, "emoji": True} - self.blocks[BlockIndex.SELECTED_SKILLSETS].setdefault("fields", []).append( - new_field - ) - - @property - def details(self) -> str: - block = self.blocks[BlockIndex.COMMENTS] - if "fields" in block: - return block["fields"][0]["text"] - return "" - - @details.setter - def details(self, new_details: str) -> None: - field = {"type": "plain_text", "text": new_details} - self.blocks[BlockIndex.COMMENTS]["fields"] = [field] - - @property - def affiliation(self) -> str: - return self.initial_option(BlockIndex.AFFILIATION) - - @affiliation.setter - def affiliation(self, new_affiliation: str) -> None: - self.blocks[BlockIndex.AFFILIATION]["accessory"][ - "initial_option" - ] = new_affiliation - - if self.validate_self(): - self.clear_errors() - - def validate_self(self) -> bool: - if not self.service or not self.affiliation or not self.details: - return False - self.clear_errors() - return True - - def add_errors(self) -> None: - submit_attachment = { - "text": ":warning: Service, group certification and comments are required. :warning:", - "color": "danger", - } - self.attachments = [submit_attachment] - - async def submit_request(self, username: str, email: str, airtable: AirtableAPI): - params = {"Slack User": username, "Email": email, "Status": "Available"} - if self.skillsets: - params["Skillsets"] = self.skillsets - if self.details: - params["Additional Details"] = self.details - - service_records = await airtable.find_records("Services", "Name", self.service) - params["Service"] = [service_records[0]["id"]] - return await airtable.add_record("Mentor Request", {"fields": params}) - - def submission_error( - self, airtable_response, slack: SlackAPI - ) -> Coroutine[Any, Any, dict]: - error_attachment = { - "text": ( - f"Something went wrong.\n" - f'Error Type:{airtable_response["error"]["type"]}\n' - f'Error Message: {airtable_response["error"]["message"]}' - ), - "color": "danger", - } - self.attachments = [error_attachment] - return self.update_message(slack) - - def submission_complete(self, slack: SlackAPI) -> Coroutine[Any, Any, dict]: - done_block = { - "type": "section", - "block_id": "submission", - "text": {"type": "mrkdwn", "text": "Request Submitted Successfully!"}, - "accessory": { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Dismiss", "emoji": True}, - "value": "dismiss", - }, - } - - self.blocks = [done_block] - - return self.update_message(slack) - - def clear_skillsets(self) -> None: - if self.skillset_fields: - del self.blocks[BlockIndex.SELECTED_SKILLSETS]["fields"] - - def clear_errors(self) -> None: - self.attachments = [] - - -class MentorRequestClaim(Action): - def __init__( - self, raw_action: MutableMapping, slack: SlackAPI, airtable: AirtableAPI - ): - super().__init__(raw_action) - self.slack = slack - self.airtable = airtable - self.text = raw_action["original_message"]["text"] - self.attachment = raw_action["original_message"]["attachments"][0] - self.should_update = True - - @property - def trigger(self) -> dict: - return self["actions"][0] - - @property - def click_type(self) -> str: - """ - Value of the button clicked. - """ - return self.trigger["value"] - - def is_claim(self) -> bool: - """ - Returns true if the Claim button was clicked - """ - return self.click_type == "mentee_claimed" - - @property - def record(self) -> str: - """ - Airtable record ID for the mentor request - """ - return self.trigger["name"] - - @property - def clicker(self) -> str: - """ - The Slack User ID of the button clicker - """ - return self["user"]["id"] - - @property - def attachment(self) -> dict: - return self["original_message"]["attachments"][0] - - @attachment.setter - def attachment(self, value: dict) -> None: - self["original_message"]["attachments"][0] = value - - def claim_request(self, mentor_record): - """ - Updates the airtable entry with the given record. - - If record couldn't be found this object's text field is changed - to an error message to be displayed when update_message is called - """ - if mentor_record: - self.attachment = self.mentee_claimed_attachment() - else: - self.attachment[ - "text" - ] = f":warning: <@{self.clicker}>'s slack Email not found in Mentor table. :warning:" - self.should_update = False - - return self.update_airtable(mentor_record) - - def unclaim_request(self): - """ - Changes the attachment to the un-claimed version and deletes the mentor from the - Airtable record - """ - self.attachment = self.mentee_unclaimed_attachment() - return self.update_airtable("") - - async def update_airtable(self, mentor_id: Optional[str]): - if mentor_id is not None: - return await self.airtable.update_request(self.record, mentor_id) - - async def update_message(self): - """ - Builds the slack API call to update the original message - """ - response = { - "channel": self["channel"]["id"], - "ts": self["message_ts"], - "text": self.text, - "attachments": self["original_message"]["attachments"], - } - await self.slack.query(methods.CHAT_UPDATE, response) - - def mentee_claimed_attachment(self) -> dict: - return { - "text": f":100: Request claimed by <@{self.clicker}>:100:\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claim_mentee", - "attachment_type": "default", - "actions": [ - { - "name": f"{self.record}", - "text": "Reset claim", - "type": "button", - "style": "danger", - "value": "reset_claim_mentee", - } - ], - } - - def mentee_unclaimed_attachment(self) -> dict: - return { - "text": f"Reset by <@{self.clicker}> at" - f" ", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claim_mentee", - "attachment_type": "default", - "actions": [ - { - "name": f"{self.record}", - "text": "Claim Mentee", - "type": "button", - "style": "primary", - "value": "mentee_claimed", - } - ], - } diff --git a/pybot/endpoints/slack/message_templates/mentor_volunteer.py b/pybot/endpoints/slack/message_templates/mentor_volunteer.py deleted file mode 100644 index ab49b7a..0000000 --- a/pybot/endpoints/slack/message_templates/mentor_volunteer.py +++ /dev/null @@ -1,99 +0,0 @@ -from enum import IntEnum -from typing import MutableMapping - -from pybot.endpoints.slack.utils import MENTOR_CHANNEL - -from .block_action import BlockAction - - -class VolunteerBlockIndex(IntEnum): - SKILLSET_OPTIONS = 2 - SELECTED_SKILLSETS = 3 - SUBMIT = 5 - - -class MentorVolunteer(BlockAction): - def __init__(self, raw_action: MutableMapping): - super().__init__(raw_action) - - if "original_message" not in self: - self["original_message"] = {} - - @property - def skillsets(self) -> [str]: - skillset_field = self.skillset_field_text - return skillset_field.split("\n") - - @property - def skillset_field_text(self) -> str: - return self.blocks[VolunteerBlockIndex.SELECTED_SKILLSETS]["fields"][0]["text"] - - @skillset_field_text.setter - def skillset_field_text(self, value): - self.blocks[VolunteerBlockIndex.SELECTED_SKILLSETS]["fields"][0]["text"] = value - - def add_skillset(self, skillset: str) -> None: - """ - Appends the new skillset to the displayed skillsets - """ - if skillset not in self.skillsets: - self.skillset_field_text += f"\n{skillset}" - - def clear_skillsets(self) -> None: - self.skillset_field_text = " " - - def validate_self(self): - if not self.skillsets: - return False - - self.clear_errors() - return True - - def add_errors(self) -> None: - submit_attachment = { - "text": ":warning: Please select at least one area. :warning:", - "color": "danger", - } - self.attachments = [submit_attachment] - - def airtable_error(self, airtable_response) -> None: - error_attachment = { - "text": ( - f"Something went wrong.\n" - f'Error Type:{airtable_response["error"]["type"]}\n' - f'Error Message: {airtable_response["error"]["message"]}' - ), - "color": "danger", - } - self.attachments = [error_attachment] - - def on_submit_success(self): - done_blocks = [ - {"type": "section", "text": {"type": "mrkdwn", "text": success_message}}, - { - "type": "actions", - "block_id": "submission", - "elements": [ - { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Dismiss"}, - "value": "dismiss", - } - ], - }, - ] - self.blocks = done_blocks - - -success_message = ( - "Thank you for signing up to be a mentor for Operation Code! You should have been automatically " - f"added to the <#{MENTOR_CHANNEL}|mentors-internal> channel. There is a bot that posts in that " - "channel when someone signs up for a 30 minute session with a mentor. If the skillsets they request " - "match the ones you listed when you signed up, you'll be notified in the thread. Click the green " - "button to claim them and reach out via DM to schedule a slack call. There are also a few pinned " - f"items in that channel that may be helpful. If you have any questions, please DM <@Raz0r|Raz0r>.\n\n" - "We don't currently have a formal long term mentorship program, but if you feel like continuing to " - "keep in contact with any members you speak to, that's perfectly fine.\n\n" - "Thank you for signing up!" -) diff --git a/pybot/endpoints/slack/message_templates/tech.py b/pybot/endpoints/slack/message_templates/tech.py deleted file mode 100644 index 74f8342..0000000 --- a/pybot/endpoints/slack/message_templates/tech.py +++ /dev/null @@ -1,129 +0,0 @@ -import logging -import re -from datetime import datetime, timedelta -from random import choice, random -from typing import Dict, Generator, List, Pattern - -logger = logging.getLogger(__name__) - - -class TechTermsGrabber: - # shared across all instances - TERM_URL = ( - "https://raw.githubusercontent.com/togakangaroo/tech-terms/master/terms.org" - ) - LAST_UPDATE = datetime(2012, 1, 1, 1, 1) - HOURS_BEFORE_REFRESH = 3 - - def __init__(self, app): - self.app = app - - def get_terms(self): - if ( - datetime.now() - timedelta(hours=self.HOURS_BEFORE_REFRESH) - ) > self.LAST_UPDATE: - self.TERMS = self._update_terms() - return self.TERMS - - async def _update_terms(self) -> Dict[str, list]: - two_col_org_row: Pattern[str] = self._compile_regex_from_parts() - - content = await self._grab_data_from_github() - lines: List[str] = content.splitlines() - - return { - x["term"].lower(): f'{x["term"]} is {x["definition"]}' - for x in self._filter_matches(lines, two_col_org_row) - } - - async def _grab_data_from_github(self) -> str: - async with self.app.http_session.get(self.TERM_URL) as r: - r.raise_for_status() - return await r.text(encoding="utf-8") - - def _compile_regex_from_parts(self) -> Pattern[str]: - n_spaces_pipe_n_spaces = "\\s*\\|\\s*" - non_greedy_group_of_chars = ".*?" - regex_string = ( - f"^{n_spaces_pipe_n_spaces}(?P{non_greedy_group_of_chars})" - f"{n_spaces_pipe_n_spaces}(?P{non_greedy_group_of_chars}){n_spaces_pipe_n_spaces}$" - ) - - return re.compile(regex_string) - - def _filter_matches( - self, lines: List[str], two_col_org_row: Pattern[str] - ) -> Generator[dict, None, None]: - for line in lines: - match = two_col_org_row.match(line).groupdict() - if match.get("term") and match.get("definition"): - yield match - - -class TechTerms: - # shared across all instances - TERMS = {} - ADD_GITHUB_CHANCE = 0.25 - - def __init__(self, channel: str, user: str, input_text: str, app): - - self.channel_id = channel - self.user_id = user - self.input_text = self.remove_tech(input_text) - self.app = app - self.response_params = None - - def remove_tech(self, initial_input): - return initial_input.split("!tech", 1)[1] - - async def grab_values(self) -> dict: - if not self.input_text: - return {"message": {"text": self._help_text(), "channel": self.channel_id}} - - else: - if not self.response_params: - await self._parse_input() - - if self.input_text: - return {"message": self._grab_term(term=self.input_text)} - - return {"message": self._grab_term()} - - async def _parse_input(self) -> None: - grabber = TechTermsGrabber(self.app) - self.TERMS = await grabber.get_terms() - - def _help_text(self): - return ( - "Use this to find descriptions of common and useful tech terms. Examples:\n" - + '"!tech Java" or "!tech prolog"' - + self._source_text() - ) - - def _source_text(self): - return ( - "\nTech Terms source: " - ) - - def _convert_key_to_dict(self, key: str, random_val: bool = False) -> dict: - return {"term": key, "random": random_val, "definition": f"{self.TERMS[key]}"} - - def _grab_term(self, term=None): - if term and self.TERMS.get(term.lower().strip()): - term_key: str = term.lower().strip() - return self._build_response_text(self._convert_key_to_dict(term_key)) - - return self._build_response_text(self._random_term()) - - def _build_response_text(self, term: dict) -> dict: - return {"channel": self.channel_id, "text": self._serialize_term(term)} - - def _random_term(self) -> dict: - item = choice(list(self.TERMS.keys())) - return self._convert_key_to_dict(item, random_val=True) - - def _serialize_term(self, term: Dict[str, str]) -> str: - random_text = "Selected random term:\n" - addnl = self._source_text() if random() < self.ADD_GITHUB_CHANCE else "" - - return f'{random_text if term["random"] else ""} {term["definition"]}{addnl}' diff --git a/pybot/endpoints/slack/messages.py b/pybot/endpoints/slack/messages.py deleted file mode 100644 index 04a3a1e..0000000 --- a/pybot/endpoints/slack/messages.py +++ /dev/null @@ -1,98 +0,0 @@ -import logging - -from sirbot import SirBot -from slack import methods -from slack.events import Message - -from .message_templates.tech import TechTerms -from .utils import BOT_URL - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin): - plugin.on_message(r".*", message_changed, subtype="message_changed") - plugin.on_message(r".*", message_deleted, subtype="message_deleted") - plugin.on_message(r".*\!tech", tech_tips) - plugin.on_message(r".*\<\!here\>", here_bad) - plugin.on_message(r".*\<\!channel\>", here_bad) - plugin.on_message(r".*\!pybot", advertise_pybot) - - -def not_bot_message(event: Message): - return ( - "message" not in event - or "subtype" not in event["message"] - or event["message"]["subtype"] != "bot_message" - ) - - -def not_bot_delete(event: Message): - return "previous_message" in event and "bot_id" not in event["previous_message"] - - -async def advertise_pybot(event: Message, app: SirBot): - response = dict( - channel=event["channel"], - text=f"OC-Community-Bot is a community led project\n <{BOT_URL}|source> ", - ) - - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, data=response) - - -async def here_bad(event: Message, app: SirBot) -> None: - if "channel_type" in event and event["channel_type"] != "im": - user = event.get("user") - user_id = f"<@{user}>" if user else "Hey you" - await app.plugins["slack"].api.query( - methods.CHAT_POST_MESSAGE, - data=dict( - channel=event["channel"], - text=f"{user_id} - this had better be important!", - ), - ) - - -async def tech_tips(event: Message, app: SirBot): - if not_bot_message(event): - logger.info(f"tech tips logging: {event}") - try: - tech_terms = await TechTerms( - event["channel"], event["user"], event.get("text"), app - ).grab_values() - await app.plugins["slack"].api.query( - methods.CHAT_POST_MESSAGE, tech_terms["message"] - ) - - except Exception: - logger.debug(f"Exception thrown while logging message_changed {event}") - - -async def message_changed(event: Message, app: SirBot): - """ - Logs all message edits not made by a bot. - """ - try: - # need to check for bot_delete as deletes with replies that - # result in a "tombstone" also send as edits - if not_bot_message(event) and not_bot_delete(event): - logger.info( - f'CHANGE_LOGGING: edited: {event["ts"]} for user: {event["previous_message"]["user"]}\n{event}' - ) - except ValueError as e: - logger.debug( - f"Exception thrown while logging message_changed. Event: {event} || Error: {e}" - ) - - -async def message_deleted(event: Message, app: SirBot): - """ - Logs all message deletions not made by a bot. - """ - try: - if not_bot_delete(event): - logger.info(f'CHANGE_LOGGING: deleted: {event["ts"]}\nEvent: {event}') - except ValueError as e: - logger.debug( - f"Exception thrown while logging message_deleted. Event: {event} || Error: {e}" - ) diff --git a/pybot/endpoints/slack/utils/__init__.py b/pybot/endpoints/slack/utils/__init__.py deleted file mode 100644 index 69e0088..0000000 --- a/pybot/endpoints/slack/utils/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -import os - -BOT_USER_OAUTH_ACCESS_TOKEN = os.environ.get("BOT_USER_OAUTH_ACCESS_TOKEN") -BOT_OAUTH_TOKEN = os.environ.get("BOT_OAUTH_TOKEN") -BOT_OATH_TOKEN = os.environ.get("BOT_OATH_TOKEN") -MENTOR_CHANNEL = os.environ.get("MENTOR_CHANNEL", "mentors-internal") -COMMUNITY_CHANNEL = os.environ.get("COMMUNITY_CHANNEL", "greetings") -MODERATOR_CHANNEL = os.environ.get("MODERATOR_CHANNEL", "moderators") -OPS_CHANNEL = os.environ.get("OPS_CHANNEL", "oc-ops") -SLACK_BOT_USER_ID = os.environ.get("SLACK_BOT_USER_ID", "ABC123") -SLACK_BOT_ID = os.environ.get("SLACK_BOT_ID", "ABC123") -YELP_TOKEN = os.environ.get("YELP_TOKEN", "token") -PORT = os.environ.get("SIRBOT_PORT", 5000) -HOST = os.environ.get("SIRBOT_ADDR", "0.0.0.0") -PYBOT_ENV = os.environ.get("PYBOT_ENV", "dev") -BACKEND_URL = os.environ.get("BACKEND_URL", "https://api.operationcode.org") -BACKEND_USERNAME = os.environ.get("BACKEND_USERNAME", "Pybot@test.test") -BACKEND_PASS = os.environ.get("BACKEND_PASS", "fakePassword") - -BOT_URL = "https://github.com/OperationCode/operationcode-pybot" - -slack_configs = { - "token": BOT_USER_OAUTH_ACCESS_TOKEN - or BOT_OAUTH_TOKEN - or BOT_OATH_TOKEN, # fallback for old values - "signing_secret": os.environ.get("SLACK_BOT_SIGNING_SECRET"), - "verify": os.environ.get("VERIFICATION_TOKEN"), - "bot_id": SLACK_BOT_ID, - "bot_user_id": SLACK_BOT_USER_ID, -} diff --git a/pybot/endpoints/slack/utils/action_messages.py b/pybot/endpoints/slack/utils/action_messages.py deleted file mode 100644 index 4ff97f0..0000000 --- a/pybot/endpoints/slack/utils/action_messages.py +++ /dev/null @@ -1,366 +0,0 @@ -import json -from time import time -from typing import List - -from pybot.endpoints.slack.utils import MODERATOR_CHANNEL - -TICKET_OPTIONS = { - "notStarted": "Not Started", - "inProgress": "In-progress", - "waitingOnUser": "Waiting on User", - "rejected": "Rejected", - "duplicate": "Mark as Duplicate", - "complete": "Complete", -} - - -def now(): - """ - This has to be pulled out into its own method so a mock can - be injected for testing purposes - """ - return int(time()) - - -def base_response(action): - response = { - "text": action["original_message"].get("text", None), - "channel": action["channel"]["id"], - "ts": action["message_ts"], - } - return response - - -def update_ticket_message(action, selected_value): - user = action["user"]["id"] - update_message = ( - f"<@{user}> updated status to {selected_value} at " - f"" - ) - return { - "text": update_message, - "channel": action["channel"]["id"], - "thread_ts": action["message_ts"], - } - - -def updated_ticket_status(action): - selected_option = action["actions"][0]["selected_options"][0] - selected_option["text"] = TICKET_OPTIONS[selected_option["value"]] - - updated_attachments = action["original_message"]["attachments"] - updated_attachments[0]["actions"][0]["selected_options"] = [selected_option] - response = {**base_response(action), "attachments": updated_attachments} - return response, selected_option - - -def ticket_attachments(action): - user_id = action["user"]["id"] - request_type = action["submission"]["type"] - email = action["submission"]["email"] - details = action["submission"]["details"] - attachments = [ - { - "text": "", - "callback_id": "ticket_status", - "response_type": "in_channel", - "fallback": "request details should have been here", - "fields": [ - {"title": "User", "value": f"<@{user_id}>", "short": True}, - {"title": "Email", "value": f"{email}", "short": True}, - {"title": "Request Type", "value": f"{request_type}", "short": True}, - {"title": "Details", "value": f"{details}", "short": True}, - ], - "actions": [ - { - "name": "status", - "text": "Current Status", - "type": "select", - "selected_options": [ - {"text": "Not Started", "value": "notStarted"} - ], - "options": [ - {"text": text, "value": value} - for value, text in TICKET_OPTIONS.items() - ], - } - ], - }, - not_claimed_attachment(), - ] - return attachments - - -def greeted_attachment(user_id: str) -> List[dict]: - return [ - { - "text": f":100:<@{user_id}> has greeted the new user!:100:\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "greeted", - "attachment_type": "default", - "actions": [ - { - "name": "reset_greet", - "text": "Reset claim", - "type": "button", - "style": "danger", - "value": "reset_greet", - } - ], - } - ] - - -def not_greeted_attachment(): - return [ - { - "text": "", - "fallback": "Someone should greet them!", - "color": "#3AA3E3", - "callback_id": "greeted", - "attachment_type": "default", - "actions": [ - { - "name": "greeted", - "text": "I will greet them!", - "type": "button", - "style": "primary", - "value": "greeted", - } - ], - } - ] - - -def direct_messaged_attachment(user_id: str) -> List[dict]: - return [ - { - "text": f":100:<@{user_id}> has DMed the new user!:100:\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "messaged", - "attachment_type": "default", - "actions": [ - { - "name": "reset_message", - "text": f"Reset DM", - "type": "button", - "style": "danger", - "value": "reset_message", - } - ], - } - ] - - -def not_direct_messaged_attachment(): - return [ - { - "text": "", - "fallback": "Someone should DM them!", - "color": "#3AA3E3", - "callback_id": "messaged", - "attachment_type": "default", - "actions": [ - { - "name": "messaged", - "text": "I will DM them!", - "type": "button", - "style": "primary", - "value": "messaged", - } - ], - } - ] - - -def not_claimed_attachment(): - return { - "text": "", - "fallback": "not claimed attachment", - "color": "#3AA3E3", - "callback_id": "claimed", - "attachment_type": "default", - "short": True, - "actions": [ - { - "name": "claimed", - "text": "Claim", - "type": "button", - "style": "primary", - "value": "claimed", - } - ], - } - - -def claimed_attachment(user_id): - return { - "text": f"Claimed by <@{user_id}>\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claimed", - "attachment_type": "default", - "actions": [ - { - "name": "reset_claim", - "text": "Reset claim", - "type": "button", - "style": "danger", - "value": "reset_claim", - } - ], - } - - -def reset_greet_message(user_id): - return ( - f"Reset by <@{user_id}> at" - f" " - ) - - -def suggestion_dialog(trigger_id): - return { - "callback_id": "suggestion_modal", - "title": "Help topic suggestion", - "submit_label": "Submit", - "trigger_id": trigger_id, - "elements": [ - { - "type": "text", - "label": "Suggestion", - "name": "suggestion", - "placeholder": "Underwater Basket Weaving", - } - ], - } - - -def report_dialog(action): - trigger_id = action["trigger_id"] - - user = action["message"].get("user") or action["message"].get( - "username" - ) # for bots - message_data = { - "text": action["message"]["text"], - "user": user, - "channel": action["channel"], - } - return { - "callback_id": "report_dialog", - "state": json.dumps(message_data), - "title": "Report details", - "submit_label": "Submit", - "trigger_id": trigger_id, - "elements": [ - { - "type": "textarea", - "label": "Details", - "name": "details", - "placeholder": "", - "required": False, - } - ], - } - - -def build_report_message(slack_id, details, message_details): - message = f"<@{slack_id}> sent a report with details: {details}" - - attachment = [ - { - "fields": [ - { - "title": "User", - "value": f"<@{message_details['user']}>", - "short": True, - }, - { - "title": "Channel", - "value": f"<#{message_details['channel']['id']}|{message_details['channel']['name']}>", - "short": True, - }, - {"title": "Message", "value": message_details["text"], "short": False}, - ] - }, - not_claimed_attachment(), - ] - - return {"text": message, "channel": MODERATOR_CHANNEL, "attachments": attachment} - - -def mentor_details_dialog(action, cur_details): - trigger_id = action["trigger_id"] - ts = action["message"]["ts"] - - return { - "callback_id": "mentor_details_submit", - "state": json.dumps({"ts": ts, "channel": action["channel"]["id"]}), - "title": "Additional Details", - "submit_label": "Submit", - "trigger_id": trigger_id, - "elements": [ - { - "type": "textarea", - "label": "Details", - "name": "details", - "placeholder": "", - "required": False, - "value": cur_details, - } - ], - } - - -def new_suggestion_text(user_id: str, suggestion: str) -> str: - return f":exclamation:<@{user_id}> just submitted a suggestion for a help topic:exclamation:\n-- {suggestion}" - - -HELP_MENU_RESPONSES = { - "slack": "Slack is an online chatroom service that the Operation Code community uses.\n" - "It can be accessed online, via https://operation-code.slack.com/ or via\n" - "desktop or mobile apps, located at https://slack.com/downloads/. In addition to\n" - "chatting, Slack also allows us to share files, audio conference and even program\n" - "our own bots! Here are some tips to get you started:\n" - " - You can customize your notifications per channel by clicking the gear to the\n" - " left of the search box\n" - " - Join as many channels as you want via the + next to Channels in the side bar.", - "python": "Python is a widely used high-level programming language used for general-purpose programming.\n" - "It's very friendly for beginners and is great for everything from web development to \n" - "data science.\n\n" - "Here are some python resources:\n" - " Operation Code Python Room: <#C04D6M3JT|python>\n" - " Python's official site: https://www.python.org/\n" - " Learn Python The Hard Way: https://learnpythonthehardway.org/book/\n" - " Automate The Boring Stuff: https://automatetheboringstuff.com/", - "mentor": "The Operation Code mentorship program aims to pair you with an experienced developer in order to" - " further your programming or career goals. When you sign up for our mentorship program you'll fill" - " out a form with your interests. You'll then be paired up with an available mentor that best meets" - " those interests.\n\n" - "If you're interested in getting paired with a mentor, please fill out our sign up form" - " here: http://op.co.de/mentor-request.\n ", - "javascript": "Javascript is a high-level programming language used for general-purpose programming.\n" - "In recent years it has exploded in popularity and with the popular node.js runtime\n" - "environment it can run anywhere from the browser to a server.\n\n" - "Here are some javascript resources:\n Operation Code Javascript Room: <#C04CJ8H2S|javascript>\n" - " Javascript Koans: https://github.com/mrdavidlaing/javascript-koans\n" - " Eloquent Javascript: http://eloquentjavascript.net/\n" - " Node School: http://nodeschool.io/\n" - " Node University: http://node.university/courses", - "ruby": "Ruby is one of the most popular languages to learn as a beginner.\n" - "While it can be used in any situation it's most popular for it's\n" - "web framework 'Rails' which allows people to build websites quickly \n" - "and easily.\n\n" - "Here are some ruby resources:\n" - " Operation Code Ruby Room: <#C04D6GTGT|ruby>\n" - " Try Ruby Online: http://tryruby.org/\n" - " Learn Ruby The Hard Way: http://ruby.learncodethehardway.org/book\n" - " Learn To Program: http://pine.fm/LearnToProgram/\n" - " Ruby Koans: http://rubykoans.com/", -} diff --git a/pybot/endpoints/slack/utils/command_utils.py b/pybot/endpoints/slack/utils/command_utils.py deleted file mode 100644 index 6d6dec4..0000000 --- a/pybot/endpoints/slack/utils/command_utils.py +++ /dev/null @@ -1,20 +0,0 @@ -from slack import methods - -from pybot.endpoints.slack.utils.slash_repeat import repeat_items - - -def get_slash_repeat_messages(user_id, channel, arguments): - response_type = { - "ephemeral": methods.CHAT_POST_EPHEMERAL, - "message": methods.CHAT_POST_MESSAGE, - } - - values_dict = repeat_items(arguments, user_id, channel) - return response_type[values_dict["type"]], values_dict["message"] - - -def action_value(attachment): - action = attachment["actions"][0] - if "selected_options" in action: - return action["selected_options"][0]["value"] - return "" diff --git a/pybot/endpoints/slack/utils/event_messages.py b/pybot/endpoints/slack/utils/event_messages.py deleted file mode 100644 index 709de9a..0000000 --- a/pybot/endpoints/slack/utils/event_messages.py +++ /dev/null @@ -1,124 +0,0 @@ -from typing import List - - -def team_join_initial_message(user_id: str) -> str: - return ( - f"Hi <@{user_id}>,\n\n" - "Welcome to Operation Code! I'm a bot designed to help answer questions and " - "get you on your way in our community.\n\n " - "Our goal here at Operation Code is to get veterans and their families started on the path to a career " - "in programming. We do that through providing you with scholarships, mentoring, career development " - "opportunities, conference tickets, and more!\n" - ) - - -def second_team_join_message() -> str: - return ( - "Much of the provided aid requires veteran or military spouse status. Please verify your status on " - "your profile at https://operationcode.org/ if you haven't already.\n\n" - "You're currently in Slack, a chat application that serves as the hub of Operation Code. " - "If you're visiting us via your browser, Slack provides a stand alone program to make staying in " - "touch even more convenient.\n\n" - "All active Operation Code projects are located on our source control repository. " - "Our projects can be viewed on GitHub\n\n" - "Lastly, please take a moment to review our Code of Conduct." - ) - - -def third_team_join_message() -> str: - return f"If this is your first time using Slack, please watch this to get familiar with the app." - - -def delayed_team_join_message() -> str: - return ( - f"Welcome to Operation Code's Slack Community, we're glad you're here! " - f"Please share with us in #general what brings you to Operation Code, " - f"and how we can assist you. Also, consider adding to your Operation Code " - f"profile the links to your LinkedIn and GitHub accounts. " - f"Lastly, consider connecting with us on our social media accounts: " - f", " - f", " - f", " - f" and " - f"" - f", and contribute to our open source platform on " - f". If you have any immediate needs, " - f"please tag our @outreach-team in any public channel. " - ) - - -def external_button_attachments() -> List[dict]: - return [ - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "external_buttons", - "attachment_type": "default", - "actions": [ - { - "name": "github", - "text": "GitHub", - "type": "button", - "value": "github", - "url": "https://github.com/OperationCode", - }, - { - "name": "download", - "text": "Slack Client", - "type": "button", - "value": "download", - "url": "https://slack.com/downloads", - }, - { - "name": "code_of_conduct", - "text": "Code of Conduct", - "type": "button", - "value": "code_of_conduct", - "url": "https://github.com/OperationCode/community/blob/master/code_of_conduct.md", - }, - ], - } - ] - - -def base_resources(): - return [ - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "resource_buttons", - "attachment_type": "default", - "actions": [ - { - "name": "javascript", - "text": "JavaScript", - "type": "button", - "value": "javascript", - }, - { - "name": "python", - "text": "Python", - "type": "button", - "value": "python", - }, - {"name": "ruby", "text": "Ruby", "type": "button", "value": "ruby"}, - ], - }, - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "suggestion", - "attachment_type": "default", - "actions": [ - { - "name": "suggestion_button", - "text": "Are we missing something? Click!", - "type": "button", - "value": "suggestion_button", - } - ], - }, - ] diff --git a/pybot/endpoints/slack/utils/event_utils.py b/pybot/endpoints/slack/utils/event_utils.py deleted file mode 100644 index 6d810c3..0000000 --- a/pybot/endpoints/slack/utils/event_utils.py +++ /dev/null @@ -1,144 +0,0 @@ -import logging -from typing import Dict, List, Tuple - -from aiohttp import ClientSession -from slack import methods -from slack.events import Message -from slack.io.abc import SlackAPI - -from pybot.endpoints.slack.utils import ( - BACKEND_PASS, - BACKEND_URL, - BACKEND_USERNAME, - COMMUNITY_CHANNEL, -) -from pybot.endpoints.slack.utils.action_messages import ( - not_direct_messaged_attachment, - not_greeted_attachment, -) -from pybot.endpoints.slack.utils.event_messages import ( - base_resources, - external_button_attachments, - second_team_join_message, - team_join_initial_message, - delayed_team_join_message, - third_team_join_message, -) - -logger = logging.getLogger(__name__) - - -def base_user_message(user_id: str) -> Message: - message = Message() - message["channel"] = user_id - message["as_user"] = True - return message - - -def build_messages( - user_id, -) -> Tuple[Message, Message, Message, Message, Message, Message]: - initial_message = base_user_message(user_id) - initial_message["text"] = team_join_initial_message(user_id) - - second_message = base_user_message(user_id) - second_message["text"] = second_team_join_message() - second_message["attachments"] = external_button_attachments() - - third_message = base_user_message(user_id) - third_message["text"] = third_team_join_message() - - action_menu = base_user_message(user_id) - action_menu["text"] = "We recommend the following resources." - action_menu["attachments"] = base_resources() - - community_message = Message() - community_message["text"] = f":tada: <@{user_id}> has joined! :tada:" - community_message["attachments"] = not_greeted_attachment() - community_message["channel"] = COMMUNITY_CHANNEL - - outreach_team_message = Message() - outreach_team_message["text"] = ( - f":spiral_note_pad: Outreach Team: Please reach out to <@{user_id}> via DM" - f":spiral_note_pad: " - ) - outreach_team_message["attachments"] = not_direct_messaged_attachment() - outreach_team_message["channel"] = COMMUNITY_CHANNEL - - return ( - initial_message, - second_message, - third_message, - action_menu, - community_message, - outreach_team_message, - ) - - -def build_delayed_messages(user_id) -> Tuple[Message]: - social_media_message = base_user_message(user_id) - social_media_message["text"] = delayed_team_join_message() - - return (social_media_message,) - - -async def send_user_greetings( - user_messages: List[Message], slack_api: SlackAPI -) -> None: - for message in user_messages: - await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=message) - - -async def send_community_notification( - community_message: Message, slack_api: SlackAPI -) -> dict: - return await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=community_message) - - -async def send_social_cta( - social_media_messages: List[Message], slack_api: SlackAPI -) -> None: - for message in social_media_messages: - await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=message) - - -async def link_backend_user( - slack_id: str, - auth_header: Dict[str, str], - slack_api: SlackAPI, - session: ClientSession, -) -> None: - """ - Updates the slack user with their profile in the backend - """ - - user_info = await slack_api.query(methods.USERS_INFO, {"user": slack_id}) - email = user_info["user"]["profile"]["email"] - - async with session.patch( - f"{BACKEND_URL}/auth/profile/admin/", - headers=auth_header, - params={"email": email}, - json={"slackId": slack_id}, - ) as response: - data = await response.json() - logger.info(f"Backend response from user linking: {data}") - - -async def get_backend_auth_headers(session: ClientSession) -> Dict[str, str]: - """ - Authenticates with the OC Backend server - - :return: Authorization header containing the returned JWT - """ - async with session.post( - f"{BACKEND_URL}/auth/login/", - json={"email": BACKEND_USERNAME, "password": BACKEND_PASS}, - ) as response: - if 400 <= response.status: - logger.exception("Failed to authenticate with backend") - return {} - response.raise_for_status() - data = await response.json() - headers = {"Authorization": f"Bearer {data['token']}"} - return headers diff --git a/pybot/endpoints/slack/utils/general_utils.py b/pybot/endpoints/slack/utils/general_utils.py deleted file mode 100644 index 5399856..0000000 --- a/pybot/endpoints/slack/utils/general_utils.py +++ /dev/null @@ -1,42 +0,0 @@ -import functools - -from sirbot import SirBot -from slack.commands import Command -from slack.exceptions import SlackAPIError -from slack.methods import Methods - - -def catch_command_slack_error(func): - """ - Decorator for wrapping/catching exceptions thrown by - the slack client and displaying an error to the user. - - Only necessary (for now) for functions that post messages to - slack channels - """ - - @functools.wraps(func) - async def handler(command: Command, app: SirBot, *args, **kwargs): - try: - await func(command, app, *args, **kwargs) - - except SlackAPIError: - channel_id = command["channel_id"] - slash_command = command["command"] - slack_id = command["user_id"] - slack = app["plugins"]["slack"] - - await slack.api.query( - Methods.CHAT_POST_EPHEMERAL, - dict( - user=slack_id, - channel=slack_id, - as_user=True, - text=( - f"Could not post result of `{slash_command}` " - f"to channel <#{channel_id}>" - ), - ), - ) - - return handler diff --git a/pybot/endpoints/slack/utils/slash_lunch.py b/pybot/endpoints/slack/utils/slash_lunch.py deleted file mode 100644 index 250ce90..0000000 --- a/pybot/endpoints/slack/utils/slash_lunch.py +++ /dev/null @@ -1,124 +0,0 @@ -import logging -from random import randint -from typing import List - -from zipcodes import is_real - -from pybot.endpoints.slack.utils import YELP_TOKEN - -logger = logging.getLogger(__name__) - - -class LunchCommand: - DEFAULT_LUNCH_DISTANCE = 20 - MIN_LUNCH_RANGE = 1 - AUTH_HEADER = {"Authorization": f"Bearer {YELP_TOKEN}"} - - def __init__(self, channel: str, user: str, input_text: str, user_name: str): - - self.channel_id = channel - self.user_id = user - self.input_text = input_text - self.user_name = user_name - - self.lunch_api_params = self._parse_input() - - def get_yelp_request(self): - return { - "url": "https://api.yelp.com/v3/businesses/search", - "params": self.lunch_api_params, - "headers": self.AUTH_HEADER, - } - - def select_random_lunch(self, lunch_response: dict) -> dict: - location_count = len(lunch_response["businesses"]) - - selected_location = randint(0, location_count - 1) - location = lunch_response["businesses"][selected_location] - - logger.info(f"location selected for {self.user_name}: {location}") - - return self._build_response_text(location) - - # TODO: add test cases for various inputs - # TODO: allow user to set defaults - def _parse_input(self) -> dict: - if not self.input_text: - return { - "location": self._random_zip(), - "range": self._convert_to_meters(self.DEFAULT_LUNCH_DISTANCE), - "term": "lunch", - } - - else: - split_items = self.input_text.split() - zipcode = self._get_zipcode(split_items[0]) - distance = self._get_distance(split_items) - return {"location": zipcode, "range": distance, "term": "lunch"} - - def _get_distance(self, split_items: List[str]): - distance_index = min(len(split_items), 2) - 1 - - str_distance = split_items[distance_index] - distance = self._convert_max_distance(str_distance) - - if not self._within_lunch_range(distance): - distance = self.DEFAULT_LUNCH_DISTANCE - - return self._convert_to_meters(distance) - - def _build_response_text(self, loc_dict: dict) -> dict: - return { - "user": self.user_id, - "channel": self.channel_id, - "text": ( - f'The Wheel of Lunch has selected {loc_dict["name"]} ' - + f'at {" ".join(loc_dict["location"]["display_address"])}' - ), - } - - @classmethod - def _get_zipcode(cls, zipcode: str) -> int: - try: - - if is_real(zipcode): - return int(zipcode) - except TypeError: - pass - - return cls._random_zip() - - @staticmethod - def _random_zip() -> int: - """ - Because what doesn't matter is close food but good food - :return: zip_code - :rtype: str - """ - random_zip = 0 - while not is_real(str(random_zip)): - range_start = 10 ** 4 - range_end = (10 ** 5) - 1 - random_zip = randint(range_start, range_end) - - return random_zip - - def _within_lunch_range(self, input_number: int) -> bool: - return input_number <= self.DEFAULT_LUNCH_DISTANCE - - def _convert_max_distance(self, user_param: str) -> int: - - try: - distance = int(user_param) - - if distance < 0: - distance = abs(distance) - - return max(distance, self.MIN_LUNCH_RANGE) - - except ValueError: - return self.DEFAULT_LUNCH_DISTANCE - - @classmethod - def _convert_to_meters(cls, distance): - return int(distance * 1609.34) diff --git a/pybot/endpoints/slack/utils/slash_repeat.py b/pybot/endpoints/slack/utils/slash_repeat.py deleted file mode 100644 index 45ba2a6..0000000 --- a/pybot/endpoints/slack/utils/slash_repeat.py +++ /dev/null @@ -1,101 +0,0 @@ -from typing import Iterable - - -# TODO: use the github api to find the file even if location changes -def find_resources() -> dict: - return { - "link": "https://operationcode.org/resources", - "title": "A searchable database of learning resources", - "pretext": "Would you like some learning resources?", - } - - -def ask() -> dict: - return { - "link": "http://sol.gfxile.net/dontask.html", - "title": "Asking Questions", - "pretext": "You can just ask, we're all here to help", - } - - -def default_repeat_message(message_options: Iterable) -> str: - return "That is not a valid option valid options are:\n " + "".join( - [f'->\t"{key}"\n' for key in message_options] - ) - - -def modify_params(modify_options: dict) -> dict: - message = { - "channel": modify_options["channel_id"], - "attachments": [ - { - "pretext": "Text before block", - "title": "Text of link", - "title_link": "https://groove.hq/path/to/ticket/1943", - } - ], - } - - message["attachments"][0]["pretext"] = ( - f'<{modify_options["arguments"][1]}>: {modify_options["pretext"]} (sent by: <@{modify_options["slack_id"]}>)' - if len(modify_options["arguments"]) >= 2 - else f'<@{modify_options["slack_id"]}>: {modify_options["pretext"]}' - ) - message["attachments"][0]["title_link"] = modify_options["link"] - - return message - - -def repeat_items(arguments: list, slack_id: str, channel_id: str) -> dict: - # TODO: get better way of only showing unique values - # for keys instead of my wonky way of adding more options - messages = { - "10000": { - "link": "https://xkcd.com/1053/", - "title": "XKCD: lucky", - "pretext": "Looks like you're one of the lucky 10,000 today!", - }, - "ask": ask(), - "asking": ask(), - "ldap": { - "link": "http://large-type.com/#yes", - "title": "Is someone complaining about LDAP?", - "pretext": "What's that I hear about LDAP?", - }, - "merge": { - "link": "http://large-type.com/#WILL", - "title": "Who is that force merging to master?", - "pretext": "git push -f origin master", - }, - "firstpr": { - "link": "https://goo.gl/forms/r02wt0pBNhkxYciI3", - "title": "Get your sticker here!", - "pretext": ":firstpr:", - }, - "channels": { - "link": "https://github.com/OperationCode/operationcode_docs/blob/master/community/slack_channel_guide.md", - "title": "Channel Guide!", - "pretext": "Check out the Channel Guide!", - }, - # TODO: make this into a url call. - "resources": find_resources(), - "resource": find_resources(), - } - - modify_options = messages.get(arguments[0].lower()) - - if modify_options: - modify_options["slack_id"] = slack_id - modify_options["channel_id"] = channel_id - modify_options["arguments"] = arguments - - return {"type": "message", "message": modify_params(modify_options)} - else: - return { - "type": "ephemeral", - "message": { - "channel": channel_id, - "user": slack_id, - "text": default_repeat_message(messages.keys()), - }, - } diff --git a/pybot/plugins/__init__.py b/pybot/plugins/__init__.py deleted file mode 100644 index 9833b8a..0000000 --- a/pybot/plugins/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .airtable import AirtablePlugin -from .api import APIPlugin diff --git a/pybot/plugins/airtable/__init__.py b/pybot/plugins/airtable/__init__.py deleted file mode 100644 index 82e39ce..0000000 --- a/pybot/plugins/airtable/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .plugin import AirtablePlugin diff --git a/pybot/plugins/airtable/api.py b/pybot/plugins/airtable/api.py deleted file mode 100644 index 74db32a..0000000 --- a/pybot/plugins/airtable/api.py +++ /dev/null @@ -1,146 +0,0 @@ -import logging -from collections import defaultdict - -from multidict import MultiDict - -logger = logging.getLogger(__name__) - - -class AirtableAPI: - API_ROOT = "https://api.airtable.com/v0/" - record_id_to_name = defaultdict(dict) - - def __init__(self, session, api_key, base_key): - self.session = session - self.api_key = api_key - self.base_key = base_key - - async def get(self, url, **kwargs): - auth_header = {"Authorization": f"Bearer {self.api_key}"} - - async with self.session.get(url, headers=auth_header, **kwargs) as r: - return await r.json() - - async def patch(self, url, **kwargs): - auth_header = {"authorization": f"Bearer {self.api_key}"} - async with self.session.patch(url, headers=auth_header, **kwargs) as r: - r.raise_for_status() - return await r.json() - - async def post(self, url, **kwargs): - auth_header = {"authorization": f"Bearer {self.api_key}"} - async with self.session.post(url, headers=auth_header, **kwargs) as r: - return await r.json() - - async def _depaginate_records(self, url, params, offset): - records = [] - while offset: - params["offset"] = offset - response = await self.get(url, params=params) - records.extend(response["records"]) - offset = response.get("offset") - - return records - - def table_url(self, table_name, record_id=None): - url = f"{self.API_ROOT}{self.base_key}/{table_name}" - if record_id: - url += f"/{record_id}" - return url - - async def get_name_from_record_id(self, table_name: str, record_id): - if self.record_id_to_name[table_name]: - return self.record_id_to_name[table_name][record_id] - - url = self.table_url("Services") - params = {"fields[]": "Name"} - res_json = await self.get(url, params=params) - records = res_json["records"] - self.record_id_to_name[table_name] = { - record["id"]: record["fields"]["Name"] for record in records - } - return self.record_id_to_name[table_name][record_id] - - async def get_row_from_record_id(self, table_name: str, record_id: str) -> dict: - url = self.table_url(table_name, record_id) - try: - res_json = await self.get(url) - return res_json["fields"] - except Exception as ex: - logger.exception( - f"Couldn't get row from record id {record_id} in {table_name}", ex - ) - return {} - - async def get_all_records(self, table_name, field=None): - url = self.table_url(table_name) - if field: - params = {"fields[]": field} - res_json = await self.get(url, params=params) - return [record["fields"][field] for record in res_json["records"]] - else: - res_json = await self.get(url) - return res_json["records"] - - async def find_mentors_with_matching_skillsets(self, skillsets): - url = self.table_url("Mentors") - params = MultiDict( - [("fields", "Email"), ("fields", "Skillsets"), ("fields", "Slack Name")] - ) - skillsets = skillsets.split(",") - response = await self.get(url, params=params) - offset = response.get("offset") - mentors = response["records"] - - if offset: - additional_mentors = await self._depaginate_records(url, params, offset) - mentors.extend(additional_mentors) - - partial_match = [] - complete_match = [] - try: - for mentor in mentors: - if all( - skillset in mentor["fields"].get("Skillsets", []) - for skillset in skillsets - ): - complete_match.append(mentor["fields"]) - if any( - mentor["fields"] not in complete_match - and skillset in mentor["fields"].get("Skillsets", []) - for skillset in skillsets - ): - partial_match.append(mentor["fields"]) - except Exception as e: - logger.exception( - "Exception while trying to find filter mentors by skillset", e - ) - return [] - - if len(complete_match) < 5: - complete_match += partial_match - - return complete_match or partial_match - - async def find_records(self, table_name: str, field: str, value: str) -> list: - url = self.table_url(table_name) - - params = {"filterByFormula": f"FIND(LOWER('{value}'), LOWER({{{field}}}))"} - - try: - response = await self.get(url, params=params) - return response["records"] - except Exception as ex: - logger.exception( - f"Exception when attempting to get {field} from {table_name}.", ex - ) - return [] - - async def update_request(self, request_record, mentor_id): - url = self.table_url("Mentor Request", request_record) - data = {"fields": {"Mentor Assigned": [mentor_id] if mentor_id else None}} - return await self.patch(url, json=data) - - async def add_record(self, table, json): - url = self.table_url(table) - return await self.post(url, json=json) diff --git a/pybot/plugins/airtable/endpoints.py b/pybot/plugins/airtable/endpoints.py deleted file mode 100644 index 2613f25..0000000 --- a/pybot/plugins/airtable/endpoints.py +++ /dev/null @@ -1,53 +0,0 @@ -import asyncio -import logging - -from aiohttp.web_response import Response - -logger = logging.getLogger(__name__) - - -async def incoming_request(request): - airtable = request.app.plugins["airtable"] - payload = await request.json() - logger.debug("Incoming Airtable event payload: %s", payload) - - if payload["token"] != airtable.verify: - return Response(status=401) - - futures = list(_dispatch(airtable.routers["request"], payload, request.app)) - if futures: - return await _wait_and_check_result(futures) - return Response(status=200) - - -def _dispatch(router, event, app): - for handler, configuration in router.dispatch(event): - f = asyncio.ensure_future(handler(event, app)) - if configuration["wait"]: - yield f - else: - f.add_done_callback(_callback) - - -def _callback(f): - try: - f.result() - except Exception as e: - logger.exception(e) - - -async def _wait_and_check_result(futures): - dones, _ = await asyncio.wait(futures, return_when=asyncio.ALL_COMPLETED) - try: - results = [done.result() for done in dones] - except Exception as e: - logger.exception(e) - return Response(status=500) - - results = [result for result in results if isinstance(result, Response)] - if len(results) > 1: - logger.warning("Multiple web.Response for handler, returning none") - elif results: - return results[0] - - return Response(status=200) diff --git a/pybot/plugins/airtable/plugin.py b/pybot/plugins/airtable/plugin.py deleted file mode 100644 index c5307a7..0000000 --- a/pybot/plugins/airtable/plugin.py +++ /dev/null @@ -1,55 +0,0 @@ -import asyncio -import logging -import os -from collections import defaultdict - -from pybot.plugins.airtable import endpoints -from pybot.plugins.airtable.api import AirtableAPI - -logger = logging.getLogger(__name__) - - -class AirtablePlugin: - __name__ = "airtable" - - def __init__(self): - self.session = None # set lazily on plugin load - self.api_key = None - self.base_key = None - self.api = None - self.verify = None - - self.routers = {"request": RequestRouter()} - - def load(self, sirbot, api_key=None, base_key=None, verify=None): - self.session = sirbot.http_session - self.api_key = api_key or os.environ.get("AIRTABLE_API_KEY", "") - self.base_key = base_key or os.environ.get("AIRTABLE_BASE_KEY", "") - self.verify = verify or os.environ.get("AIRTABLE_VERIFY", "") - - self.api = AirtableAPI(self.session, self.api_key, self.base_key) - - sirbot.router.add_route("POST", "/airtable/request", endpoints.incoming_request) - - def on_request(self, request, handler, **kwargs): - if not asyncio.iscoroutinefunction(handler): - handler = asyncio.coroutine(handler) - options = {**kwargs, "wait": False} - self.routers["request"].register(request, (handler, options)) - - -class RequestRouter: - def __init__(self): - self._routes = defaultdict(list) - - def register(self, request_type, handler, **detail): - logger.info("Registering %s, %s to %s", request_type, detail, handler) - self._routes[request_type].append(handler) - - def dispatch(self, request): - logger.debug('Dispatching request "%s"', request.get("type")) - if request["type"] in self._routes: - for handler in self._routes.get(request["type"]): - yield handler - else: - return diff --git a/pybot/plugins/api/__init__.py b/pybot/plugins/api/__init__.py deleted file mode 100644 index 1c3af52..0000000 --- a/pybot/plugins/api/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .plugin import APIPlugin diff --git a/pybot/plugins/api/endpoints.py b/pybot/plugins/api/endpoints.py deleted file mode 100644 index f740ea8..0000000 --- a/pybot/plugins/api/endpoints.py +++ /dev/null @@ -1,52 +0,0 @@ -import asyncio -import json -import logging - -from aiohttp.web_response import Response - -from pybot.plugins.api.request import FailedVerification, SlackApiRequest - -logger = logging.getLogger(__name__) - - -async def slack_api(request): - api_plugin = request.app.plugins["api"] - - try: - slack_request = SlackApiRequest.from_request(request) - except FailedVerification: - logger.info(f"Failed verification to API route {request.url}.") - return Response(status=401) - - futures = list(_dispatch(api_plugin.routers["slack"], slack_request, request.app)) - - if futures: - return await _wait_and_check_result(futures) - return Response(status=200) - - -def _dispatch(router, event, app): - for handler, configuration in router.dispatch(event): - f = asyncio.ensure_future(handler(event, app)) - yield f - - -async def _wait_and_check_result(futures): - dones, _ = await asyncio.wait(futures, return_when=asyncio.ALL_COMPLETED) - try: - results = [done.result() for done in dones] - except Exception as e: - logger.exception(e) - return Response(status=500) - - if len(results) > 1: - logger.warning("Multiple web.Response for handler, returning none") - - elif results: - result = ( - results[0] - if isinstance(results[0], Response) - else Response(body=json.dumps(results[0])) - ) - - return result diff --git a/pybot/plugins/api/plugin.py b/pybot/plugins/api/plugin.py deleted file mode 100644 index 4e3061f..0000000 --- a/pybot/plugins/api/plugin.py +++ /dev/null @@ -1,49 +0,0 @@ -import asyncio -import logging -from collections import defaultdict - -from pybot.plugins.api import endpoints - -logger = logging.getLogger(__name__) - - -class APIPlugin: - __name__ = "api" - - def __init__(self): - self.session = None - self.routers = {"slack": SlackAPIRequestRouter()} - - def load(self, sirbot): - self.session = sirbot.http_session - - sirbot.router.add_route( - "GET", "/pybot/api/v1/slack/{resource}", endpoints.slack_api - ) - sirbot.router.add_route( - "POST", "/pybot/api/v1/slack/{resource}", endpoints.slack_api - ) - - def on_get(self, request, handler, **kwargs): - if not asyncio.iscoroutinefunction(handler): - handler = asyncio.coroutine(handler) - options = {**kwargs, "wait": False} - self.routers["slack"].register(request, (handler, options)) - - -class SlackAPIRequestRouter: - def __init__(self): - self._routes = defaultdict(list) - - def register(self, resource, handler, **detail): - logger.info(f"Registering {resource}, {detail} to {handler}") - self._routes[resource].append(handler) - - def dispatch(self, request): - resource = request.resource - logger.debug(f"Dispatching request {resource}") - if resource in self._routes: - for handler in self._routes.get(resource): - yield handler - else: - return diff --git a/pybot/plugins/api/request.py b/pybot/plugins/api/request.py deleted file mode 100644 index fa4554d..0000000 --- a/pybot/plugins/api/request.py +++ /dev/null @@ -1,88 +0,0 @@ -import copy -import os -from typing import MutableMapping - -BACKEND_AUTH_TOKEN = os.environ.get("BACKEND_AUTH_TOKEN", "devBackendToken") - - -class SlackApiRequest(MutableMapping): - """ - MutableMapping representing an api query request. Shamelessly stolen from pyslackers/slack-sansio - - Attributes: - resource: The resource the request was made for (i.e. the last part of the request url) - - query: Querystring params as a dict - - token: Bearer Token provided with request - """ - - auth_tokens = {BACKEND_AUTH_TOKEN} - - def __init__(self, raw_request, resource, query): - self.request = raw_request - self.resource = resource - self.query = query - self.token = self.__get_token(raw_request) - - if not self.authorized: - raise FailedVerification(self.token) - - @property - def authorized(self): - return self.token is not None and self.token in self.auth_tokens - - async def json(self): - if self.request.can_read_body: - return await self.request.json() - else: - return {} - - @classmethod - def from_request(cls, raw_request): - resource = raw_request.match_info["resource"] - query = raw_request.query - - return cls(raw_request, resource, query) - - @staticmethod - def __get_token(raw_request): - if "Authorization" in raw_request.headers: - auth_header = raw_request.headers["Authorization"] - if auth_header.startswith("Bearer "): - return auth_header[7:] - return None - - def __getitem__(self, item): - return self.request[item] - - def __setitem__(self, key, value): - self.request[key] = value - - def __delitem__(self, key): - del self.request[key] - - def __iter__(self): - return iter(self.request) - - def __len__(self): - return len(self.request) - - def __repr__(self): - return "API Request: " + str(self.request) - - def clone(self) -> "SlackApiRequest": - return self.__class__( - copy.deepcopy(self.request), - copy.deepcopy(self.resource), - copy.deepcopy(self.query), - ) - - -class FailedVerification(Exception): - """ - Raised when incoming API request fails verification - """ - - def __init__(self, token: str) -> None: - self.token = token diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 63f43a9..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,32 +0,0 @@ -[tool.poetry] -name = "operationcode-pybot" -version = "2.1" -description = "Operation Code's Official Slackbot" -authors = ["Allen Anthes "] -license = "MIT" - -[tool.poetry.dependencies] -python = "^3.7" -aiocontextvars = "^0.2.2" -cchardet = "^2.1.6" -cython = "^0.29.21" -python-dotenv = "^0.14.0" -pyyaml = "^5.4" -sentry-sdk = "^0.17.8" -sirbot = "^0.1.1" -zipcodes = "^1.1.3" - -[tool.poetry.dev-dependencies] -asynctest = "^0.13.0" -black = {version = "^20.8b1", allow-prereleases = true} -flake8 = "^3.8.3" -isort = "^4.3" -pytest = "^6.0.2" -pytest-aiohttp = "^0.3.0" -pytest-asyncio = "^0.14.0" -pytest-mock = "^3.3.1" -requests = "^2.26" - -[build-system] -requires = ["poetry>=0.12"] -build-backend = "poetry.masonry.api" diff --git a/tests/conftest.py b/tests/conftest.py index 8d78015..9dfeb34 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,55 +1,9 @@ -import copy - import pytest -from sirbot import SirBot -from sirbot.plugins.slack import SlackPlugin - -from pybot import endpoints -from pybot.plugins import AirtablePlugin, APIPlugin -from tests import data - -pytest_plugins = ("slack.tests.plugin",) - - -@pytest.fixture(params={**data.Action.__members__}) -def action(request): - if isinstance(request.param, str): - payload = copy.deepcopy(data.Action[request.param].value) - else: - payload = copy.deepcopy(request.param) - return payload - - -@pytest.fixture -async def bot(loop) -> SirBot: - b = SirBot() - slack = SlackPlugin( - token="token", - verify="supersecuretoken", - bot_user_id="bot_user_id", - bot_id="bot_id", - ) - airtable = AirtablePlugin() - endpoints.slack.create_endpoints(slack) - - api = APIPlugin() - endpoints.api.create_endpoints(api) - - b.load_plugin(slack) - b.load_plugin(airtable) - b.load_plugin(api) - - return b -@pytest.fixture -def slack_bot(bot: SirBot): - slack = SlackPlugin( - token="token", - verify="supersecuretoken", - bot_user_id="bot_user_id", - bot_id="bot_id", - ) - endpoints.slack.create_endpoints(slack) - bot.load_plugin(slack) - return bot +@pytest.fixture(scope="module") +def vcr_config(): + return { + # Replace the Authorization request header with "DUMMY" in cassettes + "filter_headers": [("Authorization", "DUMMY")], + } diff --git a/tests/data/__init__.py b/tests/data/__init__.py deleted file mode 100644 index 9374399..0000000 --- a/tests/data/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .actions import Action diff --git a/tests/data/actions.py b/tests/data/actions.py deleted file mode 100644 index e86948e..0000000 --- a/tests/data/actions.py +++ /dev/null @@ -1,58 +0,0 @@ -import json -from enum import Enum - -claim_event = { - "type": "interactive_message", - "user": {"id": "U123"}, - "actions": [{"name": "rec123", "value": "mentee_claimed"}], - "original_message": { - "text": "some text", - "attachments": [ - { - "text": "some text", - "actions": [{"name": "rec123", "value": "mentee_unclaimed"}], - } - ], - }, - "channel": {"id": "abc"}, - "message_ts": "123123.123", - "callback_id": "claim_mentee", - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -unclaim_event = { - "type": "interactive_message", - "user": {"id": "U123"}, - "actions": [{"name": "rec123", "value": "mentee_unclaimed"}], - "original_message": { - "text": "some text", - "attachments": [ - { - "text": "some text", - "actions": [{"name": "rec123", "value": "mentee_unclaimed"}], - } - ], - }, - "channel": {"id": "abc"}, - "message_ts": "123123.123", - "callback_id": "claim_mentee", - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -raw_claim_event = {"payload": json.dumps(claim_event)} -raw_unclaim_event = {"payload": json.dumps(unclaim_event)} - - -class Action(Enum): - claim_mentee = raw_claim_event - unclaim_mentee = raw_unclaim_event diff --git a/tests/data/events.py b/tests/data/events.py deleted file mode 100644 index ae26631..0000000 --- a/tests/data/events.py +++ /dev/null @@ -1,166 +0,0 @@ -TEAM_JOIN = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "team_join", - "channel": "C00000A00", - "user": { - "id": "U0AAAA", - "team_id": "T000AAA0A", - "name": "test", - "real_name": "test testerson", - }, - "event_ts": "123456789.000001", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -new_message = { - "type": "message", - "user": "U8FDR1603", - "text": "test3", - "client_msg_id": "025cc728-fcb5-4dd7-8920-619a605bb631", - "ts": "1540497949.000100", - "channel": "GDNHHNCTV", - "event_ts": "1540497949.000100", - "channel_type": "mpim", -} -edit_message = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U8FDR1603", - "text": "nevermind", - "client_msg_id": "9aff714d-8674-42fc-986c-0c1c06cca3fc", - "edited": {"user": "U8FDR1603", "ts": "1540497210.000000"}, - "ts": "1540497204.000100", - }, - "subtype": "message_changed", - "hidden": True, - "channel": "C8DA69KM4", - "previous_message": { - "type": "message", - "user": "U8FDR1603", - "text": "two", - "client_msg_id": "9aff714d-8674-42fc-986c-0c1c06cca3fc", - "ts": "1540497204.000100", - }, - "event_ts": "1540497210.000100", - "ts": "1540497210.000100", - "channel_type": "channel", - }, -} -delete_message = { - "type": "message", - "deleted_ts": "1540497676.000100", - "subtype": "message_deleted", - "hidden": True, - "channel": "GDNHHNCTV", - "previous_message": { - "type": "message", - "user": "U8FDR1603", - "text": "testing3", - "client_msg_id": "b5694bd6-6ed0-4ddd-bf84-3e2c8165c624", - "ts": "1540497676.000100", - }, - "event_ts": "1540497684.000100", - "ts": "1540497684.000100", - "channel_type": "mpim", -} - -MESSAGE_EDIT = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U000AA000", - "text": "hello world", - "edited": {"user": "U000AA000", "ts": "1513882449.000000"}, - "ts": "123456789.000001", - }, - "subtype": "message_changed", - "hidden": True, - "channel": "C00000A00", - "previous_message": { - "type": "message", - "user": "U000AA000", - "text": "foo bar", - "ts": "123456789.000001", - }, - "event_ts": "123456789.000002", - "ts": "123456789.000002", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -MESSAGE_DELETE = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U000AA000", - "text": "hello world", - "edited": {"user": "U000AA000", "ts": "1513882449.000000"}, - "ts": "123456789.000001", - }, - "subtype": "message_deleted", - "hidden": True, - "channel": "C00000A00", - "previous_message": { - "type": "message", - "user": "U000AA000", - "text": "foo bar", - "ts": "123456789.000001", - }, - "event_ts": "123456789.000002", - "ts": "123456789.000002", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -PLAIN_MESSAGE = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U000AA000", - "text": "hello world", - "edited": {"user": "U000AA000", "ts": "1513882449.000000"}, - "ts": "123456789.000001", - }, - "channel": "C00000A00", - "event_ts": "123456789.000002", - "ts": "123456789.000002", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} diff --git a/tests/endpoints/api/test_slack_api_endpoint.py b/tests/endpoints/api/test_slack_api_endpoint.py deleted file mode 100644 index 6191be7..0000000 --- a/tests/endpoints/api/test_slack_api_endpoint.py +++ /dev/null @@ -1,47 +0,0 @@ -import json - -import pytest -from asynctest import CoroutineMock -from sirbot import SirBot - -MOCK_USER_NAME = "userName" -MOCK_USER_ID = "U8N6XBL7Q" -AUTH_HEADER = {"Authorization": "Bearer devBackendToken"} - -VALID_SLACK_RESPONSE = CoroutineMock( - return_value={"user": {"exists": True, "id": MOCK_USER_ID, "name": MOCK_USER_NAME}} -) - - -@pytest.mark.parametrize( - "headers, status", - [ - ({"Authorization": "Bearer devBackendToken"}, 200), - ({"Authorization": "Bearer abc"}, 401), - (None, 401), - ], -) -async def test_detect_credentials(bot: SirBot, aiohttp_client, headers, status): - bot.plugins["slack"].api.query = VALID_SLACK_RESPONSE - client = await aiohttp_client(bot) - - res = await client.get( - "/pybot/api/v1/slack/verify?email=test@test.test", headers=headers - ) - - assert res.status == status - - -async def test_verify_returns_correct_success_params(bot: SirBot, aiohttp_client): - client = await aiohttp_client(bot) - - bot.plugins["slack"].api.query = VALID_SLACK_RESPONSE - - res = await client.get( - "/pybot/api/v1/slack/verify?email=test@test.test", headers=AUTH_HEADER - ) - body = json.loads(await res.text()) - - assert body["exists"] is True - assert body["id"] == MOCK_USER_ID - assert body["displayName"] == MOCK_USER_NAME diff --git a/tests/endpoints/slack/test_slack_actions.py b/tests/endpoints/slack/test_slack_actions.py deleted file mode 100644 index 62806b5..0000000 --- a/tests/endpoints/slack/test_slack_actions.py +++ /dev/null @@ -1,34 +0,0 @@ -from asynctest import CoroutineMock -from sirbot import SirBot - - -async def test_claim_mentee_response_attachment_is_list( - action: dict, aiohttp_client, bot: SirBot -): - client, slack_mock = await create_mocks(aiohttp_client, bot) - - await client.post("/slack/actions", data=action) - assert isinstance(slack_mock.call_args[0][1]["attachments"], list) - - -async def test_claim_mentee_response_contains_original_text( - action: dict, aiohttp_client, bot: SirBot -): - client, slack_mock = await create_mocks(aiohttp_client, bot) - await client.post("/slack/actions", data=action) - request_payload = slack_mock.call_args[0][1] - assert request_payload["text"] is not None - - -async def create_mocks(aiohttp_client, bot): - slack_mock = CoroutineMock( - return_value={"user": {"profile": {"email": "email@email.com"}}} - ) - airtable_mock = CoroutineMock(return_value="U123") - bot["plugins"]["slack"].api.query = slack_mock - bot["plugins"]["airtable"].api.find_records = CoroutineMock(return_value=[]) - bot["plugins"]["airtable"].api.update_request = airtable_mock - bot["plugins"]["airtable"].api.get_name_from_record_id = airtable_mock - bot["plugins"]["airtable"].api.get_row_from_record_id = airtable_mock - client = await aiohttp_client(bot) - return client, slack_mock diff --git a/tests/endpoints/slack/test_slack_events.py b/tests/endpoints/slack/test_slack_events.py deleted file mode 100644 index 73078a0..0000000 --- a/tests/endpoints/slack/test_slack_events.py +++ /dev/null @@ -1,41 +0,0 @@ -import asyncio -import logging - -import asynctest -from asynctest import CoroutineMock - -from pybot import endpoints -from pybot.endpoints.slack.events import create_endpoints, team_join -from tests.data.events import MESSAGE_DELETE, MESSAGE_EDIT, PLAIN_MESSAGE, TEAM_JOIN - - -async def test_team_join_handler_exists(bot): - endpoints.slack.create_endpoints(bot["plugins"]["slack"]) - - assert asynctest.asyncio.iscoroutinefunction( - bot["plugins"]["slack"].routers["event"]._routes["team_join"]["*"]["*"][0][0] - ) - - -async def test_edits_are_logged(bot, aiohttp_client, caplog): - client = await aiohttp_client(bot) - - with caplog.at_level(logging.INFO): - await client.post("/slack/events", json=MESSAGE_EDIT) - assert any("CHANGE_LOGGING: edited" in record.message for record in caplog.records) - - -async def test_deletes_are_logged(bot, aiohttp_client, caplog): - client = await aiohttp_client(bot) - - with caplog.at_level(logging.INFO): - await client.post("/slack/events", json=MESSAGE_DELETE) - assert any("CHANGE_LOGGING: deleted" in record.message for record in caplog.records) - - -async def test_no_other_messages_logged(bot, aiohttp_client, caplog): - client = await aiohttp_client(bot) - - with caplog.at_level(logging.INFO): - await client.post("/slack/events", json=PLAIN_MESSAGE) - assert not any("CHANGE_LOGGING" in record.message for record in caplog.records) diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..e4fecab --- /dev/null +++ b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,61 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Daily%20Programmer?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA42RXUvDMBiF/0rJdTvSOLuZK92csKmb0KI4kRGaWOKyZDTp7Bj973vb+lHBgZCL + 8J4nJycnB5SL1OTcIvpyQJIjWg+SyXZmlviCbBfRc4l89CaFqpkDSkTpAHLCOqmzoBWC3HwANWZO + ZCbfn9LnbCNOaXfMOu/BWCe4t9BAEUxIgENYSUjo2ZBi3MMYL4GdaukkU2r/3wOf2NgUGsJjH8Wq + yH6SrNokq06Se8MlTHnXlyThOe1HFIdfvr9Qb7SvC2o6LGx+VUzK28H15OlmLqcRwGLDpALtveDW + 6B4k2gltL7N63EvNBhDdFjRrCC9uCVT56JGpxlfqXbP77sCLFUvXXhKf6nWkTLq2f6tgnOYCPo0n + srm4W+GQkoj2B+1Tq9fqCPRzvKsqAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sun, 02 Jan 2022 15:47:21 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwgLCpmfGloKV5qC; path=/; expires=Mon, 02 Jan 2023 15:47:21 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '554' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..0aeb9ec --- /dev/null +++ b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,63 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwgLCpmfGloKV5qC + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Daily%20Programmer?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA42RXUvDMBiF/0rJdTvSOLuZK92csKmb0KI4kRGaWOKyZDTp7Bj973vb+lHBgZCL + 8J4nJycnB5SL1OTcIvpyQJIjWg+SyXZmlviCbBfRc4l89CaFqpkDSkTpAHLCOqmzoBWC3HwANWZO + ZCbfn9LnbCNOaXfMOu/BWCe4t9BAEUxIgENYSUjo2ZBi3MMYL4GdaukkU2r/3wOf2NgUGsJjH8Wq + yH6SrNokq06Se8MlTHnXlyThOe1HFIdfvr9Qb7SvC2o6LGx+VUzK28H15OlmLqcRwGLDpALtveDW + 6B4k2gltL7N63EvNBhDdFjRrCC9uCVT56JGpxlfqXbP77sCLFUvXXhKf6nWkTLq2f6tgnOYCPo0n + srm4W+GQkoj2B+1Tq9fqCPRzvKsqAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sun, 02 Jan 2022 15:47:21 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwgLCpmfGloKV5qC; path=/; expires=Mon, 02 Jan 2023 15:47:21 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '554' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..42351ac --- /dev/null +++ b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentors?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32RSW/CMBCF/4rlc0Bx1JYqJ3ZogXSBgkrVg5sM1I3JIC90Qfz32iGn0lbywXrz + zczTmz1VkKLKNI2f9lRkNPZCg2+TvHXJxufD5eqGBnQlQHpmT+/xnVx1aczCs4DOuSxbRLErfwGd + Sp7mJOEbcLIBbUSxrh27awrfHTHm2pAJZsKpvjcKo6gWMvdmrBFHLGasHobh8idK2p9+f7nPatWy + vY9Ro9tb9BNxdeFg2HAhXe3NZhqLujawg0I3116up7hxSHG0dV0SZHok6CGgfSvlv6Z71fDTYtNL + 1fxWasTOz+hzqcGnkQspfbQ+1Pxuzj7PZ+ar04PxA30O6IR/kAkUBsAxLKBtgX8ZSNB46PfiTGyA + LLH4034XtFAuQr8MlX4VWzJEqzS5BUUWAHm5vrJCFqhyBy+Eea2s22E0fxk+DqajVWKlt97BDAiu + SAeLzKaGtNIUtsYf1CgLAR1YkcELYk7ugVeqCzpVwB3lDZ+ePozDxvH0h+fDN8ty/B+ZAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '396' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:31 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwOluKvpW4Hx5E7F; path=/; expires=Sun, 01 Jan 2023 17:38:31 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '665' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..ead3ee9 --- /dev/null +++ b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml @@ -0,0 +1,64 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwOluKvpW4Hx5E7F + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentors?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32RSW/CMBCF/4rlc0Bx1JYqJ3ZogXSBgkrVg5sM1I3JIC90Qfz32iGn0lbywXrz + zczTmz1VkKLKNI2f9lRkNPZCg2+TvHXJxufD5eqGBnQlQHpmT+/xnVx1aczCs4DOuSxbRLErfwGd + Sp7mJOEbcLIBbUSxrh27awrfHTHm2pAJZsKpvjcKo6gWMvdmrBFHLGasHobh8idK2p9+f7nPatWy + vY9Ro9tb9BNxdeFg2HAhXe3NZhqLujawg0I3116up7hxSHG0dV0SZHok6CGgfSvlv6Z71fDTYtNL + 1fxWasTOz+hzqcGnkQspfbQ+1Pxuzj7PZ+ar04PxA30O6IR/kAkUBsAxLKBtgX8ZSNB46PfiTGyA + LLH4034XtFAuQr8MlX4VWzJEqzS5BUUWAHm5vrJCFqhyBy+Eea2s22E0fxk+DqajVWKlt97BDAiu + SAeLzKaGtNIUtsYf1CgLAR1YkcELYk7ugVeqCzpVwB3lDZ+ePozDxvH0h+fDN8ty/B+ZAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '396' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:32 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwOluKvpW4Hx5E7F; path=/; expires=Sun, 01 Jan 2023 17:38:32 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '665' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..ca334fb --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Affiliations?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQT0+DQBDFvwrZM5AFbWs4aW21tpZDISXaNA3CFNfALu4f1BC+u7vswaSJyR4m + 7/125s30iEPBeClQdOgRKVFkhA7SXcvu122G37MQuehMoDZMj5JaVRqSICSh1ckaJ86+NLXP67ED + od1YuSjOG/ijPUt7ln7OhXS2rCRaNb9CHIYeDvRLg1kUTKKrGx9j/HqJOvMfE2ScpAS/U8vvzWyx + zB5i8jTVMDQ5qbX3oUrBqC8kdEDFbWVkv2CNRqiNtR4JJ7EEGly0AFFw0krC6H+xt0Al484OPpW2 + zd3MxdQq3L+tXh6TzTlWNTrqXgWHXEKZknHWxXbX0WRqtxuOwy8BmLuRhQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '274' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:25 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwrvNzjVswDW2j23; path=/; expires=Sun, 01 Jan 2023 17:46:25 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '389' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..d1c2ae6 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwrvNzjVswDW2j23 + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Affiliations?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQT0+DQBDFvwrZM5AFbWs4aW21tpZDISXaNA3CFNfALu4f1BC+u7vswaSJyR4m + 7/125s30iEPBeClQdOgRKVFkhA7SXcvu122G37MQuehMoDZMj5JaVRqSICSh1ckaJ86+NLXP67ED + od1YuSjOG/ijPUt7ln7OhXS2rCRaNb9CHIYeDvRLg1kUTKKrGx9j/HqJOvMfE2ScpAS/U8vvzWyx + zB5i8jTVMDQ5qbX3oUrBqC8kdEDFbWVkv2CNRqiNtR4JJ7EEGly0AFFw0krC6H+xt0Al484OPpW2 + zd3MxdQq3L+tXh6TzTlWNTrqXgWHXEKZknHWxXbX0WRqtxuOwy8BmLuRhQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '274' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:26 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwrvNzjVswDW2j23; path=/; expires=Sun, 01 Jan 2023 17:46:26 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '389' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..a9d60be --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,63 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentor%20Requests?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32S3VLbMBCFX0Wj6yQjuw1JfUV+TEwSwtQ2ZKDDhWqvjbAipZYcGjK8O5IVOsBA + Z3zj3W/Psc/uAdeQyTpXOPh1wCzHgS00kX/9O7qZJYti1XDcwQUDbpkDjkGBRhPZCI0D0sGxfETn + Zsz77nfwkiqNLmTODG+lfOL7XeKZJ/UGge8FZNAjhNziDyga7612a9+oetSEfxeDabg+W7HzEwPD + hjJueg9NrqToKQ07EOq0tOVeJjcGEXQDhpi3BEocgZ87OOE0q9DKtTUozUTZdf/TreWjGQ2P6m+a + rndqK0f9BOody6xGesTOnEbcaoyKgnFGNZPCJGkzXDD/ptrKp3saj8PSIKa2gzTeysl8uyb3ax/f + mbk8Z3aIcjQFbb5DvXF495VJxTg32SsUw5/GEDbh1qn6ee3t+6l+moSwvHJO6qGcRftyGmX94Rys + k8vhApSiJaA0+cpnwinbWG1dN/Dvtd1Q68bLKhnuvDGZiXoknNuAblfVaOgt+9FtcWndXscuxYcz + MDfwIyDk9QzcOVnxz3fj+v9XMUvOaqAmkJS1W35/dmQYfDs5knfPL7PR6AbxAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '447' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:26 GMT + Server: + - Tengine + Set-Cookie: + - brw=brw6yqQpAzIJ7BgE8; path=/; expires=Sun, 01 Jan 2023 17:46:26 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '753' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..b3aad07 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,65 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brw6yqQpAzIJ7BgE8 + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentor%20Requests?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32S3VLbMBCFX0Wj6yQjuw1JfUV+TEwSwtQ2ZKDDhWqvjbAipZYcGjK8O5IVOsBA + Z3zj3W/Psc/uAdeQyTpXOPh1wCzHgS00kX/9O7qZJYti1XDcwQUDbpkDjkGBRhPZCI0D0sGxfETn + Zsz77nfwkiqNLmTODG+lfOL7XeKZJ/UGge8FZNAjhNziDyga7612a9+oetSEfxeDabg+W7HzEwPD + hjJueg9NrqToKQ07EOq0tOVeJjcGEXQDhpi3BEocgZ87OOE0q9DKtTUozUTZdf/TreWjGQ2P6m+a + rndqK0f9BOody6xGesTOnEbcaoyKgnFGNZPCJGkzXDD/ptrKp3saj8PSIKa2gzTeysl8uyb3ax/f + mbk8Z3aIcjQFbb5DvXF495VJxTg32SsUw5/GEDbh1qn6ee3t+6l+moSwvHJO6qGcRftyGmX94Rys + k8vhApSiJaA0+cpnwinbWG1dN/Dvtd1Q68bLKhnuvDGZiXoknNuAblfVaOgt+9FtcWndXscuxYcz + MDfwIyDk9QzcOVnxz3fj+v9XMUvOaqAmkJS1W35/dmQYfDs5knfPL7PR6AbxAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '447' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:27 GMT + Server: + - Tengine + Set-Cookie: + - brw=brw6yqQpAzIJ7BgE8; path=/; expires=Sun, 01 Jan 2023 17:46:27 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '753' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..e625dd4 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Services?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA23OW0vDMBQH8K9S8tyWtDI386RjE+ZliJuKiozYHsuRNJFc5qX0u5vLgzCEPIT/ + +eXkPxANjdKtIex5INgSFoKbozvz6n5uH+eiXlGSkzcEEcxANsJ1HlkwFmW3S4OdVp9e3XMRN6Dc + x1tO1ryHP10kXSR9xY3NrlWLPg2valrXBa382VZTVp0wOikppU+HNJt/hyLxJ2f0mVt+XU4Xy4fz + Na6OPYaeo/Czd9caJUtjYQ/SnHYhLhvVeyJTrYsosk0SZMzJAkyj8cOikv/X9qbRwC20W4w7DlrP + 2GSWWo8v4y88kykbXQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:14 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwbGAe1ZDvQhU9Aj; path=/; expires=Sun, 01 Jan 2023 17:38:14 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '349' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..f710e0d --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwbGAe1ZDvQhU9Aj + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Services?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA23OW0vDMBQH8K9S8tyWtDI386RjE+ZliJuKiozYHsuRNJFc5qX0u5vLgzCEPIT/ + +eXkPxANjdKtIex5INgSFoKbozvz6n5uH+eiXlGSkzcEEcxANsJ1HlkwFmW3S4OdVp9e3XMRN6Dc + x1tO1ryHP10kXSR9xY3NrlWLPg2valrXBa382VZTVp0wOikppU+HNJt/hyLxJ2f0mVt+XU4Xy4fz + Na6OPYaeo/Czd9caJUtjYQ/SnHYhLhvVeyJTrYsosk0SZMzJAkyj8cOikv/X9qbRwC20W4w7DlrP + 2GSWWo8v4y88kykbXQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:17 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwbGAe1ZDvQhU9Aj; path=/; expires=Sun, 01 Jan 2023 17:38:17 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '349' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..8f92631 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Skillsets?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA2WQX2uDMBTFv4rkWSU61haf1tJO164+zNKxDSlObyVdTFj+uBXxuzfRlcEG9yGc + 88u999wOCSi5qCSK3jpEKhRZQZ7qODnXy6S8na0BuehIgFqmQxnVtYEUSEVYfRiNg+BfhtoXdOhA + WDu8XJQWDfzS3kh7I/1YSOVseUWMan+FOAw9HJjaBdPI1M3Exxi//kWdxdkuMkzSUsz16nszXa6e + 71PyMDEwNAWhxjvpSnLmSwUtMHlXW9kveWMQNq61HggnGwnUu2gLTHFhj2HPQOuPbNYGCxwzMWco + v/rOE3xqE+nK6STcvycvcbY5ppqi3DQqBRQKqh0ZBv2LFvxE6/P+AiCKxpmCAQAA + headers: + Connection: + - keep-alive + Content-Length: + - '276' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:32 GMT + Server: + - Tengine + Set-Cookie: + - brw=brweWqz6bh1Pd9Pan; path=/; expires=Sun, 01 Jan 2023 17:38:32 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '386' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..fb4d1d9 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brweWqz6bh1Pd9Pan + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Skillsets?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA2WQX2uDMBTFv4rkWSU61haf1tJO164+zNKxDSlObyVdTFj+uBXxuzfRlcEG9yGc + 88u999wOCSi5qCSK3jpEKhRZQZ7qODnXy6S8na0BuehIgFqmQxnVtYEUSEVYfRiNg+BfhtoXdOhA + WDu8XJQWDfzS3kh7I/1YSOVseUWMan+FOAw9HJjaBdPI1M3Exxi//kWdxdkuMkzSUsz16nszXa6e + 71PyMDEwNAWhxjvpSnLmSwUtMHlXW9kveWMQNq61HggnGwnUu2gLTHFhj2HPQOuPbNYGCxwzMWco + v/rOE3xqE+nK6STcvycvcbY5ppqi3DQqBRQKqh0ZBv2LFvxE6/P+AiCKxpmCAQAA + headers: + Connection: + - keep-alive + Content-Length: + - '276' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:33 GMT + Server: + - Tengine + Set-Cookie: + - brw=brweWqz6bh1Pd9Pan; path=/; expires=Sun, 01 Jan 2023 17:38:33 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '386' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..8284123 --- /dev/null +++ b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Message%20Text?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQXWvCMBSG/0rJtS1piwq52lcHOnUXlg4cQ0JzVrK1CSSpVUv/+/JxMRCEXBze + 5znhTUakoJaKaUQ+R8QZIi4os+46XKt1kQ+/1TuaoW8OrXNGVMLZWMmANlw0cQCxkoO1nqmBRqrL + Pb6jHdxj+7Zv/tkxsGNgG6pNtJWM29Q1zHCWxTi1p0yXJE8JXiQY48OtGj1dXGX/ql6rx744vy1f + io/XHV8trAwd5a1lPz3TUiTawAmEfmhcnNSys4oIldfeiPbBQNMMVbT193Jx8pONagX2A1jJ/cpN + SUzmeSg5fU1/3z9ZSnYBAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '245' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:14:51 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwmk4IX4aqVeCxyj; path=/; expires=Sun, 01 Jan 2023 18:14:50 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '374' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..e9f03cc --- /dev/null +++ b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwmk4IX4aqVeCxyj + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Message%20Text?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQXWvCMBSG/0rJtS1piwq52lcHOnUXlg4cQ0JzVrK1CSSpVUv/+/JxMRCEXBze + 5znhTUakoJaKaUQ+R8QZIi4os+46XKt1kQ+/1TuaoW8OrXNGVMLZWMmANlw0cQCxkoO1nqmBRqrL + Pb6jHdxj+7Zv/tkxsGNgG6pNtJWM29Q1zHCWxTi1p0yXJE8JXiQY48OtGj1dXGX/ql6rx744vy1f + io/XHV8trAwd5a1lPz3TUiTawAmEfmhcnNSys4oIldfeiPbBQNMMVbT193Jx8pONagX2A1jJ/cpN + SUzmeSg5fU1/3z9ZSnYBAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '245' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:14:51 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwmk4IX4aqVeCxyj; path=/; expires=Sun, 01 Jan 2023 18:14:51 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '374' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..b6c820a --- /dev/null +++ b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,61 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Scheduled%20Messages?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA22QXU/CMBSG/8rSa7Z0TfhwV6KDBBVuIJJoDKnrYauunbQdshD+u6ebiR+Q9KI5 + 5zntc94jMZBVRliSPB+JFCTxBTBiHG/Vx65IneqTHtlKKD1zJLcF1xpK5LJKqVpL14RbAPHKs3cE + H7h1wRK0Q4BRxkIa41nFccKuEkojSukTYguuAAkH1kmdh93zoak+sTcHa3kOwQoO7pv5C0wN7GrQ + WYPdlMuywdoMRSQvg5Q7CFdS4XjlPcS5x+iXR6s7r4TED/6jQ6/MBhfR4KbxYbR51daM68nhfphO + 1tOFnA0QBoVe2Hurha10ZB3sQdvr3JcjDA4R3UVw1xLBsiPIqUeWZZ3/ZLPpVt90q68L0Jc2Y2cJ + P/KytZN6397w4cwApiN8OuerjhLW72ZPL6cvnONUTBYCAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '320' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:15:23 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwZfvUPfXAu7noUZ; path=/; expires=Sun, 01 Jan 2023 18:15:23 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '534' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..66c5f1c --- /dev/null +++ b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,63 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwZfvUPfXAu7noUZ + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Scheduled%20Messages?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA22QXU/CMBSG/8rSa7Z0TfhwV6KDBBVuIJJoDKnrYauunbQdshD+u6ebiR+Q9KI5 + 5zntc94jMZBVRliSPB+JFCTxBTBiHG/Vx65IneqTHtlKKD1zJLcF1xpK5LJKqVpL14RbAPHKs3cE + H7h1wRK0Q4BRxkIa41nFccKuEkojSukTYguuAAkH1kmdh93zoak+sTcHa3kOwQoO7pv5C0wN7GrQ + WYPdlMuywdoMRSQvg5Q7CFdS4XjlPcS5x+iXR6s7r4TED/6jQ6/MBhfR4KbxYbR51daM68nhfphO + 1tOFnA0QBoVe2Hurha10ZB3sQdvr3JcjDA4R3UVw1xLBsiPIqUeWZZ3/ZLPpVt90q68L0Jc2Y2cJ + P/KytZN6397w4cwApiN8OuerjhLW72ZPL6cvnONUTBYCAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '320' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:15:23 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwZfvUPfXAu7noUZ; path=/; expires=Sun, 01 Jan 2023 18:15:23 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '534' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/test_airtable.py b/tests/unit/test_airtable.py new file mode 100644 index 0000000..87499d6 --- /dev/null +++ b/tests/unit/test_airtable.py @@ -0,0 +1,215 @@ +import pytest + +from modules.airtable import ( + mentor_table, + mentorship_services_table, + mentorship_skillsets_table, + mentorship_affiliations_table, + mentorship_requests_table, + scheduled_message_table, + message_text_table, + daily_programmer_table, +) + + +@pytest.mark.vcr() +class TestMentorTableBasic: + def setup(self): + self.desired_fields = { + "row_id", + "valid", + "slack_name", + "last_modified", + "last_modified_by", + "full_name", + "email", + "active", + "skills", + "max_mentees", + "bio", + "notes", + "time_zone", + "desired_mentorship_hours_per_week", + "mentees_worked_with", + "code_of_conduct_accepted", + "guidebook_read", + } + self.airtable_fields = mentor_table.table_fields + + def test_mentor_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentor_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipServicesTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "description", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = mentorship_services_table.table_fields + + def test_mentorship_services_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_services_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipSkillsetsTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "mentors", + "mentor_requests", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = mentorship_skillsets_table.table_fields + + def test_mentorship_skillsets_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_skillsets_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipAffiliationTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "description", + "last_modified", + "last_modified_by", + "valid", + "mentor_requests", + } + self.airtable_fields = mentorship_affiliations_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipRequestsTableBasic: + def setup(self): + self.desired_fields = { + "slack_name", + "email", + "service", + "affiliation", + "additional_details", + "skillsets_requested", + "slack_message_ts", + "claimed", + "claimed_by", + "claimed_on", + "reset_by", + "reset_on", + "reset_count", + "last_modified", + "last_modified_by", + "row_id", + } + self.airtable_fields = mentorship_requests_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestScheduledMessagesTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "channel", + "message_text", + "initial_date_time_to_send", + "frequency", + "last_sent", + "when_to_send", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = scheduled_message_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMessageTextTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "text", + "category", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = message_text_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestDailyProgrammerTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "text", + "category", + "initial_slack_ts", + "blocks", + "initially_posted_on", + "last_posted_on", + "posted_count", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = daily_programmer_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) From db6d38a0ae9936a6a8a4bdafd93c9da3273851c0 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 2 Jan 2022 12:43:59 -0600 Subject: [PATCH 17/69] Adds in handling of new join testing --- main.py | 16 ++++----------- modules/handlers/channel_join_handler.py | 2 +- modules/handlers/greeting_handler.py | 26 +++++++++++++----------- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/main.py b/main.py index a4b166c..885538e 100644 --- a/main.py +++ b/main.py @@ -7,9 +7,7 @@ from fastapi import FastAPI, Request from slack_bolt.context.async_context import AsyncBoltContext from slack_bolt.async_app import AsyncApp -from slack_bolt.context.ack.async_ack import AsyncAck from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler -from slack_sdk.web.async_client import AsyncWebClient from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.triggers.interval import IntervalTrigger @@ -129,21 +127,15 @@ async def handle_mentorship_request_claim_reset_click( await handle_mentorship_request_claim_reset(SlackActionRequestBody(**body), context) -# TODO: Change this back to an event @app.command("/new_join") -async def handle_new_member_join_event( - body: dict[str, Any], context: AsyncBoltContext -) -> None: - logger.debug(f"Received body: {body}") - await handle_new_member_join(SlackCommandRequestBody(**body), context) - - @app.event("member_joined_channel") async def handle_new_member_join_event( body: dict[str, Any], context: AsyncBoltContext ) -> None: - logger.debug(f"Received body: {body}") - await handle_new_member_join(MemberJoinedChannelEvent(**body), context) + if body['command']: + await handle_new_member_join(SlackCommandRequestBody(**body), context) + else: + await handle_new_member_join(MemberJoinedChannelEvent(**body), context) @app.action("greet_new_user_claim") diff --git a/modules/handlers/channel_join_handler.py b/modules/handlers/channel_join_handler.py index e7a26b2..50c537a 100644 --- a/modules/handlers/channel_join_handler.py +++ b/modules/handlers/channel_join_handler.py @@ -41,7 +41,7 @@ async def handle_channel_join_request( text=f"Your request to join {channel_name} was successful...", ) except Exception as e: - logger.warning(f"Unable to handle the channel join request, error: {e}") + logger.exception(f"Unable to handle the channel join request, error: {e}") raise e diff --git a/modules/handlers/greeting_handler.py b/modules/handlers/greeting_handler.py index ef6897f..6f2616d 100644 --- a/modules/handlers/greeting_handler.py +++ b/modules/handlers/greeting_handler.py @@ -1,14 +1,15 @@ import re -from typing import Any +from typing import Any, Union from datetime import datetime, timezone, timedelta from slack_bolt.context.async_context import AsyncBoltContext +from modules.models.slack_models.command_models import SlackCommandRequestBody from modules.models.slack_models.event_models import MemberJoinedChannelEvent from modules.slack.blocks.new_join_blocks import ( new_join_immediate_welcome_blocks, new_join_delayed_welcome_blocks, ) -from modules.utils import get_team_info, get_slack_user_by_id, log_to_thread +from modules.utils import get_team_info, get_slack_user_by_id, log_to_thread, slack_team from modules.slack.blocks.greeting_blocks import ( initial_greet_user_blocks, greeting_block_claimed_button, @@ -17,25 +18,27 @@ async def handle_new_member_join( - parsed_body: MemberJoinedChannelEvent, context: AsyncBoltContext + parsed_body: Union[MemberJoinedChannelEvent, SlackCommandRequestBody], context: AsyncBoltContext ) -> None: await context.ack() - slack_team = get_team_info() - user = await get_slack_user_by_id(context.client, parsed_body.user) + user = None + if isinstance(parsed_body, MemberJoinedChannelEvent): + user = await get_slack_user_by_id(context.client, parsed_body.user) + elif isinstance(parsed_body, SlackCommandRequestBody): + user = await get_slack_user_by_id(context.client, parsed_body.user_id) await context.client.chat_postMessage( channel=slack_team.greetings_channel.id, blocks=initial_greet_user_blocks(user), text="A new member has joined!", ) - user_info = await context.client.users_info(user=parsed_body.user) # Add one minute to the current timestamp immediate_message_timestamp = datetime.now(timezone.utc).timestamp() + 60 await context.client.chat_scheduleMessage( - channel=parsed_body.user, - user=parsed_body.user, + channel=user.id, + user=user.id, post_at=int(immediate_message_timestamp), text="Welcome to Operation Code Slack!", - blocks=new_join_immediate_welcome_blocks(user_info["body"]["name"]), + blocks=new_join_immediate_welcome_blocks(user.name), unfurl_links=False, unfurl_media=False, ) @@ -47,8 +50,8 @@ async def handle_new_member_join( .timestamp() ) await context.client.chat_scheduleMessage( - channel=parsed_body.user, - user=parsed_body.user, + channel=user.id, + user=user.id, post_at=int(delayed_message_timestamp), text="We're happy to have you at Operation Code!", blocks=new_join_delayed_welcome_blocks(), @@ -56,7 +59,6 @@ async def handle_new_member_join( unfurl_links=False, ) - async def handle_greeting_new_user_claim( body: dict[str, Any], context: AsyncBoltContext, From d42753f414632153320f88d852d31f7eafd279a7 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 11 Jan 2022 18:26:16 -0600 Subject: [PATCH 18/69] Developer script --- .dockerignore | 1 - Dockerfile | 15 -------- Pipfile | 1 + Pipfile.lock | 38 +++++++++--------- README.md | 11 ++++++ bot_manifest.yml | 62 ++++++++++++++++++++++++++++++ docker-compose.yml | 14 ------- docker/Dockerfile | 42 ++++++++------------ docker/docker-compose.override.yml | 9 +++++ docker/docker-compose.prod.yml | 6 +++ docker/docker-compose.yml | 17 ++------ main.py | 30 ++++++++++++++- setup.sh | 41 ++++++++++++++++++++ 13 files changed, 199 insertions(+), 88 deletions(-) delete mode 100644 .dockerignore delete mode 100644 Dockerfile create mode 100644 bot_manifest.yml delete mode 100644 docker-compose.yml create mode 100644 docker/docker-compose.override.yml create mode 100644 docker/docker-compose.prod.yml create mode 100755 setup.sh diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 2eea525..0000000 --- a/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -.env \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index c7786c5..0000000 --- a/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM python:3.10 - -ENV PYTHONDONTWRITEBYTECODE=1 - -WORKDIR /pybot - -RUN python3 -m pip install --upgrade pip - -RUN pip install pipenv - -COPY Pipfile Pipfile.lock /pybot/ - -RUN pipenv install --system --dev --pre - -COPY . /pybot/ \ No newline at end of file diff --git a/Pipfile b/Pipfile index 069b83c..27cfc22 100644 --- a/Pipfile +++ b/Pipfile @@ -20,6 +20,7 @@ aiohttp = "==3.8.1" pytest = "*" black = "*" pytest-vcr = "*" +pyyaml = "*" [requires] python_version = "3.10" diff --git a/Pipfile.lock b/Pipfile.lock index a022280..4b3ab77 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "0f3dbde60d7424db45b5115d0b2b1731ecf3c41b12bbbeb9a9627dd78d8896f0" + "sha256": "e7cb359b2375bd63dd0e5c6476a7c8c153506cc0b94c7624523eea210c24421a" }, "pipfile-spec": 6, "requires": { @@ -159,11 +159,11 @@ }, "charset-normalizer": { "hashes": [ - "sha256:1eecaa09422db5be9e29d7fc65664e6c33bd06f9ced7838578ba40d58bdf3721", - "sha256:b0b883e8e874edfdece9c28f314e3dd5badf067342e42fb162203335ae61aa2c" + "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd", + "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455" ], "markers": "python_version >= '3'", - "version": "==2.0.9" + "version": "==2.0.10" }, "click": { "hashes": [ @@ -184,19 +184,19 @@ }, "decorator": { "hashes": [ - "sha256:7b12e7c3c6ab203a29e157335e9122cb03de9ab7264b137594103fd4a683b374", - "sha256:e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7" + "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", + "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" ], "markers": "python_version >= '3.5'", - "version": "==5.1.0" + "version": "==5.1.1" }, "fastapi": { "hashes": [ - "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06", - "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748" + "sha256:2b5ac0ae89c80b40d1dd4b2ea0bb1f78d7c4affd3644d080bf050f084759fff2", + "sha256:a78eca6b084de9667f2d5f37e2ae297270e5a119cd01c2f04815795da92fc87f" ], "index": "pypi", - "version": "==0.70.1" + "version": "==0.71.0" }, "frozenlist": { "hashes": [ @@ -538,11 +538,11 @@ }, "requests": { "hashes": [ - "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", - "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" + "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", + "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" ], "index": "pypi", - "version": "==2.26.0" + "version": "==2.27.1" }, "six": { "hashes": [ @@ -578,11 +578,11 @@ }, "starlette": { "hashes": [ - "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f", - "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870" + "sha256:26a18cbda5e6b651c964c12c88b36d9898481cd428ed6e063f5f29c418f73050", + "sha256:57eab3cc975a28af62f6faec94d355a410634940f10b30d68d31cb5ec1b44ae8" ], "markers": "python_version >= '3.6'", - "version": "==0.16.0" + "version": "==0.17.1" }, "typing-extensions": { "hashes": [ @@ -610,11 +610,11 @@ }, "urllib3": { "hashes": [ - "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece", - "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844" + "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed", + "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.7" + "version": "==1.26.8" }, "uvicorn": { "extras": [ diff --git a/README.md b/README.md index 925da52..e42eef7 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,17 @@ pytest # Run the code formatter black . ``` + +## How to Test Integration with SlackAPI + +In order to test the new methods and interactions you may have created already, +you'll need an "app configuration token". In order to get one of those, you'll need to create [a new +issue](https://github.com/OperationCode/operationcode-pybot/issues). Please use the `type: config token request` +label and make the title " Requests an App Config Token". For example: `Judson Stevens Requests an App Config Token`. + +Once you have created your issue, one of the maintainers of this repository will get in touch and give you your token. + + ## How to Test Integration With Slack After having developed some new feature, or having in hand what you believe is diff --git a/bot_manifest.yml b/bot_manifest.yml new file mode 100644 index 0000000..4636fe5 --- /dev/null +++ b/bot_manifest.yml @@ -0,0 +1,62 @@ +_metadata: + major_version: 1 + minor_version: 1 +display_information: + name: ${BOT_NAME} +features: + bot_user: + display_name: ${BOT_NAME} + always_online: false + slash_commands: + - command: /mentor_request-${USERNAME} + url: ${NGROK_URL}/slack/events + description: Request a Mentor + should_escape: false + - command: /new_join-${USERNAME} + url: ${NGROK_URL}/slack/events + description: New join testing + should_escape: false + - command: /report-${USERNAME} + url: ${NGROK_URL}/slack/events + description: Sends a report to the moderation team + should_escape: false + - command: /join-blacks-in-tech-${USERNAME} + url: ${NGROK_URL}/slack/events + description: Sends a request to join the blacks-in-tech channel + should_escape: false + - command: /join-pride-${USERNAME} + url: ${NGROK_URL}/slack/events + description: Sends a request to join the operation-pride channel. + should_escape: false +oauth_config: + scopes: + bot: + - app_mentions:read + - channels:history + - channels:join + - channels:read + - chat:write + - chat:write.public + - commands + - emoji:read + - files:read + - groups:read + - groups:write + - im:write + - links:read + - mpim:write + - pins:read + - remote_files:read + - team.preferences:read + - team:read + - usergroups:read + - users.profile:read + - users:read + - users:read.email +settings: + interactivity: + is_enabled: true + request_url: ${NGROK_URL}/slack/events + org_deploy_enabled: false + socket_mode_enabled: false + token_rotation_enabled: false diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 92294f4..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: "3" - -services: - web: - build: . - command: bash -c "uvicorn main:app --host 0.0.0.0 --port 8001 --reload" - volumes: - - .:/pybot - ports: - - "8001:8001" - redis: - image: "redis:6.2.6" - ports: - - "6379:6379" diff --git a/docker/Dockerfile b/docker/Dockerfile index c87c460..78aaa8b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7-alpine AS base +FROM python:3.10-alpine AS base FROM base as builder @@ -9,39 +9,31 @@ ENV PYTHONUNBUFFERED 1 RUN apk update && \ apk add --no-cache build-base musl-dev python3-dev libffi-dev openssl-dev -RUN python -m venv /opt/venv -# Make sure we use the virtualenv: -ENV PATH="/opt/venv/bin:$PATH" +COPY Pipfile Pipfile.lock ./ -COPY poetry.lock pyproject.toml ./ +RUN pip install --upgrade pip -RUN pip install pip==21.3.1 +RUN pip install pipenv -RUN pip install poetry && \ - poetry config virtualenvs.create false && \ - poetry install --no-dev --no-interaction +# The `dev` stage creates an image and runs the application with development settings +FROM builder as dev -# The `built-image` stage is the base for all remaining images -# Pulls all of the built dependencies from the builder stage -FROM base as built-image ENV PIP_DISABLE_PIP_VERSION_CHECK on ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 -# copy installed deps from builder image -COPY --from=builder /opt/venv /opt/venv +COPY . ./ -# Make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" +RUN pipenv install --dev -# The `app` stage is used as the base for images that don't -# need the development dependencies -FROM built-image as app +ENTRYPOINT ["pipenv", "run", "python3", "main.py"] -COPY . /src -WORKDIR /src +# The `prod` stage creates an image that will run the application with production +# settings +FROM builder As prod -# The `Prod` stage creates an image that will run the application using a -# production webserver and the `environments/production.py` configuration -FROM app As Prod -ENTRYPOINT ["python3", "-m", "pybot"] +ENV PYTHONDONTWRITEBYTECODE 1 + +RUN pipenv install + +ENTRYPOINT ["pipenv", "run", "python3", "main.py"] diff --git a/docker/docker-compose.override.yml b/docker/docker-compose.override.yml new file mode 100644 index 0000000..879eb78 --- /dev/null +++ b/docker/docker-compose.override.yml @@ -0,0 +1,9 @@ +version: '3.9' +services: + pybot: + container_name: pybot-dev + build: + target: dev + context: .. + dockerfile: docker/Dockerfile + env_file: ../.env \ No newline at end of file diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml new file mode 100644 index 0000000..cf28b94 --- /dev/null +++ b/docker/docker-compose.prod.yml @@ -0,0 +1,6 @@ +version: '3.9' + +services: + pybot: + build: + target: prod \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 3bb99f7..bd7159f 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,23 +1,14 @@ -version: '3.6' +version: '3.9' services: pybot: image: pybot:latest - build: - context: .. - dockerfile: docker/Dockerfile container_name: pybot01 - env_file: - - pybot.env ports: - - 5000:5000 + - "5001:5001" ngrok: image: wernight/ngrok:latest - env_file: - - example.env - - ngrok.env environment: - - NGROK_PORT=pybot:5000 - - NGROK_SUBDOMAIN=pybot + - NGROK_PORT=pybot:5001 ports: - - 4040:4040 + - "4040:4040" diff --git a/main.py b/main.py index 885538e..7a9c28a 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,14 @@ import os import re +import sys +import yaml +import json import uvicorn import logging from typing import Any from dotenv import load_dotenv from fastapi import FastAPI, Request +from slack_bolt.app import App from slack_bolt.context.async_context import AsyncBoltContext from slack_bolt.async_app import AsyncApp from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler @@ -65,6 +69,28 @@ signing_secret=os.environ.get("SLACK_SIGNING_SECRET"), ) +# Currently, the app create functionality is not released in the Slack SDK for Python +# see https://github.com/slackapi/python-slack-sdk/issues/1119 +# try: +# bot_name = os.getenv("BOT_NAME") +# bot_username = os.getenv("BOT_USERNAME") +# ngrok_url = os.getenv("NGROK_URL") +# app_config_token = os.getenv("SLACK_APP_CONFIGURATION_TOKEN") +# if bot_name is None or bot_username is None or ngrok_url is None or app_config_token is None: +# raise "Please ensure you have all required environment variables set..." +# +# synchronous_app = App( +# token=os.environ.get("SLACK_BOT_TOKEN"), +# signing_secret=os.environ.get("SLACK_SIGNING_SECRET"), +# ) +# with open('bot_manifest.yml', 'r') as yaml_manifest: +# yaml_obj = yaml.safe_load(yaml_manifest) +# json_manifest = json.dumps(yaml_obj) +# synchronous_app.client.apps_manifest_create(manifest=json_manifest) +# +# except Exception as generic_error: +# sys.exit(1) + # Define the application handler for the async Slack Bolt application - this adapter is specific to FastAPI app_handler = AsyncSlackRequestHandler(app) @@ -221,5 +247,7 @@ async def handle_daily_programmer_post( if __name__ == "__main__": if os.environ.get("RUN_ENV") == "development": + uvicorn.run("main:api", host="0.0.0.0", port=8010, reload=True, reload_dirs=["./models", "./tests"]) + else: # noinspection PyTypeChecker - uvicorn.run(api, host="0.0.0.0", port=8010) + uvicorn.run("main:api", host="0.0.0.0", port=5001) diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..e7160c8 --- /dev/null +++ b/setup.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +ngrok_pid=$(pgrep ngrok) + +check=$? + +# check if the exit status returned success +if [ $check -eq 0 ]; then + echo "Current ngrok PID = ${ngrok_pid}" + echo "Killing current Ngrok instance..." + kill -9 "$ngrok_pid" + check=$? + sleep 2 + if [ $check -eq 0 ]; then + echo "Successfully killed previous Ngrok, starting new instance..." + ngrok http 80 --log=stdout > ngrok.log & + echo "Waiting for 5 seconds so Ngrok can start..." + sleep 5 + + # shellcheck disable=SC2155 + export NGROK_URL=$(curl http://localhost:4040/api/tunnels --silent | python -c "import json, sys; print(json.load(sys.stdin)['tunnels'][1]['public_url'])") + echo "New Ngrok URL is: $NGROK_URL" + + echo "Please enter a name for your bot: " + read -r bot_name + export BOT_NAME=${bot_name} + + echo "Please enter in your first initial and last name - for example - 'jstevens'; this is what will be at the end of your slash commands in the Slack workspace: " + read -r bot_username + export BOT_USERNAME=${bot_username} + else + echo "Failed to kill previous Ngrok, ending execution..." + fi +elif [ $check -eq 1 ]; then + echo "No previous ngrok PID found, starting new instance..." + ngrok http 80 --log=stdout > ngrok.log & +else + echo "Problem locating and/or killing an existing Ngrok instance, ending execution..." +fi + + From e9a87bada38e20bad189870047b705dc4c2845d5 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 23 Jan 2022 07:20:56 -0600 Subject: [PATCH 19/69] Adds in daily programmer and event subs to manifest --- Pipfile.lock | 449 +++++++++---------- bot_manifest.yml | 19 +- main.py | 32 +- modules/handlers/daily_programmer.py | 56 ++- modules/handlers/greeting_handler.py | 31 +- modules/models/slack_models/event_models.py | 16 + modules/models/slack_models/shared_models.py | 5 +- 7 files changed, 336 insertions(+), 272 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 4b3ab77..ffaf1a5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -112,11 +112,11 @@ }, "anyio": { "hashes": [ - "sha256:24adc69309fb5779bc1e06158e143e0b6d2c56b302a3ac3de3083c705a6ed39d", - "sha256:2855a9423524abcdd652d942f8932fda1735210f77a6b392eafd9ff34d3fe020" + "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6", + "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e" ], "markers": "python_full_version >= '3.6.2'", - "version": "==3.4.0" + "version": "==3.5.0" }, "apscheduler": { "hashes": [ @@ -128,11 +128,11 @@ }, "asgiref": { "hashes": [ - "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9", - "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214" + "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0", + "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9" ], - "markers": "python_version >= '3.6'", - "version": "==3.4.1" + "markers": "python_version >= '3.7'", + "version": "==3.5.0" }, "async-timeout": { "hashes": [ @@ -192,97 +192,84 @@ }, "fastapi": { "hashes": [ - "sha256:2b5ac0ae89c80b40d1dd4b2ea0bb1f78d7c4affd3644d080bf050f084759fff2", - "sha256:a78eca6b084de9667f2d5f37e2ae297270e5a119cd01c2f04815795da92fc87f" + "sha256:019ec52c00581bc055e6dfb621aaa9c2a56007c283839305412e1073a777eaf1", + "sha256:7421a2f30e9ed1866874cff089733d4f9a0cd4f49b6ea3995c0de75e32bbb52f" ], "index": "pypi", - "version": "==0.71.0" + "version": "==0.72.0" }, "frozenlist": { "hashes": [ - "sha256:01d79515ed5aa3d699b05f6bdcf1fe9087d61d6b53882aa599a10853f0479c6c", - "sha256:0a7c7cce70e41bc13d7d50f0e5dd175f14a4f1837a8549b0936ed0cbe6170bf9", - "sha256:11ff401951b5ac8c0701a804f503d72c048173208490c54ebb8d7bb7c07a6d00", - "sha256:14a5cef795ae3e28fb504b73e797c1800e9249f950e1c964bb6bdc8d77871161", - "sha256:16eef427c51cb1203a7c0ab59d1b8abccaba9a4f58c4bfca6ed278fc896dc193", - "sha256:16ef7dd5b7d17495404a2e7a49bac1bc13d6d20c16d11f4133c757dd94c4144c", - "sha256:181754275d5d32487431a0a29add4f897968b7157204bc1eaaf0a0ce80c5ba7d", - "sha256:1cf63243bc5f5c19762943b0aa9e0d3fb3723d0c514d820a18a9b9a5ef864315", - "sha256:1cfe6fef507f8bac40f009c85c7eddfed88c1c0d38c75e72fe10476cef94e10f", - "sha256:1fef737fd1388f9b93bba8808c5f63058113c10f4e3c0763ced68431773f72f9", - "sha256:25b358aaa7dba5891b05968dd539f5856d69f522b6de0bf34e61f133e077c1a4", - "sha256:26f602e380a5132880fa245c92030abb0fc6ff34e0c5500600366cedc6adb06a", - "sha256:28e164722ea0df0cf6d48c4d5bdf3d19e87aaa6dfb39b0ba91153f224b912020", - "sha256:2de5b931701257d50771a032bba4e448ff958076380b049fd36ed8738fdb375b", - "sha256:3457f8cf86deb6ce1ba67e120f1b0128fcba1332a180722756597253c465fc1d", - "sha256:351686ca020d1bcd238596b1fa5c8efcbc21bffda9d0efe237aaa60348421e2a", - "sha256:406aeb340613b4b559db78d86864485f68919b7141dec82aba24d1477fd2976f", - "sha256:41de4db9b9501679cf7cddc16d07ac0f10ef7eb58c525a1c8cbff43022bddca4", - "sha256:41f62468af1bd4e4b42b5508a3fe8cc46a693f0cdd0ca2f443f51f207893d837", - "sha256:4766632cd8a68e4f10f156a12c9acd7b1609941525569dd3636d859d79279ed3", - "sha256:47b2848e464883d0bbdcd9493c67443e5e695a84694efff0476f9059b4cb6257", - "sha256:4a495c3d513573b0b3f935bfa887a85d9ae09f0627cf47cad17d0cc9b9ba5c38", - "sha256:4ad065b2ebd09f32511ff2be35c5dfafee6192978b5a1e9d279a5c6e121e3b03", - "sha256:4c457220468d734e3077580a3642b7f682f5fd9507f17ddf1029452450912cdc", - "sha256:4f52d0732e56906f8ddea4bd856192984650282424049c956857fed43697ea43", - "sha256:54a1e09ab7a69f843cd28fefd2bcaf23edb9e3a8d7680032c8968b8ac934587d", - "sha256:5a72eecf37eface331636951249d878750db84034927c997d47f7f78a573b72b", - "sha256:5df31bb2b974f379d230a25943d9bf0d3bc666b4b0807394b131a28fca2b0e5f", - "sha256:66a518731a21a55b7d3e087b430f1956a36793acc15912e2878431c7aec54210", - "sha256:6790b8d96bbb74b7a6f4594b6f131bd23056c25f2aa5d816bd177d95245a30e3", - "sha256:68201be60ac56aff972dc18085800b6ee07973c49103a8aba669dee3d71079de", - "sha256:6e105013fa84623c057a4381dc8ea0361f4d682c11f3816cc80f49a1f3bc17c6", - "sha256:705c184b77565955a99dc360f359e8249580c6b7eaa4dc0227caa861ef46b27a", - "sha256:72cfbeab7a920ea9e74b19aa0afe3b4ad9c89471e3badc985d08756efa9b813b", - "sha256:735f386ec522e384f511614c01d2ef9cf799f051353876b4c6fb93ef67a6d1ee", - "sha256:82d22f6e6f2916e837c91c860140ef9947e31194c82aaeda843d6551cec92f19", - "sha256:83334e84a290a158c0c4cc4d22e8c7cfe0bba5b76d37f1c2509dabd22acafe15", - "sha256:84e97f59211b5b9083a2e7a45abf91cfb441369e8bb6d1f5287382c1c526def3", - "sha256:87521e32e18a2223311afc2492ef2d99946337da0779ddcda77b82ee7319df59", - "sha256:878ebe074839d649a1cdb03a61077d05760624f36d196884a5cafb12290e187b", - "sha256:89fdfc84c6bf0bff2ff3170bb34ecba8a6911b260d318d377171429c4be18c73", - "sha256:8b4c7665a17c3a5430edb663e4ad4e1ad457614d1b2f2b7f87052e2ef4fa45ca", - "sha256:8b54cdd2fda15467b9b0bfa78cee2ddf6dbb4585ef23a16e14926f4b076dfae4", - "sha256:94728f97ddf603d23c8c3dd5cae2644fa12d33116e69f49b1644a71bb77b89ae", - "sha256:954b154a4533ef28bd3e83ffdf4eadf39deeda9e38fb8feaf066d6069885e034", - "sha256:977a1438d0e0d96573fd679d291a1542097ea9f4918a8b6494b06610dfeefbf9", - "sha256:9ade70aea559ca98f4b1b1e5650c45678052e76a8ab2f76d90f2ac64180215a2", - "sha256:9b6e21e5770df2dea06cb7b6323fbc008b13c4a4e3b52cb54685276479ee7676", - "sha256:a0d3ffa8772464441b52489b985d46001e2853a3b082c655ec5fad9fb6a3d618", - "sha256:a37594ad6356e50073fe4f60aa4187b97d15329f2138124d252a5a19c8553ea4", - "sha256:a8d86547a5e98d9edd47c432f7a14b0c5592624b496ae9880fb6332f34af1edc", - "sha256:aa44c4740b4e23fcfa259e9dd52315d2b1770064cde9507457e4c4a65a04c397", - "sha256:acc4614e8d1feb9f46dd829a8e771b8f5c4b1051365d02efb27a3229048ade8a", - "sha256:af2a51c8a381d76eabb76f228f565ed4c3701441ecec101dd18be70ebd483cfd", - "sha256:b2ae2f5e9fa10805fb1c9adbfefaaecedd9e31849434be462c3960a0139ed729", - "sha256:b46f997d5ed6d222a863b02cdc9c299101ee27974d9bbb2fd1b3c8441311c408", - "sha256:bc93f5f62df3bdc1f677066327fc81f92b83644852a31c6aa9b32c2dde86ea7d", - "sha256:bfbaa08cf1452acad9cb1c1d7b89394a41e712f88df522cea1a0f296b57782a0", - "sha256:c1e8e9033d34c2c9e186e58279879d78c94dd365068a3607af33f2bc99357a53", - "sha256:c5328ed53fdb0a73c8a50105306a3bc013e5ca36cca714ec4f7bd31d38d8a97f", - "sha256:c6a9d84ee6427b65a81fc24e6ef589cb794009f5ca4150151251c062773e7ed2", - "sha256:c98d3c04701773ad60d9545cd96df94d955329efc7743fdb96422c4b669c633b", - "sha256:cb3957c39668d10e2b486acc85f94153520a23263b6401e8f59422ef65b9520d", - "sha256:e63ad0beef6ece06475d29f47d1f2f29727805376e09850ebf64f90777962792", - "sha256:e74f8b4d8677ebb4015ac01fcaf05f34e8a1f22775db1f304f497f2f88fdc697", - "sha256:e7d0dd3e727c70c2680f5f09a0775525229809f1a35d8552b92ff10b2b14f2c2", - "sha256:ec6cf345771cdb00791d271af9a0a6fbfc2b6dd44cb753f1eeaa256e21622adb", - "sha256:ed58803563a8c87cf4c0771366cf0ad1aa265b6b0ae54cbbb53013480c7ad74d", - "sha256:f0081a623c886197ff8de9e635528fd7e6a387dccef432149e25c13946cb0cd0", - "sha256:f025f1d6825725b09c0038775acab9ae94264453a696cc797ce20c0769a7b367", - "sha256:f5f3b2942c3b8b9bfe76b408bbaba3d3bb305ee3693e8b1d631fe0a0d4f93673", - "sha256:fbd4844ff111449f3bbe20ba24fbb906b5b1c2384d0f3287c9f7da2354ce6d23" + "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e", + "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08", + "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b", + "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486", + "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78", + "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468", + "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1", + "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953", + "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3", + "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d", + "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a", + "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141", + "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08", + "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07", + "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa", + "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa", + "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868", + "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f", + "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b", + "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b", + "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1", + "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f", + "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478", + "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58", + "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01", + "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8", + "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d", + "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676", + "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274", + "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab", + "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8", + "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24", + "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a", + "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2", + "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f", + "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f", + "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93", + "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1", + "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51", + "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846", + "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5", + "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d", + "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c", + "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e", + "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae", + "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02", + "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0", + "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b", + "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3", + "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b", + "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa", + "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a", + "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d", + "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed", + "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148", + "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9", + "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c", + "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2", + "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951" ], - "markers": "python_version >= '3.6'", - "version": "==1.2.0" + "markers": "python_version >= '3.7'", + "version": "==1.3.0" }, "h11": { "hashes": [ - "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6", - "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042" + "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06", + "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442" ], "markers": "python_version >= '3.6'", - "version": "==0.12.0" + "version": "==0.13.0" }, "httptools": { "hashes": [ @@ -336,81 +323,68 @@ }, "multidict": { "hashes": [ - "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b", - "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031", - "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0", - "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce", - "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda", - "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858", - "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5", - "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8", - "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22", - "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac", - "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e", - "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6", - "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5", - "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0", - "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11", - "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a", - "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55", - "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341", - "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b", - "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704", - "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b", - "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1", - "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621", - "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d", - "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5", - "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7", - "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac", - "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d", - "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef", - "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0", - "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f", - "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02", - "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b", - "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37", - "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23", - "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d", - "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065", - "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86", - "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6", - "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded", - "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4", - "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7", - "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a", - "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17", - "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3", - "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21", - "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24", - "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940", - "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac", - "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c", - "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422", - "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628", - "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0", - "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf", - "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e", - "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677", - "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f", - "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c", - "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4", - "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b", - "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747", - "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0", - "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01", - "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8", - "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9", - "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64", - "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d", - "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0", - "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52", - "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1", - "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae", - "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d" + "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", + "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", + "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", + "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", + "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", + "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", + "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", + "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", + "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", + "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", + "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", + "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", + "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", + "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", + "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", + "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", + "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", + "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", + "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", + "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", + "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", + "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", + "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", + "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", + "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", + "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", + "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", + "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", + "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", + "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", + "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", + "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", + "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", + "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", + "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", + "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", + "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", + "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", + "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", + "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", + "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", + "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", + "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", + "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", + "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", + "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", + "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", + "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", + "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", + "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", + "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", + "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", + "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", + "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", + "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", + "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", + "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", + "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", + "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" ], - "markers": "python_version >= '3.6'", - "version": "==5.2.0" + "markers": "python_version >= '3.7'", + "version": "==6.0.1" }, "pbr": { "hashes": [ @@ -554,11 +528,11 @@ }, "slack-bolt": { "hashes": [ - "sha256:0b1d77f5f26fe4fc0318593e0faa9398766229123dab2cbe466e54abc368f1d1", - "sha256:2399f65ae76af4864cd7b0248a61a622fdf8d199a21f5b14ab6ed5b53df27636" + "sha256:12ade47fa61f66804715e54d0b3defe968d40b96d059afce1cb3bb9b4686bd05", + "sha256:be0a65a6d295101af75f4977c617a7702de7a6397e4e972fa026bccfea5f40e8" ], "index": "pypi", - "version": "==1.11.1" + "version": "==1.11.2" }, "slack-sdk": { "hashes": [ @@ -621,11 +595,11 @@ "standard" ], "hashes": [ - "sha256:d8c839231f270adaa6d338d525e2652a0b4a5f4c2430b5c4ef6ae4d11776b0d2", - "sha256:eacb66afa65e0648fcbce5e746b135d09722231ffffc61883d4fac2b62fbea8d" + "sha256:0b89c91bb8fe84c4bded9996af13c4b8c0de799d29bffeaa0c8ad298f2be0934", + "sha256:192c2422b056a3beb512c6c260bf77a7a884204a4ae41856719c1913ead63bbb" ], "index": "pypi", - "version": "==0.16.0" + "version": "==0.17.0" }, "uvloop": { "hashes": [ @@ -829,81 +803,68 @@ }, "multidict": { "hashes": [ - "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b", - "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031", - "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0", - "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce", - "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda", - "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858", - "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5", - "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8", - "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22", - "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac", - "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e", - "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6", - "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5", - "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0", - "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11", - "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a", - "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55", - "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341", - "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b", - "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704", - "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b", - "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1", - "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621", - "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d", - "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5", - "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7", - "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac", - "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d", - "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef", - "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0", - "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f", - "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02", - "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b", - "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37", - "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23", - "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d", - "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065", - "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86", - "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6", - "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded", - "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4", - "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7", - "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a", - "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17", - "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3", - "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21", - "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24", - "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940", - "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac", - "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c", - "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422", - "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628", - "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0", - "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf", - "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e", - "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677", - "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f", - "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c", - "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4", - "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b", - "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747", - "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0", - "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01", - "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8", - "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9", - "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64", - "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d", - "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0", - "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52", - "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1", - "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae", - "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d" + "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", + "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", + "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", + "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", + "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", + "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", + "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", + "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", + "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", + "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", + "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", + "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", + "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", + "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", + "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", + "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", + "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", + "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", + "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", + "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", + "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", + "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", + "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", + "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", + "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", + "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", + "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", + "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", + "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", + "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", + "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", + "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", + "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", + "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", + "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", + "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", + "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", + "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", + "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", + "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", + "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", + "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", + "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", + "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", + "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", + "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", + "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", + "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", + "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", + "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", + "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", + "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", + "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", + "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", + "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", + "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", + "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", + "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", + "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" ], - "markers": "python_version >= '3.6'", - "version": "==5.2.0" + "markers": "python_version >= '3.7'", + "version": "==6.0.1" }, "mypy-extensions": { "hashes": [ @@ -953,11 +914,11 @@ }, "pyparsing": { "hashes": [ - "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4", - "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81" + "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", + "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484" ], "markers": "python_version >= '3.6'", - "version": "==3.0.6" + "version": "==3.0.7" }, "pytest": { "hashes": [ diff --git a/bot_manifest.yml b/bot_manifest.yml index 4636fe5..ae0a045 100644 --- a/bot_manifest.yml +++ b/bot_manifest.yml @@ -8,23 +8,23 @@ features: display_name: ${BOT_NAME} always_online: false slash_commands: - - command: /mentor_request-${USERNAME} + - command: /mentor_request-${BOT_USERNAME} url: ${NGROK_URL}/slack/events description: Request a Mentor should_escape: false - - command: /new_join-${USERNAME} + - command: /new_join-${BOT_USERNAME} url: ${NGROK_URL}/slack/events description: New join testing should_escape: false - - command: /report-${USERNAME} + - command: /report-${BOT_USERNAME} url: ${NGROK_URL}/slack/events description: Sends a report to the moderation team should_escape: false - - command: /join-blacks-in-tech-${USERNAME} + - command: /join-blacks-in-tech-${BOT_USERNAME} url: ${NGROK_URL}/slack/events description: Sends a request to join the blacks-in-tech channel should_escape: false - - command: /join-pride-${USERNAME} + - command: /join-pride-${BOT_USERNAME} url: ${NGROK_URL}/slack/events description: Sends a request to join the operation-pride channel. should_escape: false @@ -54,6 +54,15 @@ oauth_config: - users:read - users:read.email settings: + event_subscriptions: + request_url: ${NGROK_URL}/slack/events + bot_events: + - app_mention + - member_joined_channel + - message.channels + - message.im + - message.mpim + - team_join interactivity: is_enabled: true request_url: ${NGROK_URL}/slack/events diff --git a/main.py b/main.py index 7a9c28a..2433b4e 100644 --- a/main.py +++ b/main.py @@ -1,14 +1,14 @@ import os +# import sys +# import yaml +# import json +# from slack_bolt.app import App import re -import sys -import yaml -import json import uvicorn import logging from typing import Any from dotenv import load_dotenv from fastapi import FastAPI, Request -from slack_bolt.app import App from slack_bolt.context.async_context import AsyncBoltContext from slack_bolt.async_app import AsyncApp from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler @@ -37,7 +37,8 @@ handle_report_claim, handle_reset_report_claim, ) -from modules.models.slack_models.event_models import MemberJoinedChannelEvent +from modules.handlers.daily_programmer import handle_daily_programmer_post +from modules.models.slack_models.event_models import MemberJoinedChannelEvent, MessageReceivedChannelEvent from modules.models.slack_models.slack_models import ( SlackResponseBody, SlackUserInfo, @@ -127,6 +128,7 @@ async def handle_mentor_request_command( context: AsyncBoltContext, body: dict[str, Any], ) -> None: + logger.info("STAGE: Processing mentorship request...") await handle_mentor_request(SlackCommandRequestBody(**body), context) @@ -134,6 +136,7 @@ async def handle_mentor_request_command( async def handle_mentorship_request_form_view_submit( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Processing mentorship form submission...") await handle_mentorship_request_form_submit(SlackViewRequestBody(**body), context) @@ -158,6 +161,7 @@ async def handle_mentorship_request_claim_reset_click( async def handle_new_member_join_event( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Processing new member joining...") if body['command']: await handle_new_member_join(SlackCommandRequestBody(**body), context) else: @@ -169,20 +173,23 @@ async def handle_greeting_new_user_claim_action( context: AsyncBoltContext, body: dict[str, Any], ) -> None: - await handle_greeting_new_user_claim(body, context) + logger.info("STAGE: Processing new claim on new user for greetings...") + await handle_greeting_new_user_claim(SlackActionRequestBody(**body), context) @app.action("reset_greet_new_user_claim") async def handle_resetting_greeting_new_user_claim_action( context: AsyncBoltContext, body: dict[str, Any] ) -> None: - await handle_resetting_greeting_new_user_claim(body, context) + logger.info("STAGE: Resetting claim on new user greeting...") + await handle_resetting_greeting_new_user_claim(SlackActionRequestBody(**body), context) @app.command("/report") async def handle_report_command( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Processing report command...") await handle_report(body, context) @@ -190,6 +197,7 @@ async def handle_report_command( async def handle_report_view_submit( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Processing report view submission...") await handle_report_submit(body, context) @@ -197,6 +205,7 @@ async def handle_report_view_submit( async def handle_report_claim_action( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Processing report claim....") await handle_report_claim( SlackResponseBody(**body, originating_user=SlackUserInfo(**body["user"])), context, @@ -207,6 +216,7 @@ async def handle_report_claim_action( async def handle_reset_report_claim_action( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Processing reset of report claim...") await handle_reset_report_claim( SlackResponseBody(**body, originating_user=SlackUserInfo(**body["user"])), context, @@ -218,7 +228,7 @@ async def handle_reset_report_claim_action( async def handle_channel_join_request_command( body: dict[str, Any], context: AsyncBoltContext ) -> None: - logger.info("STAGE: Handling pride channel join request...") + logger.info("STAGE: Handling channel join request...") await handle_channel_join_request(SlackCommandRequestBody(**body), context) @@ -226,6 +236,7 @@ async def handle_channel_join_request_command( async def handle_invite_to_channel_click_action( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Handling invite button click for channel join...") await handle_channel_join_request_claim(SlackActionRequestBody(**body), context) @@ -233,16 +244,17 @@ async def handle_invite_to_channel_click_action( async def handle_invite_to_channel_reset_action( body: dict[str, Any], context: AsyncBoltContext ) -> None: + logger.info("STAGE: Handling reset to invite button click for channel join...") await handle_channel_join_request_claim_reset( SlackActionRequestBody(**body), context ) @app.message(re.compile(r"(={2}.*={3})|(\[.*?])")) -async def handle_daily_programmer_post( +async def handle_daily_programmer( body: dict[str, Any], context: AsyncBoltContext ) -> None: - pass + await handle_daily_programmer_post(MessageReceivedChannelEvent(**body), context) if __name__ == "__main__": diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py index 6dc39bc..03a4b26 100644 --- a/modules/handlers/daily_programmer.py +++ b/modules/handlers/daily_programmer.py @@ -1,9 +1,59 @@ +import re import logging +from typing import Optional +from datetime import datetime, timezone +from difflib import SequenceMatcher from slack_bolt.context.async_context import AsyncBoltContext +from modules.airtable import daily_programmer_table +from modules.models.slack_models.event_models import MessageReceivedChannelEvent +from modules.models.slack_models.shared_models import SlackMessageInfo + logger = logging.getLogger(__name__) -async def handle_daily_programmer_post(parsed_body, context: AsyncBoltContext) -> None: - logger.info("STAGE: Beginning task populate_daily_programmer_table...") - logger.debug(f"Received body: {parsed_body}") +async def handle_daily_programmer_post(parsed_body: MessageReceivedChannelEvent, context: AsyncBoltContext) -> None: + await context.ack() + logger.info("STAGE: Handling a daily programmer post...") + post_id, post_count = check_for_existing_post(parsed_body.event.text) + if post_id and post_count: + daily_programmer_table.update(post_id, {"Post Count": post_count, "Last Posted On": datetime.now(timezone.utc)}) + return None + process_daily_programmer_post_text(parsed_body.event) + + +def check_for_existing_post(text: str) -> Optional[tuple[str, int]]: + existing_posts = daily_programmer_table.all(view="Valid", fields=["Text", "Posted Count"]) + for post in existing_posts: + if SequenceMatcher(None, post["fields"]["Text"], text).ratio() > 0.85: + return post["id"], int(post["fields"]["Posted Count"]) + return None + +def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: + logger.info("STAGE: Processing a daily programmer post text...") + title = re.search(r"(={2,3}.*={2,3})", body.text) + if title: + name = re.search(r"(\[.*?])", body.text) + if name: + try: + daily_programmer_table.create_record( + { + "Name": name[0] + .replace("[", "") + .replace("]", "") + .replace("*", ""), + "Text": body.text[name.span()[1] + 1:], + "Initially Posted On": datetime.fromtimestamp(float(body.ts), timezone.utc), + "Last Posted On": datetime.fromtimestamp(float(body.ts), timezone.utc), + "Posted Count": 1, + "Initial Slack TS": body.ts, + "Blocks": body.blocks, + } + ) + return None + except Exception as general_error: + logger.debug(f"Unable to create new daily programmer entry: {general_error}") + logger.debug(f"Unable to create new daily programmer entry due to not finding the name...") + return None + logger.debug(f"Unable to create new daily programmer entry due to not finding the title...") + return None \ No newline at end of file diff --git a/modules/handlers/greeting_handler.py b/modules/handlers/greeting_handler.py index 6f2616d..1aac8b8 100644 --- a/modules/handlers/greeting_handler.py +++ b/modules/handlers/greeting_handler.py @@ -3,6 +3,7 @@ from datetime import datetime, timezone, timedelta from slack_bolt.context.async_context import AsyncBoltContext +from modules.models.slack_models.action_models import SlackActionRequestBody from modules.models.slack_models.command_models import SlackCommandRequestBody from modules.models.slack_models.event_models import MemberJoinedChannelEvent from modules.slack.blocks.new_join_blocks import ( @@ -60,14 +61,21 @@ async def handle_new_member_join( ) async def handle_greeting_new_user_claim( - body: dict[str, Any], + parsed_body: SlackActionRequestBody, context: AsyncBoltContext, ) -> None: await context.ack() - original_blocks = body["message"]["blocks"] - original_blocks[-1] = greeting_block_claimed_button(body["user"]["username"]) + original_blocks = parsed_body.message.blocks + original_blocks[-1] = greeting_block_claimed_button(parsed_body.user.username) modified_blocks = original_blocks - await log_to_thread(context.client, body, claim=True) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) await context.respond( text="Modified the claim to greet the new user...", blocks=modified_blocks, @@ -76,17 +84,24 @@ async def handle_greeting_new_user_claim( async def handle_resetting_greeting_new_user_claim( - body: dict[str, Any], + parsed_body: SlackActionRequestBody, context: AsyncBoltContext, ) -> None: await context.ack() - original_blocks = body["message"]["blocks"] + original_blocks = parsed_body.message.blocks # Extract out the username of the new user (the user we are greeting) original_blocks[-1] = greeting_block_button( - str(re.match(r"\((@.*)\)", body["message"]["blocks"][0]["text"]["text"])) + str(re.match(r"\((@.*)\)", parsed_body.message.blocks[0]['text']["text"])) ) modified_blocks = original_blocks - await log_to_thread(context.client, body, claim=False) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) await context.respond( text="Modified the claim to greet the new user...", blocks=modified_blocks, diff --git a/modules/models/slack_models/event_models.py b/modules/models/slack_models/event_models.py index 3f44b75..b3c78c8 100644 --- a/modules/models/slack_models/event_models.py +++ b/modules/models/slack_models/event_models.py @@ -1,5 +1,6 @@ from pydantic import BaseModel, Field +from modules.models.slack_models.shared_models import SlackMessageInfo class MemberJoinedChannelEvent(BaseModel): type: str = Field( @@ -28,3 +29,18 @@ class MemberJoinedChannelEvent(BaseModel): example="U123456789", description="The Slack user ID of the user who invited the joining user - is optional and won't show up for default channels, for example", ) + +class MessageReceivedChannelEvent(BaseModel): + team_id: str = Field(..., example="T024BE7LD", description="The Slack ID of the team") + api_app_id: str = Field( + ..., example="A02R6C6S9JN", description="The Slack application ID" + ) + event: SlackMessageInfo = Field(..., description="The information about the message that was received") + type: str = Field( + ..., + example="event_callback", + description="The type of event, should always be event_callback", + ) + event_id: str = Field(..., example="Ev02UJP6HDBR", description="The Slack provided ID of the event") + event_time: int = Field(..., example=1642732981, description="The Unix timestamp of the event") + event_context: str = Field(..., example="4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUMDFTQkxDUTU3QSIsImFpZCI6IkEwMlI2QzZTOUpOIiwiY2lkIjoiQzAxUlUxTUhNRkUifQ") diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py index 0d9501d..0e3d628 100644 --- a/modules/models/slack_models/shared_models.py +++ b/modules/models/slack_models/shared_models.py @@ -107,10 +107,11 @@ class SlackViewInfo(BaseModel): class SlackMessageInfo(BaseModel): + client_msg_id: str = Field(None, example="de437daf-67fd-48a6-b9bd-03f9336509e9") bot_id: str = Field( None, example="B02QRQ4KU5V", - description="Slack ID of the bot that sent the message - provided if the original message was sent from a bot", + description="Slack ID of the bot that sent the message - provided that the original message was sent from a bot", ) type: str = Field(..., example="message", description="The type of message") text: str = Field( @@ -178,7 +179,7 @@ class SlackActionInfo(BaseModel): None, description="The text object that represents the text on the action (button, etc)", ) - value: Optional[dict[str, Any]] = Field( + value: Union[dict[str, Any], str] = Field( None, description="The value sent to the application when the action is triggered", ) From 548845f082712da1c798306c17cccbfa628daa48 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:13:53 -0600 Subject: [PATCH 20/69] Changes to daily programmer --- .gitignore | 3 ++- modules/handlers/daily_programmer.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4933ab1..d3b2551 100644 --- a/.gitignore +++ b/.gitignore @@ -104,4 +104,5 @@ venv.bak/ # mypy .mypy_cache/ -.idea/* \ No newline at end of file +.idea/* +env* \ No newline at end of file diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py index 03a4b26..168901e 100644 --- a/modules/handlers/daily_programmer.py +++ b/modules/handlers/daily_programmer.py @@ -26,6 +26,7 @@ def check_for_existing_post(text: str) -> Optional[tuple[str, int]]: existing_posts = daily_programmer_table.all(view="Valid", fields=["Text", "Posted Count"]) for post in existing_posts: if SequenceMatcher(None, post["fields"]["Text"], text).ratio() > 0.85: + logger.debug(f"Found matching post: {post}") return post["id"], int(post["fields"]["Posted Count"]) return None @@ -52,8 +53,8 @@ def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: ) return None except Exception as general_error: - logger.debug(f"Unable to create new daily programmer entry: {general_error}") - logger.debug(f"Unable to create new daily programmer entry due to not finding the name...") + logger.exception(f"Unable to create new daily programmer entry: {general_error}") + logger.warning(f"Unable to create new daily programmer entry due to not finding the name...") return None - logger.debug(f"Unable to create new daily programmer entry due to not finding the title...") + logger.warning(f"Unable to create new daily programmer entry due to not finding the title...") return None \ No newline at end of file From 28c6de3757590f0a89343b56e31957b13d3bc559 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:17:39 -0600 Subject: [PATCH 21/69] Revert "Changes to daily programmer" This reverts commit 548845f082712da1c798306c17cccbfa628daa48. --- .gitignore | 3 +-- modules/handlers/daily_programmer.py | 7 +++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index d3b2551..4933ab1 100644 --- a/.gitignore +++ b/.gitignore @@ -104,5 +104,4 @@ venv.bak/ # mypy .mypy_cache/ -.idea/* -env* \ No newline at end of file +.idea/* \ No newline at end of file diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py index 168901e..03a4b26 100644 --- a/modules/handlers/daily_programmer.py +++ b/modules/handlers/daily_programmer.py @@ -26,7 +26,6 @@ def check_for_existing_post(text: str) -> Optional[tuple[str, int]]: existing_posts = daily_programmer_table.all(view="Valid", fields=["Text", "Posted Count"]) for post in existing_posts: if SequenceMatcher(None, post["fields"]["Text"], text).ratio() > 0.85: - logger.debug(f"Found matching post: {post}") return post["id"], int(post["fields"]["Posted Count"]) return None @@ -53,8 +52,8 @@ def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: ) return None except Exception as general_error: - logger.exception(f"Unable to create new daily programmer entry: {general_error}") - logger.warning(f"Unable to create new daily programmer entry due to not finding the name...") + logger.debug(f"Unable to create new daily programmer entry: {general_error}") + logger.debug(f"Unable to create new daily programmer entry due to not finding the name...") return None - logger.warning(f"Unable to create new daily programmer entry due to not finding the title...") + logger.debug(f"Unable to create new daily programmer entry due to not finding the title...") return None \ No newline at end of file From 7d1452d6d82cf85c142c523b2edc9f1a10204b74 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:24:22 -0600 Subject: [PATCH 22/69] Changes to daily programmer --- .gitignore | 3 ++- modules/handlers/daily_programmer.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4933ab1..d3b2551 100644 --- a/.gitignore +++ b/.gitignore @@ -104,4 +104,5 @@ venv.bak/ # mypy .mypy_cache/ -.idea/* \ No newline at end of file +.idea/* +env* \ No newline at end of file diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py index 03a4b26..168901e 100644 --- a/modules/handlers/daily_programmer.py +++ b/modules/handlers/daily_programmer.py @@ -26,6 +26,7 @@ def check_for_existing_post(text: str) -> Optional[tuple[str, int]]: existing_posts = daily_programmer_table.all(view="Valid", fields=["Text", "Posted Count"]) for post in existing_posts: if SequenceMatcher(None, post["fields"]["Text"], text).ratio() > 0.85: + logger.debug(f"Found matching post: {post}") return post["id"], int(post["fields"]["Posted Count"]) return None @@ -52,8 +53,8 @@ def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: ) return None except Exception as general_error: - logger.debug(f"Unable to create new daily programmer entry: {general_error}") - logger.debug(f"Unable to create new daily programmer entry due to not finding the name...") + logger.exception(f"Unable to create new daily programmer entry: {general_error}") + logger.warning(f"Unable to create new daily programmer entry due to not finding the name...") return None - logger.debug(f"Unable to create new daily programmer entry due to not finding the title...") + logger.warning(f"Unable to create new daily programmer entry due to not finding the title...") return None \ No newline at end of file From 322df678e29ace264ec52be9cbeca7fe36d0eb39 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:36:55 -0600 Subject: [PATCH 23/69] Adds in requirements --- Procfile | 1 + bot_manifest.yml | 1 + requirements.txt | 52 ++++++++++++++++++++++++++++++++++++++++++++ requirements_dev.txt | 52 ++++++++++++++++++++++++++++++++++++++++++++ runtime.txt | 1 + 5 files changed, 107 insertions(+) create mode 100644 Procfile create mode 100644 requirements.txt create mode 100644 requirements_dev.txt create mode 100644 runtime.txt diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..42df1ad --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: gunicorn -w 1 \ No newline at end of file diff --git a/bot_manifest.yml b/bot_manifest.yml index ae0a045..9924ee4 100644 --- a/bot_manifest.yml +++ b/bot_manifest.yml @@ -60,6 +60,7 @@ settings: - app_mention - member_joined_channel - message.channels + - message.mpim:history - message.im - message.mpim - team_join diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5be449d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,52 @@ +# +# These requirements were autogenerated by pipenv +# To regenerate from the project's Pipfile, run: +# +# pipenv lock --requirements +# + +-i https://pypi.org/simple +aiohttp==3.8.1 +aiosignal==1.2.0; python_version >= '3.6' +airtable==0.4.8 +anyio==3.5.0; python_full_version >= '3.6.2' +apscheduler==3.8.1 +asgiref==3.5.0; python_version >= '3.7' +async-timeout==4.0.2; python_version >= '3.6' +attrs==21.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +certifi==2021.10.8 +charset-normalizer==2.0.10; python_version >= '3' +click==8.0.3; python_version >= '3.6' +dailyprogrammer==1.0 +decorator==5.1.1; python_version >= '3.5' +fastapi==0.72.0 +frozenlist==1.3.0; python_version >= '3.7' +h11==0.13.0; python_version >= '3.6' +httptools==0.3.0 +idna==3.3; python_version >= '3' +jsonpath-rw-ext==1.2.2 +jsonpath-rw==1.4.0 +multidict==6.0.1; python_version >= '3.7' +pbr==5.8.0; python_version >= '2.6' +ply==3.11 +pyairtable==1.0.0.post1 +pydantic==1.9.0 +python-dotenv==0.19.2 +pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pytz==2021.3 +pyyaml==6.0 +requests==2.27.1 +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +slack-bolt==1.11.2 +slack-sdk==3.13.0 +sniffio==1.2.0; python_version >= '3.5' +starlette==0.17.1; python_version >= '3.6' +typing-extensions==4.0.1; python_version >= '3.6' +tzdata==2021.5; python_version >= '3.6' +tzlocal==4.1; python_version >= '3.6' +urllib3==1.26.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +uvicorn[standard]==0.17.0 +uvloop==0.16.0 +watchgod==0.7 +websockets==10.1 +yarl==1.7.2; python_version >= '3.6' diff --git a/requirements_dev.txt b/requirements_dev.txt new file mode 100644 index 0000000..5be449d --- /dev/null +++ b/requirements_dev.txt @@ -0,0 +1,52 @@ +# +# These requirements were autogenerated by pipenv +# To regenerate from the project's Pipfile, run: +# +# pipenv lock --requirements +# + +-i https://pypi.org/simple +aiohttp==3.8.1 +aiosignal==1.2.0; python_version >= '3.6' +airtable==0.4.8 +anyio==3.5.0; python_full_version >= '3.6.2' +apscheduler==3.8.1 +asgiref==3.5.0; python_version >= '3.7' +async-timeout==4.0.2; python_version >= '3.6' +attrs==21.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +certifi==2021.10.8 +charset-normalizer==2.0.10; python_version >= '3' +click==8.0.3; python_version >= '3.6' +dailyprogrammer==1.0 +decorator==5.1.1; python_version >= '3.5' +fastapi==0.72.0 +frozenlist==1.3.0; python_version >= '3.7' +h11==0.13.0; python_version >= '3.6' +httptools==0.3.0 +idna==3.3; python_version >= '3' +jsonpath-rw-ext==1.2.2 +jsonpath-rw==1.4.0 +multidict==6.0.1; python_version >= '3.7' +pbr==5.8.0; python_version >= '2.6' +ply==3.11 +pyairtable==1.0.0.post1 +pydantic==1.9.0 +python-dotenv==0.19.2 +pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pytz==2021.3 +pyyaml==6.0 +requests==2.27.1 +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +slack-bolt==1.11.2 +slack-sdk==3.13.0 +sniffio==1.2.0; python_version >= '3.5' +starlette==0.17.1; python_version >= '3.6' +typing-extensions==4.0.1; python_version >= '3.6' +tzdata==2021.5; python_version >= '3.6' +tzlocal==4.1; python_version >= '3.6' +urllib3==1.26.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +uvicorn[standard]==0.17.0 +uvloop==0.16.0 +watchgod==0.7 +websockets==10.1 +yarl==1.7.2; python_version >= '3.6' diff --git a/runtime.txt b/runtime.txt new file mode 100644 index 0000000..e06d07a --- /dev/null +++ b/runtime.txt @@ -0,0 +1 @@ +3.10.0 \ No newline at end of file From 35747c79692d59110b53971a6f92c87d32fb5bcf Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:37:42 -0600 Subject: [PATCH 24/69] Procfile --- Procfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Procfile b/Procfile index 42df1ad..afd8645 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: gunicorn -w 1 \ No newline at end of file +web: gunicorn main:api \ No newline at end of file From 4c7334e80a5b42fd6b35a64f9d0d90b0d21d1fbc Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:38:17 -0600 Subject: [PATCH 25/69] Changes runtime --- runtime.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime.txt b/runtime.txt index e06d07a..e86ec35 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -3.10.0 \ No newline at end of file +3.10.2 \ No newline at end of file From 0ee9bab13543675869dca891b11b240ab89831b6 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:38:30 -0600 Subject: [PATCH 26/69] Changes runtime --- runtime.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime.txt b/runtime.txt index e86ec35..85ac14f 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -3.10.2 \ No newline at end of file +python-3.10.2 \ No newline at end of file From 8625c300d7db89678555cc64ebd7f3aac2b46d48 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:42:34 -0600 Subject: [PATCH 27/69] Adds gunicorn --- Pipfile | 1 + Pipfile.lock | 262 ++++++++++++++++++++++--------------------- Procfile | 2 +- requirements.txt | 7 +- requirements_dev.txt | 7 +- 5 files changed, 145 insertions(+), 134 deletions(-) diff --git a/Pipfile b/Pipfile index 27cfc22..38cd28a 100644 --- a/Pipfile +++ b/Pipfile @@ -15,6 +15,7 @@ pydantic = "*" apscheduler = "*" dailyprogrammer = "*" aiohttp = "==3.8.1" +gunicorn = "*" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index ffaf1a5..516f373 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "e7cb359b2375bd63dd0e5c6476a7c8c153506cc0b94c7624523eea210c24421a" + "sha256": "c20eb0e07c63c8b1ba5cca805ed4e280b8e814c22842595a4658083a28d2fbcb" }, "pipfile-spec": 6, "requires": { @@ -192,11 +192,11 @@ }, "fastapi": { "hashes": [ - "sha256:019ec52c00581bc055e6dfb621aaa9c2a56007c283839305412e1073a777eaf1", - "sha256:7421a2f30e9ed1866874cff089733d4f9a0cd4f49b6ea3995c0de75e32bbb52f" + "sha256:dcfee92a7f9a72b5d4b7ca364bd2b009f8fc10d95ed5769be20e94f39f7e5a15", + "sha256:f0a618aff5f6942862f2d3f20f39b1c037e33314d1b8207fd1c3a2cca76dfd8c" ], "index": "pypi", - "version": "==0.72.0" + "version": "==0.73.0" }, "frozenlist": { "hashes": [ @@ -263,6 +263,14 @@ "markers": "python_version >= '3.7'", "version": "==1.3.0" }, + "gunicorn": { + "hashes": [ + "sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e", + "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8" + ], + "index": "pypi", + "version": "==20.1.0" + }, "h11": { "hashes": [ "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06", @@ -323,68 +331,68 @@ }, "multidict": { "hashes": [ - "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", - "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", - "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", - "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", - "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", - "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", - "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", - "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", - "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", - "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", - "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", - "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", - "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", - "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", - "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", - "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", - "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", - "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", - "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", - "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", - "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", - "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", - "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", - "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", - "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", - "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", - "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", - "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", - "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", - "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", - "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", - "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", - "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", - "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", - "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", - "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", - "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", - "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", - "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", - "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", - "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", - "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", - "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", - "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", - "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", - "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", - "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", - "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", - "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", - "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", - "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", - "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", - "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", - "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", - "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", - "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", - "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", - "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", - "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" + "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", + "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", + "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", + "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", + "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", + "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", + "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", + "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", + "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", + "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", + "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", + "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", + "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", + "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", + "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", + "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", + "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", + "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", + "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", + "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", + "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", + "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", + "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", + "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", + "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", + "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", + "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", + "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", + "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", + "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", + "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", + "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", + "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", + "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", + "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", + "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", + "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", + "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", + "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", + "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", + "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", + "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", + "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", + "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", + "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", + "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", + "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", + "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", + "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", + "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", + "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", + "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", + "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", + "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", + "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", + "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", + "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", + "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", + "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" ], "markers": "python_version >= '3.7'", - "version": "==6.0.1" + "version": "==6.0.2" }, "pbr": { "hashes": [ @@ -595,11 +603,11 @@ "standard" ], "hashes": [ - "sha256:0b89c91bb8fe84c4bded9996af13c4b8c0de799d29bffeaa0c8ad298f2be0934", - "sha256:192c2422b056a3beb512c6c260bf77a7a884204a4ae41856719c1913ead63bbb" + "sha256:60a149248181920a73b2e97aec1dacec5501618867f041a228b2519d91a62a91", + "sha256:fa166e6c3d58e23ff5a1a3543b079c7b28aa057ab1388201e4b34a49ec05da72" ], "index": "pypi", - "version": "==0.17.0" + "version": "==0.17.0.post1" }, "uvloop": { "hashes": [ @@ -803,68 +811,68 @@ }, "multidict": { "hashes": [ - "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", - "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", - "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", - "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", - "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", - "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", - "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", - "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", - "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", - "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", - "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", - "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", - "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", - "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", - "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", - "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", - "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", - "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", - "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", - "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", - "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", - "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", - "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", - "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", - "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", - "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", - "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", - "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", - "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", - "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", - "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", - "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", - "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", - "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", - "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", - "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", - "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", - "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", - "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", - "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", - "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", - "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", - "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", - "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", - "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", - "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", - "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", - "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", - "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", - "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", - "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", - "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", - "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", - "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", - "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", - "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", - "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", - "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", - "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" + "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", + "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", + "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", + "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", + "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", + "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", + "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", + "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", + "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", + "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", + "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", + "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", + "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", + "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", + "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", + "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", + "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", + "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", + "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", + "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", + "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", + "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", + "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", + "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", + "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", + "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", + "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", + "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", + "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", + "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", + "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", + "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", + "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", + "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", + "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", + "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", + "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", + "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", + "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", + "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", + "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", + "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", + "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", + "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", + "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", + "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", + "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", + "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", + "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", + "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", + "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", + "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", + "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", + "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", + "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", + "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", + "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", + "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", + "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" ], "markers": "python_version >= '3.7'", - "version": "==6.0.1" + "version": "==6.0.2" }, "mypy-extensions": { "hashes": [ diff --git a/Procfile b/Procfile index afd8645..5739a74 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: gunicorn main:api \ No newline at end of file +web: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 5be449d..9679b87 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,14 +19,15 @@ charset-normalizer==2.0.10; python_version >= '3' click==8.0.3; python_version >= '3.6' dailyprogrammer==1.0 decorator==5.1.1; python_version >= '3.5' -fastapi==0.72.0 +fastapi==0.73.0 frozenlist==1.3.0; python_version >= '3.7' +gunicorn==20.1.0 h11==0.13.0; python_version >= '3.6' httptools==0.3.0 idna==3.3; python_version >= '3' jsonpath-rw-ext==1.2.2 jsonpath-rw==1.4.0 -multidict==6.0.1; python_version >= '3.7' +multidict==6.0.2; python_version >= '3.7' pbr==5.8.0; python_version >= '2.6' ply==3.11 pyairtable==1.0.0.post1 @@ -45,7 +46,7 @@ typing-extensions==4.0.1; python_version >= '3.6' tzdata==2021.5; python_version >= '3.6' tzlocal==4.1; python_version >= '3.6' urllib3==1.26.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' -uvicorn[standard]==0.17.0 +uvicorn[standard]==0.17.0.post1 uvloop==0.16.0 watchgod==0.7 websockets==10.1 diff --git a/requirements_dev.txt b/requirements_dev.txt index 5be449d..9679b87 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -19,14 +19,15 @@ charset-normalizer==2.0.10; python_version >= '3' click==8.0.3; python_version >= '3.6' dailyprogrammer==1.0 decorator==5.1.1; python_version >= '3.5' -fastapi==0.72.0 +fastapi==0.73.0 frozenlist==1.3.0; python_version >= '3.7' +gunicorn==20.1.0 h11==0.13.0; python_version >= '3.6' httptools==0.3.0 idna==3.3; python_version >= '3' jsonpath-rw-ext==1.2.2 jsonpath-rw==1.4.0 -multidict==6.0.1; python_version >= '3.7' +multidict==6.0.2; python_version >= '3.7' pbr==5.8.0; python_version >= '2.6' ply==3.11 pyairtable==1.0.0.post1 @@ -45,7 +46,7 @@ typing-extensions==4.0.1; python_version >= '3.6' tzdata==2021.5; python_version >= '3.6' tzlocal==4.1; python_version >= '3.6' urllib3==1.26.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' -uvicorn[standard]==0.17.0 +uvicorn[standard]==0.17.0.post1 uvloop==0.16.0 watchgod==0.7 websockets==10.1 From 2ef2fe4ecbef49df3efd047f96d65962f58cd7a0 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 24 Jan 2022 18:46:01 -0600 Subject: [PATCH 28/69] Changes procfile --- Procfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Procfile b/Procfile index 5739a74..394a37f 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app \ No newline at end of file +web: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:api \ No newline at end of file From 11872542f1802cd7d443efd0e5179a625c60b5f2 Mon Sep 17 00:00:00 2001 From: Judson Stevens <35241250+JudsonStevens@users.noreply.github.com> Date: Wed, 9 Mar 2022 14:27:19 -0600 Subject: [PATCH 29/69] Rewrite of Pybot (#376) * Replaces majority of code with rewrite code * Adds in handling of new join testing * Developer script * Adds in daily programmer and event subs to manifest * Changes to daily programmer * Revert "Changes to daily programmer" This reverts commit 548845f082712da1c798306c17cccbfa628daa48. * Changes to daily programmer * New changes * Removes circle CI and dependabot settings --- .circleci/config.yml | 102 -- .dockerignore | 1 - .flake8 | 15 - .github/FUNDING.yml | 3 - .github/dependabot.yml | 57 - .gitignore | 18 +- .isort.cfg | 6 - Pipfile | 29 + Pipfile.lock | 1145 +++++++++++++++++ README.md | 80 +- bot_manifest.yml | 73 ++ docker/Dockerfile | 42 +- docker/docker-compose.override.yml | 9 + docker/docker-compose.prod.yml | 6 + docker/docker-compose.yml | 17 +- logging.yml | 32 - main.py | 292 +++++ .../message_templates => modules}/__init__.py | 0 modules/airtable/__init__.py | 26 + modules/airtable/daily_programmer_table.py | 45 + modules/airtable/mentorship_tables.py | 185 +++ modules/airtable/message_text_table.py | 43 + modules/airtable/scheduled_message_table.py | 25 + modules/airtable/shared_table.py | 31 + .../handlers}/__init__.py | 0 modules/handlers/channel_join_handler.py | 106 ++ modules/handlers/daily_programmer.py | 78 ++ modules/handlers/greeting_handler.py | 111 ++ modules/handlers/mentorship_handler.py | 222 ++++ modules/handlers/report_handler.py | 98 ++ .../api => modules/models}/__init__.py | 0 modules/models/daily_programmer_models.py | 41 + modules/models/greeting_models.py | 29 + modules/models/mentorship_models.py | 166 +++ modules/models/message_text_models.py | 26 + .../models/report_models.py | 0 modules/models/scheduled_message_models.py | 52 + modules/models/shared_models.py | 46 + modules/models/slack_models/__init__.py | 0 modules/models/slack_models/action_models.py | 36 + modules/models/slack_models/command_models.py | 41 + modules/models/slack_models/event_models.py | 59 + modules/models/slack_models/message_models.py | 0 modules/models/slack_models/shared_models.py | 320 +++++ modules/models/slack_models/slack_models.py | 97 ++ modules/models/slack_models/view_models.py | 22 + modules/slack/__init__.py | 0 modules/slack/blocks/__init__.py | 0 modules/slack/blocks/announcement_blocks.py | 19 + .../channel_join_request_blocks.json | 29 + .../general_announcement.json | 21 + .../block_kit_examples/greeting_block.json | 55 + .../mentorship/mentorship_claim_blocks.json | 45 + .../mentorship/mentorship_request_block.json | 588 +++++++++ .../mentorship/mentorship_request_modal.json | 573 +++++++++ .../block_kit_examples/new_join_delayed.json | 20 + .../new_join_immediate.json | 93 ++ .../reports/report_claim.json | 46 + .../reports/report_form.json | 49 + .../response_to_user_on_failed_report.json | 11 + ...response_to_user_on_successful_report.json | 11 + modules/slack/blocks/greeting_blocks.py | 67 + modules/slack/blocks/mentorship_blocks.py | 272 ++++ modules/slack/blocks/new_join_blocks.py | 133 ++ modules/slack/blocks/report_blocks.py | 117 ++ modules/slack/blocks/shared_blocks.py | 73 ++ modules/utils/__init__.py | 138 ++ modules/utils/daily_programmer_scheduler.py | 9 + .../mentorship_request_claim_action.json | 110 ++ .../pride_request_command.json | 14 + .../view_submission_request.json | 737 +++++++++++ .../example_responses/view_open_response.json | 649 ++++++++++ modules/utils/message_scheduler.py | 62 + modules/utils/one_off_scripts.py | 59 + poetry.lock | 1080 ---------------- pybot/__init__.py | 8 - pybot/__main__.py | 63 - pybot/customLogging.py | 6 - pybot/endpoints/__init__.py | 7 - pybot/endpoints/airtable/__init__.py | 5 - .../airtable/message_templates/messages.py | 39 - pybot/endpoints/airtable/requests.py | 50 - pybot/endpoints/airtable/utils.py | 97 -- pybot/endpoints/api/__init__.py | 5 - pybot/endpoints/api/slack_api.py | 70 - pybot/endpoints/api/utils.py | 105 -- pybot/endpoints/slack/__init__.py | 8 - pybot/endpoints/slack/actions/__init__.py | 89 -- .../slack/actions/general_actions.py | 52 - .../endpoints/slack/actions/mentor_request.py | 145 --- .../slack/actions/mentor_volunteer.py | 80 -- pybot/endpoints/slack/actions/new_member.py | 97 -- .../endpoints/slack/actions/report_message.py | 36 - pybot/endpoints/slack/commands.py | 159 --- pybot/endpoints/slack/events.py | 65 - .../slack/message_templates/block_action.py | 95 -- .../slack/message_templates/commands.py | 211 --- .../slack/message_templates/mentor_request.py | 273 ---- .../message_templates/mentor_volunteer.py | 99 -- .../endpoints/slack/message_templates/tech.py | 129 -- pybot/endpoints/slack/messages.py | 98 -- pybot/endpoints/slack/utils/__init__.py | 30 - .../endpoints/slack/utils/action_messages.py | 366 ------ pybot/endpoints/slack/utils/command_utils.py | 20 - pybot/endpoints/slack/utils/event_messages.py | 124 -- pybot/endpoints/slack/utils/event_utils.py | 144 --- pybot/endpoints/slack/utils/general_utils.py | 42 - pybot/endpoints/slack/utils/slash_lunch.py | 124 -- pybot/endpoints/slack/utils/slash_repeat.py | 101 -- pybot/plugins/__init__.py | 2 - pybot/plugins/airtable/__init__.py | 1 - pybot/plugins/airtable/api.py | 146 --- pybot/plugins/airtable/endpoints.py | 53 - pybot/plugins/airtable/plugin.py | 55 - pybot/plugins/api/__init__.py | 1 - pybot/plugins/api/endpoints.py | 52 - pybot/plugins/api/plugin.py | 49 - pybot/plugins/api/request.py | 88 -- pyproject.toml | 32 - setup.sh | 41 + tests/conftest.py | 58 +- tests/data/__init__.py | 1 - tests/data/actions.py | 58 - tests/data/events.py | 166 --- .../endpoints/api/test_slack_api_endpoint.py | 47 - tests/endpoints/slack/test_slack_actions.py | 34 - tests/endpoints/slack/test_slack_events.py | 41 - tests/unit/__init__.py | 0 ...iliation_table_has_all_desired_fields.yaml | 61 + ...on_table_has_correct_number_of_fields.yaml | 63 + ...t_mentor_table_has_all_desired_fields.yaml | 62 + ...or_table_has_correct_number_of_fields.yaml | 64 + ...iliation_table_has_all_desired_fields.yaml | 60 + ...on_table_has_correct_number_of_fields.yaml | 62 + ...iliation_table_has_all_desired_fields.yaml | 63 + ...on_table_has_correct_number_of_fields.yaml | 65 + ...services_table_has_all_desired_fields.yaml | 60 + ...es_table_has_correct_number_of_fields.yaml | 62 + ...killsets_table_has_all_desired_fields.yaml | 60 + ...ts_table_has_correct_number_of_fields.yaml | 62 + ...iliation_table_has_all_desired_fields.yaml | 60 + ...on_table_has_correct_number_of_fields.yaml | 62 + ...iliation_table_has_all_desired_fields.yaml | 61 + ...on_table_has_correct_number_of_fields.yaml | 63 + tests/unit/test_airtable.py | 215 ++++ 145 files changed, 8787 insertions(+), 5297 deletions(-) delete mode 100644 .circleci/config.yml delete mode 100644 .dockerignore delete mode 100644 .flake8 delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/dependabot.yml delete mode 100644 .isort.cfg create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 bot_manifest.yml create mode 100644 docker/docker-compose.override.yml create mode 100644 docker/docker-compose.prod.yml delete mode 100644 logging.yml create mode 100644 main.py rename {pybot/endpoints/slack/message_templates => modules}/__init__.py (100%) create mode 100644 modules/airtable/__init__.py create mode 100644 modules/airtable/daily_programmer_table.py create mode 100644 modules/airtable/mentorship_tables.py create mode 100644 modules/airtable/message_text_table.py create mode 100644 modules/airtable/scheduled_message_table.py create mode 100644 modules/airtable/shared_table.py rename {tests/endpoints => modules/handlers}/__init__.py (100%) create mode 100644 modules/handlers/channel_join_handler.py create mode 100644 modules/handlers/daily_programmer.py create mode 100644 modules/handlers/greeting_handler.py create mode 100644 modules/handlers/mentorship_handler.py create mode 100644 modules/handlers/report_handler.py rename {tests/endpoints/api => modules/models}/__init__.py (100%) create mode 100644 modules/models/daily_programmer_models.py create mode 100644 modules/models/greeting_models.py create mode 100644 modules/models/mentorship_models.py create mode 100644 modules/models/message_text_models.py rename tests/endpoints/slack/__init__.py => modules/models/report_models.py (100%) create mode 100644 modules/models/scheduled_message_models.py create mode 100644 modules/models/shared_models.py create mode 100644 modules/models/slack_models/__init__.py create mode 100644 modules/models/slack_models/action_models.py create mode 100644 modules/models/slack_models/command_models.py create mode 100644 modules/models/slack_models/event_models.py create mode 100644 modules/models/slack_models/message_models.py create mode 100644 modules/models/slack_models/shared_models.py create mode 100644 modules/models/slack_models/slack_models.py create mode 100644 modules/models/slack_models/view_models.py create mode 100644 modules/slack/__init__.py create mode 100644 modules/slack/blocks/__init__.py create mode 100644 modules/slack/blocks/announcement_blocks.py create mode 100644 modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json create mode 100644 modules/slack/blocks/block_kit_examples/general_announcement.json create mode 100644 modules/slack/blocks/block_kit_examples/greeting_block.json create mode 100644 modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json create mode 100644 modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json create mode 100644 modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json create mode 100644 modules/slack/blocks/block_kit_examples/new_join_delayed.json create mode 100644 modules/slack/blocks/block_kit_examples/new_join_immediate.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/report_claim.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/report_form.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json create mode 100644 modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json create mode 100644 modules/slack/blocks/greeting_blocks.py create mode 100644 modules/slack/blocks/mentorship_blocks.py create mode 100644 modules/slack/blocks/new_join_blocks.py create mode 100644 modules/slack/blocks/report_blocks.py create mode 100644 modules/slack/blocks/shared_blocks.py create mode 100644 modules/utils/__init__.py create mode 100644 modules/utils/daily_programmer_scheduler.py create mode 100644 modules/utils/example_requests/mentorship_request_claim_action.json create mode 100644 modules/utils/example_requests/pride_request_command.json create mode 100644 modules/utils/example_requests/view_submission_request.json create mode 100644 modules/utils/example_responses/view_open_response.json create mode 100644 modules/utils/message_scheduler.py create mode 100644 modules/utils/one_off_scripts.py delete mode 100644 poetry.lock delete mode 100644 pybot/__init__.py delete mode 100644 pybot/__main__.py delete mode 100644 pybot/customLogging.py delete mode 100644 pybot/endpoints/__init__.py delete mode 100644 pybot/endpoints/airtable/__init__.py delete mode 100644 pybot/endpoints/airtable/message_templates/messages.py delete mode 100644 pybot/endpoints/airtable/requests.py delete mode 100644 pybot/endpoints/airtable/utils.py delete mode 100644 pybot/endpoints/api/__init__.py delete mode 100644 pybot/endpoints/api/slack_api.py delete mode 100644 pybot/endpoints/api/utils.py delete mode 100644 pybot/endpoints/slack/__init__.py delete mode 100644 pybot/endpoints/slack/actions/__init__.py delete mode 100644 pybot/endpoints/slack/actions/general_actions.py delete mode 100644 pybot/endpoints/slack/actions/mentor_request.py delete mode 100644 pybot/endpoints/slack/actions/mentor_volunteer.py delete mode 100644 pybot/endpoints/slack/actions/new_member.py delete mode 100644 pybot/endpoints/slack/actions/report_message.py delete mode 100644 pybot/endpoints/slack/commands.py delete mode 100644 pybot/endpoints/slack/events.py delete mode 100644 pybot/endpoints/slack/message_templates/block_action.py delete mode 100644 pybot/endpoints/slack/message_templates/commands.py delete mode 100644 pybot/endpoints/slack/message_templates/mentor_request.py delete mode 100644 pybot/endpoints/slack/message_templates/mentor_volunteer.py delete mode 100644 pybot/endpoints/slack/message_templates/tech.py delete mode 100644 pybot/endpoints/slack/messages.py delete mode 100644 pybot/endpoints/slack/utils/__init__.py delete mode 100644 pybot/endpoints/slack/utils/action_messages.py delete mode 100644 pybot/endpoints/slack/utils/command_utils.py delete mode 100644 pybot/endpoints/slack/utils/event_messages.py delete mode 100644 pybot/endpoints/slack/utils/event_utils.py delete mode 100644 pybot/endpoints/slack/utils/general_utils.py delete mode 100644 pybot/endpoints/slack/utils/slash_lunch.py delete mode 100644 pybot/endpoints/slack/utils/slash_repeat.py delete mode 100644 pybot/plugins/__init__.py delete mode 100644 pybot/plugins/airtable/__init__.py delete mode 100644 pybot/plugins/airtable/api.py delete mode 100644 pybot/plugins/airtable/endpoints.py delete mode 100644 pybot/plugins/airtable/plugin.py delete mode 100644 pybot/plugins/api/__init__.py delete mode 100644 pybot/plugins/api/endpoints.py delete mode 100644 pybot/plugins/api/plugin.py delete mode 100644 pybot/plugins/api/request.py delete mode 100644 pyproject.toml create mode 100755 setup.sh delete mode 100644 tests/data/__init__.py delete mode 100644 tests/data/actions.py delete mode 100644 tests/data/events.py delete mode 100644 tests/endpoints/api/test_slack_api_endpoint.py delete mode 100644 tests/endpoints/slack/test_slack_actions.py delete mode 100644 tests/endpoints/slack/test_slack_events.py create mode 100644 tests/unit/__init__.py create mode 100644 tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml create mode 100644 tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml create mode 100644 tests/unit/test_airtable.py diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 0b8e120..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,102 +0,0 @@ -version: 2.1 - -orbs: - aws-ecr: circleci/aws-ecr@7.3.0 - aws-ecs: circleci/aws-ecs@2.2.1 - docker: circleci/docker@0.5.1 - -workflows: - build_test_deploy: - jobs: - - build_test - - # push new Docker image to Docker Hub - - docker/publish: - image: operationcode/pybot - dockerfile: docker/Dockerfile - tag: ${CIRCLE_BRANCH} - after_build: - - run: - name: Tag and Push - command: | - IMAGE_ID=operationcode/pybot - docker tag ${IMAGE_ID}:${CIRCLE_BRANCH} ${IMAGE_ID}:${CIRCLE_BRANCH}-${CIRCLE_BUILD_NUM} - docker push ${IMAGE_ID}:${CIRCLE_BRANCH}-${CIRCLE_BUILD_NUM} - requires: - - build_test - filters: - branches: - only: - - master - - staging - - - # push new Docker image to ECS - - aws-ecr/build-and-push-image: - repo: pybot - tag: '${CIRCLE_BRANCH}' - dockerfile: docker/Dockerfile - requires: - - build_test - filters: - branches: - only: - - staging - - master - - # Update ECS task and service, then replace the current one - - aws-ecs/deploy-service-update: - family: 'pybot-${CIRCLE_BRANCH}' - service-name: 'pybot-svc-${CIRCLE_BRANCH}' - cluster-name: 'python-oc-services' - container-image-name-updates: 'container=pybot,tag=${CIRCLE_BRANCH}' - verify-revision-is-deployed: true - requires: - - aws-ecr/build-and-push-image - filters: - branches: - only: - - master - - staging - -jobs: - build_test: - docker: - - image: circleci/python:3.7.1 - environment: # environment variables for primary container - PIPENV_VENV_IN_PROJECT: "true" - - steps: - - checkout - - run: sudo chown -R circleci:circleci /usr/local/bin - - - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages - - - restore_cache: # ensure this step occurs *before* installing dependencies - keys: - - v1-dependencies-{{ checksum "poetry.lock" }} - # fallback to using the latest cache if no exact match is found - - v1-dependencies- - - - run: - name: Installing dependencies - command: | - pip install --upgrade pip - pip install poetry - poetry install - - - save_cache: - key: v1-dependencies-{{ checksum "poetry.lock" }} - paths: - - "/home/circleci/.cache/pypoetry/virtualenvs" - - ".venv" - - # Run tests - - run: - name: Run Tests - command: | - mkdir test-results - poetry run pytest --junitxml=test-results/pytest/results.xml - - - store_test_results: - path: test-results \ No newline at end of file diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 4f509e5..0000000 --- a/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -*.env \ No newline at end of file diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 45e50cb..0000000 --- a/.flake8 +++ /dev/null @@ -1,15 +0,0 @@ -[flake8] -max-line-length = 88 - -select = C,E,F,W,B,B950 - -max-complexity = 10 - -ignore = - E501 - F401 - W503 - -exclude = - __pycache__ - testing.py diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 8f43647..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -# These are supported funding model platforms - -custom: https://secure.lglforms.com/form_engine/s/BRtP7QUKyHOyEYsZROsRew diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 7601031..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,57 +0,0 @@ -version: 2 -updates: -- package-ecosystem: pip - directory: "/" - schedule: - interval: daily - time: "07:00" - timezone: America/Los_Angeles - open-pull-requests-limit: 10 - ignore: - - dependency-name: black - versions: - - 21.4b0 - - 21.4b1 - - dependency-name: pytest-asyncio - versions: - - 0.15.0 - - dependency-name: python-dotenv - versions: - - 0.15.0 - - 0.16.0 - - dependency-name: isort - versions: - - 5.7.0 - - 5.8.0 - - dependency-name: flake8 - versions: - - 3.8.4 - - 3.9.0 - - dependency-name: sentry-sdk - versions: - - 0.19.5 - - 0.20.0 - - 0.20.2 - - 0.20.3 - - 1.0.0 - - dependency-name: aiohttp - versions: - - 3.7.4 - - dependency-name: cython - versions: - - 0.29.22 - - dependency-name: pytest - versions: - - 6.2.2 - - dependency-name: pyyaml - versions: - - 5.4.1 - - dependency-name: pytest-mock - versions: - - 3.5.1 - - dependency-name: requests - versions: - - 2.25.1 - - dependency-name: cchardet - versions: - - 2.1.7 diff --git a/.gitignore b/.gitignore index f9441aa..d3b2551 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,4 @@ -.idea -*.env -.pytest_cache -!/docker/example.env - +### Python template # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] @@ -19,6 +15,7 @@ dist/ downloads/ eggs/ .eggs/ +lib/ lib64/ parts/ sdist/ @@ -42,7 +39,6 @@ pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ -.nox/ .coverage .coverage.* .cache @@ -77,10 +73,6 @@ target/ # Jupyter Notebook .ipynb_checkpoints -# IPython -profile_default/ -ipython_config.py - # pyenv .python-version @@ -111,8 +103,6 @@ venv.bak/ # mypy .mypy_cache/ -.dmypy.json -dmypy.json -# Pyre type checker -.pyre/ \ No newline at end of file +.idea/* +env* \ No newline at end of file diff --git a/.isort.cfg b/.isort.cfg deleted file mode 100644 index 2df5cc3..0000000 --- a/.isort.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[settings] -line_length = 88 -multi_line_output = 3 -include_trailing_comma = true -force_grid_wrap = 0 -use_parentheses = true diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..27cfc22 --- /dev/null +++ b/Pipfile @@ -0,0 +1,29 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +fastapi = "*" +uvicorn = {extras = ["standard"], version = "*"} +slack-bolt = "*" +requests = "*" +slack-sdk = "*" +airtable = "*" +pyairtable = "*" +pydantic = "*" +apscheduler = "*" +dailyprogrammer = "*" +aiohttp = "==3.8.1" + +[dev-packages] +pytest = "*" +black = "*" +pytest-vcr = "*" +pyyaml = "*" + +[requires] +python_version = "3.10" + +[pipenv] +allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..ffaf1a5 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,1145 @@ +{ + "_meta": { + "hash": { + "sha256": "e7cb359b2375bd63dd0e5c6476a7c8c153506cc0b94c7624523eea210c24421a" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.10" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "aiohttp": { + "hashes": [ + "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3", + "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782", + "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75", + "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf", + "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7", + "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675", + "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1", + "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785", + "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4", + "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf", + "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5", + "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15", + "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca", + "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8", + "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac", + "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8", + "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef", + "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516", + "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700", + "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2", + "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8", + "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0", + "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676", + "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad", + "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155", + "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db", + "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd", + "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091", + "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602", + "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411", + "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93", + "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd", + "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec", + "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51", + "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7", + "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17", + "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d", + "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00", + "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923", + "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440", + "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32", + "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e", + "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1", + "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724", + "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a", + "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8", + "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2", + "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33", + "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b", + "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2", + "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632", + "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b", + "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2", + "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316", + "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74", + "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96", + "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866", + "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44", + "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950", + "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa", + "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c", + "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a", + "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd", + "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd", + "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9", + "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421", + "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2", + "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922", + "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4", + "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237", + "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642", + "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578" + ], + "index": "pypi", + "version": "==3.8.1" + }, + "aiosignal": { + "hashes": [ + "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", + "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.0" + }, + "airtable": { + "hashes": [ + "sha256:d653e1b3b92297e3f0cc4226215d43d7fa99c72f38918e9371e445abf0baa70c", + "sha256:fb667e55da3af1341e0f2946014cc29e7d0613e69f3ee20528051c4075aee75c" + ], + "index": "pypi", + "version": "==0.4.8" + }, + "anyio": { + "hashes": [ + "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6", + "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e" + ], + "markers": "python_full_version >= '3.6.2'", + "version": "==3.5.0" + }, + "apscheduler": { + "hashes": [ + "sha256:5cf344ebcfbdaa48ae178c029c055cec7bc7a4a47c21e315e4d1f08bd35f2355", + "sha256:c22cb14b411a31435eb2c530dfbbec948ac63015b517087c7978adb61b574865" + ], + "index": "pypi", + "version": "==3.8.1" + }, + "asgiref": { + "hashes": [ + "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0", + "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9" + ], + "markers": "python_version >= '3.7'", + "version": "==3.5.0" + }, + "async-timeout": { + "hashes": [ + "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", + "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.2" + }, + "attrs": { + "hashes": [ + "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", + "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==21.4.0" + }, + "certifi": { + "hashes": [ + "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", + "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + ], + "version": "==2021.10.8" + }, + "charset-normalizer": { + "hashes": [ + "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd", + "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455" + ], + "markers": "python_version >= '3'", + "version": "==2.0.10" + }, + "click": { + "hashes": [ + "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", + "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" + ], + "markers": "python_version >= '3.6'", + "version": "==8.0.3" + }, + "dailyprogrammer": { + "hashes": [ + "sha256:1540a01c59b3b99a5b3f1dcd94032b639a09afae730ee7d80267a532be014949", + "sha256:32391ed029daebbc052ebc2a6c28e1ef97006338c396f2ae9958413eb1c137fc", + "sha256:5d646f22e2983b2b21486cf169f2a02faa423b63cfce30a2b985499e95a784b1" + ], + "index": "pypi", + "version": "==1.0" + }, + "decorator": { + "hashes": [ + "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", + "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" + ], + "markers": "python_version >= '3.5'", + "version": "==5.1.1" + }, + "fastapi": { + "hashes": [ + "sha256:019ec52c00581bc055e6dfb621aaa9c2a56007c283839305412e1073a777eaf1", + "sha256:7421a2f30e9ed1866874cff089733d4f9a0cd4f49b6ea3995c0de75e32bbb52f" + ], + "index": "pypi", + "version": "==0.72.0" + }, + "frozenlist": { + "hashes": [ + "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e", + "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08", + "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b", + "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486", + "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78", + "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468", + "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1", + "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953", + "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3", + "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d", + "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a", + "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141", + "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08", + "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07", + "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa", + "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa", + "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868", + "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f", + "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b", + "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b", + "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1", + "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f", + "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478", + "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58", + "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01", + "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8", + "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d", + "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676", + "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274", + "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab", + "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8", + "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24", + "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a", + "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2", + "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f", + "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f", + "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93", + "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1", + "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51", + "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846", + "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5", + "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d", + "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c", + "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e", + "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae", + "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02", + "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0", + "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b", + "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3", + "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b", + "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa", + "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a", + "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d", + "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed", + "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148", + "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9", + "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c", + "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2", + "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.0" + }, + "h11": { + "hashes": [ + "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06", + "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442" + ], + "markers": "python_version >= '3.6'", + "version": "==0.13.0" + }, + "httptools": { + "hashes": [ + "sha256:04114db99605c9b56ea22a8ec4d7b1485b908128ed4f4a8f6438489c428da794", + "sha256:074afd8afdeec0fa6786cd4a1676e0c0be23dc9a017a86647efa6b695168104f", + "sha256:113816f9af7dcfc4aa71ebb5354d77365f666ecf96ac7ff2aa1d24b6bca44165", + "sha256:1a8f26327023fa1a947d36e60a0582149e182fbbc949c8a65ec8665754dbbe69", + "sha256:2119fa619a4c53311f594f25c0205d619350fcb32140ec5057f861952e9b2b4f", + "sha256:21e948034f70e47c8abfa2d5e6f1a5661f87a2cddc7bcc70f61579cc87897c70", + "sha256:32a10a5903b5bc0eb647d01cd1e95bec3bb614a9bf53f0af1e01360b2debdf81", + "sha256:3787c1f46e9722ef7f07ea5c76b0103037483d1b12e34a02c53ceca5afa4e09a", + "sha256:3f82eb106e1474c63dba36a176067e65b48385f4cecddf3616411aa5d1fbdfec", + "sha256:3f9b4856d46ba1f0c850f4e84b264a9a8b4460acb20e865ec00978ad9fbaa4cf", + "sha256:4137137de8976511a392e27bfdcf231bd926ac13d375e0414e927b08217d779e", + "sha256:4687dfc116a9f1eb22a7d797f0dc6f6e17190d406ca4e729634b38aa98044b17", + "sha256:47dba2345aaa01b87e4981e8756af441349340708d5b60712c98c55a4d28f4af", + "sha256:5a836bd85ae1fb4304f674808488dae403e136d274aa5bafd0e6ee456f11c371", + "sha256:6e676bc3bb911b11f3d7e2144b9a53600bf6b9b21e0e4437aa308e1eef094d97", + "sha256:72ee0e3fb9c6437ab3ae34e9abee67fcee6876f4f58504e3f613dd5882aafdb7", + "sha256:79717080dc3f8b1eeb7f820b9b81528acbc04be6041f323fdd97550da2062575", + "sha256:8ac842df4fc3952efa7820b277961ea55e068bbc54cb59a0820400de7ae358d8", + "sha256:9f475b642c48b1b78584bdd12a5143e2c512485664331eade9c29ef769a17598", + "sha256:b8ac7dee63af4346e02b1e6d32202e3b5b3706a9928bec6da6d7a5b066217422", + "sha256:c0ac2e0ce6733c55858932e7d37fcc7b67ba6bb23e9648593c55f663de031b93", + "sha256:c14576b737d9e6e4f2a86af04918dbe9b62f57ce8102a8695c9a382dbe405c7f", + "sha256:cdc3975db86c29817e6d13df14e037c931fc893a710fb71097777a4147090068", + "sha256:eda95634027200f4b2a6d499e7c2e7fa9b8ee57e045dfda26958ea0af27c070b" + ], + "version": "==0.3.0" + }, + "idna": { + "hashes": [ + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + ], + "markers": "python_version >= '3'", + "version": "==3.3" + }, + "jsonpath-rw": { + "hashes": [ + "sha256:05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec" + ], + "version": "==1.4.0" + }, + "jsonpath-rw-ext": { + "hashes": [ + "sha256:0947e018c4e6d46f9d04c56487793c702eb225fa252891aa4ed41a9ca26f3d84", + "sha256:a9e44e803b6d87d135b09d1e5af0db4d4cf97ba62711a80aa51c8c721980a994" + ], + "version": "==1.2.2" + }, + "multidict": { + "hashes": [ + "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", + "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", + "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", + "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", + "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", + "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", + "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", + "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", + "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", + "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", + "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", + "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", + "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", + "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", + "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", + "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", + "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", + "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", + "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", + "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", + "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", + "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", + "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", + "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", + "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", + "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", + "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", + "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", + "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", + "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", + "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", + "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", + "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", + "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", + "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", + "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", + "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", + "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", + "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", + "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", + "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", + "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", + "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", + "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", + "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", + "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", + "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", + "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", + "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", + "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", + "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", + "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", + "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", + "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", + "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", + "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", + "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", + "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", + "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" + ], + "markers": "python_version >= '3.7'", + "version": "==6.0.1" + }, + "pbr": { + "hashes": [ + "sha256:176e8560eaf61e127817ef93d8a844803abb27a4d4637f0ff3bb783129be2e0a", + "sha256:672d8ebee84921862110f23fcec2acea191ef58543d34dfe9ef3d9f13c31cddf" + ], + "markers": "python_version >= '2.6'", + "version": "==5.8.0" + }, + "ply": { + "hashes": [ + "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", + "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce" + ], + "version": "==3.11" + }, + "pyairtable": { + "hashes": [ + "sha256:4132af74f96e185ed04ab5bb73c1b7fcccd0b6e1578e41af149f1b9c1383788c", + "sha256:cfb5f26a2d5a75b3896428eb87def47427c3e570ac08bb61dec70927fe9b1117" + ], + "index": "pypi", + "version": "==1.0.0.post1" + }, + "pydantic": { + "hashes": [ + "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3", + "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398", + "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1", + "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65", + "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4", + "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16", + "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2", + "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c", + "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6", + "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce", + "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9", + "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3", + "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034", + "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c", + "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a", + "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77", + "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b", + "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6", + "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f", + "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721", + "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37", + "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032", + "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d", + "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed", + "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6", + "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054", + "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25", + "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46", + "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5", + "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c", + "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070", + "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1", + "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7", + "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d", + "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145" + ], + "index": "pypi", + "version": "==1.9.0" + }, + "python-dotenv": { + "hashes": [ + "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3", + "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f" + ], + "version": "==0.19.2" + }, + "pytz": { + "hashes": [ + "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c", + "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" + ], + "version": "==2021.3" + }, + "pytz-deprecation-shim": { + "hashes": [ + "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", + "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.1.0.post0" + }, + "pyyaml": { + "hashes": [ + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + ], + "version": "==6.0" + }, + "requests": { + "hashes": [ + "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", + "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" + ], + "index": "pypi", + "version": "==2.27.1" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "slack-bolt": { + "hashes": [ + "sha256:12ade47fa61f66804715e54d0b3defe968d40b96d059afce1cb3bb9b4686bd05", + "sha256:be0a65a6d295101af75f4977c617a7702de7a6397e4e972fa026bccfea5f40e8" + ], + "index": "pypi", + "version": "==1.11.2" + }, + "slack-sdk": { + "hashes": [ + "sha256:54f2a5f7419f1ab932af9e3200f7f2f93db96e0f0eb8ad7d3b4214aa9f124641", + "sha256:aae6ce057e286a5e7fe7a9f256e85b886eee556def8e04b82b08f699e64d7f67" + ], + "index": "pypi", + "version": "==3.13.0" + }, + "sniffio": { + "hashes": [ + "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663", + "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de" + ], + "markers": "python_version >= '3.5'", + "version": "==1.2.0" + }, + "starlette": { + "hashes": [ + "sha256:26a18cbda5e6b651c964c12c88b36d9898481cd428ed6e063f5f29c418f73050", + "sha256:57eab3cc975a28af62f6faec94d355a410634940f10b30d68d31cb5ec1b44ae8" + ], + "markers": "python_version >= '3.6'", + "version": "==0.17.1" + }, + "typing-extensions": { + "hashes": [ + "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e", + "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.1" + }, + "tzdata": { + "hashes": [ + "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5", + "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21" + ], + "markers": "python_version >= '3.6'", + "version": "==2021.5" + }, + "tzlocal": { + "hashes": [ + "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09", + "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f" + ], + "markers": "python_version >= '3.6'", + "version": "==4.1" + }, + "urllib3": { + "hashes": [ + "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed", + "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.8" + }, + "uvicorn": { + "extras": [ + "standard" + ], + "hashes": [ + "sha256:0b89c91bb8fe84c4bded9996af13c4b8c0de799d29bffeaa0c8ad298f2be0934", + "sha256:192c2422b056a3beb512c6c260bf77a7a884204a4ae41856719c1913ead63bbb" + ], + "index": "pypi", + "version": "==0.17.0" + }, + "uvloop": { + "hashes": [ + "sha256:04ff57aa137230d8cc968f03481176041ae789308b4d5079118331ab01112450", + "sha256:089b4834fd299d82d83a25e3335372f12117a7d38525217c2258e9b9f4578897", + "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861", + "sha256:30ba9dcbd0965f5c812b7c2112a1ddf60cf904c1c160f398e7eed3a6b82dcd9c", + "sha256:3a19828c4f15687675ea912cc28bbcb48e9bb907c801873bd1519b96b04fb805", + "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d", + "sha256:647e481940379eebd314c00440314c81ea547aa636056f554d491e40503c8464", + "sha256:6ccd57ae8db17d677e9e06192e9c9ec4bd2066b77790f9aa7dede2cc4008ee8f", + "sha256:772206116b9b57cd625c8a88f2413df2fcfd0b496eb188b82a43bed7af2c2ec9", + "sha256:8e0d26fa5875d43ddbb0d9d79a447d2ace4180d9e3239788208527c4784f7cab", + "sha256:98d117332cc9e5ea8dfdc2b28b0a23f60370d02e1395f88f40d1effd2cb86c4f", + "sha256:b572256409f194521a9895aef274cea88731d14732343da3ecdb175228881638", + "sha256:bd53f7f5db562f37cd64a3af5012df8cac2c464c97e732ed556800129505bd64", + "sha256:bd8f42ea1ea8f4e84d265769089964ddda95eb2bb38b5cbe26712b0616c3edee", + "sha256:e814ac2c6f9daf4c36eb8e85266859f42174a4ff0d71b99405ed559257750382", + "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228" + ], + "version": "==0.16.0" + }, + "watchgod": { + "hashes": [ + "sha256:48140d62b0ebe9dd9cf8381337f06351e1f2e70b2203fa9c6eff4e572ca84f29", + "sha256:d6c1ea21df37847ac0537ca0d6c2f4cdf513562e95f77bb93abbcf05573407b7" + ], + "version": "==0.7" + }, + "websockets": { + "hashes": [ + "sha256:002071169d2e44ce8eb9e5ebac9fbce142ba4b5146eef1cfb16b177a27662657", + "sha256:05e7f098c76b0a4743716590bb8f9706de19f1ef5148d61d0cf76495ec3edb9c", + "sha256:08a42856158307e231b199671c4fce52df5786dd3d703f36b5d8ac76b206c485", + "sha256:0d93b7cadc761347d98da12ec1930b5c71b2096f1ceed213973e3cda23fead9c", + "sha256:10edd9d7d3581cfb9ff544ac09fc98cab7ee8f26778a5a8b2d5fd4b0684c5ba5", + "sha256:14e9cf68a08d1a5d42109549201aefba473b1d925d233ae19035c876dd845da9", + "sha256:181d2b25de5a437b36aefedaf006ecb6fa3aa1328ec0236cdde15f32f9d3ff6d", + "sha256:189ed478395967d6a98bb293abf04e8815349e17456a0a15511f1088b6cb26e4", + "sha256:1d858fb31e5ac992a2cdf17e874c95f8a5b1e917e1fb6b45ad85da30734b223f", + "sha256:1dafe98698ece09b8ccba81b910643ff37198e43521d977be76caf37709cf62b", + "sha256:3477146d1f87ead8df0f27e8960249f5248dceb7c2741e8bbec9aa5338d0c053", + "sha256:38db6e2163b021642d0a43200ee2dec8f4980bdbda96db54fde72b283b54cbfc", + "sha256:3a02ab91d84d9056a9ee833c254895421a6333d7ae7fff94b5c68e4fa8095519", + "sha256:3bbf080f3892ba1dc8838786ec02899516a9d227abe14a80ef6fd17d4fb57127", + "sha256:3ef6f73854cded34e78390dbdf40dfdcf0b89b55c0e282468ef92646fce8d13a", + "sha256:468f0031fdbf4d643f89403a66383247eb82803430b14fa27ce2d44d2662ca37", + "sha256:483edee5abed738a0b6a908025be47f33634c2ad8e737edd03ffa895bd600909", + "sha256:531d8eb013a9bc6b3ad101588182aa9b6dd994b190c56df07f0d84a02b85d530", + "sha256:5560558b0dace8312c46aa8915da977db02738ac8ecffbc61acfbfe103e10155", + "sha256:5bb6256de5a4fb1d42b3747b4e2268706c92965d75d0425be97186615bf2f24f", + "sha256:667c41351a6d8a34b53857ceb8343a45c85d438ee4fd835c279591db8aeb85be", + "sha256:6b014875fae19577a392372075e937ebfebf53fd57f613df07b35ab210f31534", + "sha256:6fdec1a0b3e5630c58e3d8704d2011c678929fce90b40908c97dfc47de8dca72", + "sha256:7bdd3d26315db0a9cf8a0af30ca95e0aa342eda9c1377b722e71ccd86bc5d1dd", + "sha256:7c9407719f42cb77049975410490c58a705da6af541adb64716573e550e5c9db", + "sha256:7d6673b2753f9c5377868a53445d0c321ef41ff3c8e3b6d57868e72054bfce5f", + "sha256:816ae7dac2c6522cfa620947ead0ca95ac654916eebf515c94d7c28de5601a6e", + "sha256:882c0b8bdff3bf1bd7f024ce17c6b8006042ec4cceba95cf15df57e57efa471c", + "sha256:8877861e3dee38c8d302eee0d5dbefa6663de3b46dc6a888f70cd7e82562d1f7", + "sha256:888a5fa2a677e0c2b944f9826c756475980f1b276b6302e606f5c4ff5635be9e", + "sha256:89e985d40d407545d5f5e2e58e1fdf19a22bd2d8cd54d20a882e29f97e930a0a", + "sha256:97b4b68a2ddaf5c4707ae79c110bfd874c5be3c6ac49261160fb243fa45d8bbb", + "sha256:98de71f86bdb29430fd7ba9997f47a6b10866800e3ea577598a786a785701bb0", + "sha256:9f304a22ece735a3da8a51309bc2c010e23961a8f675fae46fdf62541ed62123", + "sha256:9fd62c6dc83d5d35fb6a84ff82ec69df8f4657fff05f9cd6c7d9bec0dd57f0f6", + "sha256:a249139abc62ef333e9e85064c27fefb113b16ffc5686cefc315bdaef3eefbc8", + "sha256:b66e6d514f12c28d7a2d80bb2a48ef223342e99c449782d9831b0d29a9e88a17", + "sha256:b68b6caecb9a0c6db537aa79750d1b592a841e4f1a380c6196091e65b2ad35f9", + "sha256:baa83174390c0ff4fc1304fbe24393843ac7a08fdd59295759c4b439e06b1536", + "sha256:bb01ea7b5f52e7125bdc3c5807aeaa2d08a0553979cf2d96a8b7803ea33e15e7", + "sha256:cfae282c2aa7f0c4be45df65c248481f3509f8c40ca8b15ed96c35668ae0ff69", + "sha256:d0d81b46a5c87d443e40ce2272436da8e6092aa91f5fbeb60d1be9f11eff5b4c", + "sha256:d9b245db5a7e64c95816e27d72830e51411c4609c05673d1ae81eb5d23b0be54", + "sha256:ddab2dc69ee5ae27c74dbfe9d7bb6fee260826c136dca257faa1a41d1db61a89", + "sha256:e1b60fd297adb9fc78375778a5220da7f07bf54d2a33ac781319650413fc6a60", + "sha256:e259be0863770cb91b1a6ccf6907f1ac2f07eff0b7f01c249ed751865a70cb0d", + "sha256:e3872ae57acd4306ecf937d36177854e218e999af410a05c17168cd99676c512", + "sha256:e4819c6fb4f336fd5388372cb556b1f3a165f3f68e66913d1a2fc1de55dc6f58" + ], + "version": "==10.1" + }, + "yarl": { + "hashes": [ + "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac", + "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8", + "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e", + "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746", + "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98", + "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125", + "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d", + "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d", + "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986", + "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d", + "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec", + "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8", + "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee", + "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3", + "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1", + "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd", + "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b", + "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de", + "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0", + "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8", + "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6", + "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245", + "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23", + "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332", + "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1", + "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c", + "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4", + "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0", + "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8", + "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832", + "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58", + "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6", + "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1", + "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52", + "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92", + "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185", + "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d", + "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d", + "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b", + "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739", + "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05", + "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63", + "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d", + "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa", + "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913", + "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe", + "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b", + "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b", + "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656", + "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1", + "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4", + "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e", + "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63", + "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271", + "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed", + "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d", + "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda", + "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265", + "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f", + "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c", + "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba", + "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c", + "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b", + "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523", + "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a", + "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef", + "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95", + "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72", + "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794", + "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41", + "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", + "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" + ], + "markers": "python_version >= '3.6'", + "version": "==1.7.2" + } + }, + "develop": { + "attrs": { + "hashes": [ + "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", + "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==21.4.0" + }, + "black": { + "hashes": [ + "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3", + "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f" + ], + "index": "pypi", + "version": "==21.12b0" + }, + "click": { + "hashes": [ + "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", + "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" + ], + "markers": "python_version >= '3.6'", + "version": "==8.0.3" + }, + "idna": { + "hashes": [ + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + ], + "markers": "python_version >= '3'", + "version": "==3.3" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "multidict": { + "hashes": [ + "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", + "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", + "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", + "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", + "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", + "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", + "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", + "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", + "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", + "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", + "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", + "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", + "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", + "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", + "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", + "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", + "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", + "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", + "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", + "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", + "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", + "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", + "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", + "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", + "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", + "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", + "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", + "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", + "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", + "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", + "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", + "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", + "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", + "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", + "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", + "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", + "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", + "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", + "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", + "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", + "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", + "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", + "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", + "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", + "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", + "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", + "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", + "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", + "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", + "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", + "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", + "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", + "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", + "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", + "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", + "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", + "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", + "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", + "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" + ], + "markers": "python_version >= '3.7'", + "version": "==6.0.1" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, + "packaging": { + "hashes": [ + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "pathspec": { + "hashes": [ + "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", + "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + ], + "version": "==0.9.0" + }, + "platformdirs": { + "hashes": [ + "sha256:1d7385c7db91728b83efd0ca99a5afb296cab9d0ed8313a45ed8ba17967ecfca", + "sha256:440633ddfebcc36264232365d7840a970e75e1018d15b4327d11f91909045fda" + ], + "markers": "python_version >= '3.7'", + "version": "==2.4.1" + }, + "pluggy": { + "hashes": [ + "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", + "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" + ], + "markers": "python_version >= '3.6'", + "version": "==1.0.0" + }, + "py": { + "hashes": [ + "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", + "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.11.0" + }, + "pyparsing": { + "hashes": [ + "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", + "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484" + ], + "markers": "python_version >= '3.6'", + "version": "==3.0.7" + }, + "pytest": { + "hashes": [ + "sha256:8fc363e0b7407a9397e660ef81e1634e4504faaeb6ad1d2416da4c38d29a0f45", + "sha256:e1af71303d633af3376130b388e028342815cff74d2f3be4aeb22f3fd94325e6" + ], + "index": "pypi", + "version": "==7.0.0rc1" + }, + "pytest-vcr": { + "hashes": [ + "sha256:23ee51b75abbcc43d926272773aae4f39f93aceb75ed56852d0bf618f92e1896", + "sha256:2f316e0539399bea0296e8b8401145c62b6f85e9066af7e57b6151481b0d6d9c" + ], + "index": "pypi", + "version": "==1.0.2" + }, + "pyyaml": { + "hashes": [ + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + ], + "version": "==6.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "tomli": { + "hashes": [ + "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f", + "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.3" + }, + "typing-extensions": { + "hashes": [ + "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e", + "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.1" + }, + "vcrpy": { + "hashes": [ + "sha256:12c3fcdae7b88ecf11fc0d3e6d77586549d4575a2ceee18e82eee75c1f626162", + "sha256:57095bf22fc0a2d99ee9674cdafebed0f3ba763018582450706f7d3a74fff599" + ], + "markers": "python_version >= '3.5'", + "version": "==4.1.1" + }, + "wrapt": { + "hashes": [ + "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179", + "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096", + "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374", + "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df", + "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185", + "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785", + "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7", + "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909", + "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918", + "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33", + "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068", + "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829", + "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af", + "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79", + "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce", + "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc", + "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36", + "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade", + "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca", + "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32", + "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125", + "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e", + "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709", + "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f", + "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b", + "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb", + "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb", + "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489", + "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640", + "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb", + "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851", + "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d", + "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44", + "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13", + "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2", + "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb", + "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b", + "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9", + "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755", + "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c", + "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a", + "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf", + "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3", + "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229", + "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e", + "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de", + "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554", + "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10", + "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80", + "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056", + "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.13.3" + }, + "yarl": { + "hashes": [ + "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac", + "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8", + "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e", + "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746", + "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98", + "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125", + "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d", + "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d", + "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986", + "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d", + "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec", + "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8", + "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee", + "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3", + "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1", + "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd", + "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b", + "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de", + "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0", + "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8", + "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6", + "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245", + "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23", + "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332", + "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1", + "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c", + "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4", + "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0", + "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8", + "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832", + "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58", + "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6", + "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1", + "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52", + "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92", + "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185", + "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d", + "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d", + "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b", + "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739", + "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05", + "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63", + "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d", + "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa", + "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913", + "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe", + "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b", + "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b", + "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656", + "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1", + "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4", + "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e", + "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63", + "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271", + "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed", + "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d", + "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda", + "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265", + "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f", + "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c", + "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba", + "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c", + "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b", + "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523", + "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a", + "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef", + "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95", + "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72", + "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794", + "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41", + "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", + "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" + ], + "markers": "python_version >= '3.6'", + "version": "==1.7.2" + } + } +} diff --git a/README.md b/README.md index c5fdaff..e42eef7 100644 --- a/README.md +++ b/README.md @@ -4,53 +4,55 @@ [![CircleCI](https://circleci.com/gh/OperationCode/operationcode-pybot.svg?style=svg)](https://circleci.com/gh/OperationCode/operationcode-pybot) -[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=OperationCode/operationcode-pybot)](https://dependabot.com) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://contributor-covenant.org/) -# [OperationCode-Pybot](https://github.com/OperationCode/operationcode-pybot) +# OperationCode-Pybot -OperationCode PyBot is a Python [Slack Bot](https://api.slack.com) -extending [Pyslacker's](https://pyslackers.com/) -[sir-bot-a-lot](https://github.com/pyslackers/sir-bot-a-lot-2) -framework. +OperationCode PyBot is a Python [Slack](https://api.slack.com) Bot utilizing [Slack Bolt](https://github.com/SlackAPI/bolt-python). ## Resources -* [Slack Bot Tutorial](https://www.digitalocean.com/community/tutorials/how-to-build-a-slackbot-in-python-on-ubuntu-20-04) -* [Slack Events API Framework](https://github.com/slackapi/python-slack-events-api) -* [sir-bot-a-lot](https://github.com/pyslackers/sir-bot-a-lot-2) +* [Slack Web API Methods](https://api.slack.com/methods) - used to interact with Slack beyond the built-in Slack Bolt capabilities +* [Slack Block Kit](https://api.slack.com/block-kit) - used to build the blocks used in various requests and responses +* [Slack Bolt](https://slack.dev/bolt-python/tutorial/getting-started) - the underlying framework of the bot +* [Slack Bolt API Reference](https://slack.dev/bolt-python/api-docs/slack_bolt/index.html) +* [Slack Python SDK API Reference](https://slack.dev/python-slack-sdk/api-docs/slack_sdk/index.html) ## Contributing -Bug reports and pull requests are welcome on [Github](https://github.com/OperationCode/operationcode-pybot). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. If you wish to assist, join the [\#oc-python-projects](https://operation-code.slack.com/messages/C7NJLCCMB/) rewrite to learn how to contribute. +[Bug reports](https://github.com/OperationCode/operationcode-pybot/issues) and [pull requests](https://github.com/OperationCode/operationcode-pybot/pulls) are welcome on [our Github repo](https://github.com/OperationCode/operationcode-pybot). +This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. +The best place to get assistance with OperationCode-Pybot is on [Slack](https://operationcode.org/join) in the `#oc-python-project` channel. ## Quick Start Recommended versions of tools used within the repo: -- `python@3.7` or greater (in some environments, you may need to specify version of python i.e. `python test.py` vs `python3 test.py`)) -- `git@2.17.1` or greater -- `poetry@0.12.11` or greater - - [Poetry](https://poetry.eustace.io/) is a packaging and dependency manager, similar to pip or pipenv - - Poetry provides a custom installer that can be ran via `curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python` - - Alternatively, poetry can be installed via pip/pip3 with `pip install --user poetry` or `pip3 install --user poetry` - - See https://poetry.eustace.io/docs/ - +- `python@3.10` or greater +- `pipenv@2021.5.29` or greater - [pipenv](https://github.com/pypa/pipenv) is a package manager similar to poetry that utilizes `pip` to manage project dependencies, along with creating new virtual environments +and deterministic builds ```bash -# Install dependencies (ensure poetry is already installed) -poetry install +# Ensure you have pipenv already installed +pipenv install --dev -# Run local development -poetry run python -m pybot +# Start up your virtual environment +pipenv shell -# Run testing suite -poetry run pytest +# Run the test suite +pytest -# Run formatting and linting -poetry run black . -# the next line shouldn't output anything to the terminal if it passes -poetry run flake8 -poetry run isort -rc . +# Run the code formatter +black . ``` +## How to Test Integration with SlackAPI + +In order to test the new methods and interactions you may have created already, +you'll need an "app configuration token". In order to get one of those, you'll need to create [a new +issue](https://github.com/OperationCode/operationcode-pybot/issues). Please use the `type: config token request` +label and make the title " Requests an App Config Token". For example: `Judson Stevens Requests an App Config Token`. + +Once you have created your issue, one of the maintainers of this repository will get in touch and give you your token. + + ## How to Test Integration With Slack After having developed some new feature, or having in hand what you believe is @@ -278,3 +280,23 @@ BOT_USER_OAUTH_ACCESS_TOKEN | The bot user specific OAuth token used to authenti ## License This package is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). + + +## Notes +Option 1 - Create your own Slack workspace to use for testing. +Follow [this guide](https://slack.dev/bolt-python/tutorial/getting-started-http) + + +Start the application with WebSockets instead of HTTP for better development experience? Requires the use of the SLACK_APP_TOKEN. +Would need to set an environment variable to determine if we were in development or staging/production. + +Database to store history of events or just use logging? Probably best to use a database to store history of requests and responses? +Easier to track interactions that way. + +Utilizing FastAPI allows us to take advantage of things like Pydantic, inherent typing, models, and a better handler +for the HTTP requests themselves. + +Utilizing [FastAPI](https://fastapi.tiangolo.com/) and [Slack-Bolt](https://slack.dev/bolt-python/tutorial/getting-started-http). + +All the interactive elements of this bot were built using the Slack [Block Kit Builder](https://app.slack.com/block-kit-builder/). +The example JSON for each interactive element can be found in the `modules/slack/blocks/block_kit_examples` folder. \ No newline at end of file diff --git a/bot_manifest.yml b/bot_manifest.yml new file mode 100644 index 0000000..fe47902 --- /dev/null +++ b/bot_manifest.yml @@ -0,0 +1,73 @@ +_metadata: + major_version: 1 + minor_version: 1 +display_information: + name: ${BOT_NAME} +features: + bot_user: + display_name: ${BOT_NAME} + always_online: false + slash_commands: + - command: /mentor_request-${BOT_USERNAME} + url: ${NGROK_URL}/slack/events + description: Request a Mentor + should_escape: false + - command: /new_join-${BOT_USERNAME} + url: ${NGROK_URL}/slack/events + description: New join testing + should_escape: false + - command: /report-${BOT_USERNAME} + url: ${NGROK_URL}/slack/events + description: Sends a report to the moderation team + should_escape: false + - command: /join-blacks-in-tech-${BOT_USERNAME} + url: ${NGROK_URL}/slack/events + description: Sends a request to join the blacks-in-tech channel + should_escape: false + - command: /join-pride-${BOT_USERNAME} + url: ${NGROK_URL}/slack/events + description: Sends a request to join the operation-pride channel. + should_escape: false +oauth_config: + scopes: + bot: + - app_mentions:read + - channels:history + - channels:join + - channels:read + - chat:write + - chat:write.public + - commands + - emoji:read + - files:read + - groups:read + - groups:write + - im:write + - im:history + - links:read + - mpim:write + - mpim:history + - pins:read + - remote_files:read + - team.preferences:read + - team:read + - usergroups:read + - users.profile:read + - users:read + - users:read.email +settings: + event_subscriptions: + request_url: ${NGROK_URL}/slack/events + bot_events: + - app_mention + - member_joined_channel + - message.channels + - message.im + - message.mpim + - team_join + interactivity: + is_enabled: true + request_url: ${NGROK_URL}/slack/events + org_deploy_enabled: false + socket_mode_enabled: false + token_rotation_enabled: false diff --git a/docker/Dockerfile b/docker/Dockerfile index c87c460..78aaa8b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7-alpine AS base +FROM python:3.10-alpine AS base FROM base as builder @@ -9,39 +9,31 @@ ENV PYTHONUNBUFFERED 1 RUN apk update && \ apk add --no-cache build-base musl-dev python3-dev libffi-dev openssl-dev -RUN python -m venv /opt/venv -# Make sure we use the virtualenv: -ENV PATH="/opt/venv/bin:$PATH" +COPY Pipfile Pipfile.lock ./ -COPY poetry.lock pyproject.toml ./ +RUN pip install --upgrade pip -RUN pip install pip==21.3.1 +RUN pip install pipenv -RUN pip install poetry && \ - poetry config virtualenvs.create false && \ - poetry install --no-dev --no-interaction +# The `dev` stage creates an image and runs the application with development settings +FROM builder as dev -# The `built-image` stage is the base for all remaining images -# Pulls all of the built dependencies from the builder stage -FROM base as built-image ENV PIP_DISABLE_PIP_VERSION_CHECK on ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 -# copy installed deps from builder image -COPY --from=builder /opt/venv /opt/venv +COPY . ./ -# Make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" +RUN pipenv install --dev -# The `app` stage is used as the base for images that don't -# need the development dependencies -FROM built-image as app +ENTRYPOINT ["pipenv", "run", "python3", "main.py"] -COPY . /src -WORKDIR /src +# The `prod` stage creates an image that will run the application with production +# settings +FROM builder As prod -# The `Prod` stage creates an image that will run the application using a -# production webserver and the `environments/production.py` configuration -FROM app As Prod -ENTRYPOINT ["python3", "-m", "pybot"] +ENV PYTHONDONTWRITEBYTECODE 1 + +RUN pipenv install + +ENTRYPOINT ["pipenv", "run", "python3", "main.py"] diff --git a/docker/docker-compose.override.yml b/docker/docker-compose.override.yml new file mode 100644 index 0000000..879eb78 --- /dev/null +++ b/docker/docker-compose.override.yml @@ -0,0 +1,9 @@ +version: '3.9' +services: + pybot: + container_name: pybot-dev + build: + target: dev + context: .. + dockerfile: docker/Dockerfile + env_file: ../.env \ No newline at end of file diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml new file mode 100644 index 0000000..cf28b94 --- /dev/null +++ b/docker/docker-compose.prod.yml @@ -0,0 +1,6 @@ +version: '3.9' + +services: + pybot: + build: + target: prod \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 3bb99f7..bd7159f 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,23 +1,14 @@ -version: '3.6' +version: '3.9' services: pybot: image: pybot:latest - build: - context: .. - dockerfile: docker/Dockerfile container_name: pybot01 - env_file: - - pybot.env ports: - - 5000:5000 + - "5001:5001" ngrok: image: wernight/ngrok:latest - env_file: - - example.env - - ngrok.env environment: - - NGROK_PORT=pybot:5000 - - NGROK_SUBDOMAIN=pybot + - NGROK_PORT=pybot:5001 ports: - - 4040:4040 + - "4040:4040" diff --git a/logging.yml b/logging.yml deleted file mode 100644 index 271bca5..0000000 --- a/logging.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: 1 -disable_existing_loggers: false -formatters: - simple: - format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s' -filters: - messages: - (): 'pybot.customLogging.SlackMessageFilter' - -handlers: - console: - class: logging.StreamHandler - level: DEBUG - filters: - - messages - formatter: simple - stream: ext://sys.stdout -loggers: - sirbot: - level: DEBUG - propagate: true - pyback: - level: DEBUG - propagate: true - slack: - level: DEBUG - propagate: true -root: - level: DEBUG - handlers: - - console -propagate: no \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..ea9a613 --- /dev/null +++ b/main.py @@ -0,0 +1,292 @@ +import os + +# import sys +# import yaml +# import json +# from slack_bolt.app import App +import re +import uvicorn +import logging +from typing import Any +from dotenv import load_dotenv +from fastapi import FastAPI, Request, Response, Body +from slack_bolt.context.async_context import AsyncBoltContext +from slack_bolt.async_app import AsyncApp +from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler +from apscheduler.schedulers.asyncio import AsyncIOScheduler +from apscheduler.triggers.interval import IntervalTrigger + +from modules.handlers.channel_join_handler import ( + handle_channel_join_request, + handle_channel_join_request_claim, + handle_channel_join_request_claim_reset, +) +from modules.handlers.mentorship_handler import ( + handle_mentor_request, + handle_mentorship_request_form_submit, + handle_mentorship_request_claim, + handle_mentorship_request_claim_reset, +) +from modules.handlers.greeting_handler import ( + handle_new_member_join, + handle_greeting_new_user_claim, + handle_resetting_greeting_new_user_claim, +) +from modules.handlers.report_handler import ( + handle_report, + handle_report_submit, + handle_report_claim, + handle_reset_report_claim, +) +from modules.handlers.daily_programmer import handle_daily_programmer_post +from modules.models.slack_models.event_models import ( + MemberJoinedChannelEvent, + MessageReceivedChannelEvent, +) +from modules.models.slack_models.slack_models import ( + SlackResponseBody, + SlackUserInfo, +) +from modules.models.slack_models.command_models import SlackCommandRequestBody +from modules.models.slack_models.view_models import SlackViewRequestBody +from modules.models.slack_models.action_models import SlackActionRequestBody +from modules.models.slack_models.shared_models import SlackTeam + +load_dotenv() +logging.basicConfig(level=os.getenv("LOGGING_LEVEL", "INFO")) + +logger = logging.getLogger(__name__) + +# TODO: Add in /moderators slash command that lists the moderators pulled from Airtable +# TODO: Change mentorship view to dynamically add descriptions for the mentorship service block - will require dispatching an action on select and updating the block +# TODO: Allow matching mentor to mentee based on time zone, number of mentees a mentor already has (will need integration with Dreami to track long term relationships) +# TODO: Integrate with current backend to grab information about the mentee after a request is sent to allow for better matching (could be related to time zone, zip code, etc) +# TODO: On startup, check for mentor request threads that haven't been claimed that have been open for more than 24 hours - if there are any, tag @mentor-coordinators in the thread +# TODO: Related to the above TODO, spawn a job when a mentorship request is received to check to make sure it's been claimed in 24 hours - if not, ping @mentor-coordinators +# TODO: Evaluate the above TODOs and maybe decide on a job that checks twice a day? 10 AM CDT and 7 PM CDT? Use Airtable instead of threads to check +# TODO: Track view closures to see when people open and then close without submission +# TODO: Use discriminators and Unions to conditionally return different types depending on a particular field - see https://github.com/samuelcolvin/pydantic/issues/619 +# TODO: Flush the cache using a webhook from Airtable when records are added or updated on various tables +# TODO: Check the membership of the mentors internal channel when linking for a mentorship request + +# Start an asynchronous Slack Bolt application +app = AsyncApp( + token=os.environ.get("SLACK_BOT_TOKEN"), + signing_secret=os.environ.get("SLACK_SIGNING_SECRET"), +) + +# Currently, the app create functionality is not released in the Slack SDK for Python +# see https://github.com/slackapi/python-slack-sdk/issues/1119 +# try: +# bot_name = os.getenv("BOT_NAME") +# bot_username = os.getenv("BOT_USERNAME") +# ngrok_url = os.getenv("NGROK_URL") +# app_config_token = os.getenv("SLACK_APP_CONFIGURATION_TOKEN") +# if bot_name is None or bot_username is None or ngrok_url is None or app_config_token is None: +# raise "Please ensure you have all required environment variables set..." +# +# synchronous_app = App( +# token=os.environ.get("SLACK_BOT_TOKEN"), +# signing_secret=os.environ.get("SLACK_SIGNING_SECRET"), +# ) +# with open('bot_manifest.yml', 'r') as yaml_manifest: +# yaml_obj = yaml.safe_load(yaml_manifest) +# json_manifest = json.dumps(yaml_obj) +# synchronous_app.client.apps_manifest_create(manifest=json_manifest) +# +# except Exception as generic_error: +# sys.exit(1) + +# Define the application handler for the async Slack Bolt application - this adapter is specific to FastAPI +app_handler = AsyncSlackRequestHandler(app) + +# Define the API +api = FastAPI() + +# Initialize an AsyncIOScheduler object to schedule tasks +Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) +Trigger = IntervalTrigger(seconds=30) + + +# Start up our job scheduler on FastAPI startup and schedule jobs as needed +@api.on_event("startup") +async def startup_event() -> None: + Scheduler.start() + # job = Scheduler.add_job(schedule_messages, trigger=Trigger) + # logging.debug(f"Scheduled {job.name} with job_id: {job.id}") + + +# On shutdown, shutdown the scheduler service first +@api.on_event("shutdown") +async def shutdown_event(): + await Scheduler.shutdown() + + +@api.post("/pybot/api/v1/slack/invite") +async def invite_new_user( + email: str = Body( + ..., example="Test@test.com", description="Email address of the user to invite" + ) +) -> None: + await app.client.admin_users_invite( + team_id=SlackTeam.slack_id, + channel_ids=f"{SlackTeam.general_channel.id}", + email=email, + ) + + +# The base URI for Slack to communicate with our application - this URI is used for events, commands, and any other interaction +@api.post("/slack/events") +async def base_endpoint(req: Request) -> Response: + return await app_handler.handle(req) + + +@app.command("/mentor_request") +async def handle_mentor_request_command( + context: AsyncBoltContext, + body: dict[str, Any], +) -> None: + logger.info("STAGE: Processing mentorship request...") + await handle_mentor_request(SlackCommandRequestBody(**body), context) + + +@app.view("mentorship_request_form_submit") +async def handle_mentorship_request_form_view_submit( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing mentorship form submission...") + await handle_mentorship_request_form_submit(SlackViewRequestBody(**body), context) + + +@app.action("claim_mentorship_request") +async def handle_mentorship_request_claim_click( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing a mentorship request claim...") + await handle_mentorship_request_claim(SlackActionRequestBody(**body), context) + + +@app.action("reset_mentorship_request_claim") +async def handle_mentorship_request_claim_reset_click( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing a mentorship request claim reset...") + await handle_mentorship_request_claim_reset(SlackActionRequestBody(**body), context) + + +# @app.command("/new_join") +@app.event("member_joined_channel") +async def handle_new_member_join_event( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing new member joining...") + if body["command"]: + await handle_new_member_join(SlackCommandRequestBody(**body), context) + else: + await handle_new_member_join(MemberJoinedChannelEvent(**body), context) + + +@app.action("greet_new_user_claim") +async def handle_greeting_new_user_claim_action( + context: AsyncBoltContext, + body: dict[str, Any], +) -> None: + logger.info("STAGE: Processing new claim on new user for greetings...") + await handle_greeting_new_user_claim(SlackActionRequestBody(**body), context) + + +@app.action("reset_greet_new_user_claim") +async def handle_resetting_greeting_new_user_claim_action( + context: AsyncBoltContext, body: dict[str, Any] +) -> None: + logger.info("STAGE: Resetting claim on new user greeting...") + await handle_resetting_greeting_new_user_claim( + SlackActionRequestBody(**body), context + ) + + +@app.command("/report") +async def handle_report_command( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing report command...") + await handle_report(body, context) + + +@app.view("report_form_submit") +async def handle_report_view_submit( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing report view submission...") + await handle_report_submit(body, context) + + +@app.action("report_claim") +async def handle_report_claim_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing report claim....") + await handle_report_claim( + SlackResponseBody(**body, originating_user=SlackUserInfo(**body["user"])), + context, + ) + + +@app.action("reset_report_claim") +async def handle_reset_report_claim_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing reset of report claim...") + await handle_reset_report_claim( + SlackResponseBody(**body, originating_user=SlackUserInfo(**body["user"])), + context, + ) + + +@app.command("/join-pride") +@app.command("/join-blacks-in-tech") +async def handle_channel_join_request_command( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling channel join request...") + await handle_channel_join_request(SlackCommandRequestBody(**body), context) + + +@app.action("invite_to_channel_click") +async def handle_invite_to_channel_click_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling invite button click for channel join...") + await handle_channel_join_request_claim(SlackActionRequestBody(**body), context) + + +@app.action("reset_channel_invite") +async def handle_invite_to_channel_reset_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling reset to invite button click for channel join...") + await handle_channel_join_request_claim_reset( + SlackActionRequestBody(**body), context + ) + + +@app.message(re.compile(r"(={2}.*={3})|(\[.*?])")) +async def handle_daily_programmer( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing daily programmer post...") + await handle_daily_programmer_post(MessageReceivedChannelEvent(**body), context) + + +if __name__ == "__main__": + if os.environ.get("RUN_ENV") == "development": + uvicorn.run( + "main:api", + host="0.0.0.0", + port=8010, + reload=True, + reload_dirs=["./models", "./tests"], + ) + else: + # noinspection PyTypeChecker + uvicorn.run("main:api", host="0.0.0.0", port=5001) diff --git a/pybot/endpoints/slack/message_templates/__init__.py b/modules/__init__.py similarity index 100% rename from pybot/endpoints/slack/message_templates/__init__.py rename to modules/__init__.py diff --git a/modules/airtable/__init__.py b/modules/airtable/__init__.py new file mode 100644 index 0000000..b902476 --- /dev/null +++ b/modules/airtable/__init__.py @@ -0,0 +1,26 @@ +from modules.airtable.daily_programmer_table import DailyProgrammerTable +from modules.airtable.mentorship_tables import ( + MentorshipServicesTable, + MentorshipSkillsetsTable, + MentorshipRequestsTable, + MentorshipMentorsTable, + MentorshipAffiliationsTable, +) +from modules.airtable.message_text_table import MessageTextTable +from modules.airtable.scheduled_message_table import ScheduledMessagesTable + +# General message related tables +message_text_table = MessageTextTable() + +# Scheduled message related tables +scheduled_message_table = ScheduledMessagesTable() + +# Daily Programmer related table +daily_programmer_table = DailyProgrammerTable() + +# Mentorship related tables +mentor_table = MentorshipMentorsTable() +mentorship_services_table = MentorshipServicesTable() +mentorship_skillsets_table = MentorshipSkillsetsTable() +mentorship_requests_table = MentorshipRequestsTable() +mentorship_affiliations_table = MentorshipAffiliationsTable() diff --git a/modules/airtable/daily_programmer_table.py b/modules/airtable/daily_programmer_table.py new file mode 100644 index 0000000..5e71b2a --- /dev/null +++ b/modules/airtable/daily_programmer_table.py @@ -0,0 +1,45 @@ +import logging +from typing import Any +from pydantic import ValidationError + +from modules.airtable.shared_table import BaseAirtableTable +from modules.models.daily_programmer_models import DailyProgrammerInfo +from modules.utils import snake_case + +logger = logging.getLogger(__name__) + + +class DailyProgrammerTable(BaseAirtableTable): + def __init__(self): + super().__init__("Daily Programmer") + + @staticmethod + def parse_daily_programmer_row(row: dict[str, Any]) -> DailyProgrammerInfo: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return DailyProgrammerInfo( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def retrieve_valid_daily_programmer_row_by_slug( + self, slug: str + ) -> DailyProgrammerInfo: + return self.parse_daily_programmer_row( + self.first( + formula=f"{{Slug}} = '{slug}'", + view="Valid", + ) + ) + + def retrieve_valid_daily_programmer_by_view( + self, view_name: str + ) -> dict[str, DailyProgrammerInfo]: + logger.info("STAGE: Retrieving daily programmer rows by view") + logger.debug(f"With view_name: {view_name}") + messages = {} + for row in self.all(view=view_name): + parsed_row = self.parse_daily_programmer_row(row) + messages[parsed_row.slug] = parsed_row + return messages diff --git a/modules/airtable/mentorship_tables.py b/modules/airtable/mentorship_tables.py new file mode 100644 index 0000000..6ab13ad --- /dev/null +++ b/modules/airtable/mentorship_tables.py @@ -0,0 +1,185 @@ +import logging +from pydantic.error_wrappers import ValidationError +from typing import Any +from functools import cached_property +from itertools import chain + +from modules.airtable.shared_table import BaseAirtableTable +from modules.utils import snake_case +from modules.models.mentorship_models import ( + MentorshipService, + MentorshipSkillset, + Mentor, + MentorshipAffiliation, + MentorshipRequest, +) + +logger = logging.getLogger(__name__) + + +class MentorshipAffiliationsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Affiliations") + + @cached_property + def valid_affiliations(self) -> list[MentorshipAffiliation]: + return [self.parse_affiliation_row(row) for row in self.all(view="Valid")] + + @staticmethod + def parse_affiliation_row(row: dict[str, Any]) -> MentorshipAffiliation: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipAffiliation( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + +class MentorshipMentorsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Mentors") + + @cached_property + def valid_mentors(self) -> list[Mentor]: + """Returns the mentors from the table sorted by row ID + + :return: list of mentors + :rtype: list[Mentor] + """ + try: + return [self.parse_mentor_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @staticmethod + def parse_mentor_row(row: dict[str, Any]) -> Mentor: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return Mentor( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + +class MentorshipSkillsetsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Skillsets") + + @cached_property + def valid_skillsets(self) -> list[MentorshipSkillset]: + """Returns the skillsets from the table + + :return: list of skillsets + :rtype: list[MentorshipSkillset] + """ + try: + return [self.parse_skillset_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @cached_property + def mentors_by_skillsets(self) -> dict[str, str]: + try: + mentors_by_skillset = {} + for row in self.all(fields=["Name", "Mentors"], view="Valid"): + mentors_by_skillset[row["Name"]] = row["Mentors"] + return mentors_by_skillset + except Exception as e: + logger.warning(f"Issue retrieving mentor IDs by skillset: {e}") + raise e + + @staticmethod + def parse_skillset_row(row: dict[str, Any]) -> MentorshipSkillset: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipSkillset( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def mentors_by_skillset(self, skillsets_to_search: list[str]) -> set[str]: + logger.info("STAGE: Returning mentors by skillset...") + try: + mentors = [] + formula = [f"{{Name}} = '{skillset}'," for skillset in skillsets_to_search] + for row in self.all( + fields=["Name", "Mentors"], + view="Valid", + formula=("OR(" + "".join(formula)[:-1] + ")"), + ): + try: + mentors.append( + row["fields"]["Mentors"] if row["fields"]["Mentors"] else [] + ) + except KeyError as key_e: + logger.warning(f"Key error intercepted: {key_e}") + pass + + # Flatten the array and get unique values + return set(chain(*mentors)) + except Exception as e: + logger.warning( + f"Issue retrieving mentor IDs with particular skillsets: {skillsets_to_search}, error: {e}" + ) + + +class MentorshipServicesTable(BaseAirtableTable): + def __init__(self): + super().__init__("Services") + + @cached_property + def valid_services(self) -> list[MentorshipService]: + """Returns the services from the table + + :return: list of services from the table + :rtype: list[MentorshipService] + """ + try: + return [self.parse_service_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @staticmethod + def parse_service_row(row: dict[str, Any]) -> MentorshipService: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipService( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + +class MentorshipRequestsTable(BaseAirtableTable): + def __init__(self): + super().__init__("Mentor Requests") + + @cached_property + def valid_services(self) -> list[MentorshipRequest]: + """Returns the services from the table + + :return: list of services from the table + :rtype: list[MentorshipService] + """ + try: + return [self.parse_request_row(row) for row in self.all(view="Valid")] + except ValidationError as valid_e: + raise valid_e + + @staticmethod + def parse_request_row(row: dict[str, Any]) -> MentorshipRequest: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MentorshipRequest( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def return_record_by_slack_message_ts(self, timestamp: str) -> MentorshipRequest: + row = self.first(formula=f"{{Slack Message TS}} = '{timestamp}'") + logger.debug(f"Returned row: {row}") + return self.parse_request_row(row) diff --git a/modules/airtable/message_text_table.py b/modules/airtable/message_text_table.py new file mode 100644 index 0000000..188025f --- /dev/null +++ b/modules/airtable/message_text_table.py @@ -0,0 +1,43 @@ +import logging +from typing import Any +from pydantic import ValidationError + +from modules.airtable.shared_table import BaseAirtableTable +from modules.models.message_text_models import MessageTextInfo +from modules.utils import snake_case + +logger = logging.getLogger(__name__) + + +class MessageTextTable(BaseAirtableTable): + def __init__(self): + super().__init__("Message Text") + + @staticmethod + def parse_message_text_row(row: dict[str, Any]) -> MessageTextInfo: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return MessageTextInfo( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e + + def retrieve_valid_message_row(self, message_slug: str) -> MessageTextInfo: + return self.parse_message_text_row( + self.first( + formula=f"{{Slug}} = '{message_slug}'", + view="Valid", + ) + ) + + def retrieve_valid_messages_by_view( + self, view_name: str + ) -> dict[str, MessageTextInfo]: + logger.info("STAGE: Retrieving valid messages by view") + logger.debug(f"With view_name: {view_name}") + messages = {} + for row in self.all(view=view_name): + parsed_row = self.parse_message_text_row(row) + messages[parsed_row.slug] = parsed_row + return messages diff --git a/modules/airtable/scheduled_message_table.py b/modules/airtable/scheduled_message_table.py new file mode 100644 index 0000000..0b8351a --- /dev/null +++ b/modules/airtable/scheduled_message_table.py @@ -0,0 +1,25 @@ +from typing import Any +from pydantic.error_wrappers import ValidationError + +from modules.airtable.shared_table import BaseAirtableTable +from modules.models.scheduled_message_models import ScheduledMessageInfo +from modules.utils import snake_case + + +class ScheduledMessagesTable(BaseAirtableTable): + def __init__(self): + super().__init__("Scheduled Messages") + + @property + def all_valid_scheduled_messages(self) -> list[ScheduledMessageInfo]: + return [self.parse_scheduled_message_row(row) for row in self.all(view="Valid")] + + @staticmethod + def parse_scheduled_message_row(row: dict[str, Any]) -> ScheduledMessageInfo: + fields = {snake_case(k): v for k, v in row["fields"].items()} + try: + return ScheduledMessageInfo( + **fields, airtable_id=row["id"], created_at=row["createdTime"] + ) + except ValidationError as valid_e: + raise valid_e diff --git a/modules/airtable/shared_table.py b/modules/airtable/shared_table.py new file mode 100644 index 0000000..5511d4b --- /dev/null +++ b/modules/airtable/shared_table.py @@ -0,0 +1,31 @@ +import os +from typing import Any +from pyairtable import Table + +from modules.utils import table_fields + + +class BaseAirtableTable(Table): + def __init__(self, table_name: str): + super().__init__( + api_key=os.getenv("AIRTABLE_API_KEY"), + base_id=os.getenv("AIRTABLE_BASE_ID"), + table_name=f"{table_name}", + ) + + @property + def table_fields(self) -> list[str]: + """Returns snake cased columns (fields in Airtable parlance) on the table + + :return: list of fields + :rtype: list[str] + """ + return table_fields(self) + + def update_record( + self, airtable_id: str, fields_to_update: dict[str, Any] + ) -> dict[str, Any]: + return self.update(airtable_id, fields=fields_to_update, typecast=True) + + def create_record(self, record_to_create: dict[str, Any]) -> dict[str, Any]: + return self.create(fields=record_to_create, typecast=True) diff --git a/tests/endpoints/__init__.py b/modules/handlers/__init__.py similarity index 100% rename from tests/endpoints/__init__.py rename to modules/handlers/__init__.py diff --git a/modules/handlers/channel_join_handler.py b/modules/handlers/channel_join_handler.py new file mode 100644 index 0000000..69c8574 --- /dev/null +++ b/modules/handlers/channel_join_handler.py @@ -0,0 +1,106 @@ +import os +import logging +from slack_bolt.context.async_context import AsyncBoltContext + +from modules.models.slack_models.action_models import SlackActionRequestBody +from modules.models.slack_models.command_models import SlackCommandRequestBody +from modules.slack.blocks.shared_blocks import ( + channel_join_request_blocks, + channel_join_request_successful_block, + channel_join_request_reset_action, + channel_join_request_action, +) +from modules.utils import slack_team, log_to_thread + +logger = logging.getLogger(__name__) + + +async def handle_channel_join_request( + parsed_body: SlackCommandRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling channel join command...") + await context.ack() + channel_id = "" + channel_name = "" + try: + if parsed_body.command == "/join-pride": + channel_id = slack_team.pride_channel.id + channel_name = os.getenv("PRIDE_CHANNEL_NAME") + if parsed_body.command == "/join-blacks-in-tech": + channel_id = slack_team.blacks_in_tech.id + channel_name = os.getenv("BLACKS_IN_TECH_CHANNEL_NAME") + await context.client.chat_postMessage( + channel=channel_id, + blocks=channel_join_request_blocks(parsed_body.user_name), + text="New channel join request...", + ) + await context.client.chat_postEphemeral( + channel=parsed_body.user_id, + user=parsed_body.user_id, + blocks=[channel_join_request_successful_block(channel_name)], + text=f"Your request to join {channel_name} was successful...", + ) + + except Exception as general_exception: + logger.exception( + f"Unable to handle the channel join request, error: {general_exception}" + ) + raise general_exception + + +async def handle_channel_join_request_claim( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling channel join request claim...") + await context.ack() + try: + blocks = parsed_body.message.blocks + blocks[-1] = channel_join_request_reset_action(parsed_body.user.username) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Someone has claimed the invite request...", + blocks=blocks, + replace_original=True, + ) + + except Exception as general_exception: + logger.exception( + f"Unable to handle the channel join request claim, error: {general_exception}" + ) + raise general_exception + + +async def handle_channel_join_request_claim_reset( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling channel join request claim reset...") + await context.ack() + try: + blocks = parsed_body.message.blocks + blocks[-1] = channel_join_request_action() + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=False, + ) + await context.respond( + text="Someone has reset the invite request...", + blocks=blocks, + replace_original=True, + ) + + except Exception as general_exception: + logger.exception( + f"Unable to handle the channel join request claim reset, error: {general_exception}" + ) + raise general_exception diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py new file mode 100644 index 0000000..57bf626 --- /dev/null +++ b/modules/handlers/daily_programmer.py @@ -0,0 +1,78 @@ +import re +import logging +from typing import Optional +from datetime import datetime, timezone +from difflib import SequenceMatcher +from slack_bolt.context.async_context import AsyncBoltContext + +from modules.airtable import daily_programmer_table +from modules.models.slack_models.event_models import MessageReceivedChannelEvent +from modules.models.slack_models.shared_models import SlackMessageInfo + +logger = logging.getLogger(__name__) + + +async def handle_daily_programmer_post( + parsed_body: MessageReceivedChannelEvent, context: AsyncBoltContext +) -> None: + await context.ack() + logger.info("STAGE: Handling a daily programmer post...") + post_id, post_count = check_for_existing_post(parsed_body.event.text) + if post_id and post_count: + daily_programmer_table.update( + post_id, + {"Post Count": post_count, "Last Posted On": datetime.now(timezone.utc)}, + ) + return None + process_daily_programmer_post_text(parsed_body.event) + + +def check_for_existing_post(text: str) -> Optional[tuple[str, int]]: + existing_posts = daily_programmer_table.all( + view="Valid", fields=["Text", "Posted Count"] + ) + for post in existing_posts: + if SequenceMatcher(None, post["fields"]["Text"], text).ratio() > 0.85: + logger.debug(f"Found matching post: {post}") + return post["id"], int(post["fields"]["Posted Count"]) + return None + + +def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: + logger.info("STAGE: Processing a daily programmer post text...") + title = re.search(r"(={2,3}.*={2,3})", body.text) + if title: + name = re.search(r"(\[.*?])", body.text) + if name: + try: + daily_programmer_table.create_record( + { + "Name": name[0] + .replace("[", "") + .replace("]", "") + .replace("*", ""), + "Text": body.text[name.span()[1] + 1 :], + "Initially Posted On": datetime.fromtimestamp( + float(body.ts), timezone.utc + ), + "Last Posted On": datetime.fromtimestamp( + float(body.ts), timezone.utc + ), + "Posted Count": 1, + "Initial Slack TS": body.ts, + "Blocks": body.blocks, + } + ) + return None + except Exception as general_error: + logger.exception( + f"Unable to create new daily programmer entry: {general_error}" + ) + logger.warning( + f"Unable to create new daily programmer entry due to not finding the name..." + ) + return None + logger.warning( + f"Unable to create new daily programmer entry due to not finding the title..." + ) + return None diff --git a/modules/handlers/greeting_handler.py b/modules/handlers/greeting_handler.py new file mode 100644 index 0000000..b31908e --- /dev/null +++ b/modules/handlers/greeting_handler.py @@ -0,0 +1,111 @@ +import re +from typing import Union +from datetime import datetime, timezone, timedelta +from slack_bolt.context.async_context import AsyncBoltContext + +from modules.models.slack_models.action_models import SlackActionRequestBody +from modules.models.slack_models.command_models import SlackCommandRequestBody +from modules.models.slack_models.event_models import MemberJoinedChannelEvent +from modules.slack.blocks.new_join_blocks import ( + new_join_immediate_welcome_blocks, + new_join_delayed_welcome_blocks, +) +from modules.utils import get_slack_user_by_id, log_to_thread, slack_team +from modules.slack.blocks.greeting_blocks import ( + initial_greet_user_blocks, + greeting_block_claimed_button, + greeting_block_button, +) + + +async def handle_new_member_join( + parsed_body: Union[MemberJoinedChannelEvent, SlackCommandRequestBody], + context: AsyncBoltContext, +) -> None: + await context.ack() + user = None + if isinstance(parsed_body, MemberJoinedChannelEvent): + user = await get_slack_user_by_id(context.client, parsed_body.user) + elif isinstance(parsed_body, SlackCommandRequestBody): + user = await get_slack_user_by_id(context.client, parsed_body.user_id) + await context.client.chat_postMessage( + channel=slack_team.greetings_channel.id, + blocks=initial_greet_user_blocks(user), + text="A new member has joined!", + ) + # Add one minute to the current timestamp + immediate_message_timestamp = datetime.now(timezone.utc).timestamp() + 60 + await context.client.chat_scheduleMessage( + channel=user.id, + user=user.id, + post_at=int(immediate_message_timestamp), + text="Welcome to Operation Code Slack!", + blocks=new_join_immediate_welcome_blocks(user.name), + unfurl_links=False, + unfurl_media=False, + ) + # Schedule the delayed message for the next day at 1600 UTC (10 AM CST/CDT) + # This could be in two days, by popular measure, if UTC has already rolled over midnight + delayed_message_timestamp = ( + (datetime.now(timezone.utc) + timedelta(days=1)) + .replace(hour=16, minute=00) + .timestamp() + ) + await context.client.chat_scheduleMessage( + channel=user.id, + user=user.id, + post_at=int(delayed_message_timestamp), + text="We're happy to have you at Operation Code!", + blocks=new_join_delayed_welcome_blocks(), + unfurl_media=False, + unfurl_links=False, + ) + + +async def handle_greeting_new_user_claim( + parsed_body: SlackActionRequestBody, + context: AsyncBoltContext, +) -> None: + await context.ack() + original_blocks = parsed_body.message.blocks + original_blocks[-1] = greeting_block_claimed_button(parsed_body.user.username) + modified_blocks = original_blocks + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Modified the claim to greet the new user...", + blocks=modified_blocks, + replace_original=True, + ) + + +async def handle_resetting_greeting_new_user_claim( + parsed_body: SlackActionRequestBody, + context: AsyncBoltContext, +) -> None: + await context.ack() + original_blocks = parsed_body.message.blocks + # Extract out the username of the new user (the user we are greeting) + original_blocks[-1] = greeting_block_button( + str(re.match(r"\((@.*)\)", parsed_body.message.blocks[0]["text"]["text"])) + ) + modified_blocks = original_blocks + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Modified the claim to greet the new user...", + blocks=modified_blocks, + replace_original=True, + ) diff --git a/modules/handlers/mentorship_handler.py b/modules/handlers/mentorship_handler.py new file mode 100644 index 0000000..f4a3256 --- /dev/null +++ b/modules/handlers/mentorship_handler.py @@ -0,0 +1,222 @@ +import logging +from datetime import timezone, datetime +from typing import Any +from slack_bolt.context.async_context import AsyncBoltContext +from modules.airtable import ( + mentorship_services_table, + mentorship_skillsets_table, + mentorship_affiliations_table, + mentorship_requests_table, + mentor_table, +) +from modules.models.greeting_models import UserInfo +from modules.models.mentorship_models import MentorshipRequestCreate +from modules.models.slack_models.action_models import SlackActionRequestBody +from modules.models.slack_models.view_models import SlackViewRequestBody +from modules.models.slack_models.shared_models import SlackViewInfo +from modules.models.slack_models.command_models import SlackCommandRequestBody +from modules.slack.blocks.mentorship_blocks import ( + mentorship_request_view, + request_successful_block, + request_unsuccessful_block, + request_claim_blocks, + request_claim_details_block, + request_claim_tagged_users_block, + request_claim_reset_button, + request_claim_button, +) +from modules.utils import get_slack_user_by_id, slack_team, log_to_thread + +logger = logging.getLogger(__name__) + + +async def handle_mentor_request( + parsed_body: SlackCommandRequestBody, context: AsyncBoltContext +) -> None: + logging.info("STAGE: Handling the mentor request...") + await context.ack() + response = await context.client.views_open( + trigger_id=parsed_body.trigger_id, + view=mentorship_request_view( + services=mentorship_services_table.valid_services, + skillsets=mentorship_skillsets_table.valid_skillsets, + affiliations=mentorship_affiliations_table.valid_affiliations, + ), + ) + if response["ok"]: + logger.debug("View opened successfully") + + else: + logger.warning(f"Unable to open the view, given response: {response}") + + +async def handle_mentorship_request_form_submit( + parsed_body: SlackViewRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling the mentorship request form submission...") + await context.ack() + try: + slack_user_info = await get_slack_user_by_id( + context.client, parsed_body.user.id + ) + mentorship_request, airtable_record = create_mentor_request_record( + parsed_body, slack_user_info + ) + mentors_channel_response = await context.client.chat_postMessage( + channel=slack_team.mentors_internal_channel.id, + blocks=request_claim_blocks( + mentorship_request.service, + mentorship_request.skillsets_requested, + mentorship_request.affiliation, + mentorship_request.slack_name, + ), + text="New mentorship request received...", + ) + mentorship_requests_table.update_record( + airtable_id=airtable_record["id"], + fields_to_update={"Slack Message TS": mentors_channel_response["ts"]}, + ) + await context.client.chat_postMessage( + channel=slack_team.mentors_internal_channel.id, + thread_ts=mentors_channel_response["ts"], + text="Additional details added to mentorship request...", + blocks=[request_claim_details_block(mentorship_request.additional_details)], + ) + matching_mentors = mentorship_skillsets_table.mentors_by_skillset( + mentorship_request.skillsets_requested + ) + retrieve_mentor_slack_names = [ + mentor.slack_name + for mentor in mentor_table.valid_mentors + if mentor.airtable_id in matching_mentors + ] + await context.client.chat_postMessage( + channel=slack_team.mentors_internal_channel.id, + thread_ts=mentors_channel_response["ts"], + text="Tagged users for mentorship request...", + blocks=[request_claim_tagged_users_block(retrieve_mentor_slack_names)], + link_names=True, + ) + await context.client.chat_postEphemeral( + channel=parsed_body.user.id, + user=parsed_body.user.id, + text="Successfully sent mentorship request...", + blocks=[request_successful_block()], + ) + except Exception as general_exception: + logger.exception( + f"Unable to create the mentorship request record due to error: {general_exception}" + ) + await context.client.chat_postEphemeral( + channel=parsed_body.user.id, + user=parsed_body.user.id, + text="Mentorship request was unsuccessful...", + blocks=[request_unsuccessful_block()], + ) + + +async def handle_mentorship_request_claim( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling mentorship request claim...") + await context.ack() + blocks = parsed_body.message.blocks + blocks[-1] = request_claim_reset_button(parsed_body.user.username) + request_record = mentorship_requests_table.return_record_by_slack_message_ts( + timestamp=str(parsed_body.message.ts) + ) + mentorship_requests_table.update_record( + airtable_id=request_record.airtable_id, + fields_to_update={ + "Claimed": "true", + "Claimed By": parsed_body.user.username, + "Claimed On": str(datetime.now(timezone.utc)), + "Reset By": "", + }, + ) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Someone claimed the mentorship request...", + blocks=blocks, + replace_original=True, + ) + + +async def handle_mentorship_request_claim_reset( + parsed_body: SlackActionRequestBody, context: AsyncBoltContext +) -> None: + logger.info("STAGE: Handling mentorship request claim reset...") + await context.ack() + blocks = parsed_body.message.blocks + blocks[-1] = request_claim_button() + request_record = mentorship_requests_table.return_record_by_slack_message_ts( + timestamp=parsed_body.message.ts + ) + mentorship_requests_table.update_record( + airtable_id=request_record.airtable_id, + fields_to_update={ + "Claimed": "false", + "Claimed By": "", + "Reset By": parsed_body.user.username, + "Reset On": str(datetime.now(timezone.utc)), + "Reset Count": int(request_record.reset_count) + 1, + }, + ) + await log_to_thread( + client=context.client, + channel_id=parsed_body.channel.id, + message_ts=parsed_body.message.ts, + username=parsed_body.user.username, + action_ts=parsed_body.actions[0].action_ts, + claim=False, + ) + await context.respond( + text="Someone reset the claimed mentorship request...", + blocks=blocks, + replace_original=True, + ) + + +def create_mentor_request_record( + parsed_body: SlackViewRequestBody, slack_user_info: UserInfo +) -> tuple[MentorshipRequestCreate, dict[str, Any]]: + logger.info("STAGE: Creating the mentorship request record...") + try: + mentorship_request = MentorshipRequestCreate( + slack_name=slack_user_info.name, + email=slack_user_info.email, + service=parsed_body.view.state["values"]["mentorship_service_input"][ + "mentorship_service_selection" + ]["selected_option"]["value"], + additional_details=parsed_body.view.state["values"]["details_input_block"][ + "details_text_input" + ]["value"], + skillsets_requested=[ + skill["value"] + for skill in parsed_body.view.state["values"]["mentor_skillset_input"][ + "mentorship_skillset_multi_selection" + ]["selected_options"] + ], + affiliation=parsed_body.view.state["values"][ + "mentorship_affiliation_input" + ]["mentorship_affiliation_selection"]["selected_option"]["text"]["text"], + ) + modified_request = { + k.title().replace("_", " "): v + for k, v in mentorship_request.__dict__.items() + } + created_record = mentorship_requests_table.create_record(modified_request) + return mentorship_request, created_record + except Exception as exc: + logger.exception( + f"Unable to create the Airtable record for user: {slack_user_info.name} due to an exception", + exc, + ) + raise exc diff --git a/modules/handlers/report_handler.py b/modules/handlers/report_handler.py new file mode 100644 index 0000000..8b19177 --- /dev/null +++ b/modules/handlers/report_handler.py @@ -0,0 +1,98 @@ +import logging +from typing import Any +from slack_bolt.context.async_context import AsyncBoltContext + +from modules.models.slack_models.slack_models import SlackResponseBody +from modules.models.slack_models.shared_models import SlackUserInfo +from modules.slack.blocks.report_blocks import ( + report_form_view_elements, + report_claim_blocks, + report_claim_claimed_button, + report_claim_button, + report_received_ephemeral_message, + report_failed_ephemeral_message, +) +from modules.utils import get_team_info, log_to_thread + +logger = logging.getLogger(__name__) + + +async def handle_report(body: dict[str, Any], context: AsyncBoltContext) -> None: + await context.ack() + await context.client.views_open( + trigger_id=body["trigger_id"], view=report_form_view_elements() + ) + + +async def handle_report_submit(body: dict[str, Any], context: AsyncBoltContext) -> None: + await context.ack() + slack_team = get_team_info() + logger.debug(f"Parsing received body: {body}") + parsed_body = SlackResponseBody( + **body, originating_user=SlackUserInfo(**body["user"]) + ) + response = await context.client.chat_postMessage( + channel=slack_team.moderators_channel.id, + blocks=report_claim_blocks( + parsed_body.originating_user.username, + parsed_body.view.state["values"]["report_input"]["report_input_field"][ + "value" + ], + ), + ) + if response.data["ok"]: + await context.client.chat_postEphemeral( + channel=parsed_body.originating_user.id, + text="Successfully sent report to moderators...", + blocks=[report_received_ephemeral_message()], + user=parsed_body.originating_user.id, + ) + else: + await context.client.chat_postEphemeral( + channel=parsed_body.originating_user.id, + text="There was an issue sending your report...", + blocks=[report_failed_ephemeral_message()], + user=parsed_body.originating_user.id, + ) + + +async def handle_report_claim( + body: SlackResponseBody, context: AsyncBoltContext +) -> None: + await context.ack() + blocks = body.message.blocks + blocks[-1] = report_claim_claimed_button(body.originating_user.username) + await log_to_thread( + client=context.client, + channel_id=body.channel.id, + message_ts=body.message.ts, + username=body.originating_user.username, + action_ts=body.actions[0].action_ts, + claim=True, + ) + await context.respond( + text="Modified the claim to reach out about the report...", + blocks=blocks, + replace_original=True, + ) + + +async def handle_reset_report_claim( + body: SlackResponseBody, context: AsyncBoltContext +) -> None: + await context.ack() + blocks = body.message.blocks + blocks[-1] = report_claim_button() + await log_to_thread( + client=context.client, + channel_id=body.channel.id, + message_ts=body.message.ts, + username=body.originating_user.username, + action_ts=body.actions[0].action_ts, + claim=False, + ) + await context.respond( + text="Modified the claim to reach out about the report...", + blocks=blocks, + replace_original=True, + ) diff --git a/tests/endpoints/api/__init__.py b/modules/models/__init__.py similarity index 100% rename from tests/endpoints/api/__init__.py rename to modules/models/__init__.py diff --git a/modules/models/daily_programmer_models.py b/modules/models/daily_programmer_models.py new file mode 100644 index 0000000..c4fa3b6 --- /dev/null +++ b/modules/models/daily_programmer_models.py @@ -0,0 +1,41 @@ +from pydantic import Field +from datetime import datetime + +from modules.models.shared_models import AirtableRowBaseModel + + +class DailyProgrammerInfo(AirtableRowBaseModel): + name: str = Field( + ..., + example="Minimum Absolute Difference", + description="The display name of the daily programmer entry - will be wrapped in [] in the text from Slack", + ) + slug: str = Field( + ..., + example="minimum_absolute_difference", + description="A more parseable representation of the name of the message - should be snake cased; this is set by formula in Airtable based on the Message Name field", + ) + text: str = Field( + ..., + example="Your report has been received :check_mark:", + description="The text of the message - utilizes Slack's mrkdwn format", + ) + category: str = Field( + ..., + example="mentorship_request", + description="Snake cased category of the message", + ) + initially_posted_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted datetime in UTC for when the message was first posted to the channel", + ) + last_posted_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted datetime in UTC for when the message was last posted to the channel", + ) + posted_count: int = Field( + ..., + description="The number of time this message has been posted to the channel", + ) diff --git a/modules/models/greeting_models.py b/modules/models/greeting_models.py new file mode 100644 index 0000000..5b8561d --- /dev/null +++ b/modules/models/greeting_models.py @@ -0,0 +1,29 @@ +from pydantic import BaseModel, Field + + +class UserInfo(BaseModel): + id: str = Field( + ..., example="U02RK2AL5LZ", description="The Slack ID of the new user" + ) + name: str = Field( + ..., example="julio123", description="The Slack name of the new user" + ) + first_name: str = Field( + None, example="Julio", description="The first name of the new user" + ) + last_name: str = Field( + None, example="Mendez", description="The last name of the new user" + ) + display_name: str = Field( + None, example="julio123", description="The display name chosen by the user" + ) + real_name: str = Field( + None, + example="Julio Mendez", + description="The display name of the new user as entered by the user", + ) + email: str = Field(..., example="test@example.com", description="Email of the user") + zip_code: str = Field(None, example="12345", description="The zip code of the user") + joined_date: str = Field( + None, example="2013-01-30", description="The date the user joined the OC Slack" + ) diff --git a/modules/models/mentorship_models.py b/modules/models/mentorship_models.py new file mode 100644 index 0000000..a59f1ab --- /dev/null +++ b/modules/models/mentorship_models.py @@ -0,0 +1,166 @@ +from pydantic import Field, BaseModel +from datetime import datetime +from typing import Union + +from modules.models.shared_models import AirtableRowBaseModel, AirtableUser + + +class MentorshipService(AirtableRowBaseModel): + name: str = Field( + ..., example="Pair Programming", description="Name of the service" + ) + slug: str = Field( + ..., + example="pair_programming", + description="Snake cased value for the service, used for identification and other purposes", + ) + description: str = Field( + ..., + example="Work on a programming problem with a mentor while on a call", + description="Description of the service", + ) + + +class MentorshipSkillset(AirtableRowBaseModel): + name: str = Field( + ..., example="Pair Programming", description="Name of the service" + ) + slug: str = Field( + ..., + example="pair_programming", + description="Snake cased value for the service, used for identification and other purposes", + ) + mentors: list[str] = Field( + None, + example="['recoakW045JkGgQB7', 'rec9Un0YIvPsFjPZh', 'recnfnbHDZdie8jcD']", + description="List of Airtable record IDs for mentors that have this skillset", + ) + + +class MentorshipAffiliation(AirtableRowBaseModel): + name: str = Field( + ..., example="US Veteran", description="The name of the affiliation" + ) + slug: str = Field( + ..., + example="us_veteran", + description="A more parseable slug for the affiliation, set by a formula in Airtable", + ) + description: str = Field( + ..., + example="Veterans are former members of the United States military.", + description="A short description of the affiliation", + ) + + +class Mentor(AirtableRowBaseModel): + slack_name: str = Field( + ..., example="john123", description="The Slack username for the mentor" + ) + full_name: str = Field( + ..., example="John Smith", description="The full name of the mentor" + ) + email: str = Field(..., example="test@example.com", description="Email of the user") + active: bool = Field(..., description="Whether or not the mentor is current active") + skills: list[str] = Field( + ..., + example="['recoakW045JkGgQB7', 'rec9Un0YIvPsFjPZh', 'recnfnbHDZdie8jcD']", + description="The Airtable provided IDs of the skillsets the mentor has added", + ) + desired_mentorship_hours_per_week: int = Field( + ..., + description="The number of hours the mentor has specified they would like to mentor for", + ) + time_zone: str = Field( + ..., example="Indian/Maldives", description="The mentor's time zone" + ) + max_mentees: int = Field( + ..., + description="The maximum number of mentees this mentor wants to work with at one time", + ) + bio: str = Field(None, description="The self provided bio for the mentor") + notes: str = Field(None, description="Any additional notes on the mentor") + mentees_worked_with: list[str] = Field( + None, + example="['recCMMhN5j51NoagK']", + description="The Airtable provided IDs of the mentees that the mentor has worked with, found on the Mentor Request table", + ) + code_of_conduct_accepted: bool = Field( + ..., description="Whether or not the mentor has accepted the code of conduct" + ) + guidebook_read: bool = Field( + ..., description="Whether or not the mentor has read the guidebook" + ) + row_id: int = Field(..., description="Row ID from the Airtable table") + + +class MentorshipRequestBase(BaseModel): + slack_name: str = Field( + ..., + example="john123", + description="The Slack username for the user making the mentorship request", + ) + email: str = Field( + ..., example="test@example.com", description="Email of the requesting user" + ) + service: str = Field( + ..., + example="Career Guidance", + description="Service requested for the mentorship session", + ) + additional_details: str = Field( + ..., + example="I need help with choosing a career path.", + description="Details provided by the user making the request", + ) + skillsets_requested: list[str] = Field( + ..., + example="['Go', 'React', 'Code Review']", + description="List of all skillsets selected by the user making the request - this is used to match a mentor", + ) + affiliation: Union[str, list[str]] = Field( + ..., + example="recCMMhN5j51NoagK", + description="The Airtable created ID of a record on the Affiliations table", + ) + claimed: bool = Field( + False, description="Whether or not the mentor request has been claimed" + ) + claimed_by: Union[str, list[str]] = Field( + None, + description="The Airtable ID of the user who has claimed the request - this is pulled from the Mentor table", + ) + claimed_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted UTC time when the request was claimed", + ) + reset_by: str = Field( + None, + example="john123", + description="Slack username of the user who reset the claim", + ) + reset_on: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted UTC time when the request claim was reset", + ) + reset_count: int = Field( + 0, description="The number of times the request claim was reset" + ) + + +class MentorshipRequest(MentorshipRequestBase, AirtableRowBaseModel): + row_id: int = Field( + None, + description="The Airtable created row ID of the row, primarily used for sorting", + ) + slack_message_ts: float = Field( + ..., + example=1640727458.000000, + description="The message timestamp - this along with the channel ID allow the message to be found", + ) + + +class MentorshipRequestCreate(MentorshipRequestBase): + pass diff --git a/modules/models/message_text_models.py b/modules/models/message_text_models.py new file mode 100644 index 0000000..ba49f36 --- /dev/null +++ b/modules/models/message_text_models.py @@ -0,0 +1,26 @@ +from pydantic import Field + +from modules.models.shared_models import AirtableRowBaseModel + + +class MessageTextInfo(AirtableRowBaseModel): + name: str = Field( + ..., + example="Report Received", + description="The display name of the message text", + ) + slug: str = Field( + ..., + example="report_received", + description="A more parseable representation of the name of the message - should be snake cased; this is set by formula in Airtable based on the Message Name field", + ) + text: str = Field( + ..., + example="Your report has been received :check_mark:", + description="The text of the message - utilizes Slack's mrkdwn format", + ) + category: str = Field( + ..., + example="mentorship_request", + description="Snake cased category of the message", + ) diff --git a/tests/endpoints/slack/__init__.py b/modules/models/report_models.py similarity index 100% rename from tests/endpoints/slack/__init__.py rename to modules/models/report_models.py diff --git a/modules/models/scheduled_message_models.py b/modules/models/scheduled_message_models.py new file mode 100644 index 0000000..d59f2b5 --- /dev/null +++ b/modules/models/scheduled_message_models.py @@ -0,0 +1,52 @@ +from datetime import datetime +from pydantic import Field +from enum import Enum + +from modules.models.shared_models import AirtableRowBaseModel + + +class FrequencyEnum(str, Enum): + daily = "daily" + weekly = "weekly" + monthly = "monthly" + + +class ScheduledMessageInfo(AirtableRowBaseModel): + name: str = Field( + ..., + example="Mentorship Reminder", + description="The display name of the message to be scheduled", + ) + slug: str = Field( + ..., + example="mentorship_reminder", + description="A more parseable representation of the name of the scheduled message - should be snake cased", + ) + channel: str = Field( + ..., example="general", description="Channel to send the message to" + ) + message_text: str = Field( + ..., + example="Don't forget you can use the `/mentor` command to request a 1 on 1 session with a mentor!", + description="A text string that can contain markdown syntax to be posted to Slack", + ) + initial_date_time_to_send: datetime = Field( + ..., + example="2021-04-23T10:20:30.400+00:00", + description="ISO formatted datetime in UTC to send the first message - this is used to set the schedule for this message", + ) + frequency: FrequencyEnum = Field( + ..., + example="daily", + description="Frequency to send the message - one of daily, weekly, monthly", + ) + last_sent: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="When the message was last sent", + ) + when_to_send: datetime = Field( + ..., + example="2021-04-23T10:20:30.400+00:00", + description="When to send the message - this is calculated using a formula on the Airtable table", + ) diff --git a/modules/models/shared_models.py b/modules/models/shared_models.py new file mode 100644 index 0000000..c8b1350 --- /dev/null +++ b/modules/models/shared_models.py @@ -0,0 +1,46 @@ +from pydantic import BaseModel, Field +from datetime import datetime +from enum import Enum + + +class ValidEnum(str, Enum): + valid = "valid" + invalid = "invalid" + + +class AirtableUser(BaseModel): + id: str = Field( + ..., + example="usrAuExK7DEWFNiI6", + description="Airtable provided unique ID of the user", + ) + email: str = Field(..., example="test@example.com", description="Email of the user") + name: str = Field(..., example="John Smith", description="Name of the user") + + +class AirtableRowBaseModel(BaseModel): + airtable_id: str = Field( + ..., + example="rec8CRVRJOKYBIDIL", + description="Airtable provided unique ID for the row", + ) + created_at: datetime = Field( + ..., + example="2021-04-23T10:20:30.400+00:00", + description="When the Airtable record was created", + ) + last_modified: datetime = Field( + None, + example="2021-04-23T10:20:30.400+00:00", + description="When the Airtable record was last updated", + ) + last_modified_by: AirtableUser = Field( + None, + example="JulioMendez", + description="Name of the user who last modified the Airtable record", + ) + valid: ValidEnum = Field( + None, + example="invalid", + description="Whether or not the record is valid - this is calculated on the Airtable table and has a value of valid if all fields are filled out", + ) diff --git a/modules/models/slack_models/__init__.py b/modules/models/slack_models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/models/slack_models/action_models.py b/modules/models/slack_models/action_models.py new file mode 100644 index 0000000..0ca54e9 --- /dev/null +++ b/modules/models/slack_models/action_models.py @@ -0,0 +1,36 @@ +from pydantic import Field + +from modules.models.slack_models.shared_models import ( + BasicSlackRequest, + SlackUserInfo, + SlackActionContainerInfo, + BaseSlackTeamInfo, + SlackChannelInfo, + SlackMessageInfo, + SlackActionInfo, +) + + +class SlackActionRequestBody(BasicSlackRequest): + type: str = Field(..., example="block_actions", description="The type of action") + user: SlackUserInfo = Field( + ..., description="The user who triggered the action request" + ) + container: SlackActionContainerInfo = Field( + ..., description="The container where the action was triggered" + ) + team: BaseSlackTeamInfo = Field(..., description="Basic team information") + channel: SlackChannelInfo = Field( + ..., description="The channel the action was triggered in" + ) + message: SlackMessageInfo = Field( + ..., description="The original message where the action was triggered" + ) + response_url: str = Field( + ..., + example="https://hooks.slack.com/actions/T01SBLCQ57A/2899731511204/xb8gxI4ldtCaVwbdsddM0nb", + description="The response URL where a response can be sent if needed", + ) + actions: list[SlackActionInfo] = Field( + ..., description="The action information about the action that was triggered" + ) diff --git a/modules/models/slack_models/command_models.py b/modules/models/slack_models/command_models.py new file mode 100644 index 0000000..54fe90c --- /dev/null +++ b/modules/models/slack_models/command_models.py @@ -0,0 +1,41 @@ +from pydantic import Field + +from modules.models.slack_models.shared_models import BasicSlackRequest + + +class SlackCommandRequestBody(BasicSlackRequest): + command: str = Field( + ..., + example="/mentor_request", + description="The command that triggered the request", + ) + user_id: str = Field( + ..., + example="U01RN31JSTT", + description="The Slack user ID for the user who triggered the request", + ) + user_name: str = Field( + ..., + example="john123", + description="The Slack user name for the user who triggered the request", + ) + channel_id: str = Field( + ..., + example="D02R6CR6DMG", + description="The Slack channel ID where the command was triggered", + ) + channel_name: str = Field( + ..., + example="directmessage", + description="The name of the channel where the command was triggered", + ) + response_url: str = Field( + None, + example="https://hooks.slack.com/actions/T01SBLfdsaQ57A/2902419552385/BiWpNhRSURKF9CvqujZ3x1MQ", + description="The URL to send the response to that will automatically put the response in the right place", + ) + team_id: str = Field( + ..., + example="T01SBLCQ57A", + description="The Slack ID of the team that the command came from", + ) diff --git a/modules/models/slack_models/event_models.py b/modules/models/slack_models/event_models.py new file mode 100644 index 0000000..5e3be19 --- /dev/null +++ b/modules/models/slack_models/event_models.py @@ -0,0 +1,59 @@ +from pydantic import BaseModel, Field + +from modules.models.slack_models.shared_models import SlackMessageInfo + + +class MemberJoinedChannelEvent(BaseModel): + type: str = Field( + ..., + example="member_joined_channel", + description="The type of event, should always be member_joined_channel", + ) + user: str = Field( + ..., + example="U123456789", + description="The Slack ID of the user who joined the channel", + ) + channel: str = Field( + ..., + example="C0698JE0H", + description="The Slack ID of the channel the user joined", + ) + channel_type: str = Field( + ..., + example="C", + description="The channel type - C is typically a public channel and G is for a private channel or group", + ) + team: str = Field(..., example="T024BE7LD", description="The Slack ID of the team") + inviter: str = Field( + None, + example="U123456789", + description="The Slack user ID of the user who invited the joining user - is optional and won't show up for default channels, for example", + ) + + +class MessageReceivedChannelEvent(BaseModel): + team_id: str = Field( + ..., example="T024BE7LD", description="The Slack ID of the team" + ) + api_app_id: str = Field( + ..., example="A02R6C6S9JN", description="The Slack application ID" + ) + event: SlackMessageInfo = Field( + ..., description="The information about the message that was received" + ) + type: str = Field( + ..., + example="event_callback", + description="The type of event, should always be event_callback", + ) + event_id: str = Field( + ..., example="Ev02UJP6HDBR", description="The Slack provided ID of the event" + ) + event_time: int = Field( + ..., example=1642732981, description="The Unix timestamp of the event" + ) + event_context: str = Field( + ..., + example="4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUMDFTQkxDUTU3QSIsImFpZCI6IkEwMlI2QzZTOUpOIiwiY2lkIjoiQzAxUlUxTUhNRkUifQ", + ) diff --git a/modules/models/slack_models/message_models.py b/modules/models/slack_models/message_models.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py new file mode 100644 index 0000000..0e3d628 --- /dev/null +++ b/modules/models/slack_models/shared_models.py @@ -0,0 +1,320 @@ +import os +from functools import cached_property +from typing import Any, Union, Optional + +from pydantic import BaseModel, Field + + +class SlackUserInfo(BaseModel): + id: str = Field( + ..., + example="U01RN31JSTD", + description="Slack ID of the user", + ) + username: str = Field( + ..., example="julio123", description="The Slack username of the user" + ) + name: str = Field( + ..., example="JulioMendez", description="The Slack display name of the user" + ) + + +class SlackEditedInfo(BaseModel): + user: str = Field( + ..., example="B02QRQ4KU5V", description="The user who last edited the message" + ) + ts: str = Field( + ..., + example="1640727458.000000", + description="The Unix Epoch timestamp of when the message was last edited", + ) + + +class SlackTextObjectInfo(BaseModel): + type: str = Field(..., example="mrkdwn", description="The type of text object") + text: str = Field( + ..., + example="Testing text for a text object", + description="The text that makes up the text object", + ) + + +class SlackBlockInfo(BaseModel): + type: str = Field(..., example="section", description="The type of block") + block_id: str = Field( + ..., + example="report_title_block", + description="ID of the block - must be unique within the immediate set of blocks. Will be added by Slack if it's missing in the definition", + ) + text: SlackTextObjectInfo = Field( + None, description="Optional text object for this block" + ) + + class Config: + # Allows extra attributes on this model + extra = "allow" + + +class SlackViewInfo(BaseModel): + id: str = Field( + ..., + example="V02S65HDH9Q", + description="Slack ID of the view", + ) + type: str = Field(..., example="modal", description="The type of view") + blocks: list[SlackBlockInfo] = Field( + ..., description="List of blocks in the view - there must be at least one" + ) + private_metadata: str = Field( + None, + description="Private data that can be included on a view and sent with a submission - not visible to the user", + ) + callback_id: str = Field( + ..., + example="report_form_submit", + description="Callback for the submission action of the view, used to handle the submission", + ) + state: dict[str, Any] = Field( + None, + description="State of a view, if it exists - contains the value of the input elements in the view", + ) + hash: str = Field( + ..., + example="1640903702.u8C2NM3Y", + description="Hash string sent with the submission of the view, this is used by the update and publish views API calls to ensure that only the most recent view is updated or published", + ) + title: SlackTextObjectInfo = Field( + None, description="The text object used for the title of the view" + ) + previous_view_id: str = Field( + None, + example="V02S65HDH9Q", + description="The previous view's ID - typically used in workflows", + ) + root_view_id: str = Field( + None, example="V02S65HDH9Q", description="The root view's ID" + ) + external_id: str = Field( + None, + example="report_form_modal", + description="The optional external ID for the view, must be unique across all views - this is added by the bot", + ) + bot_id: str = Field( + None, + example="B02QRQ4KU5V", + description="The ID of the bot that generated the view", + ) + + +class SlackMessageInfo(BaseModel): + client_msg_id: str = Field(None, example="de437daf-67fd-48a6-b9bd-03f9336509e9") + bot_id: str = Field( + None, + example="B02QRQ4KU5V", + description="Slack ID of the bot that sent the message - provided that the original message was sent from a bot", + ) + type: str = Field(..., example="message", description="The type of message") + text: str = Field( + None, + example="Typical fallback text...", + description="If blocks are provided, this is the fallback text for the message. If no blocks are present, this is the message", + ) + user: str = Field( + ..., + example="U02RK2AL5LZ", + description="Slack user ID of the user who triggered the action", + ) + blocks: list[Union[Any, SlackBlockInfo]] = Field( + None, description="The list of blocks for a particular message" + ) + ts: str = Field( + ..., + example="1640727423.003500", + description="Unix Epoch timestamp the message was received by Slack - typically used to locate the message", + ) + edited: SlackEditedInfo = Field( + None, description="Information about who and when the message was last edited" + ) + thread_ts: str = Field( + None, + example="1640727423.003500", + description="The Unix Epoch timestamp the thread was created", + ) + reply_count: int = Field(None, description="The number of replies the message has") + reply_users_count: int = Field( + None, description="The number of users who have replied to the message" + ) + latest_reply: str = Field( + None, + example="1640727423.003500", + description="The Unix Epoch timestamp of when the latest reply was created", + ) + reply_users: list[str] = Field( + None, + example=["U02RK2AL5LZ"], + description="A list of Slack user IDs of users who have replied to the message", + ) + last_read: str = Field( + None, + example="1640727423.003500", + description="The Unix Epoch timestamp of when the message was last read", + ) + + class Config: + arbitrary_types_allowed = True + + +class SlackActionInfo(BaseModel): + action_id: str = Field( + ..., + example="reset_greet_new_user_claim", + description="The ID that identifies this particular action and allows the application to handle it when triggered", + ) + block_id: str = Field( + None, + example="reset_claim_action", + description="The ID that identifies the block the action is part of", + ) + text: SlackTextObjectInfo = Field( + None, + description="The text object that represents the text on the action (button, etc)", + ) + value: Union[dict[str, Any], str] = Field( + None, + description="The value sent to the application when the action is triggered", + ) + style: str = Field( + None, + example="danger", + description="The style of the action, typically the style of the button", + ) + type: str = Field(..., example="button", description="The type of action") + action_ts: str = Field( + ..., + example="1640727423.003500", + description="The Unix Epoch timestamp of when the action was triggered", + ) + + +class SlackActionContainerInfo(BaseModel): + type: str = Field( + ..., example="message", description="The type of container the action came from" + ) + message_ts: str = Field( + ..., + example="1640752131.000200", + description="Unix Epoch timestamp of when the message was sent to Slack, typically used to locate the message", + ) + channel_id: str = Field( + ..., example="C01S0K034TB", description="The channel ID the message came from" + ) + is_ephemeral: bool = Field( + ..., description="Whether or not the message is ephemeral" + ) + + +class SlackChannelInfo(BaseModel): + id: str = Field(..., example="C01S0K034TB", description="Slack ID of the channel") + name: str = Field(..., example="general", description="Name of the channel") + + +class BasicSlackRequest(BaseModel): + trigger_id: str = Field( + ..., + example="2875577934983.1895692821248.5b6bb2ed4127b90954e8d32a86e2cafc", + description="The ID of the trigger for this request, typically used to respond to the correct place and user", + ) + api_app_id: str = Field( + ..., example="A02R6C6S9JN", description="The Slack application ID" + ) + + +class SlackConversationInfo(BaseModel): + """Slack used to call these channels, but now they are called conversations, of which channels are a subset along with IMs and MPIMs (Multi Person IMs)""" + + id: str = Field( + ..., + example="C012AB3CD", + description="Slack ID of the conversation", + ) + name: str = Field(..., example="general", description="Name of the conversation") + is_channel: bool = Field( + ..., description="Whether the conversation is a channel or not" + ) + is_im: bool = Field(..., description="Whether the conversation is an IM or not") + is_mpim: bool = Field( + ..., description="Whether the conversation is a Multi Person IM or not" + ) + is_private: bool = Field( + ..., description="Whether the conversation is private or not" + ) + + +class BaseSlackTeamInfo(BaseModel): + id: str = Field( + ..., + example="T01SBLCQ57A", + description="Slack ID of the team", + ) + domain: str = Field( + None, example="bot-testing-field", description="The domain of the team" + ) + + +class SlackTeamInfo(BaseSlackTeamInfo): + """Slack used to call these workspaces, but they are referred to as teams now""" + + name: str = Field( + ..., example="Bot-Testing-Field", description="The name of the Slack workspace" + ) + conversations: list[SlackConversationInfo] = Field( + ..., description="The list of Slack channels in this workspace" + ) + + +class SlackTeam: + def __init__(self, team_info: SlackTeamInfo) -> None: + self._team_info = team_info + + def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: + return [ + conversation + for conversation in self.full_conversation_list + if conversation.name == channel_name + ][0] + + @cached_property + def slack_id(self) -> str: + return self._team_info.id + + @cached_property + def name(self) -> str: + return self._team_info.name + + @cached_property + def full_conversation_list(self) -> list[SlackConversationInfo]: + return self._team_info.conversations + + @cached_property + def greetings_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("GREETINGS_CHANNEL_NAME")) + + @cached_property + def mentors_internal_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("MENTORS_CHANNEL_NAME")) + + @cached_property + def moderators_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("MODERATORS_CHANNEL_NAME")) + + @cached_property + def general_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("GENERAL_CHANNEL_NAME")) + + @cached_property + def pride_channel(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("PRIDE_CHANNEL_NAME")) + + @cached_property + def blacks_in_tech(self) -> SlackConversationInfo: + return self.find_channel_by_name(os.getenv("BLACKS_IN_TECH_CHANNEL_NAME")) diff --git a/modules/models/slack_models/slack_models.py b/modules/models/slack_models/slack_models.py new file mode 100644 index 0000000..f523215 --- /dev/null +++ b/modules/models/slack_models/slack_models.py @@ -0,0 +1,97 @@ +from pydantic import BaseModel, Field + +from modules.models.slack_models.shared_models import ( + SlackUserInfo, + SlackViewInfo, + SlackMessageInfo, + SlackActionInfo, + SlackActionContainerInfo, + SlackChannelInfo, + BasicSlackRequest, +) + + +class SlackResponseBody(BasicSlackRequest): + type: str = Field( + ..., + example="view_submission", + description="The type of request the reponse is responding to", + ) + originating_user: SlackUserInfo = Field( + ..., description="The info of the user who triggered the request" + ) + view: SlackViewInfo = Field( + None, description="View object of the original message if it exists" + ) + container: SlackActionContainerInfo = Field( + None, description="The container that the action originated from if it exists" + ) + channel: SlackChannelInfo = Field( + None, + description="The channel information for where the original request was from", + ) + message: SlackMessageInfo = Field( + None, description="The original message from the request, if it exists" + ) + response_urls: list[str] = Field( + None, + description="List of response URLs, typically included with a view response", + ) + actions: list[SlackActionInfo] = Field( + None, description="The list of actions in this message" + ) + + +class BotInfo(BaseModel): + slack_id: str = Field( + ..., + example="B02QRQ4KU5V", + description="Slack ID for the bot that sent the request", + ) + app_id: str = Field( + ..., example="A02R6C6S9JN", description="Slack ID for the parent application" + ) + name: str = Field( + ..., + example="retrieval-bot", + description="Name of the bot that sent the request", + ) + team_id: str = Field( + ..., + example="T01SBLCQ57A", + description="Slack team ID of the bot that sent the request", + ) + + +class BasicSlackBotResponse(BaseModel): + date_time_received: str = Field( + ..., + example="Tue, 28 Dec 2021 05:36:22 GMT", + description="Timestamp for when the response was received", + ) + oauth_scopes: str = Field( + ..., + example="app_mentions:read,channels:history,channels:read,channels:join,emoji:read", + description="List of oauth scopes the bot is authorized to use", + ) + status_ok: bool = Field( + ..., + description="Status of the request that triggered the response, true means the request was successful while false means it was in error", + ) + received_timestamp: str = Field( + ..., + example="1640669783.000100", + description="Unix epoch timestamp for when the request was received", + ) + + +class SlackBotResponseContent(BasicSlackBotResponse): + channel: str = Field( + ..., example="D02R6CR6DMG", description="Channel the request was sent to" + ) + bot_info: BotInfo = Field( + ..., description="Information about the bot that sent the request" + ) + request_blocks: list[dict] = Field( + None, description="List of blocks in the original request" + ) diff --git a/modules/models/slack_models/view_models.py b/modules/models/slack_models/view_models.py new file mode 100644 index 0000000..877b069 --- /dev/null +++ b/modules/models/slack_models/view_models.py @@ -0,0 +1,22 @@ +from pydantic import Field + +from modules.models.slack_models.shared_models import ( + BasicSlackRequest, + SlackUserInfo, + SlackViewInfo, +) + + +class SlackViewRequestBody(BasicSlackRequest): + user: SlackUserInfo = Field( + ..., + description="The Slack user object of the user who triggered the submission of the view", + ) + view: SlackViewInfo = Field( + ..., description="The information of the view that was submitted" + ) + response_urls: list[str] = Field( + [], + example="['https://hooks.slack.com/actions/T01SBLfdsaQ57A/2902419552385/BiWpNhRSURKF9CvqujZ3x1MQ']", + description="List of URLs to be used for responses depending on if the view has elements that are configured to generate a response URL", + ) diff --git a/modules/slack/__init__.py b/modules/slack/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/slack/blocks/__init__.py b/modules/slack/blocks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/slack/blocks/announcement_blocks.py b/modules/slack/blocks/announcement_blocks.py new file mode 100644 index 0000000..83cf4bf --- /dev/null +++ b/modules/slack/blocks/announcement_blocks.py @@ -0,0 +1,19 @@ +from typing import Union +from slack_sdk.models.blocks.blocks import HeaderBlock, SectionBlock +from slack_sdk.models.blocks.basic_components import PlainTextObject, MarkdownTextObject + + +def general_announcement_blocks( + header_text: str, text: str +) -> list[Union[HeaderBlock, SectionBlock]]: + return [general_announcement_header(header_text), general_announcement_body(text)] + + +def general_announcement_header(header_text: str) -> HeaderBlock: + text = PlainTextObject(text="[" + header_text + "]", emoji=True) + return HeaderBlock(block_id="general_announcement_header", text=text) + + +def general_announcement_body(text: str) -> SectionBlock: + text = MarkdownTextObject(text=text) + return SectionBlock(text=text, block_id="general_announcement_body") diff --git a/modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json b/modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json new file mode 100644 index 0000000..31c16f8 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/channel_join_request_blocks.json @@ -0,0 +1,29 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "request_main", + "text": { + "type": "mrkdwn", + "text": ":tada: has requested to join the channel." + } + }, + { + "type": "actions", + "block_id": "invite_to_channel_claim", + "elements": [ + { + "type": "button", + "text": { + "type": "plain_text", + "text": "I'll Invite Them!", + "emoji": true + }, + "style": "primary", + "value": "juilio.mendez", + "action_id": "invite_to_channel_click" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/general_announcement.json b/modules/slack/blocks/block_kit_examples/general_announcement.json new file mode 100644 index 0000000..6d6ac68 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/general_announcement.json @@ -0,0 +1,21 @@ +{ + "blocks": [ + { + "type": "header", + "block_id": "general_announcement_header", + "text": { + "type": "plain_text", + "text": "[Scholarship Opportunity]", + "emoji": true + } + }, + { + "type": "section", + "block_id": "general_announcement_body", + "text": { + "type": "mrkdwn", + "text": "*Coursera:* Prepare for in-demand jobs in Data Analytics, IT Support, Project Management, and UX design. ends on December 31st 2022." + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/greeting_block.json b/modules/slack/blocks/block_kit_examples/greeting_block.json new file mode 100644 index 0000000..1e2b2de --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/greeting_block.json @@ -0,0 +1,55 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":tada: has joined our community! :tada:" + } + }, + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "*First Name:*" + }, + { + "type": "mrkdwn", + "text": "Julio" + }, + { + "type": "mrkdwn", + "text": "*Last Name:*" + }, + { + "type": "mrkdwn", + "text": "Mendez" + }, + { + "type": "mrkdwn", + "text": "*When:*" + }, + { + "type": "mrkdwn", + "text": "August 10th, 2021" + } + ] + }, + { + "type": "actions", + "elements": [ + { + "type": "button", + "text": { + "type": "plain_text", + "emoji": true, + "text": "I will greet them!" + }, + "style": "primary", + "value": "greet_user" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json new file mode 100644 index 0000000..814bcf5 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_claim_blocks.json @@ -0,0 +1,45 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_service_text", + "text": { + "type": "mrkdwn", + "text": "User has requested a mentor for Code Review." + } + }, + { + "type": "section", + "block_id": "mentorship_request_skillset_text", + "text": { + "type": "mrkdwn", + "text": "*Requested Skillset(s):* SQL, C / C++" + } + }, + { + "type": "section", + "block_id": "mentorship_request_affiliation_text", + "text": { + "type": "mrkdwn", + "text": "*Requestor Affiliation:* US Military Veteran" + } + }, + { + "type": "actions", + "block_id": "claim_button_action_block", + "elements": [ + { + "type": "button", + "text": { + "type": "plain_text", + "text": "Claim Mentorship Request", + "emoji": true + }, + "style": "primary", + "value": "JulioMendez", + "action_id": "claim_mentorship_request" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json new file mode 100644 index 0000000..a2b243e --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_block.json @@ -0,0 +1,588 @@ + +{ + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_title", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_divider_1" + }, + { + "type": "section", + "block_id": "mentor_service", + "text": { + "type": "mrkdwn", + "text": "*Type of Mentorship Service*", + "verbatim": false + }, + "accessory": { + "type": "static_select", + "action_id": "mentor_service_select", + "placeholder": { + "type": "plain_text", + "text": "Type of Service", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + }, + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + } + ] + } + }, + { + "type": "section", + "block_id": "mentor_skillset", + "text": { + "type": "mrkdwn", + "text": "*Desired Mentor Skillsets*", + "verbatim": false + }, + "accessory": { + "type": "multi_static_select", + "action_id": "mentor_skillset_select", + "placeholder": { + "type": "plain_text", + "text": "Desired Mentor Skillsets", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_backend" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c#_.net" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c++" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_frontend" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + } + ] + } + }, + { + "type": "section", + "block_id": "comments", + "text": { + "type": "mrkdwn", + "text": "*Add details* (required)", + "verbatim": false + }, + "accessory": { + "type": "button", + "action_id": "details_btn", + "text": { + "type": "plain_text", + "text": "Add details", + "emoji": true + }, + "value": "add_details" + }, + "fields": [ + { + "type": "plain_text", + "text": " ", + "emoji": true + } + ] + }, + { + "type": "divider", + "block_id": "jeZsB" + }, + { + "type": "section", + "block_id": "affiliation", + "text": { + "type": "mrkdwn", + "text": "*I certify that I am a member of the following group*", + "verbatim": false + }, + "accessory": { + "type": "static_select", + "action_id": "affiliation_select", + "placeholder": { + "type": "plain_text", + "text": "Military affiliation", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Veteran", + "emoji": true + }, + "value": "Veteran" + }, + { + "text": { + "type": "plain_text", + "text": "Active Duty", + "emoji": true + }, + "value": "Active Duty" + }, + { + "text": { + "type": "plain_text", + "text": "Military Spouse", + "emoji": true + }, + "value": "Military Spouse" + }, + { + "text": { + "type": "plain_text", + "text": "Non Veteran", + "emoji": true + }, + "value": "Non Veteran" + } + ] + } + }, + { + "type": "divider", + "block_id": "2+AO" + }, + { + "type": "actions", + "block_id": "submission", + "elements": [ + { + "type": "button", + "action_id": "submit_mentor_btn", + "text": { + "type": "plain_text", + "text": "Submit", + "emoji": true + }, + "style": "primary", + "value": "submit" + }, + { + "type": "button", + "action_id": "cancel_btn", + "text": { + "type": "plain_text", + "text": "Cancel", + "emoji": true + }, + "style": "danger", + "value": "cancel" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json new file mode 100644 index 0000000..2544395 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/mentorship/mentorship_request_modal.json @@ -0,0 +1,573 @@ +{ + "type": "modal", + "title": { + "type": "plain_text", + "text": "OC Mentor Request", + "emoji": true + }, + "submit": { + "type": "plain_text", + "text": "Submit Request", + "emoji": true + }, + "close": { + "type": "plain_text", + "text": "Cancel", + "emoji": true + }, + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_main_text", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators. *NOTE*: Mentors are typically available within a couple hours; however, on weekends or holidays the timeframe may be longer before someone reaches out.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_1" + }, + { + "type": "input", + "block_id": "mentorship_service_input", + "element": { + "type": "static_select", + "placeholder": { + "type": "plain_text", + "text": "Type of service...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + } + ], + "action_id": "mentorship_service_selection" + }, + "label": { + "type": "plain_text", + "text": "Mentorship Service*", + "emoji": true + } + }, + { + "type": "input", + "block_id": "mentorship_skillset_input", + "element": { + "type": "multi_static_select", + "placeholder": { + "type": "plain_text", + "text": "Skills related to your request...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_backend" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c#_.net" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c++" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_frontend" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + } + ], + "action_id": "mentorship_skillset_multi_selection" + }, + "label": { + "type": "plain_text", + "text": "Skillsets Related to Your Request*", + "emoji": true + } + }, + { + "type": "input", + "block_id": "details_input_field", + "element": { + "type": "plain_text_input", + "multiline": true, + "action_id": "details_text_input", + "min_length": 10, + "placeholder": { + "type": "plain_text", + "text": "Please enter more information about your request. The more specific you are the easier it is to match you with a great mentor!", + "emoji": true + } + }, + "label": { + "type": "plain_text", + "text": "Request Details*", + "emoji": true + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_2" + }, + { + "type": "input", + "block_id": "mentorship_affiliation_input", + "element": { + "type": "static_select", + "placeholder": { + "type": "plain_text", + "text": "Please select a group...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Veteran", + "emoji": true + }, + "value": "us_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "Active Duty", + "emoji": true + }, + "value": "us_active_duty" + }, + { + "text": { + "type": "plain_text", + "text": "Military Spouse", + "emoji": true + }, + "value": "us_military_spouse" + }, + { + "text": { + "type": "plain_text", + "text": "Non Veteran", + "emoji": true + }, + "value": "non_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "Foreign Military", + "emoji": true + }, + "value": "foreign_military" + } + ], + "action_id": "affiliation_selection" + }, + "label": { + "type": "plain_text", + "text": "I certify that I am affiliated with one of the following groups:*", + "emoji": true + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/new_join_delayed.json b/modules/slack/blocks/block_kit_examples/new_join_delayed.json new file mode 100644 index 0000000..a8c5455 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/new_join_delayed.json @@ -0,0 +1,20 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "delayed_welcome_first_text", + "text": { + "type": "mrkdwn", + "text": "Again, welcome to Operation Code's Slack Community, we're very glad you are here! Please share with us in #general what brings you to Operation Code if you haven't already. Also please let us know how we can assist you on your journey. Consider adding links to your LinkedIn and Github profiles on your Operation Code profile. Lastly, consider connecting with us on our , , , and . If you'd like to contribute to our Open Source software, you can do so on ." + } + }, + { + "type": "section", + "block_id": "delayed_welcome_second_text", + "text": { + "type": "mrkdwn", + "text": "We're excited to have you! If you have any immediate needs, please tag @outreach-team in any public channel." + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/new_join_immediate.json b/modules/slack/blocks/block_kit_examples/new_join_immediate.json new file mode 100644 index 0000000..25bc482 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/new_join_immediate.json @@ -0,0 +1,93 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "immediate_welcome_main_text", + "text": { + "type": "mrkdwn", + "text": "Hello ! Welcome to Operation Code! I'm a bot designed to help you navigate this Slack workspace. Our goal here at Operation Code is to get veterans and their families started on the path to a career in tech. We do that through providing you with scholarships, mentoring, career development opportunities, conference tickets, and more! You can check out more information about us ." + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Much of the provided aid requires veteran or military spouse status. Please verify your status on your profile at https://operationcode.org if you haven't already." + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "You are currently in Slack, a chat application that serves as the hub of Operation Code. If you are visiting us via your browser, Slack provides a to make staying in touch even more convenient." + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "All active Operation Code open source projects are located on our . Lastly, please take a moment to review our ." + } + }, + { + "type": "section", + "block_id": "oc_homepage_button", + "text": { + "type": "mrkdwn", + "text": "Operation Code Homepage" + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "OC Homepage", + "emoji": true + }, + "value": "oc_home_page", + "url": "https://operationcode.org", + "action_id": "oc_greeting_homepage_click", + "style": "primary" + } + }, + { + "type": "section", + "block_id": "slack_download_button", + "text": { + "type": "mrkdwn", + "text": "Slack Download" + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "Slack Download", + "emoji": true + }, + "value": "slack_download", + "url": "https://slack.com/downloads/", + "style": "primary", + "action_id": "oc_greeting_slack_download_click" + } + }, + { + "type": "section", + "block_id": "oc_coc_button", + "text": { + "type": "mrkdwn", + "text": "Operation Code CoC" + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "Operation Code CoC", + "emoji": true + }, + "value": "operation_code_coc", + "url": "https://github.com/OperationCode/community/blob/master/code_of_conduct.md", + "style": "primary", + "action_id": "oc_greeting_coc_click" + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/report_claim.json b/modules/slack/blocks/block_kit_examples/reports/report_claim.json new file mode 100644 index 0000000..258a741 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/report_claim.json @@ -0,0 +1,46 @@ +{ + "blocks": [ + { + "type": "section", + "block_id": "report_claim_title", + "text": { + "type": "mrkdwn", + "text": ":warning: has submitted a report. :warning:" + } + }, + { + "type": "header", + "block_id": "report_claim_header", + "text": { + "type": "plain_text", + "text": "Report details:", + "emoji": true + } + }, + { + "type": "section", + "block_id": "report_claim_details", + "text": { + "type": "mrkdwn", + "text": "I have an issue with the post made by x: blah blah blah" + } + }, + { + "type": "actions", + "block_id": "report_claim_button", + "elements": [ + { + "type": "button", + "action_id": "report_claim_button_click", + "text": { + "type": "plain_text", + "emoji": true, + "text": "I Will Reach Out to Them" + }, + "style": "primary", + "value": "claim_report" + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/report_form.json b/modules/slack/blocks/block_kit_examples/reports/report_form.json new file mode 100644 index 0000000..ef83478 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/report_form.json @@ -0,0 +1,49 @@ +{ + "title": { + "type": "plain_text", + "text": "OC Slack - Report", + "emoji": true + }, + "type": "modal", + "callback_id": "report_modal", + "blocks": [ + { + "type": "section", + "block_id": "report_title_block", + "text": { + "type": "mrkdwn", + "text": ":warning: Thank you for taking the time to report an issue to the moderation team. Please fill out the below input field with the text of the message you'd like to report. If you'd like, you can include a short description of why you are reporting it. The report will only be shown to the moderators of the OC Slack workspace.:warning:" + } + }, + { + "type": "input", + "block_id": "report_input", + "element": { + "type": "plain_text_input", + "action_id": "report_input_field", + "multiline": true, + "focus_on_load": true, + "min_length": 2, + "placeholder": { + "type": "plain_text", + "text": "You can copy and paste the text of the message you'd like to report or tell us a bit about what you are reporting..." + } + }, + "label": { + "type": "plain_text", + "text": "Text of message you are reporting or reason for your report*", + "emoji": true + } + } + ], + "close": { + "type": "plain_text", + "text": "Cancel", + "emoji": true + }, + "submit": { + "type": "plain_text", + "text": "Submit Report", + "emoji": true + } +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json new file mode 100644 index 0000000..c528019 --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_failed_report.json @@ -0,0 +1,11 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":warning: Your report was not sent to the moderators due to an unspecified error. Please contact @moderators and let them know so we can investigate the issue and take care of your report. :warning:" + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json new file mode 100644 index 0000000..8fd4d8f --- /dev/null +++ b/modules/slack/blocks/block_kit_examples/reports/response_to_user_on_successful_report.json @@ -0,0 +1,11 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":white_check_mark: Your report has been received by the moderator team and someone will be reaching out shortly! Please don't hesistate to contact @moderators if you have any other questions. :white_check_mark:" + } + } + ] +} \ No newline at end of file diff --git a/modules/slack/blocks/greeting_blocks.py b/modules/slack/blocks/greeting_blocks.py new file mode 100644 index 0000000..037498d --- /dev/null +++ b/modules/slack/blocks/greeting_blocks.py @@ -0,0 +1,67 @@ +from slack_sdk.models.blocks.blocks import SectionBlock, ActionsBlock +from slack_sdk.models.blocks.basic_components import MarkdownTextObject, PlainTextObject +from slack_sdk.models.blocks.block_elements import ButtonElement + +from modules.models.greeting_models import UserInfo + + +def initial_greet_user_blocks(user_info: UserInfo) -> list: + return [ + greeting_blocks_title(user_info.name), + greeting_blocks_user_info(user_info), + greeting_block_button(user_info.id), + ] + + +def greeting_blocks_title(slack_name: str) -> SectionBlock: + greeting_text = MarkdownTextObject( + text=f"🎉 <@{slack_name}> has joined our community! 🎉" + ) + return SectionBlock(block_id="title_text", text=greeting_text) + + +def greeting_blocks_user_info(user_info: UserInfo) -> SectionBlock: + greeting_fields = [] + for key, value in user_info.__dict__.items(): + if key in ("zip_code", "email", "id"): + pass + elif value is None: + pass + else: + greeting_fields.append( + MarkdownTextObject(text=f"*{key.replace('_', ' ').title()}:*") + ) + greeting_fields.append(MarkdownTextObject(text=f"{value}")) + return SectionBlock(block_id="user_info", fields=greeting_fields) + + +def greeting_block_button(new_user_id: str) -> ActionsBlock: + button_text = PlainTextObject(text="I will greet them!", emoji=True) + greet_button = ButtonElement( + text=button_text, + action_id="greet_new_user_claim", + style="primary", + value=f"{new_user_id}", + ) + return ActionsBlock( + block_id="claim_action", + elements=[greet_button], + ) + + +def greeting_block_claimed_button(claiming_user_name: str) -> ActionsBlock: + """Creates an ActionsBlock that contains a button showing who claimed the greeting - this button allows anyone to reset the claim + + :param claiming_user_name: username of the user claiming the greeting + :type claiming_user_name: str + :return: an ActionsBlock with the claimed button that allows a reset + :rtype: ActionsBlock + """ + button_text = PlainTextObject(text=f"Greeted by {claiming_user_name}!") + claimed_greet_button = ButtonElement( + text=button_text, + action_id="reset_greet_new_user_claim", + style="danger", + value=f"{claiming_user_name}", + ) + return ActionsBlock(block_id="reset_claim_action", elements=[claimed_greet_button]) diff --git a/modules/slack/blocks/mentorship_blocks.py b/modules/slack/blocks/mentorship_blocks.py new file mode 100644 index 0000000..9c0d7af --- /dev/null +++ b/modules/slack/blocks/mentorship_blocks.py @@ -0,0 +1,272 @@ +import logging +from slack_sdk.models.views import View +from slack_sdk.models.blocks.blocks import SectionBlock, InputBlock, ActionsBlock, Block +from slack_sdk.models.blocks.block_elements import ( + StaticSelectElement, + StaticMultiSelectElement, + PlainTextInputElement, + ButtonElement, +) +from slack_sdk.models.blocks.basic_components import ( + Option, + MarkdownTextObject, + PlainTextObject, +) + +from modules.airtable import message_text_table +from modules.models.mentorship_models import ( + MentorshipService, + MentorshipSkillset, + MentorshipAffiliation, +) +from modules.slack.blocks import shared_blocks + +logger = logging.getLogger(__name__) + + +def mentorship_request_view( + services: list[MentorshipService], + skillsets: list[MentorshipSkillset], + affiliations: list[MentorshipAffiliation], +) -> View: + logger.info("STAGE: Building mentorship request form view...") + return View( + type="modal", + callback_id="mentorship_request_form_submit", + title=PlainTextObject(text="OC Mentor Request", emoji=True), + submit=PlainTextObject(text="Submit Request", emoji=True), + cancel=PlainTextObject(text="Cancel", emoji=True), + external_id="mentorship_request_form_modal", + blocks=mentorship_request_blocks(services, skillsets, affiliations), + ) + + +def mentorship_request_blocks( + services: list[MentorshipService], + skillsets: list[MentorshipSkillset], + affiliations: list[MentorshipAffiliation], +) -> list: + logger.info("STAGE: Building the mentorship request blocks...") + messages = message_text_table.retrieve_valid_messages_by_view( + "Valid Mentorship Requests" + ) + return [ + request_view_main_text(messages["mentorship_request_main"].text), + shared_blocks.generic_divider_block(block_id="mentorship_request_divider_1"), + request_view_services_input( + services, + messages["mentorship_request_service_label"].text, + messages["mentorship_request_service_placeholder"].text, + ), + request_view_skillsets_input( + skillsets, + messages["mentorship_request_skillset_label"].text, + messages["mentorship_request_skillset_placeholder"].text, + ), + request_view_details_input( + messages["mentorship_request_details_label"].text, + messages["mentorship_request_details_placeholder"].text, + ), + shared_blocks.generic_divider_block(block_id="mentorship_request_divider_2"), + request_view_affiliations_input( + affiliations, + messages["mentorship_request_affiliation_label"].text, + messages["mentorship_request_affiliation_placeholder"].text, + ), + ] + + +def request_view_main_text(main_text: str) -> SectionBlock: + logger.info("STAGE: Building mentorship request form main section block...") + return SectionBlock( + block_id="mentorship_request_main_text", text=MarkdownTextObject(text=main_text) + ) + + +def request_view_services_input( + services: list[MentorshipService], services_label: str, services_placeholder: str +) -> InputBlock: + logger.info("STAGE: Building mentorship request form services input block...") + service_options = [ + Option(label=service.name, value=service.name) for service in services + ] + input_element = StaticSelectElement( + placeholder=PlainTextObject(text=services_placeholder, emoji=True), + action_id="mentorship_service_selection", + options=service_options, + ) + return InputBlock( + block_id="mentorship_service_input", + label=PlainTextObject(text=services_label, emoji=True), + element=input_element, + ) + + +def request_view_skillsets_input( + skillsets: list[MentorshipSkillset], + skillsets_label: str, + skillsets_placeholder: str, +) -> InputBlock: + logger.info("STAGE: Building mentorship request form skillsets input block...") + service_options = [ + Option(label=skillset.name, value=skillset.name) for skillset in skillsets + ] + input_element = StaticMultiSelectElement( + placeholder=PlainTextObject(text=skillsets_placeholder, emoji=True), + action_id="mentorship_skillset_multi_selection", + options=service_options, + ) + return InputBlock( + block_id="mentor_skillset_input", + label=PlainTextObject(text=skillsets_label, emoji=True), + element=input_element, + ) + + +def request_view_details_input( + details_label: str, details_placeholder: str +) -> InputBlock: + logger.info("STAGE: Building mentorship request form details input block...") + input_element = PlainTextInputElement( + action_id="details_text_input", + multiline=True, + min_length=10, + placeholder=PlainTextObject(text=details_placeholder, emoji=True), + ) + return InputBlock( + block_id="details_input_block", + label=PlainTextObject(text=details_label, emoji=True), + element=input_element, + ) + + +def request_view_affiliations_input( + affiliations: list[MentorshipAffiliation], + affiliations_label: str, + affiliations_placeholder: str, +) -> InputBlock: + logger.info("STAGE: Building mentorship request form affiliations input block...") + affiliation_options = [ + Option(label=affiliation.name, value=affiliation.name) + for affiliation in affiliations + ] + input_element = StaticSelectElement( + placeholder=PlainTextObject(text=affiliations_placeholder, emoji=True), + action_id="mentorship_affiliation_selection", + options=affiliation_options, + ) + return InputBlock( + block_id="mentorship_affiliation_input", + label=PlainTextObject(text=affiliations_label, emoji=True), + element=input_element, + ) + + +def request_successful_block() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_received_successfully" + ) + return SectionBlock( + block_id="mentorship_request_received_successfully", + text=MarkdownTextObject(text=message_row.text), + ) + + +def request_unsuccessful_block() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_unsuccessful" + ) + return SectionBlock( + block_id="mentorship_request_unsuccessful", + text=MarkdownTextObject(text=message_row.text), + ) + + +def request_claim_blocks( + requested_service: str, + skillsets: list[str], + affiliation: str, + requesting_username: str, +) -> list[Block]: + return [ + request_claim_service_block(requesting_username, requested_service), + request_claim_skillset_block(skillsets), + request_claim_affiliation_block(affiliation), + request_claim_button(), + ] + + +def request_claim_service_block( + requesting_username: str, requested_service: str +) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_service_text" + ) + return SectionBlock( + block_id="mentorship_request_service_text", + text=MarkdownTextObject( + text=message_row.text.format(requesting_username, requested_service) + ), + ) + + +def request_claim_skillset_block(skillsets: list[str]) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_skillset_text" + ) + return SectionBlock( + block_id="mentorship_request_skillset_text", + text=MarkdownTextObject(text=message_row.text.format(", ".join(skillsets))), + ) + + +def request_claim_affiliation_block(affiliation: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_affiliation_text" + ) + return SectionBlock( + block_id="mentorship_request_affiliation_text", + text=MarkdownTextObject(text=message_row.text.format(affiliation)), + ) + + +def request_claim_button() -> ActionsBlock: + button_element = ButtonElement( + text=PlainTextObject(text="Claim Mentorship Request", emoji=True), + style="primary", + action_id="claim_mentorship_request", + ) + return ActionsBlock(block_id="claim_button_action_block", elements=[button_element]) + + +def request_claim_reset_button(claiming_username: str) -> ActionsBlock: + button_element = ButtonElement( + text=PlainTextObject( + text=f"Request Claimed By {claiming_username}", emoji=True + ), + style="danger", + action_id="reset_mentorship_request_claim", + ) + return ActionsBlock(block_id="claim_button_action_block", elements=[button_element]) + + +def request_claim_details_block(details: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_details_text" + ) + return SectionBlock( + block_id="mentorship_request_details_text", + text=MarkdownTextObject(text=message_row.text.format(details)), + ) + + +def request_claim_tagged_users_block(usernames: list[str]) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="mentorship_request_claim_tagged_users" + ) + return SectionBlock( + block_id="mentorship_request_tagged_users", + text=MarkdownTextObject( + text=message_row.text.format("@" + " @".join(usernames)) + ), + ) diff --git a/modules/slack/blocks/new_join_blocks.py b/modules/slack/blocks/new_join_blocks.py new file mode 100644 index 0000000..d1fcbad --- /dev/null +++ b/modules/slack/blocks/new_join_blocks.py @@ -0,0 +1,133 @@ +from slack_sdk.models.blocks import ( + Block, + SectionBlock, + PlainTextObject, + ButtonElement, + MarkdownTextObject, +) + +from modules.airtable import message_text_table + + +def new_join_immediate_welcome_blocks(joining_username: str) -> list[Block]: + return [ + new_join_immediate_welcome_first_text(joining_username), + new_join_immediate_welcome_second_text(), + new_join_immediate_welcome_third_text(), + new_join_immediate_welcome_fourth_text(), + new_join_immediate_welcome_oc_homepage_button(), + new_join_immediate_welcome_slack_download_button(), + new_join_immediate_welcome_oc_coc_button(), + ] + + +def new_join_delayed_welcome_blocks() -> list[Block]: + return [ + new_join_delayed_welcome_first_text(), + new_join_immediate_welcome_second_text(), + ] + + +def new_join_immediate_welcome_first_text(joining_username: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_first_text" + ) + return SectionBlock( + block_id="immediate_welcome_first_text", + text=MarkdownTextObject(text=message_row.text.format(joining_username)), + ) + + +def new_join_immediate_welcome_second_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_second_text" + ) + return SectionBlock( + block_id="immediate_welcome_second_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_immediate_welcome_third_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_third_text" + ) + return SectionBlock( + block_id="immediate_welcome_third_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_immediate_welcome_fourth_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_immediate_welcome_fourth_text" + ) + return SectionBlock( + block_id="immediate_welcome_fourth_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_immediate_welcome_oc_homepage_button() -> SectionBlock: + accessory = ButtonElement( + text=PlainTextObject(text="OC Homepage", emoji=True), + value="oc_home_page", + url="https://operationcode.org/", + action_id="oc_greeting_homepage_click", + style="primary", + ) + return SectionBlock( + block_id="oc_homepage_button", + text=MarkdownTextObject(text="Operation Code Homepage"), + accessory=accessory, + ) + + +def new_join_immediate_welcome_slack_download_button() -> SectionBlock: + accessory = ButtonElement( + text=PlainTextObject(text="Slack Download", emoji=True), + value="slack_download", + url="https://slack.com/downloads/", + action_id="oc_greeting_slack_download_click", + style="primary", + ) + return SectionBlock( + block_id="slack_download_button", + text=MarkdownTextObject(text="Slack Download"), + accessory=accessory, + ) + + +def new_join_immediate_welcome_oc_coc_button() -> SectionBlock: + accessory = ButtonElement( + text=PlainTextObject(text="Operation Code CoC", emoji=True), + value="operation_code_coc", + url="https://github.com/OperationCode/community/blob/master/code_of_conduct.md", + action_id="oc_greeting_coc_click", + style="primary", + ) + return SectionBlock( + block_id="oc_coc_button", + text=MarkdownTextObject(text="Operation Code CoC"), + accessory=accessory, + ) + + +def new_join_delayed_welcome_first_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_delayed_welcome_first_text" + ) + return SectionBlock( + block_id="delayed_welcome_first_text", + text=MarkdownTextObject(text=message_row.text), + ) + + +def new_join_delayed_welcome_second_text() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="new_member_join_delayed_welcome_second_text" + ) + return SectionBlock( + block_id="delayed_welcome_second_text", + text=MarkdownTextObject(text=message_row.text), + ) diff --git a/modules/slack/blocks/report_blocks.py b/modules/slack/blocks/report_blocks.py new file mode 100644 index 0000000..60062ba --- /dev/null +++ b/modules/slack/blocks/report_blocks.py @@ -0,0 +1,117 @@ +from slack_sdk.models.views import View +from slack_sdk.models.blocks.blocks import ( + SectionBlock, + InputBlock, + HeaderBlock, + ActionsBlock, +) +from slack_sdk.models.blocks.basic_components import MarkdownTextObject, PlainTextObject +from slack_sdk.models.blocks.block_elements import PlainTextInputElement, ButtonElement + +from modules.airtable import message_text_table + + +def report_form_view_elements() -> View: + title_text = PlainTextObject(text="OC Slack - Report", emoji=True) + close_button_text = PlainTextObject(text="Cancel") + submit_button_text = PlainTextObject(text="Submit Report") + return View( + type="modal", + callback_id="report_form_submit", + title=title_text, + close=close_button_text, + submit=submit_button_text, + blocks=report_form_modal_blocks(), + external_id="report_form_modal", + ) + + +def report_form_modal_blocks() -> list: + return [report_form_title_block(), report_form_input_block()] + + +def report_form_title_block() -> SectionBlock: + text = MarkdownTextObject( + text=":warning: Thank you for taking the time to report an issue to the moderation team. Please fill out the below input field with the text of the message you'd like to report. If you'd like, you can include a short description of why you are reporting it. The report will only be shown to the moderators of the OC Slack workspace.:warning:" + ) + return SectionBlock(block_id="report_title_block", text=text) + + +def report_form_input_block() -> InputBlock: + input_placeholder = PlainTextObject( + text="You can copy and paste the text of the message you'd like to report or tell us a bit about what you are reporting...", + emoji=True, + ) + input_label = PlainTextObject( + text="Text of message you are reporting or reason for your report*", emoji=True + ) + text_input = PlainTextInputElement( + action_id="report_input_field", + placeholder=input_placeholder, + focus_on_load=True, + multiline=True, + min_length=2, + ) + return InputBlock(block_id="report_input", element=text_input, label=input_label) + + +def report_claim_blocks(reporting_user_name: str, report_details: str) -> list: + return [ + report_claim_title_section(reporting_user_name), + report_claim_details_header(), + report_claim_details(report_details), + report_claim_button(), + ] + + +def report_claim_title_section(username: str) -> SectionBlock: + text = MarkdownTextObject( + text=f":warning: <@{username}> has submitted a report. :warning:" + ) + return SectionBlock(text=text, block_id="report_claim_title") + + +def report_claim_details_header() -> HeaderBlock: + text = PlainTextObject(text="Report details:", emoji=True) + return HeaderBlock(block_id="report_claim_header", text=text) + + +def report_claim_details(report_details: str) -> SectionBlock: + text = MarkdownTextObject(text=f"{report_details}") + return SectionBlock(text=text, block_id="report_claim_details") + + +def report_claim_button() -> ActionsBlock: + button_text = PlainTextObject(text="I Will Reach Out to Them") + button_element = ButtonElement( + text=button_text, + style="primary", + action_id="report_claim", + ) + return ActionsBlock(block_id="report_claim_button", elements=[button_element]) + + +def report_claim_claimed_button(claiming_username: str) -> ActionsBlock: + button_text = PlainTextObject(text=f"Claimed by {claiming_username}!") + button_element = ButtonElement( + text=button_text, + style="danger", + action_id="reset_report_claim", + ) + return ActionsBlock(block_id="report_claim_button", elements=[button_element]) + + +def report_received_ephemeral_message() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="report_received" + ) + text = MarkdownTextObject(text=message_row.text) + return SectionBlock(block_id="report_received", text=text) + + +def report_failed_ephemeral_message() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="report_not_received" + ) + text = MarkdownTextObject(text=message_row.text) + return SectionBlock(block_id="report_not_received", text=text) diff --git a/modules/slack/blocks/shared_blocks.py b/modules/slack/blocks/shared_blocks.py new file mode 100644 index 0000000..1c3b0f5 --- /dev/null +++ b/modules/slack/blocks/shared_blocks.py @@ -0,0 +1,73 @@ +from slack_sdk.models.blocks import ( + DividerBlock, + SectionBlock, + MarkdownTextObject, + ButtonElement, + PlainTextObject, + ActionsBlock, + Block, +) + +from modules.airtable import message_text_table + + +def generic_divider_block(block_id: str) -> DividerBlock: + return DividerBlock(block_id=block_id) + + +def channel_join_request_successful_block(channel_name: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="channel_join_request_successful" + ) + return SectionBlock( + block_id="channel_join_request_successful_block", + text=MarkdownTextObject(text=message_row.text.format(channel_name)), + ) + + +def channel_join_request_unsuccessful_block() -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="channel_join_request_unsuccessful" + ) + return SectionBlock( + block_id="channel_join_request_unsuccessful_block", + text=MarkdownTextObject(text=message_row.text), + ) + + +def channel_join_request_blocks(requesting_username: str) -> list[Block]: + return [ + channel_join_request_main(requesting_username), + channel_join_request_action(), + ] + + +def channel_join_request_main(requesting_username: str) -> SectionBlock: + message_row = message_text_table.retrieve_valid_message_row( + message_slug="channel_join_request_main_text" + ) + return SectionBlock( + block_id="request_main", + text=MarkdownTextObject(text=message_row.text.format(requesting_username)), + ) + + +def channel_join_request_action() -> ActionsBlock: + button_element = ButtonElement( + text=PlainTextObject(text="I'll Invite Them!", emoji=True), + style="primary", + action_id="invite_to_channel_click", + ) + return ActionsBlock(block_id="channel_invite_action", elements=[button_element]) + + +def channel_join_request_reset_action(claiming_username: str) -> ActionsBlock: + button_text = PlainTextObject(text=f"Invited by {claiming_username}!") + button_element = ButtonElement( + text=button_text, + style="danger", + action_id="reset_channel_invite", + ) + return ActionsBlock( + block_id="reset_channel_invite_action", elements=[button_element] + ) diff --git a/modules/utils/__init__.py b/modules/utils/__init__.py new file mode 100644 index 0000000..c525c0e --- /dev/null +++ b/modules/utils/__init__.py @@ -0,0 +1,138 @@ +import os +import logging +from datetime import datetime +from pathlib import Path +from re import sub +from functools import lru_cache +from pyairtable import Table +from slack_bolt.app import App +from slack_sdk.models.blocks import SectionBlock, MarkdownTextObject +from slack_sdk.web.async_client import AsyncWebClient +from dotenv import load_dotenv + +from modules.models.greeting_models import UserInfo +from modules.models.slack_models.shared_models import ( + SlackConversationInfo, + SlackTeamInfo, + SlackTeam, +) + +logger = logging.getLogger(__name__) + + +def snake_case(s: str) -> str: + """Snake cases a string using regex - from + https://www.w3resource.com/python-exercises/string/python-data-type-string-exercise-97.php + + :param s: string to be snake cased + :type s: str + :return: snake cased string + :rtype: str + """ + return "_".join( + sub( + "([A-Z][a-z]+)", r" \1", sub("([A-Z]+)", r" \1", s.replace("-", " ")) + ).split() + ).lower() + + +@lru_cache +def get_team_info() -> SlackTeam: + logger.info("STAGE: Retrieving team information...") + try: + synchronous_app = App( + token=os.environ.get("SLACK_BOT_TOKEN"), + signing_secret=os.environ.get("SLACK_SIGNING_SECRET"), + ) + team_info = synchronous_app.client.team_info() + conversations = synchronous_app.client.conversations_list( + exclude_archived=True, types=["public_channel", "private_channel"] + ) + slack_team_response = SlackTeam( + SlackTeamInfo( + id=team_info["team"]["id"], + name=team_info["team"]["name"], + conversations=[ + SlackConversationInfo(**conversation) + for conversation in conversations.data["channels"] + ], + ) + ) + del synchronous_app + return slack_team_response + except Exception as e: + raise e + + +async def get_slack_user_from_email(client: AsyncWebClient, email: str) -> UserInfo: + slack_user = await client.users_lookupByEmail(email=email) + return UserInfo( + **slack_user.data["user"], email=slack_user.data["user"]["profile"]["email"] + ) + + +async def get_slack_user_by_id(client: AsyncWebClient, user_id: str) -> UserInfo: + slack_user = await client.users_info(user=user_id) + print(slack_user) + return UserInfo( + **slack_user.data["user"], email=slack_user.data["user"]["profile"]["email"] + ) + + +async def log_to_thread( + client: AsyncWebClient, + channel_id: str, + message_ts: str, + username: str, + action_ts: str, + claim: bool, +) -> None: + await client.chat_postMessage( + channel=channel_id, + thread_ts=message_ts, + text="Logging to greeting thread...", + blocks=[threaded_action_logging(username, action_ts, claim)], + ) + + +def threaded_action_logging(username: str, timestamp: str, claim: bool) -> SectionBlock: + """Returns a block that is used to log a claim or reset to a thread + + :param username: username of the user performing the action + :type username: str + :param timestamp: string timestamp of the action in Unix Epoch Time + :type timestamp: str + :param claim: whether it's a claim action or not + :type claim: bool + :return: a section block to be threaded on the original message + :rtype: SectionBlock + """ + if claim: + text = MarkdownTextObject( + text=f"Claimed by {username} at {datetime.utcfromtimestamp(float(timestamp)).strftime('%Y-%m-%d %H:%M:%S')} UTC!" + ) + else: + text = MarkdownTextObject( + text=f"Reset by {username} at {datetime.utcfromtimestamp(float(timestamp)).strftime('%Y-%m-%d %H:%M:%S')} UTC!" + ) + return SectionBlock(block_id="greeting_log_reply", text=text) + + +def table_fields(table: Table) -> list[str]: + """Returns snake cased columns (fields in Airtable parlance) on the table + Because we don't have access to the Airtable metadata API, we must set up a view on every table with every column + filled in since as the Airtable API says - "Returned records do not include any fields with "empty" values, e.g. "", [], or false." + + :return: list of fields + :rtype: list[str] + """ + try: + first_record = table.first(view="Fields") + return [snake_case(field) for field in first_record["fields"].keys()] + except Exception as e: + raise e + + +load_dotenv(dotenv_path=f"{str(Path(__file__).parent.parent.parent)}/.env") + +slack_team = get_team_info() diff --git a/modules/utils/daily_programmer_scheduler.py b/modules/utils/daily_programmer_scheduler.py new file mode 100644 index 0000000..6dc39bc --- /dev/null +++ b/modules/utils/daily_programmer_scheduler.py @@ -0,0 +1,9 @@ +import logging +from slack_bolt.context.async_context import AsyncBoltContext + +logger = logging.getLogger(__name__) + + +async def handle_daily_programmer_post(parsed_body, context: AsyncBoltContext) -> None: + logger.info("STAGE: Beginning task populate_daily_programmer_table...") + logger.debug(f"Received body: {parsed_body}") diff --git a/modules/utils/example_requests/mentorship_request_claim_action.json b/modules/utils/example_requests/mentorship_request_claim_action.json new file mode 100644 index 0000000..b246c8d --- /dev/null +++ b/modules/utils/example_requests/mentorship_request_claim_action.json @@ -0,0 +1,110 @@ +{ + "type": "block_actions", + "user": { + "id": "U01RN31JSTD", + "username": "judson.stevens", + "name": "judson.stevens", + "team_id": "T01SBLCQ57A" + }, + "api_app_id": "A02R6C6S9JN", + "token": "ZdW4MAeWALbwTKtzdfhyvrGW", + "container": { + "type": "message", + "message_ts": "1640986475.006500", + "channel_id": "C01R77KM8H5", + "is_ephemeral": false, + "thread_ts": "1640986475.006500" + }, + "trigger_id": "2921169898672.1895692821248.8f353dfbf0be6d23ed09354b247e0b89", + "team": { + "id": "T01SBLCQ57A", + "domain": "bot-testing-field" + }, + "enterprise": "None", + "is_enterprise_install": false, + "channel": { + "id": "C01R77KM8H5", + "name": "mentors-internal" + }, + "message": { + "bot_id": "B02QRQ4KU5V", + "type": "message", + "text": "New mentorship request received...", + "user": "U02RK2AL5LZ", + "ts": "1640986475.006500", + "team": "T01SBLCQ57A", + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_service_text", + "text": { + "type": "mrkdwn", + "text": "User <@U01RN31JSTD> has requested a mentor for General Guidance.", + "verbatim": false + } + }, + { + "type": "section", + "block_id": "mentorship_request_skillset_text", + "text": { + "type": "mrkdwn", + "text": "*Requested Skillset(s):* Architecture, Career Advice, Cloud / AWS / GCP / Azure", + "verbatim": false + } + }, + { + "type": "section", + "block_id": "mentorship_request_affiliation_text", + "text": { + "type": "mrkdwn", + "text": "*Requestor Affiliation:* US Military Spouse", + "verbatim": false + } + }, + { + "type": "actions", + "block_id": "claim_button_action_block", + "elements": [ + { + "type": "button", + "action_id": "claim_mentorship_request", + "text": { + "type": "plain_text", + "text": "Claim Mentorship Request", + "emoji": true + }, + "style": "primary" + } + ] + } + ], + "thread_ts": "1640986475.006500", + "reply_count": 2, + "reply_users_count": 1, + "latest_reply": "1640986477.006800", + "reply_users": [ + "U02RK2AL5LZ" + ], + "is_locked": false, + "subscribed": true, + "last_read": "1640986477.006800" + }, + "state": { + "values": {} + }, + "response_url": "https://hooks.slack.com/actions/T01SBLCQ57A/2899731511204/xb8gxI24ldtCaVwbdsddM0nb", + "actions": [ + { + "action_id": "claim_mentorship_request", + "block_id": "claim_button_action_block", + "text": { + "type": "plain_text", + "text": "Claim Mentorship Request", + "emoji": true + }, + "style": "primary", + "type": "button", + "action_ts": "1640986929.354736" + } + ] +} diff --git a/modules/utils/example_requests/pride_request_command.json b/modules/utils/example_requests/pride_request_command.json new file mode 100644 index 0000000..bbd3317 --- /dev/null +++ b/modules/utils/example_requests/pride_request_command.json @@ -0,0 +1,14 @@ +{ + "token": "ZdW4MAeWALbwTKtzdfhyvrGW", + "team_id": "T01SBLCQ57A", + "team_domain": "bot-testing-field", + "channel_id": "D02R6CR6DMG", + "channel_name": "directmessage", + "user_id": "U01RN31JSTD", + "user_name": "judson.stevens", + "command": "/pride", + "api_app_id": "A02R6C6S9JN", + "is_enterprise_install": "false", + "response_url": "https://hooks.slack.com/commands/T01SBLCQ57A/2897652965298/c11hovXK7EMpPtnWOcRvFE4m", + "trigger_id": "2921387427888.1895692821248.08d2864bfc4f49d666e25ead52fb95ca" +} \ No newline at end of file diff --git a/modules/utils/example_requests/view_submission_request.json b/modules/utils/example_requests/view_submission_request.json new file mode 100644 index 0000000..761414d --- /dev/null +++ b/modules/utils/example_requests/view_submission_request.json @@ -0,0 +1,737 @@ +{ + "type": "view_submission", + "team": { + "id": "T01SBLCQ57A", + "domain": "bot-testing-field" + }, + "user": { + "id": "U01RN31JSTD", + "username": "judson.stevens", + "name": "judson.stevens", + "team_id": "T01SBLCQ57A" + }, + "api_app_id": "A02R6C6S9JN", + "token": "ZdW4MAeWALbwTKtzdfhyvrGW", + "trigger_id": "2908311897777.1895692821248.89b9cdcdf45940f3a9ab14c5ff527489", + "view": { + "id": "V02S8ML6H8D", + "team_id": "T01SBLCQ57A", + "type": "modal", + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_main_text", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators. *NOTE*: Mentors are typically available within a couple hours; however, on weekends or holidays the timeframe may be longer before someone reaches out.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_1" + }, + { + "type": "input", + "block_id": "mentorship_service_input", + "label": { + "type": "plain_text", + "text": "Mentorship Service*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_service_selection", + "placeholder": { + "type": "plain_text", + "text": "Type of service...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + }, + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + } + ] + } + }, + { + "type": "input", + "block_id": "mentor_skillset_input", + "label": { + "type": "plain_text", + "text": "Skillsets Related to Your Request", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "multi_static_select", + "action_id": "mentorship_skillset_multi_selection", + "placeholder": { + "type": "plain_text", + "text": "Skills related to your request...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Architecture", + "emoji": true + }, + "value": "architecture" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c_plus_plus" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c_sharp_dotnet" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / Azure", + "emoji": true + }, + "value": "cloud_aws_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Cyber-security", + "emoji": true + }, + "value": "cyber_security" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Funding", + "emoji": true + }, + "value": "funding" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "React", + "emoji": true + }, + "value": "react" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_back_end" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_front_end" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + } + ] + } + }, + { + "type": "input", + "block_id": "details_input_block", + "label": { + "type": "plain_text", + "text": "Request Details*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "plain_text_input", + "action_id": "details_text_input", + "placeholder": { + "type": "plain_text", + "text": "Please enter more information about your request. The more specific you are the easier it is to match you with a great mentor!", + "emoji": true + }, + "multiline": true, + "min_length": 10, + "dispatch_action_config": { + "trigger_actions_on": [ + "on_enter_pressed" + ] + } + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_2" + }, + { + "type": "input", + "block_id": "mentorship_affiliation_input", + "label": { + "type": "plain_text", + "text": "I certify that I am affiliated with one of the following groups:*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_affiliation_selection", + "placeholder": { + "type": "plain_text", + "text": "Please select a group...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "US Veteran", + "emoji": true + }, + "value": "us_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "US Military Spouse", + "emoji": true + }, + "value": "us_military_spouse" + }, + { + "text": { + "type": "plain_text", + "text": "US Active Duty", + "emoji": true + }, + "value": "us_active_duty" + }, + { + "text": { + "type": "plain_text", + "text": "Non-Military", + "emoji": true + }, + "value": "non_military" + }, + { + "text": { + "type": "plain_text", + "text": "Foreign Military", + "emoji": true + }, + "value": "foreign_military" + } + ] + } + } + ], + "private_metadata": "", + "callback_id": "mentorship_request_form_submit", + "state": { + "values": { + "mentorship_service_input": { + "mentorship_service_selection": { + "type": "static_select", + "selected_option": { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + } + } + }, + "mentor_skillset_input": { + "mentorship_skillset_multi_selection": { + "type": "multi_static_select", + "selected_options": [ + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + } + ] + } + }, + "details_input_block": { + "details_text_input": { + "type": "plain_text_input", + "value": "Testing the details screen" + } + }, + "mentorship_affiliation_input": { + "mentorship_affiliation_selection": { + "type": "static_select", + "selected_option": { + "text": { + "type": "plain_text", + "text": "US Veteran", + "emoji": true + }, + "value": "us_veteran" + } + } + } + } + }, + "hash": "1640903702.u8C2NM3Y", + "title": { + "type": "plain_text", + "text": "OC Mentor Request", + "emoji": true + }, + "clear_on_close": false, + "notify_on_close": false, + "close": "None", + "submit": { + "type": "plain_text", + "text": "Submit Request", + "emoji": true + }, + "previous_view_id": "None", + "root_view_id": "V02S8ML6H8D", + "app_id": "A02R6C6S9JN", + "external_id": "mentorship_request_form_modal", + "app_installed_team_id": "T01SBLCQ57A", + "bot_id": "B02QRQ4KU5V" + }, + "response_urls": [], + "is_enterprise_install": false, + "enterprise": "None" +} \ No newline at end of file diff --git a/modules/utils/example_responses/view_open_response.json b/modules/utils/example_responses/view_open_response.json new file mode 100644 index 0000000..cd1dab6 --- /dev/null +++ b/modules/utils/example_responses/view_open_response.json @@ -0,0 +1,649 @@ +{ + "ok": true, + "view": { + "id": "V02S57SESLW", + "team_id": "T01SBLCQ57A", + "type": "modal", + "blocks": [ + { + "type": "section", + "block_id": "mentorship_request_main_text", + "text": { + "type": "mrkdwn", + "text": ":male-teacher: Mentor Request Form :female-teacher:\\n Thank you for signing up for a mentoring session. Please fill out the form below. If you have any questions, please don't hesitate to contact @mentor-coordinators. *NOTE*: Mentors are typically available within a couple hours; however, on weekends or holidays the timeframe may be longer before someone reaches out.", + "verbatim": false + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_1" + }, + { + "type": "input", + "block_id": "mentorship_service_input", + "label": { + "type": "plain_text", + "text": "Mentorship Service*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_service_selection", + "placeholder": { + "type": "plain_text", + "text": "Type of service...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "General Guidance", + "emoji": true + }, + "value": "general_guidance" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Review", + "emoji": true + }, + "value": "resume_review" + }, + { + "text": { + "type": "plain_text", + "text": "Career Guidance", + "emoji": true + }, + "value": "career_guidance" + } + ] + } + }, + { + "type": "input", + "block_id": "mentor_skillset_input", + "label": { + "type": "plain_text", + "text": "Skillsets Related to Your Request", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "multi_static_select", + "action_id": "mentorship_skillset_multi_selection", + "placeholder": { + "type": "plain_text", + "text": "Skills related to your request...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "Architecture", + "emoji": true + }, + "value": "architecture" + }, + { + "text": { + "type": "plain_text", + "text": "Bot Programming", + "emoji": true + }, + "value": "bot_programming" + }, + { + "text": { + "type": "plain_text", + "text": "C / C++", + "emoji": true + }, + "value": "c_c_plus_plus" + }, + { + "text": { + "type": "plain_text", + "text": "C# / .NET", + "emoji": true + }, + "value": "c_sharp_dotnet" + }, + { + "text": { + "type": "plain_text", + "text": "Cake", + "emoji": true + }, + "value": "cake" + }, + { + "text": { + "type": "plain_text", + "text": "Career Advice", + "emoji": true + }, + "value": "career_advice" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / Azure", + "emoji": true + }, + "value": "cloud_aws_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Cloud / AWS / GCP / Azure", + "emoji": true + }, + "value": "cloud_aws_gcp_azure" + }, + { + "text": { + "type": "plain_text", + "text": "Code Review", + "emoji": true + }, + "value": "code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Cyber-security", + "emoji": true + }, + "value": "cyber_security" + }, + { + "text": { + "type": "plain_text", + "text": "Cybersecurity", + "emoji": true + }, + "value": "cybersecurity" + }, + { + "text": { + "type": "plain_text", + "text": "Data Science", + "emoji": true + }, + "value": "data_science" + }, + { + "text": { + "type": "plain_text", + "text": "Design / UX", + "emoji": true + }, + "value": "design_ux" + }, + { + "text": { + "type": "plain_text", + "text": "DevOps", + "emoji": true + }, + "value": "devops" + }, + { + "text": { + "type": "plain_text", + "text": "Docker / Containers", + "emoji": true + }, + "value": "docker_containers" + }, + { + "text": { + "type": "plain_text", + "text": "Education Help", + "emoji": true + }, + "value": "education_help" + }, + { + "text": { + "type": "plain_text", + "text": "Entrepreneurship", + "emoji": true + }, + "value": "entrepreneurship" + }, + { + "text": { + "type": "plain_text", + "text": "Functional Programming", + "emoji": true + }, + "value": "functional_programming" + }, + { + "text": { + "type": "plain_text", + "text": "Funding", + "emoji": true + }, + "value": "funding" + }, + { + "text": { + "type": "plain_text", + "text": "General Architecture", + "emoji": true + }, + "value": "general_architecture" + }, + { + "text": { + "type": "plain_text", + "text": "General Code Review", + "emoji": true + }, + "value": "general_code_review" + }, + { + "text": { + "type": "plain_text", + "text": "Go", + "emoji": true + }, + "value": "go" + }, + { + "text": { + "type": "plain_text", + "text": "Introductory Coding", + "emoji": true + }, + "value": "introductory_coding" + }, + { + "text": { + "type": "plain_text", + "text": "Java", + "emoji": true + }, + "value": "java" + }, + { + "text": { + "type": "plain_text", + "text": "JavaScript", + "emoji": true + }, + "value": "javascript" + }, + { + "text": { + "type": "plain_text", + "text": "Job Search", + "emoji": true + }, + "value": "job_search" + }, + { + "text": { + "type": "plain_text", + "text": "Linux", + "emoji": true + }, + "value": "linux" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (Android)", + "emoji": true + }, + "value": "mobile_development_android" + }, + { + "text": { + "type": "plain_text", + "text": "Mobile Development (iOS)", + "emoji": true + }, + "value": "mobile_development_ios" + }, + { + "text": { + "type": "plain_text", + "text": "Mock Interview", + "emoji": true + }, + "value": "mock_interview" + }, + { + "text": { + "type": "plain_text", + "text": "Networking", + "emoji": true + }, + "value": "networking" + }, + { + "text": { + "type": "plain_text", + "text": "Open Source Contributing", + "emoji": true + }, + "value": "open_source_contributing" + }, + { + "text": { + "type": "plain_text", + "text": "Pair Programming", + "emoji": true + }, + "value": "pair_programming" + }, + { + "text": { + "type": "plain_text", + "text": "PHP", + "emoji": true + }, + "value": "php" + }, + { + "text": { + "type": "plain_text", + "text": "Product Management", + "emoji": true + }, + "value": "product_management" + }, + { + "text": { + "type": "plain_text", + "text": "Project Management", + "emoji": true + }, + "value": "project_management" + }, + { + "text": { + "type": "plain_text", + "text": "Prolog", + "emoji": true + }, + "value": "prolog" + }, + { + "text": { + "type": "plain_text", + "text": "Python", + "emoji": true + }, + "value": "python" + }, + { + "text": { + "type": "plain_text", + "text": "React", + "emoji": true + }, + "value": "react" + }, + { + "text": { + "type": "plain_text", + "text": "React / Angular / Vue", + "emoji": true + }, + "value": "react_angular_vue" + }, + { + "text": { + "type": "plain_text", + "text": "Remote Working", + "emoji": true + }, + "value": "remote_working" + }, + { + "text": { + "type": "plain_text", + "text": "Resume Reviews", + "emoji": true + }, + "value": "resume_reviews" + }, + { + "text": { + "type": "plain_text", + "text": "Ruby / Rails", + "emoji": true + }, + "value": "ruby_rails" + }, + { + "text": { + "type": "plain_text", + "text": "Rust", + "emoji": true + }, + "value": "rust" + }, + { + "text": { + "type": "plain_text", + "text": "Salesforce", + "emoji": true + }, + "value": "salesforce" + }, + { + "text": { + "type": "plain_text", + "text": "Scala", + "emoji": true + }, + "value": "scala" + }, + { + "text": { + "type": "plain_text", + "text": "SQL", + "emoji": true + }, + "value": "sql" + }, + { + "text": { + "type": "plain_text", + "text": "Study Help", + "emoji": true + }, + "value": "study_help" + }, + { + "text": { + "type": "plain_text", + "text": "Transition Assistance", + "emoji": true + }, + "value": "transition_assistance" + }, + { + "text": { + "type": "plain_text", + "text": "VA Benefits / Financial Aid", + "emoji": true + }, + "value": "va_benefits_financial_aid" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Back-end)", + "emoji": true + }, + "value": "web_development_back_end" + }, + { + "text": { + "type": "plain_text", + "text": "Web Development (Front-end)", + "emoji": true + }, + "value": "web_development_front_end" + }, + { + "text": { + "type": "plain_text", + "text": "Xamarin", + "emoji": true + }, + "value": "xamarin" + } + ] + } + }, + { + "type": "input", + "block_id": "details_input_block", + "label": { + "type": "plain_text", + "text": "Request Details*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "plain_text_input", + "action_id": "details_text_input", + "placeholder": { + "type": "plain_text", + "text": "Please enter more information about your request. The more specific you are the easier it is to match you with a great mentor!", + "emoji": true + }, + "multiline": true, + "min_length": 10, + "dispatch_action_config": { + "trigger_actions_on": [ + "on_enter_pressed" + ] + } + } + }, + { + "type": "divider", + "block_id": "mentorship_request_divider_2" + }, + { + "type": "input", + "block_id": "mentorship_affiliation_input", + "label": { + "type": "plain_text", + "text": "I certify that I am affiliated with one of the following groups:*", + "emoji": true + }, + "optional": false, + "dispatch_action": false, + "element": { + "type": "static_select", + "action_id": "mentorship_affiliation_selection", + "placeholder": { + "type": "plain_text", + "text": "Please select a group...", + "emoji": true + }, + "options": [ + { + "text": { + "type": "plain_text", + "text": "US Veteran", + "emoji": true + }, + "value": "us_veteran" + }, + { + "text": { + "type": "plain_text", + "text": "US Military Spouse", + "emoji": true + }, + "value": "us_military_spouse" + }, + { + "text": { + "type": "plain_text", + "text": "US Active Duty", + "emoji": true + }, + "value": "us_active_duty" + }, + { + "text": { + "type": "plain_text", + "text": "Non-Military", + "emoji": true + }, + "value": "non_military" + }, + { + "text": { + "type": "plain_text", + "text": "Foreign Military", + "emoji": true + }, + "value": "foreign_military" + } + ] + } + } + ], + "private_metadata": "", + "callback_id": "mentorship_request_form_submit", + "state": { + "values": {} + }, + "hash": "1640917120.htsuStxA", + "title": { + "type": "plain_text", + "text": "OC Mentor Request", + "emoji": true + }, + "clear_on_close": false, + "notify_on_close": false, + "close": "None", + "submit": { + "type": "plain_text", + "text": "Submit Request", + "emoji": true + }, + "previous_view_id": "None", + "root_view_id": "V02S57SESLW", + "app_id": "A02R6C6S9JN", + "external_id": "mentorship_request_form_modal", + "app_installed_team_id": "T01SBLCQ57A", + "bot_id": "B02QRQ4KU5V" + } +} diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py new file mode 100644 index 0000000..74ec17b --- /dev/null +++ b/modules/utils/message_scheduler.py @@ -0,0 +1,62 @@ +import logging +from datetime import datetime, timezone, timedelta +from slack_bolt.async_app import AsyncApp + +from modules.airtable.scheduled_message_table import ScheduledMessagesTable +from modules.slack.blocks.announcement_blocks import general_announcement_blocks +from modules.utils import slack_team + +logger = logging.getLogger(__name__) + + +async def schedule_messages(async_app: AsyncApp) -> None: + logging.info("STAGE: Beginning task schedule_messages...") + scheduled_message_table = ScheduledMessagesTable() + messages = scheduled_message_table.all_valid_scheduled_messages + logging.debug(f"Retrieved {len(messages)} total valid messages to be scheduled") + for message in messages: + # If the next send time is more than 119 days in the future, skip it as that's the limit for Slack + if message.when_to_send < message.when_to_send + timedelta(days=119): + # If the datetime in the table is in the past, schedule the message for now plus 2 minutes but update the + # table to have a datetime that is today with the same hour and minute as the first time to send + # This can be readjusted in the table if need be to get the correct next send time + if message.when_to_send < datetime.now(timezone.utc): + datetime_to_update = datetime( + datetime.utcnow().year, + datetime.utcnow().month, + datetime.utcnow().day, + message.initial_date_time_to_send.hour, + message.initial_date_time_to_send.minute, + tzinfo=timezone.utc, + ) + # Add on 120 seconds to the timestamp in order to not run into the "time in past" error + datetime_to_send_message = ( + int(datetime.now(timezone.utc).timestamp()) + 120 + ) + else: + datetime_to_send_message = int(message.when_to_send.timestamp()) + datetime_to_update = message.when_to_send + logging.debug( + f"Scheduling message with name: {message.name} to be sent at datetime: {str(datetime_to_send_message)}" + ) + response = await async_app.client.chat_scheduleMessage( + channel=slack_team.general_channel.id, + post_at=datetime_to_send_message, + text=f"Announcement in {message.channel}...", + blocks=general_announcement_blocks(message.name, message.message_text), + ) + if response.status_code == 200: + logging.debug( + f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" + ) + scheduled_message_table.update_record( + message.airtable_id, {"Last Sent": str(datetime_to_update)} + ) + else: + logger.warning( + f"Issue sending the scheduled message: {message.name}, scheduling failed with slack response: {response.__dict__}" + ) + else: + logging.warning( + f"Next send time for scheduled message: {message.name} is more than 119 days in the future" + ) diff --git a/modules/utils/one_off_scripts.py b/modules/utils/one_off_scripts.py new file mode 100644 index 0000000..cad5ef9 --- /dev/null +++ b/modules/utils/one_off_scripts.py @@ -0,0 +1,59 @@ +import sys +import os +import re +import json +from dotenv import load_dotenv +from modules.airtable import daily_programmer_table + + +load_dotenv() + + +def main(script_to_run: str) -> None: + if script_to_run == "process_daily_programmer_files": + process_daily_programmer_files(sys.argv[2]) + + +def process_daily_programmer_files(files_directory: str) -> None: + for filename in os.listdir(files_directory): + with open(files_directory + "/" + filename, "r") as file: + message_list = json.load(file) + for message in message_list: + if message["text"]: + print(f"Parsing a new message in file: {filename}") + title = re.search(r"(={2,3}.*={2,3})", message["text"]) + if title: + name = re.search(r"(\[.*?])", message["text"]) + if name: + try: + daily_programmer_table.create_record( + { + "Name": name[0] + .replace("[", "") + .replace("]", "") + .replace("*", ""), + "Text": message["text"][name.span()[1] + 1 :], + "Initially Posted On": filename.split(".")[0], + "Last Posted On": filename.split(".")[0], + "Posted Count": 1, + "Initial Slack TS": message["ts"], + "Blocks": message["blocks"], + } + ) + except KeyError: + daily_programmer_table.create_record( + { + "Name": name[0] + .replace("[", "") + .replace("]", ""), + "Text": message["text"][name.span()[1] + 1 :], + "Initially Posted On": filename.split(".")[0], + "Last Posted On": filename.split(".")[0], + "Posted Count": 1, + "Initial Slack TS": message["ts"], + } + ) + + +if __name__ == "__main__": + main(sys.argv[1]) diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 08eab77..0000000 --- a/poetry.lock +++ /dev/null @@ -1,1080 +0,0 @@ -[[package]] -name = "aiocontextvars" -version = "0.2.2" -description = "Asyncio support for PEP-567 contextvars backport." -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "aiofiles" -version = "0.4.0" -description = "File support for asyncio." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "aiohttp" -version = "3.6.2" -description = "Async http client/server framework (asyncio)" -category = "main" -optional = false -python-versions = ">=3.5.3" - -[package.dependencies] -async-timeout = ">=3.0,<4.0" -attrs = ">=17.3.0" -chardet = ">=2.0,<4.0" -multidict = ">=4.5,<5.0" -yarl = ">=1.0,<2.0" - -[package.extras] -speedups = ["aiodns", "brotlipy", "cchardet"] - -[[package]] -name = "appdirs" -version = "1.4.4" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "apscheduler" -version = "3.6.3" -description = "In-process task scheduler with Cron-like capabilities" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -pytz = "*" -six = ">=1.4.0" -tzlocal = ">=1.2" - -[package.extras] -asyncio = ["trollius"] -doc = ["sphinx", "sphinx-rtd-theme"] -gevent = ["gevent"] -mongodb = ["pymongo (>=2.8)"] -redis = ["redis (>=3.0)"] -rethinkdb = ["rethinkdb (>=2.4.0)"] -sqlalchemy = ["sqlalchemy (>=0.8)"] -testing = ["pytest", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] -tornado = ["tornado (>=4.3)"] -twisted = ["twisted"] -zookeeper = ["kazoo"] - -[[package]] -name = "async-timeout" -version = "3.0.1" -description = "Timeout context manager for asyncio programs" -category = "main" -optional = false -python-versions = ">=3.5.3" - -[[package]] -name = "asyncio-contextmanager" -version = "1.0.1" -description = "Decorator that turns async generator functions into async context managers." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "asyncpg" -version = "0.18.3" -description = "An asyncio PosgtreSQL driver" -category = "main" -optional = false -python-versions = ">=3.5.0" - -[package.extras] -dev = ["Cython (==0.29)", "pytest (>=3.6.0)", "Sphinx (>=1.7.3,<1.8.0)", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0)", "sphinx-rtd-theme (>=0.2.4,<0.3.0)", "flake8 (>=3.5.0,<3.6.0)", "uvloop (>=0.8.0)"] -docs = ["Sphinx (>=1.7.3,<1.8.0)", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0)", "sphinx-rtd-theme (>=0.2.4,<0.3.0)"] -test = ["flake8 (>=3.5.0,<3.6.0)", "uvloop (>=0.8.0)"] - -[[package]] -name = "asynctest" -version = "0.13.0" -description = "Enhance the standard unittest package with features for testing asyncio libraries" -category = "dev" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "atomicwrites" -version = "1.4.0" -description = "Atomic file writes." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "attrs" -version = "20.2.0" -description = "Classes Without Boilerplate" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] - -[[package]] -name = "black" -version = "20.8b1" -description = "The uncompromising code formatter." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -appdirs = "*" -click = ">=7.1.2" -mypy-extensions = ">=0.4.3" -pathspec = ">=0.6,<1" -regex = ">=2020.1.8" -toml = ">=0.10.1" -typed-ast = ">=1.4.0" -typing-extensions = ">=3.7.4" - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] - -[[package]] -name = "cchardet" -version = "2.1.6" -description = "cChardet is high speed universal character encoding detector." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "certifi" -version = "2020.6.20" -description = "Python package for providing Mozilla's CA Bundle." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "chardet" -version = "3.0.4" -description = "Universal encoding detector for Python 2 and 3" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "charset-normalizer" -version = "2.0.4" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "dev" -optional = false -python-versions = ">=3.5.0" - -[package.extras] -unicode_backport = ["unicodedata2"] - -[[package]] -name = "click" -version = "7.1.2" -description = "Composable command line interface toolkit" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "colorama" -version = "0.4.3" -description = "Cross-platform colored terminal text." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "cython" -version = "0.29.21" -description = "The Cython compiler for writing C extensions for the Python language." -category = "main" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "flake8" -version = "3.8.3" -description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" - -[package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.6.0a1,<2.7.0" -pyflakes = ">=2.2.0,<2.3.0" - -[[package]] -name = "gidgethub" -version = "3.3.0" -description = "An async GitHub API library" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -uritemplate = ">=3.0.0" - -[package.extras] -aiohttp = ["aiohttp"] -dev = ["aiohttp", "httpx", "mypy", "pytest-cov", "treq", "twisted", "tornado"] -doc = ["sphinx"] -httpx = ["httpx (>=0.11.0)"] -test = ["pytest (>=3.0.0)", "pytest-asyncio", "pytest-tornasync"] -tornado = ["tornado"] -treq = ["treq", "twisted"] - -[[package]] -name = "idna" -version = "2.10" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "importlib-metadata" -version = "2.0.0" -description = "Read metadata from Python packages" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["sphinx", "rst.linker"] -testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] - -[[package]] -name = "iniconfig" -version = "1.0.1" -description = "iniconfig: brain-dead simple config-ini parsing" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "isort" -version = "4.3.21" -description = "A Python utility / library to sort Python imports." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.extras] -pipfile = ["pipreqs", "requirementslib"] -pyproject = ["toml"] -requirements = ["pipreqs", "pip-api"] -xdg_home = ["appdirs (>=1.4.0)"] - -[[package]] -name = "mccabe" -version = "0.6.1" -description = "McCabe checker, plugin for flake8" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "multidict" -version = "4.7.6" -description = "multidict implementation" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "packaging" -version = "20.4" -description = "Core utilities for Python packages" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.dependencies] -pyparsing = ">=2.0.2" -six = "*" - -[[package]] -name = "pathspec" -version = "0.8.0" -description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "pluggy" -version = "0.13.1" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} - -[package.extras] -dev = ["pre-commit", "tox"] - -[[package]] -name = "py" -version = "1.9.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pycodestyle" -version = "2.6.0" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pyflakes" -version = "2.2.0" -description = "passive checker of Python programs" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pyparsing" -version = "2.4.7" -description = "Python parsing module" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "pytest" -version = "6.1.0" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=17.4.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<1.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -checkqa_mypy = ["mypy (==0.780)"] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-aiohttp" -version = "0.3.0" -description = "pytest plugin for aiohttp support" -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -aiohttp = ">=2.3.5" -pytest = "*" - -[[package]] -name = "pytest-asyncio" -version = "0.14.0" -description = "Pytest support for asyncio." -category = "dev" -optional = false -python-versions = ">= 3.5" - -[package.dependencies] -pytest = ">=5.4.0" - -[package.extras] -testing = ["async-generator (>=1.3)", "coverage", "hypothesis (>=5.7.1)"] - -[[package]] -name = "pytest-mock" -version = "3.3.1" -description = "Thin-wrapper around the mock package for easier use with pytest" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -pytest = ">=5.0" - -[package.extras] -dev = ["pre-commit", "tox", "pytest-asyncio"] - -[[package]] -name = "python-dotenv" -version = "0.14.0" -description = "Add .env support to your django/flask apps in development and deployments" -category = "main" -optional = false -python-versions = "*" - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "pytz" -version = "2020.1" -description = "World timezone definitions, modern and historical" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "pyyaml" -version = "5.4" -description = "YAML parser and emitter for Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" - -[[package]] -name = "regex" -version = "2020.9.27" -description = "Alternative regular expression module, to replace re." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "requests" -version = "2.26.0" -description = "Python HTTP for Humans." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} -urllib3 = ">=1.21.1,<1.27" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] - -[[package]] -name = "sentry-sdk" -version = "0.17.8" -description = "Python client for Sentry (https://sentry.io)" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -certifi = "*" -urllib3 = ">=1.10.0" - -[package.extras] -aiohttp = ["aiohttp (>=3.5)"] -beam = ["apache-beam (>=2.12)"] -bottle = ["bottle (>=0.12.13)"] -celery = ["celery (>=3)"] -chalice = ["chalice (>=1.16.0)"] -django = ["django (>=1.8)"] -falcon = ["falcon (>=1.4)"] -flask = ["flask (>=0.11)", "blinker (>=1.1)"] -pure_eval = ["pure-eval", "executing", "asttokens"] -pyspark = ["pyspark (>=2.4.4)"] -rq = ["rq (>=0.6)"] -sanic = ["sanic (>=0.8)"] -sqlalchemy = ["sqlalchemy (>=1.2)"] -tornado = ["tornado (>=5)"] - -[[package]] -name = "sirbot" -version = "0.1.1" -description = "The good Sir Bot-a-lot. An asynchronous python bot framework." -category = "main" -optional = false -python-versions = ">=3.6,<4.0" - -[package.dependencies] -aiofiles = ">=0.4.0,<0.5.0" -aiohttp = ">=3.4,<4.0" -apscheduler = ">=3.5,<4.0" -asyncio-contextmanager = ">=1.0,<2.0" -asyncpg = ">=0.18.2,<0.19.0" -gidgethub = ">=3.0,<4.0" -slack-sansio = ">=1.0.0,<2.0.0" -ujson = ">=1.35,<2.0" - -[[package]] -name = "six" -version = "1.15.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "slack-sansio" -version = "1.1.0" -description = "Python (a)sync Slack API library" -category = "main" -optional = false -python-versions = ">=3.6,<4.0" - -[package.extras] -requests = ["requests (>=2.20,<3.0)", "websocket-client (>=0.54.0,<0.55.0)"] -aiohttp = ["aiohttp (>=3.4,<4.0)"] -curio = ["curio (>=0.9.0,<0.10.0)", "asks (>=2.2,<3.0)"] -trio = ["asks (>=2.2,<3.0)", "trio (>=0.11.0,<0.12.0)"] - -[[package]] -name = "toml" -version = "0.10.1" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "typed-ast" -version = "1.4.1" -description = "a fork of Python 2 and 3 ast modules with type comment support" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "typing-extensions" -version = "3.7.4.3" -description = "Backported and Experimental Type Hints for Python 3.5+" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "tzlocal" -version = "2.1" -description = "tzinfo object for the local timezone" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -pytz = "*" - -[[package]] -name = "ujson" -version = "1.35" -description = "Ultra fast JSON encoder and decoder for Python" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "uritemplate" -version = "3.0.1" -description = "URI templates" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "urllib3" -version = "1.25.10" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" - -[package.extras] -brotli = ["brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "yarl" -version = "1.6.0" -description = "Yet another URL library" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" -typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} - -[[package]] -name = "zipcodes" -version = "1.1.3" -description = "Query U.S. state zipcodes without SQLite." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "zipp" -version = "3.2.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] - -[metadata] -lock-version = "1.1" -python-versions = "^3.7" -content-hash = "7b09b6420eed2f1c0f3f1f427ada7cf35fc087e92ffa187b562cb4771a1c0b92" - -[metadata.files] -aiocontextvars = [ - {file = "aiocontextvars-0.2.2-py2.py3-none-any.whl", hash = "sha256:885daf8261818767d8f7cbd79f9d4482d118f024b6586ef6e67980236a27bfa3"}, - {file = "aiocontextvars-0.2.2.tar.gz", hash = "sha256:f027372dc48641f683c559f247bd84962becaacdc9ba711d583c3871fb5652aa"}, -] -aiofiles = [ - {file = "aiofiles-0.4.0-py3-none-any.whl", hash = "sha256:1e644c2573f953664368de28d2aa4c89dfd64550429d0c27c4680ccd3aa4985d"}, - {file = "aiofiles-0.4.0.tar.gz", hash = "sha256:021ea0ba314a86027c166ecc4b4c07f2d40fc0f4b3a950d1868a0f2571c2bbee"}, -] -aiohttp = [ - {file = "aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:1e984191d1ec186881ffaed4581092ba04f7c61582a177b187d3a2f07ed9719e"}, - {file = "aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:50aaad128e6ac62e7bf7bd1f0c0a24bc968a0c0590a726d5a955af193544bcec"}, - {file = "aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:65f31b622af739a802ca6fd1a3076fd0ae523f8485c52924a89561ba10c49b48"}, - {file = "aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ae55bac364c405caa23a4f2d6cfecc6a0daada500274ffca4a9230e7129eac59"}, - {file = "aiohttp-3.6.2-cp36-cp36m-win32.whl", hash = "sha256:344c780466b73095a72c616fac5ea9c4665add7fc129f285fbdbca3cccf4612a"}, - {file = "aiohttp-3.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4c6efd824d44ae697814a2a85604d8e992b875462c6655da161ff18fd4f29f17"}, - {file = "aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:2f4d1a4fdce595c947162333353d4a44952a724fba9ca3205a3df99a33d1307a"}, - {file = "aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6206a135d072f88da3e71cc501c59d5abffa9d0bb43269a6dcd28d66bfafdbdd"}, - {file = "aiohttp-3.6.2-cp37-cp37m-win32.whl", hash = "sha256:b778ce0c909a2653741cb4b1ac7015b5c130ab9c897611df43ae6a58523cb965"}, - {file = "aiohttp-3.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e5f3b7e511aa850829fbe5aa32eb455e5534eaa4b1ce93231d00e2f76e5654"}, - {file = "aiohttp-3.6.2-py3-none-any.whl", hash = "sha256:460bd4237d2dbecc3b5ed57e122992f60188afe46e7319116da5eb8a9dfedba4"}, - {file = "aiohttp-3.6.2.tar.gz", hash = "sha256:259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326"}, -] -appdirs = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, -] -apscheduler = [ - {file = "APScheduler-3.6.3-py2.py3-none-any.whl", hash = "sha256:e8b1ecdb4c7cb2818913f766d5898183c7cb8936680710a4d3a966e02262e526"}, - {file = "APScheduler-3.6.3.tar.gz", hash = "sha256:3bb5229eed6fbbdafc13ce962712ae66e175aa214c69bed35a06bffcf0c5e244"}, -] -async-timeout = [ - {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"}, - {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"}, -] -asyncio-contextmanager = [ - {file = "asyncio-contextmanager-1.0.1.tar.gz", hash = "sha256:93b4620cd79623c3988c9f43e6f502263968645cd13aed3327a7ec8be43221d5"}, -] -asyncpg = [ - {file = "asyncpg-0.18.3-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:814343dc2baa489a11521ff9fad68f337a05c9ae0461fdf9f1ec7ac3541c13a9"}, - {file = "asyncpg-0.18.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:89e727fdba05d90a0156d9d18932fd44a2baa84e90e3368573f432a308ad8fd7"}, - {file = "asyncpg-0.18.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:84084f7dfed0b2d397a0c2fd7eaf29b01904c74f4320e5fe95ad3042042cf188"}, - {file = "asyncpg-0.18.3-cp35-cp35m-win32.whl", hash = "sha256:378a7ef11ce7b35f11eb816e5252bc1e779119f7583a872233b45a76effac02e"}, - {file = "asyncpg-0.18.3-cp35-cp35m-win_amd64.whl", hash = "sha256:fd2d13da29f55c2c71b1acc9d9f107c7a5176fffb3f62ff503f2b300f7ecd74e"}, - {file = "asyncpg-0.18.3-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:51a3d67a3fa43112b17ec510338723932e1e0611ad99a146acc9960d32210196"}, - {file = "asyncpg-0.18.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:4539bc2e63600a1ee999086bbb59bf717ab32ea771ac20b5b792a2234633b5fb"}, - {file = "asyncpg-0.18.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4a779a85302241782bed8ed0f2bcb38544805b3e107b16ee7489c5818d8f4228"}, - {file = "asyncpg-0.18.3-cp36-cp36m-win32.whl", hash = "sha256:c1fe1f0ef848f0f17bf63b90a4c3f446a14e4c899d8531ea988109cc0de014e5"}, - {file = "asyncpg-0.18.3-cp36-cp36m-win_amd64.whl", hash = "sha256:cc7aa61bf41273ee5d4c11e0e72c0d9340e9c4dbf752464ae2b6816abadaabce"}, - {file = "asyncpg-0.18.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:ab8b9d367e3ef48f35a059642940714a2bda7a7fce8b017b21bfbc4f8fbf8f5f"}, - {file = "asyncpg-0.18.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:d5450bdf8631fa1200c08a2e70cab06c2e8c09ef608629908531513444d12858"}, - {file = "asyncpg-0.18.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0677714b26b48d63db728867b812ef365ec3879d2be6fa1c9cf4328503f9a464"}, - {file = "asyncpg-0.18.3-cp37-cp37m-win32.whl", hash = "sha256:fd35a8082b97d5b97d26bcd1b010fdd65a56311d7a02bf2a7e2c56810b9961a7"}, - {file = "asyncpg-0.18.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2dee4fb251139f1c1ee4bd9959d516f930f4da37a2f33b07c2b902b837a76666"}, - {file = "asyncpg-0.18.3.tar.gz", hash = "sha256:58a5eccaac60fd326e32683226efe1046bfea558fa043360bdd1708e0e812c67"}, -] -asynctest = [ - {file = "asynctest-0.13.0-py3-none-any.whl", hash = "sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676"}, - {file = "asynctest-0.13.0.tar.gz", hash = "sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] -attrs = [ - {file = "attrs-20.2.0-py2.py3-none-any.whl", hash = "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"}, - {file = "attrs-20.2.0.tar.gz", hash = "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594"}, -] -black = [ - {file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"}, -] -cchardet = [ - {file = "cchardet-2.1.6-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:2aa1b008965c703ad6597361b0f6d427c8971fe94a2c99ec3724c228ae50d6a6"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:fd16f57ce42a72397cd9fe38977fc809eb02172731cb354572f28a6d8e4cf322"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:953fe382304b19f5aa8fc2da4b092a3bb58a477d33af4def4b81abdce4c9288c"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:ccb9f6f06265382028468b47e726f2d42539256fb498d1b0e473c39037b42b8a"}, - {file = "cchardet-2.1.6-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:2c05b66b12f9ab0493c5ffb666036fd8c9004a9cc9d5a9264dc24738b50ab8c3"}, - {file = "cchardet-2.1.6-cp35-cp35m-win32.whl", hash = "sha256:dff9480d9b6260f59ad10e1cec5be13905be5da88a4a2bd5a5bd4d49c49c4a05"}, - {file = "cchardet-2.1.6-cp35-cp35m-win_amd64.whl", hash = "sha256:84d2ce838cf3c2fe7f0517941702d42f7e598e5173632ec47a113cd521669b98"}, - {file = "cchardet-2.1.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4486f6e5bdf06f0081d13832f2a061d9e90597eb02093fda9d37e3985e3b2ef2"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7a2d98df461d3f36b403fdd8d7890c823ed05bd98eb074412ed56fbfedb94751"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:27b0f23088873d1dd36d2c8a2e45c9167e312e1aac7e4baeb47f7428a2669638"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:cf134e1cfb0c53f08abb1ab9158a7e7f859c3ddb451d5fe535a2cc5f2958a688"}, - {file = "cchardet-2.1.6-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:f5c94994d876d8709847c3a92643309d716f43716580a2e5831262366a9ee8b6"}, - {file = "cchardet-2.1.6-cp36-cp36m-win32.whl", hash = "sha256:217a7008bd399bdb61f6a0a2570acc5c3a9f96140e0a0d089b9e748c4d4e4c4e"}, - {file = "cchardet-2.1.6-cp36-cp36m-win_amd64.whl", hash = "sha256:2a958fb093f69ee5f16be7a1aee5122e07aff4350fa4dc9b953b87c34468e605"}, - {file = "cchardet-2.1.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4096759825a130cb27a58ddf6d58e10abdd0127d29fbf53fde26df7ad879737b"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:7bba1cbb4358dc9a2d2da00f4b38b159a5483d2f3b1d698a7c2cae518f955170"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0f6e4e464e332da776b9c1a34e4e83b6301d38c2724efc93848c46ade66d02bb"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:acc96b4a8f756af289fa90ffa67ddef57401d99131e51e71872e3609483941ce"}, - {file = "cchardet-2.1.6-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:79b0e113144c2ef0050bc9fe647c7657c5298f3012ecd8937d930b24ddd61404"}, - {file = "cchardet-2.1.6-cp37-cp37m-win32.whl", hash = "sha256:8b1d02c99f6444c63336a76638741eaf4ac4005b454e3b8252a40074bf0d84a1"}, - {file = "cchardet-2.1.6-cp37-cp37m-win_amd64.whl", hash = "sha256:e27771798c8ad50df1375e762d59369354af94eb8ac21eca5bfd1eeef589f545"}, - {file = "cchardet-2.1.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68409e00d75ff13dd7a192ec49559f5527ee8959a51a9f4dd7b168df972b4d44"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:40c199f9c0569ac479fae7c4e12d2e16fc1e8237836b928474fdd228b8d11477"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8f7ade2578b2326a0a554c03f60c8d079331220179a592e83e143c9556b7f5b2"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:5e38cfad9d3ca0f571c4352e9ca0f5ab718508f492a37d3236ae70810140e250"}, - {file = "cchardet-2.1.6-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:af284494ea6c40f9613b4d939abe585eb9290cb92037eab66122c93190fcb338"}, - {file = "cchardet-2.1.6-cp38-cp38-win32.whl", hash = "sha256:54d2653520237ebbd2928f2c0f2eb7c616ee2b5194d73d945060cd54a7846b64"}, - {file = "cchardet-2.1.6-cp38-cp38-win_amd64.whl", hash = "sha256:f245f045054e8d6dab2a0e366d3c74f3a47fb7dec2595ae2035b234b1a829c7a"}, - {file = "cchardet-2.1.6.tar.gz", hash = "sha256:b76afb2059ad69eab576949980a17413c1e9e5a5624abf9e43542d8853f146b3"}, -] -certifi = [ - {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, - {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, -] -chardet = [ - {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, - {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.0.4.tar.gz", hash = "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"}, - {file = "charset_normalizer-2.0.4-py3-none-any.whl", hash = "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b"}, -] -click = [ - {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, - {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, -] -colorama = [ - {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, - {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, -] -cython = [ - {file = "Cython-0.29.21-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c541b2b49c6638f2b5beb9316726db84a8d1c132bf31b942dae1f9c7f6ad3b92"}, - {file = "Cython-0.29.21-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b8d8497091c1dc8705d1575c71e908a93b1f127a174b2d472020f3d84263ac28"}, - {file = "Cython-0.29.21-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:695a6bcaf9e12b1e471dfce96bbecf22a1487adc2ac6106b15960a2b51b97f5d"}, - {file = "Cython-0.29.21-cp27-cp27m-win32.whl", hash = "sha256:171b9f70ceafcec5852089d0f9c1e75b0d554f46c882cd4e2e4acaba9bd7d148"}, - {file = "Cython-0.29.21-cp27-cp27m-win_amd64.whl", hash = "sha256:539e59949aab4955c143a468810123bf22d3e8556421e1ce2531ed4893914ca0"}, - {file = "Cython-0.29.21-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:e93acd1f603a0c1786e0841f066ae7cef014cf4750e3cd06fd03cfdf46361419"}, - {file = "Cython-0.29.21-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:2922e3031ba9ebbe7cb9200b585cc33b71d66023d78450dcb883f824f4969371"}, - {file = "Cython-0.29.21-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:497841897942f734b0abc2dead2d4009795ee992267a70a23485fd0e937edc0b"}, - {file = "Cython-0.29.21-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:0ac10bf476476a9f7ef61ec6e44c280ef434473124ad31d3132b720f7b0e8d2a"}, - {file = "Cython-0.29.21-cp34-cp34m-win32.whl", hash = "sha256:31c71a615f38401b0dc1f2a5a9a6c421ffd8908c4cd5bbedc4014c1b876488e8"}, - {file = "Cython-0.29.21-cp34-cp34m-win_amd64.whl", hash = "sha256:c4b78356074fcaac04ecb4de289f11d506e438859877670992ece11f9c90f37b"}, - {file = "Cython-0.29.21-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:b2f9172e4d6358f33ecce6a4339b5960f9f83eab67ea244baa812737793826b7"}, - {file = "Cython-0.29.21-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:856c7fb31d247ce713d60116375e1f8153d0291ab5e92cca7d8833a524ba9991"}, - {file = "Cython-0.29.21-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:715294cd2246b39a8edca464a8366eb635f17213e4a6b9e74e52d8b877a8cb63"}, - {file = "Cython-0.29.21-cp35-cp35m-win32.whl", hash = "sha256:23f3a00b843a19de8bb4468b087db5b413a903213f67188729782488d67040e0"}, - {file = "Cython-0.29.21-cp35-cp35m-win_amd64.whl", hash = "sha256:ccb77faeaad99e99c6c444d04862c6cf604204fe0a07d4c8f9cbf2c9012d7d5a"}, - {file = "Cython-0.29.21-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e272ed97d20b026f4f25a012b25d7d7672a60e4f72b9ca385239d693cd91b2d5"}, - {file = "Cython-0.29.21-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:8c6e25e9cc4961bb2abb1777c6fa9d0fa2d9b014beb3276cebe69996ff162b78"}, - {file = "Cython-0.29.21-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:57ead89128dee9609119c93d3926c7a2add451453063147900408a50144598c6"}, - {file = "Cython-0.29.21-cp36-cp36m-win32.whl", hash = "sha256:0e25c209c75df8785480dcef85db3d36c165dbc0f4c503168e8763eb735704f2"}, - {file = "Cython-0.29.21-cp36-cp36m-win_amd64.whl", hash = "sha256:a0674f246ad5e1571ef29d4c5ec1d6ecabe9e6c424ad0d6fee46b914d5d24d69"}, - {file = "Cython-0.29.21-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5da187bebe38030325e1c0b5b8a804d489410be2d384c0ef3ba39493c67eb51e"}, - {file = "Cython-0.29.21-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:9ce5e5209f8406ffc2b058b1293cce7a954911bb7991e623564d489197c9ba30"}, - {file = "Cython-0.29.21-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5e545a48f919e40079b0efe7b0e081c74b96f9ef25b9c1ff4cdbd95764426b58"}, - {file = "Cython-0.29.21-cp37-cp37m-win32.whl", hash = "sha256:c8435959321cf8aec867bbad54b83b7fb8343204b530d85d9ea7a1f5329d5ac2"}, - {file = "Cython-0.29.21-cp37-cp37m-win_amd64.whl", hash = "sha256:540b3bee0711aac2e99bda4fa0a46dbcd8c74941666bfc1ef9236b1a64eeffd9"}, - {file = "Cython-0.29.21-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:93f5fed1c9445fb7afe20450cdaf94b0e0356d47cc75008105be89c6a2e417b1"}, - {file = "Cython-0.29.21-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9207fdedc7e789a3dcaca628176b80c82fbed9ae0997210738cbb12536a56699"}, - {file = "Cython-0.29.21-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:603b9f1b8e93e8b494d3e89320c410679e21018e48b6cbc77280f5db71f17dc0"}, - {file = "Cython-0.29.21-cp38-cp38-win32.whl", hash = "sha256:473df5d5e400444a36ed81c6596f56a5b52a3481312d0a48d68b777790f730ae"}, - {file = "Cython-0.29.21-cp38-cp38-win_amd64.whl", hash = "sha256:b8a8a31b9e8860634adbca30fea1d0c7f08e208b3d7611f3e580e5f20992e5d7"}, - {file = "Cython-0.29.21-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7ebaa8800c376bcdae596fb1372cb4232a5ef957619d35839520d2786f2debb9"}, - {file = "Cython-0.29.21-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:c111ac9abdf715762e4fb87395e59d61c0fbb6ce79eb2e24167700b6cfa8ba79"}, - {file = "Cython-0.29.21-py2.py3-none-any.whl", hash = "sha256:5c4276fdcbccdf1e3c1756c7aeb8395e9a36874fa4d30860e7694f43d325ae13"}, - {file = "Cython-0.29.21.tar.gz", hash = "sha256:e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad"}, -] -flake8 = [ - {file = "flake8-3.8.3-py2.py3-none-any.whl", hash = "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c"}, - {file = "flake8-3.8.3.tar.gz", hash = "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"}, -] -gidgethub = [ - {file = "gidgethub-3.3.0-py3-none-any.whl", hash = "sha256:4a456758a5fc8bfd581f297df90f2d09efbb830ccd209b1ceba4723705607d70"}, - {file = "gidgethub-3.3.0.tar.gz", hash = "sha256:3692d2df48a23c87ec4a5e74053ce343bc59cea7c34488a9136754a35aeb177a"}, -] -idna = [ - {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, - {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, -] -importlib-metadata = [ - {file = "importlib_metadata-2.0.0-py2.py3-none-any.whl", hash = "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3"}, - {file = "importlib_metadata-2.0.0.tar.gz", hash = "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"}, -] -iniconfig = [ - {file = "iniconfig-1.0.1-py3-none-any.whl", hash = "sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437"}, - {file = "iniconfig-1.0.1.tar.gz", hash = "sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69"}, -] -isort = [ - {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"}, - {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"}, -] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -multidict = [ - {file = "multidict-4.7.6-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:275ca32383bc5d1894b6975bb4ca6a7ff16ab76fa622967625baeebcf8079000"}, - {file = "multidict-4.7.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:1ece5a3369835c20ed57adadc663400b5525904e53bae59ec854a5d36b39b21a"}, - {file = "multidict-4.7.6-cp35-cp35m-win32.whl", hash = "sha256:5141c13374e6b25fe6bf092052ab55c0c03d21bd66c94a0e3ae371d3e4d865a5"}, - {file = "multidict-4.7.6-cp35-cp35m-win_amd64.whl", hash = "sha256:9456e90649005ad40558f4cf51dbb842e32807df75146c6d940b6f5abb4a78f3"}, - {file = "multidict-4.7.6-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:e0d072ae0f2a179c375f67e3da300b47e1a83293c554450b29c900e50afaae87"}, - {file = "multidict-4.7.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3750f2205b800aac4bb03b5ae48025a64e474d2c6cc79547988ba1d4122a09e2"}, - {file = "multidict-4.7.6-cp36-cp36m-win32.whl", hash = "sha256:f07acae137b71af3bb548bd8da720956a3bc9f9a0b87733e0899226a2317aeb7"}, - {file = "multidict-4.7.6-cp36-cp36m-win_amd64.whl", hash = "sha256:6513728873f4326999429a8b00fc7ceddb2509b01d5fd3f3be7881a257b8d463"}, - {file = "multidict-4.7.6-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:feed85993dbdb1dbc29102f50bca65bdc68f2c0c8d352468c25b54874f23c39d"}, - {file = "multidict-4.7.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fcfbb44c59af3f8ea984de67ec7c306f618a3ec771c2843804069917a8f2e255"}, - {file = "multidict-4.7.6-cp37-cp37m-win32.whl", hash = "sha256:4538273208e7294b2659b1602490f4ed3ab1c8cf9dbdd817e0e9db8e64be2507"}, - {file = "multidict-4.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:d14842362ed4cf63751648e7672f7174c9818459d169231d03c56e84daf90b7c"}, - {file = "multidict-4.7.6-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:c026fe9a05130e44157b98fea3ab12969e5b60691a276150db9eda71710cd10b"}, - {file = "multidict-4.7.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:51a4d210404ac61d32dada00a50ea7ba412e6ea945bbe992e4d7a595276d2ec7"}, - {file = "multidict-4.7.6-cp38-cp38-win32.whl", hash = "sha256:5cf311a0f5ef80fe73e4f4c0f0998ec08f954a6ec72b746f3c179e37de1d210d"}, - {file = "multidict-4.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:7388d2ef3c55a8ba80da62ecfafa06a1c097c18032a501ffd4cabbc52d7f2b19"}, - {file = "multidict-4.7.6.tar.gz", hash = "sha256:fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430"}, -] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] -packaging = [ - {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, - {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, -] -pathspec = [ - {file = "pathspec-0.8.0-py2.py3-none-any.whl", hash = "sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0"}, - {file = "pathspec-0.8.0.tar.gz", hash = "sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061"}, -] -pluggy = [ - {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, - {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, -] -py = [ - {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, - {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, -] -pycodestyle = [ - {file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"}, - {file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"}, -] -pyflakes = [ - {file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"}, - {file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"}, -] -pyparsing = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, -] -pytest = [ - {file = "pytest-6.1.0-py3-none-any.whl", hash = "sha256:1cd09785c0a50f9af72220dd12aa78cfa49cbffc356c61eab009ca189e018a33"}, - {file = "pytest-6.1.0.tar.gz", hash = "sha256:d010e24666435b39a4cf48740b039885642b6c273a3f77be3e7e03554d2806b7"}, -] -pytest-aiohttp = [ - {file = "pytest-aiohttp-0.3.0.tar.gz", hash = "sha256:c929854339637977375838703b62fef63528598bc0a9d451639eba95f4aaa44f"}, - {file = "pytest_aiohttp-0.3.0-py3-none-any.whl", hash = "sha256:0b9b660b146a65e1313e2083d0d2e1f63047797354af9a28d6b7c9f0726fa33d"}, -] -pytest-asyncio = [ - {file = "pytest-asyncio-0.14.0.tar.gz", hash = "sha256:9882c0c6b24429449f5f969a5158b528f39bde47dc32e85b9f0403965017e700"}, - {file = "pytest_asyncio-0.14.0-py3-none-any.whl", hash = "sha256:2eae1e34f6c68fc0a9dc12d4bea190483843ff4708d24277c41568d6b6044f1d"}, -] -pytest-mock = [ - {file = "pytest-mock-3.3.1.tar.gz", hash = "sha256:a4d6d37329e4a893e77d9ffa89e838dd2b45d5dc099984cf03c703ac8411bb82"}, - {file = "pytest_mock-3.3.1-py3-none-any.whl", hash = "sha256:024e405ad382646318c4281948aadf6fe1135632bea9cc67366ea0c4098ef5f2"}, -] -python-dotenv = [ - {file = "python-dotenv-0.14.0.tar.gz", hash = "sha256:8c10c99a1b25d9a68058a1ad6f90381a62ba68230ca93966882a4dbc3bc9c33d"}, - {file = "python_dotenv-0.14.0-py2.py3-none-any.whl", hash = "sha256:c10863aee750ad720f4f43436565e4c1698798d763b63234fb5021b6c616e423"}, -] -pytz = [ - {file = "pytz-2020.1-py2.py3-none-any.whl", hash = "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed"}, - {file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"}, -] -pyyaml = [ - {file = "PyYAML-5.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f7a21e3d99aa3095ef0553e7ceba36fb693998fbb1226f1392ce33681047465f"}, - {file = "PyYAML-5.4-cp27-cp27m-win32.whl", hash = "sha256:52bf0930903818e600ae6c2901f748bc4869c0c406056f679ab9614e5d21a166"}, - {file = "PyYAML-5.4-cp27-cp27m-win_amd64.whl", hash = "sha256:a36a48a51e5471513a5aea920cdad84cbd56d70a5057cca3499a637496ea379c"}, - {file = "PyYAML-5.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:5e7ac4e0e79a53451dc2814f6876c2fa6f71452de1498bbe29c0b54b69a986f4"}, - {file = "PyYAML-5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc552b6434b90d9dbed6a4f13339625dc466fd82597119897e9489c953acbc22"}, - {file = "PyYAML-5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0dc9f2eb2e3c97640928dec63fd8dc1dd91e6b6ed236bd5ac00332b99b5c2ff9"}, - {file = "PyYAML-5.4-cp36-cp36m-win32.whl", hash = "sha256:5a3f345acff76cad4aa9cb171ee76c590f37394186325d53d1aa25318b0d4a09"}, - {file = "PyYAML-5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:f3790156c606299ff499ec44db422f66f05a7363b39eb9d5b064f17bd7d7c47b"}, - {file = "PyYAML-5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:124fd7c7bc1e95b1eafc60825f2daf67c73ce7b33f1194731240d24b0d1bf628"}, - {file = "PyYAML-5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8b818b6c5a920cbe4203b5a6b14256f0e5244338244560da89b7b0f1313ea4b6"}, - {file = "PyYAML-5.4-cp37-cp37m-win32.whl", hash = "sha256:737bd70e454a284d456aa1fa71a0b429dd527bcbf52c5c33f7c8eee81ac16b89"}, - {file = "PyYAML-5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:7242790ab6c20316b8e7bb545be48d7ed36e26bbe279fd56f2c4a12510e60b4b"}, - {file = "PyYAML-5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cc547d3ead3754712223abb7b403f0a184e4c3eae18c9bb7fd15adef1597cc4b"}, - {file = "PyYAML-5.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8635d53223b1f561b081ff4adecb828fd484b8efffe542edcfdff471997f7c39"}, - {file = "PyYAML-5.4-cp38-cp38-win32.whl", hash = "sha256:26fcb33776857f4072601502d93e1a619f166c9c00befb52826e7b774efaa9db"}, - {file = "PyYAML-5.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2243dd033fd02c01212ad5c601dafb44fbb293065f430b0d3dbf03f3254d615"}, - {file = "PyYAML-5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:31ba07c54ef4a897758563e3a0fcc60077698df10180abe4b8165d9895c00ebf"}, - {file = "PyYAML-5.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:02c78d77281d8f8d07a255e57abdbf43b02257f59f50cc6b636937d68efa5dd0"}, - {file = "PyYAML-5.4-cp39-cp39-win32.whl", hash = "sha256:fdc6b2cb4b19e431994f25a9160695cc59a4e861710cc6fc97161c5e845fc579"}, - {file = "PyYAML-5.4-cp39-cp39-win_amd64.whl", hash = "sha256:8bf38641b4713d77da19e91f8b5296b832e4db87338d6aeffe422d42f1ca896d"}, - {file = "PyYAML-5.4.tar.gz", hash = "sha256:3c49e39ac034fd64fd576d63bb4db53cda89b362768a67f07749d55f128ac18a"}, -] -regex = [ - {file = "regex-2020.9.27-cp27-cp27m-win32.whl", hash = "sha256:d23a18037313714fb3bb5a94434d3151ee4300bae631894b1ac08111abeaa4a3"}, - {file = "regex-2020.9.27-cp27-cp27m-win_amd64.whl", hash = "sha256:84e9407db1b2eb368b7ecc283121b5e592c9aaedbe8c78b1a2f1102eb2e21d19"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5f18875ac23d9aa2f060838e8b79093e8bb2313dbaaa9f54c6d8e52a5df097be"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ae91972f8ac958039920ef6e8769277c084971a142ce2b660691793ae44aae6b"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:9a02d0ae31d35e1ec12a4ea4d4cca990800f66a917d0fb997b20fbc13f5321fc"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ebbe29186a3d9b0c591e71b7393f1ae08c83cb2d8e517d2a822b8f7ec99dfd8b"}, - {file = "regex-2020.9.27-cp36-cp36m-win32.whl", hash = "sha256:4707f3695b34335afdfb09be3802c87fa0bc27030471dbc082f815f23688bc63"}, - {file = "regex-2020.9.27-cp36-cp36m-win_amd64.whl", hash = "sha256:9bc13e0d20b97ffb07821aa3e113f9998e84994fe4d159ffa3d3a9d1b805043b"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f1b3afc574a3db3b25c89161059d857bd4909a1269b0b3cb3c904677c8c4a3f7"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5533a959a1748a5c042a6da71fe9267a908e21eded7a4f373efd23a2cbdb0ecc"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:1fe0a41437bbd06063aa184c34804efa886bcc128222e9916310c92cd54c3b4c"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:c570f6fa14b9c4c8a4924aaad354652366577b4f98213cf76305067144f7b100"}, - {file = "regex-2020.9.27-cp37-cp37m-win32.whl", hash = "sha256:eda4771e0ace7f67f58bc5b560e27fb20f32a148cbc993b0c3835970935c2707"}, - {file = "regex-2020.9.27-cp37-cp37m-win_amd64.whl", hash = "sha256:60b0e9e6dc45683e569ec37c55ac20c582973841927a85f2d8a7d20ee80216ab"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux1_i686.whl", hash = "sha256:088afc8c63e7bd187a3c70a94b9e50ab3f17e1d3f52a32750b5b77dbe99ef5ef"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eaf548d117b6737df379fdd53bdde4f08870e66d7ea653e230477f071f861121"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:41bb65f54bba392643557e617316d0d899ed5b4946dccee1cb6696152b29844b"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:8d69cef61fa50c8133382e61fd97439de1ae623fe943578e477e76a9d9471637"}, - {file = "regex-2020.9.27-cp38-cp38-win32.whl", hash = "sha256:f2388013e68e750eaa16ccbea62d4130180c26abb1d8e5d584b9baf69672b30f"}, - {file = "regex-2020.9.27-cp38-cp38-win_amd64.whl", hash = "sha256:4318d56bccfe7d43e5addb272406ade7a2274da4b70eb15922a071c58ab0108c"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux1_i686.whl", hash = "sha256:84cada8effefe9a9f53f9b0d2ba9b7b6f5edf8d2155f9fdbe34616e06ececf81"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:816064fc915796ea1f26966163f6845de5af78923dfcecf6551e095f00983650"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:5d892a4f1c999834eaa3c32bc9e8b976c5825116cde553928c4c8e7e48ebda67"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c9443124c67b1515e4fe0bb0aa18df640965e1030f468a2a5dc2589b26d130ad"}, - {file = "regex-2020.9.27-cp39-cp39-win32.whl", hash = "sha256:49f23ebd5ac073765ecbcf046edc10d63dcab2f4ae2bce160982cb30df0c0302"}, - {file = "regex-2020.9.27-cp39-cp39-win_amd64.whl", hash = "sha256:3d20024a70b97b4f9546696cbf2fd30bae5f42229fbddf8661261b1eaff0deb7"}, - {file = "regex-2020.9.27.tar.gz", hash = "sha256:a6f32aea4260dfe0e55dc9733ea162ea38f0ea86aa7d0f77b15beac5bf7b369d"}, -] -requests = [ - {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, - {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"}, -] -sentry-sdk = [ - {file = "sentry-sdk-0.17.8.tar.gz", hash = "sha256:e159f7c919d19ae86e5a4ff370fccc45149fab461fbeb93fb5a735a0b33a9cb1"}, - {file = "sentry_sdk-0.17.8-py2.py3-none-any.whl", hash = "sha256:c9c0fa1412bad87104c4eee8dd36c7bbf60b0d92ae917ab519094779b22e6d9a"}, -] -sirbot = [ - {file = "sirbot-0.1.1-py3-none-any.whl", hash = "sha256:3252a917f6336f37fd95223f472cc0e225dac98b6b3492c5ce9953d8cda3cc4f"}, - {file = "sirbot-0.1.1.tar.gz", hash = "sha256:97be6915ec814e76d7ecce504c1c037834d6be1dc618c3032653d6ecac0f1c0b"}, -] -six = [ - {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, - {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, -] -slack-sansio = [ - {file = "slack-sansio-1.1.0.tar.gz", hash = "sha256:4dec16e6f9ced6003de201c5e3bd1dbfc053ab8c8772ab29529772805b8a18a1"}, - {file = "slack_sansio-1.1.0-py3-none-any.whl", hash = "sha256:0403c02ba6c3e57f6de7e9522aef7973bd71e33453f5b2ea760ec513b619750a"}, -] -toml = [ - {file = "toml-0.10.1-py2.py3-none-any.whl", hash = "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"}, - {file = "toml-0.10.1.tar.gz", hash = "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f"}, -] -typed-ast = [ - {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3"}, - {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb"}, - {file = "typed_ast-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919"}, - {file = "typed_ast-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01"}, - {file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fcf135e17cc74dbfbc05894ebca928ffeb23d9790b3167a674921db19082401f"}, - {file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"}, - {file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"}, - {file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:f208eb7aff048f6bea9586e61af041ddf7f9ade7caed625742af423f6bae3298"}, - {file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"}, - {file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"}, - {file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7e4c9d7658aaa1fc80018593abdf8598bf91325af6af5cce4ce7c73bc45ea53d"}, - {file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"}, - {file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"}, - {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"}, - {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:92c325624e304ebf0e025d1224b77dd4e6393f18aab8d829b5b7e04afe9b7a2c"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d648b8e3bf2fe648745c8ffcee3db3ff903d0817a01a12dd6a6ea7a8f4889072"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fac11badff8313e23717f3dada86a15389d0708275bddf766cca67a84ead3e91"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:0d8110d78a5736e16e26213114a38ca35cb15b6515d535413b090bd50951556d"}, - {file = "typed_ast-1.4.1-cp39-cp39-win32.whl", hash = "sha256:b52ccf7cfe4ce2a1064b18594381bccf4179c2ecf7f513134ec2f993dd4ab395"}, - {file = "typed_ast-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:3742b32cf1c6ef124d57f95be609c473d7ec4c14d0090e5a5e05a15269fb4d0c"}, - {file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"}, -] -typing-extensions = [ - {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"}, - {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"}, - {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"}, -] -tzlocal = [ - {file = "tzlocal-2.1-py2.py3-none-any.whl", hash = "sha256:e2cb6c6b5b604af38597403e9852872d7f534962ae2954c7f35efcb1ccacf4a4"}, - {file = "tzlocal-2.1.tar.gz", hash = "sha256:643c97c5294aedc737780a49d9df30889321cbe1204eac2c2ec6134035a92e44"}, -] -ujson = [ - {file = "ujson-1.35.tar.gz", hash = "sha256:f66073e5506e91d204ab0c614a148d5aa938bdbf104751be66f8ad7a222f5f86"}, -] -uritemplate = [ - {file = "uritemplate-3.0.1-py2.py3-none-any.whl", hash = "sha256:07620c3f3f8eed1f12600845892b0e036a2420acf513c53f7de0abd911a5894f"}, - {file = "uritemplate-3.0.1.tar.gz", hash = "sha256:5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae"}, -] -urllib3 = [ - {file = "urllib3-1.25.10-py2.py3-none-any.whl", hash = "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"}, - {file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"}, -] -yarl = [ - {file = "yarl-1.6.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:db9eb8307219d7e09b33bcb43287222ef35cbcf1586ba9472b0a4b833666ada1"}, - {file = "yarl-1.6.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:e31fef4e7b68184545c3d68baec7074532e077bd1906b040ecfba659737df188"}, - {file = "yarl-1.6.0-cp35-cp35m-win32.whl", hash = "sha256:5d84cc36981eb5a8533be79d6c43454c8e6a39ee3118ceaadbd3c029ab2ee580"}, - {file = "yarl-1.6.0-cp35-cp35m-win_amd64.whl", hash = "sha256:5e447e7f3780f44f890360ea973418025e8c0cdcd7d6a1b221d952600fd945dc"}, - {file = "yarl-1.6.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:6f6898429ec3c4cfbef12907047136fd7b9e81a6ee9f105b45505e633427330a"}, - {file = "yarl-1.6.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d088ea9319e49273f25b1c96a3763bf19a882cff774d1792ae6fba34bd40550a"}, - {file = "yarl-1.6.0-cp36-cp36m-win32.whl", hash = "sha256:b7c199d2cbaf892ba0f91ed36d12ff41ecd0dde46cbf64ff4bfe997a3ebc925e"}, - {file = "yarl-1.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:67c5ea0970da882eaf9efcf65b66792557c526f8e55f752194eff8ec722c75c2"}, - {file = "yarl-1.6.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:04a54f126a0732af75e5edc9addeaa2113e2ca7c6fce8974a63549a70a25e50e"}, - {file = "yarl-1.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fcbe419805c9b20db9a51d33b942feddbf6e7fb468cb20686fd7089d4164c12a"}, - {file = "yarl-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:c604998ab8115db802cc55cb1b91619b2831a6128a62ca7eea577fc8ea4d3131"}, - {file = "yarl-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c22607421f49c0cb6ff3ed593a49b6a99c6ffdeaaa6c944cdda83c2393c8864d"}, - {file = "yarl-1.6.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:7ce35944e8e61927a8f4eb78f5bc5d1e6da6d40eadd77e3f79d4e9399e263921"}, - {file = "yarl-1.6.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c15d71a640fb1f8e98a1423f9c64d7f1f6a3a168f803042eaf3a5b5022fde0c1"}, - {file = "yarl-1.6.0-cp38-cp38-win32.whl", hash = "sha256:3cc860d72ed989f3b1f3abbd6ecf38e412de722fb38b8f1b1a086315cf0d69c5"}, - {file = "yarl-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:e32f0fb443afcfe7f01f95172b66f279938fbc6bdaebe294b0ff6747fb6db020"}, - {file = "yarl-1.6.0.tar.gz", hash = "sha256:61d3ea3c175fe45f1498af868879c6ffeb989d4143ac542163c45538ba5ec21b"}, -] -zipcodes = [ - {file = "zipcodes-1.1.3-py2.py3-none-any.whl", hash = "sha256:b228fd678c1f035b67df1af39880c62e842a3b03c0d78dfeb2bf26069dec2a7a"}, - {file = "zipcodes-1.1.3.tar.gz", hash = "sha256:566a0bf8af3254d5b314cf902ca8d63046795f8811046d9d218fe30ce9ee3241"}, -] -zipp = [ - {file = "zipp-3.2.0-py3-none-any.whl", hash = "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6"}, - {file = "zipp-3.2.0.tar.gz", hash = "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f"}, -] diff --git a/pybot/__init__.py b/pybot/__init__.py deleted file mode 100644 index bed8b88..0000000 --- a/pybot/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -from pathlib import Path - -from dotenv import load_dotenv - -""" Loads values from .env file for local development """ -url = Path(os.path.dirname(os.path.dirname(__file__))) / "docker" / "pybot.env" -load_dotenv(dotenv_path=url) diff --git a/pybot/__main__.py b/pybot/__main__.py deleted file mode 100644 index dafe76a..0000000 --- a/pybot/__main__.py +++ /dev/null @@ -1,63 +0,0 @@ -import logging.config -import os - -import sentry_sdk -import yaml -from sentry_sdk.integrations.aiohttp import AioHttpIntegration -from sirbot import SirBot -from sirbot.plugins.slack import SlackPlugin - -from pybot.endpoints import handle_health_check -from pybot.endpoints.slack.utils import HOST, PORT, slack_configs - -from . import endpoints -from .plugins import AirtablePlugin, APIPlugin - -logger = logging.getLogger(__name__) - -if __name__ == "__main__": - try: - with open( - os.path.join(os.path.dirname(os.path.realpath(__file__)), "../logging.yml") - ) as log_configfile: - logging.config.dictConfig( - yaml.load(log_configfile.read(), Loader=yaml.SafeLoader) - ) - except Exception as e: - logging.basicConfig(level=logging.DEBUG) - logger.exception(e) - - if "SENTRY_DSN" in os.environ: - sentry_sdk.init( - dsn=os.environ["SENTRY_DSN"], - release=os.environ.get("VERSION", "1.0.0"), - environment=os.environ.get("ENVIRONMENT", "production"), - integrations=[AioHttpIntegration()], - ) - - bot = SirBot() - - slack = SlackPlugin(**slack_configs) - endpoints.slack.create_endpoints(slack) - bot.load_plugin(slack) - - admin_configs = dict(**slack_configs) - admin_token = os.environ.get("APP_ADMIN_OAUTH_TOKEN", "FAKE_ADMIN_TOKEN") - if admin_token: - admin_configs["token"] = admin_token - admin_slack = SlackPlugin(**admin_configs) - bot.load_plugin(admin_slack, name="admin_slack") - - airtable = AirtablePlugin() - endpoints.airtable.create_endpoints(airtable) - bot.load_plugin(airtable) - - api_plugin = APIPlugin() - endpoints.api.create_endpoints(api_plugin) - bot.load_plugin(api_plugin) - - # Add route to respond to AWS health check - bot.router.add_get("/health", handle_health_check) - logging.getLogger("aiohttp.access").setLevel(logging.INFO) - - bot.start(host=HOST, port=PORT, print=logger.info) diff --git a/pybot/customLogging.py b/pybot/customLogging.py deleted file mode 100644 index 10e2aee..0000000 --- a/pybot/customLogging.py +++ /dev/null @@ -1,6 +0,0 @@ -import logging - - -class SlackMessageFilter(logging.Filter): - def filter(self, record): - return record.funcName != "_incoming_message" diff --git a/pybot/endpoints/__init__.py b/pybot/endpoints/__init__.py deleted file mode 100644 index bff287d..0000000 --- a/pybot/endpoints/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from aiohttp.web_response import Response - -from . import airtable, api, slack - - -async def handle_health_check(request): - return Response(status=200) diff --git a/pybot/endpoints/airtable/__init__.py b/pybot/endpoints/airtable/__init__.py deleted file mode 100644 index b66cf71..0000000 --- a/pybot/endpoints/airtable/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from . import requests - - -def create_endpoints(plugin): - requests.create_endpoints(plugin) diff --git a/pybot/endpoints/airtable/message_templates/messages.py b/pybot/endpoints/airtable/message_templates/messages.py deleted file mode 100644 index 0fb302b..0000000 --- a/pybot/endpoints/airtable/message_templates/messages.py +++ /dev/null @@ -1,39 +0,0 @@ -from typing import List - - -def mentor_request_text( - user_id, service, skillsets, affiliation, requested_mentor_message=None -): - if not skillsets: - skillsets = "None provided" - text = ( - f"User <@{user_id}> has requested a mentor for {service}\n\n" - f"Requested Skillset(s): {skillsets.replace(',', ', ')}\n\n" - f"Requestor Affiliation: {affiliation}" - ) - - if requested_mentor_message: - text += requested_mentor_message - - return text - - -def claim_mentee_attachment(record: str) -> List[dict]: - return [ - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claim_mentee", - "attachment_type": "default", - "actions": [ - { - "name": f"{record}", - "text": "Claim Mentee", - "type": "button", - "style": "primary", - "value": "mentee_claimed", - } - ], - } - ] diff --git a/pybot/endpoints/airtable/requests.py b/pybot/endpoints/airtable/requests.py deleted file mode 100644 index 47f94d2..0000000 --- a/pybot/endpoints/airtable/requests.py +++ /dev/null @@ -1,50 +0,0 @@ -import asyncio -import logging - -from sirbot import SirBot - -from pybot.endpoints.airtable.utils import ( - _create_messages, - _get_matching_skillset_mentors, - _get_requested_mentor, - _post_messages, - _slack_user_id_from_email, -) - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin): - plugin.on_request("mentor_request", mentor_request) - - -async def mentor_request(request: dict, app: SirBot) -> None: - """ - Endpoint that receives the zapier POST when a new Mentor Request comes in. - - Queries Airtable to find mentors matching the requested skillsets and posts a message - in the Mentor slack channel. - """ - slack = app.plugins["slack"].api - airtable = app.plugins["airtable"].api - - id_fallback = f" [couldn't find user - email provided: {request['email']} ]" - slack_id = await _slack_user_id_from_email( - request["email"], slack, fallback=id_fallback - ) - - futures = [ - airtable.get_name_from_record_id("Services", request["service"]), - _get_requested_mentor(request.get("requested_mentor"), slack, airtable), - _get_matching_skillset_mentors(request.get("skillsets"), slack, airtable), - ] - - service_translation, requested_mentor_message, mentors = await asyncio.gather( - *futures - ) - - first_message, *children = _create_messages( - mentors, request, requested_mentor_message, service_translation, slack_id - ) - - await _post_messages(first_message, children, app) diff --git a/pybot/endpoints/airtable/utils.py b/pybot/endpoints/airtable/utils.py deleted file mode 100644 index c0801f9..0000000 --- a/pybot/endpoints/airtable/utils.py +++ /dev/null @@ -1,97 +0,0 @@ -from typing import List, Optional, Tuple - -from sirbot import SirBot -from slack import ROOT_URL, methods -from slack.events import Message -from slack.exceptions import SlackAPIError -from slack.io.aiohttp import SlackAPI - -from pybot.endpoints.slack.utils import MENTOR_CHANNEL -from pybot.plugins.airtable.api import AirtableAPI - -from .message_templates.messages import claim_mentee_attachment, mentor_request_text - - -async def _get_requested_mentor( - requested_mentor: Optional[str], slack: SlackAPI, airtable: AirtableAPI -) -> Optional[str]: - try: - if not requested_mentor: - return None - mentor = await airtable.get_row_from_record_id("Mentors", requested_mentor) - email = mentor["Email"] - slack_user_id = await _slack_user_id_from_email(email, slack) - return f" Requested mentor: <@{slack_user_id}>" - except SlackAPIError: - return None - - -async def _slack_user_id_from_email( - email: str, slack: SlackAPI, fallback: Optional[str] = None -) -> str: - try: - response = await slack.query( - url=ROOT_URL + "users.lookupByEmail", data={"email": email} - ) - return response["user"]["id"] - except SlackAPIError: - return fallback or "Slack User" - - -async def _get_matching_skillset_mentors( - skillsets: str, slack: SlackAPI, airtable: AirtableAPI -) -> List[str]: - if not skillsets: - return ["No skillset Given"] - mentors = await airtable.find_mentors_with_matching_skillsets(skillsets) - mentor_ids = [ - await _slack_user_id_from_email( - mentor["Email"], slack, fallback=mentor["Slack Name"] - ) - for mentor in mentors - ] - return [f"<@{mentor}>" for mentor in mentor_ids] - - -def _create_messages( - mentors: List[str], - request: dict, - requested_mentor_message: str, - service_translation: str, - slack_id: str, -) -> Tuple[dict, dict, dict]: - first_message = { - "text": mentor_request_text( - slack_id, - service_translation, - request.get("skillsets", None), - request.get("affiliation", "None Provided"), - requested_mentor_message, - ), - "attachments": claim_mentee_attachment(request["record"]), - "channel": MENTOR_CHANNEL, - } - - details_message = { - "text": f"Additional details: {request.get('details', 'None Given')}", - "channel": MENTOR_CHANNEL, - } - - matching_mentors_message = { - "text": "Mentors matching all or some of the requested skillsets: " - + " ".join(mentors), - "channel": MENTOR_CHANNEL, - } - - return first_message, details_message, matching_mentors_message - - -async def _post_messages(parent: Message, children: List[Message], app: SirBot) -> None: - response = await app.plugins["slack"].api.query( - url=methods.CHAT_POST_MESSAGE, data=parent - ) - timestamp = response["ts"] - - for child in children: - child["thread_ts"] = timestamp - await app.plugins["slack"].api.query(url=methods.CHAT_POST_MESSAGE, data=child) diff --git a/pybot/endpoints/api/__init__.py b/pybot/endpoints/api/__init__.py deleted file mode 100644 index 27b5aec..0000000 --- a/pybot/endpoints/api/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from . import slack_api - - -def create_endpoints(plugin): - slack_api.create_endpoints(plugin) diff --git a/pybot/endpoints/api/slack_api.py b/pybot/endpoints/api/slack_api.py deleted file mode 100644 index 3a15bb7..0000000 --- a/pybot/endpoints/api/slack_api.py +++ /dev/null @@ -1,70 +0,0 @@ -import logging - -from sirbot import SirBot -from slack import ROOT_URL -from slack.exceptions import SlackAPIError - -from pybot.endpoints.api.utils import ( - _slack_info_from_email, - handle_slack_invite_error, - production_only, -) -from pybot.plugins import APIPlugin -from pybot.plugins.api.request import SlackApiRequest - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin: APIPlugin): - plugin.on_get("verify", verify, wait=True) - plugin.on_get("invite", invite, wait=True) - - -async def verify(request: SlackApiRequest, app: SirBot) -> dict: - """ - Verifies whether a user exists in the configured slack group with - the given email - - :return: The user's slack id and displayName if they exist - """ - slack = app.plugins["slack"].api - email = request.query["email"] - - user = await _slack_info_from_email(email, slack) - if user: - return {"exists": True, "id": user["id"], "displayName": user["name"]} - return {"exists": False} - - -@production_only -async def invite(request: SlackApiRequest, app: SirBot): - """ - Pulls an email out of the querystring and sends it an invite - to the slack team - - :return: The request response from slack - """ - - admin_slack = app.plugins["admin_slack"].api - slack = app.plugins["slack"].api - body = await request.json() - - if "email" not in body: - return {"error": "Must contain `email` JSON value"} - email = body["email"] - - try: - response = await admin_slack.query( - url=ROOT_URL + "users.admin.invite", data={"email": email} - ) - return response - - except SlackAPIError as e: - logger.info("Slack invite resulted in SlackAPIError: " + e.error) - await handle_slack_invite_error(email, e, slack) - return e.data - - except Exception as e: - logger.exception(e) - await handle_slack_invite_error(email, e, slack) - return e diff --git a/pybot/endpoints/api/utils.py b/pybot/endpoints/api/utils.py deleted file mode 100644 index 973fcbb..0000000 --- a/pybot/endpoints/api/utils.py +++ /dev/null @@ -1,105 +0,0 @@ -import logging -from typing import Optional - -from slack import ROOT_URL -from slack.exceptions import SlackAPIError -from slack.io.abc import SlackAPI -from slack.methods import Methods - -from pybot.endpoints.slack.utils import OPS_CHANNEL, PYBOT_ENV -from pybot.endpoints.slack.utils.action_messages import ( - TICKET_OPTIONS, - not_claimed_attachment, -) -from pybot.plugins.api.request import SlackApiRequest - -logger = logging.getLogger(__name__) - - -async def _slack_info_from_email( - email: str, slack: SlackAPI, fallback: Optional[dict] = None -) -> dict: - try: - response = await slack.query( - url=ROOT_URL + "users.lookupByEmail", data={"email": email} - ) - return response["user"] - except SlackAPIError: - return fallback - - -def invite_failure_attachments(email: str, error: str) -> list: - attachments = [ - { - "text": "", - "callback_id": "ticket_status", - "response_type": "in_channel", - "fallback": "", - "fields": [ - {"title": "Email", "value": f"{email}", "short": True}, - {"title": "Error", "value": f"{error}", "short": True}, - ], - "actions": [ - { - "name": "status", - "text": "Current Status", - "type": "select", - "selected_options": [ - {"text": "Not Started", "value": "notStarted"} - ], - "options": [ - {"text": text, "value": value} - for value, text in TICKET_OPTIONS.items() - ], - } - ], - }, - not_claimed_attachment(), - ] - return attachments - - -async def handle_slack_invite_error(email, error, slack): - if error.error == "already_invited": - return error.data - - attachments = invite_failure_attachments(email, error) - - if error.error == "already_in_team": - slack_user = await _slack_info_from_email(email, slack) - attachments[0]["fields"].append( - { - "title": "Slack Username", - "value": f"<@{slack_user['id']}>", - "short": True, - } - ) - - response = { - "channel": OPS_CHANNEL, - "attachments": attachments, - "text": "User Slack Invite Error", - } - - return await slack.query(Methods.CHAT_POST_MESSAGE, response) - - -def production_only(func): - """ - Decorator for functions that shouldn't be called unless in - production environment. - - Used to avoid doing things like sending slack workspace invites to - staging environments. - """ - - async def not_prod(request: SlackApiRequest, app): - logger.info( - f"Received request on staging to {request.request.raw_path}. Returning 200" - ) - return {"ok": True, "details": "Development environment, returning 200"} - - if PYBOT_ENV != "PRODUCTION": - return not_prod - - return func diff --git a/pybot/endpoints/slack/__init__.py b/pybot/endpoints/slack/__init__.py deleted file mode 100644 index c616836..0000000 --- a/pybot/endpoints/slack/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from . import actions, commands, events, messages - - -def create_endpoints(plugin): - events.create_endpoints(plugin) - actions.create_endpoints(plugin) - commands.create_endpoints(plugin) - messages.create_endpoints(plugin) diff --git a/pybot/endpoints/slack/actions/__init__.py b/pybot/endpoints/slack/actions/__init__.py deleted file mode 100644 index eaf7585..0000000 --- a/pybot/endpoints/slack/actions/__init__.py +++ /dev/null @@ -1,89 +0,0 @@ -from sirbot.plugins.slack import SlackPlugin - -from .general_actions import claimed, delete_message, reset_claim -from .mentor_request import ( - add_skillset, - claim_mentee, - clear_mentor, - clear_skillsets, - mentor_details_submit, - mentor_request_submit, - open_details_dialog, - set_group, - set_requested_mentor, - set_requested_service, -) -from .mentor_volunteer import ( - add_volunteer_skillset, - clear_volunteer_skillsets, - submit_mentor_volunteer, -) -from .new_member import ( - member_greeted, - member_messaged, - open_suggestion, - post_suggestion, - reset_greet, - reset_message, - resource_buttons, -) -from .report_message import open_report_dialog, send_report - - -def create_endpoints(plugin: SlackPlugin): - # simple actions that can be used in multiple scenarios - plugin.on_action("claimed", claimed, name="claimed", wait=False) - plugin.on_action("claimed", reset_claim, name="reset_claim", wait=False) - plugin.on_block("submission", delete_message, action_id="cancel_btn", wait=False) - - # new member interactive actions - plugin.on_action("resource_buttons", resource_buttons, wait=False) - plugin.on_action("greeted", member_greeted, name="greeted", wait=False) - plugin.on_action("greeted", reset_greet, name="reset_greet", wait=False) - plugin.on_action("messaged", member_messaged, name="messaged", wait=False) - plugin.on_action("messaged", reset_message, name="reset_message", wait=False) - plugin.on_action("suggestion", open_suggestion, wait=False) - plugin.on_action("suggestion_modal", post_suggestion, wait=False) - - # reporting related interactive actions - plugin.on_action("report_message", open_report_dialog, wait=False) - plugin.on_action("report_dialog", send_report, wait=False) - - # mentorship related interactive actions - plugin.on_block( - "mentor_service", - set_requested_service, - wait=False, - action_id="mentor_service_select", - ) - plugin.on_block("skillset", add_skillset, action_id="skillset_select", wait=False) - plugin.on_block( - "clear_skillsets", clear_skillsets, action_id="clear_skillsets_btn", wait=False - ) - plugin.on_block( - "mentor", set_requested_mentor, action_id="mentor_select", wait=False - ) - plugin.on_block( - "comments", open_details_dialog, action_id="comments_btn", wait=False - ) - plugin.on_block("mentor_details_submit", mentor_details_submit, wait=False) - plugin.on_block( - "affiliation", set_group, action_id="affiliation_select", wait=False - ) - plugin.on_block( - "submission", mentor_request_submit, action_id="submit_mentor_btn", wait=False - ) - - # mentor volunteer actions - plugin.on_block("volunteer_skillset", add_volunteer_skillset, wait=False) - plugin.on_block("clear_volunteer_skillsets", clear_volunteer_skillsets, wait=False) - plugin.on_block( - "submission", - submit_mentor_volunteer, - action_id="submit_mentor_volunteer_btn", - wait=False, - ) - - # mentorship claims - plugin.on_action("claim_mentee", claim_mentee, wait=False) - plugin.on_action("reset_claim_mentee", claim_mentee, wait=False) diff --git a/pybot/endpoints/slack/actions/general_actions.py b/pybot/endpoints/slack/actions/general_actions.py deleted file mode 100644 index 878e652..0000000 --- a/pybot/endpoints/slack/actions/general_actions.py +++ /dev/null @@ -1,52 +0,0 @@ -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.utils.action_messages import ( - base_response, - claimed_attachment, - not_claimed_attachment, -) - - -async def claimed(action: Action, app: SirBot): - """ - Provides basic "claim" functionality for use-cases that don't have any other effects. - - Simply updates the button to allow resets and displays the user and time it was clicked. - """ - response = base_response(action) - user_id = action["user"]["id"] - - attachments = action["original_message"]["attachments"] - - for index, attachment in enumerate(attachments): - if "callback_id" in attachment and attachment["callback_id"] == "claimed": - attachments[index] = claimed_attachment(user_id) - response["attachments"] = attachments - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def reset_claim(action: Action, app: SirBot): - """ - Provides basic "unclaim" functionality for use-cases that don't have any other effects. - - Updates the button back to its initial state - """ - response = base_response(action) - - attachments = action["original_message"]["attachments"] - for index, attachment in enumerate(attachments): - if "callback_id" in attachment and attachment["callback_id"] == "claimed": - attachments[index] = not_claimed_attachment() - - response["attachments"] = attachments - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def delete_message(action: Action, app: SirBot): - slack = app.plugins["slack"].api - params = {"ts": action["message"]["ts"], "channel": action["channel"]["id"]} - - await slack.query(methods.CHAT_DELETE, params) diff --git a/pybot/endpoints/slack/actions/mentor_request.py b/pybot/endpoints/slack/actions/mentor_request.py deleted file mode 100644 index de2e757..0000000 --- a/pybot/endpoints/slack/actions/mentor_request.py +++ /dev/null @@ -1,145 +0,0 @@ -import json -import logging - -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.message_templates.mentor_request import ( - MentorRequest, - MentorRequestClaim, -) -from pybot.endpoints.slack.utils.action_messages import mentor_details_dialog - -logger = logging.getLogger(__name__) - - -async def mentor_request_submit(action: Action, app: SirBot): - slack = app.plugins["slack"].api - airtable = app.plugins["airtable"].api - request = MentorRequest(action) - - if not request.validate_self(): - request.add_errors() - await request.update_message(slack) - return - - username = action["user"]["name"] - user_info = await slack.query(methods.USERS_INFO, {"user": action["user"]["id"]}) - email = user_info["user"]["profile"]["email"] - - airtable_response = await request.submit_request(username, email, airtable) - - if "error" in airtable_response: - await request.submission_error(airtable_response, slack) - else: - await request.submission_complete(slack) - - -async def mentor_details_submit(action: Action, app: SirBot): - slack = app.plugins["slack"].api - request = MentorRequest(action) - - state = json.loads(action["state"]) - channel = state["channel"] - ts = state["ts"] - search = {"inclusive": True, "channel": channel, "oldest": ts, "latest": ts} - - history = await slack.query(methods.CONVERSATIONS_HISTORY, search) - request["message"] = history["messages"][0] - request.details = action["submission"]["details"] - - await request.update_message(slack) - - -async def open_details_dialog(action: Action, app: SirBot): - request = MentorRequest(action) - cur_details = request.details - trigger_id = action["trigger_id"] - response = { - "trigger_id": trigger_id, - "dialog": mentor_details_dialog(action, cur_details), - } - await app.plugins["slack"].api.query(methods.DIALOG_OPEN, response) - - -async def clear_skillsets(action: Action, app: SirBot): - request = MentorRequest(action) - request.clear_skillsets() - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def clear_mentor(action: Action, app: SirBot): - slack = app.plugins["slack"].api - - request = MentorRequest(action) - request.mentor = "" - - await request.update_message(slack) - - -async def set_group(action: Action, app: SirBot): - request = MentorRequest(action) - request.affiliation = request.selected_option - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def set_requested_service(action: Action, app: SirBot): - request = MentorRequest(action) - - request.service = request.selected_option - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def set_requested_mentor(action: Action, app: SirBot): - request = MentorRequest(action) - request.mentor = request.selected_option - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def add_skillset(action: Action, app: SirBot): - request = MentorRequest(action) - selected_skill = request.selected_option - request.add_skillset(selected_skill["value"]) - - slack = app.plugins["slack"].api - await request.update_message(slack) - - -async def claim_mentee(action: Action, app: SirBot): - """ - Called when a mentor clicks on the button to claim a mentor request. - - Attempts to update airtable with the new request status and updates the claim - button allowing it to be reset if needed. - """ - try: - slack = app.plugins["slack"].api - airtable = app.plugins["airtable"].api - - event = MentorRequestClaim(action, slack, airtable) - if event.is_claim(): - user_info = await slack.query(methods.USERS_INFO, {"user": event.clicker}) - clicker_email = user_info["user"]["profile"]["email"] - - mentor_records = await airtable.find_records( - table_name="Mentors", field="Email", value=clicker_email - ) - mentor_id = mentor_records[0]["id"] if mentor_records else False - - await event.claim_request(mentor_id) - else: - await event.unclaim_request() - - await event.update_message() - - except Exception as ex: - logger.exception("Exception while updating claim", ex) diff --git a/pybot/endpoints/slack/actions/mentor_volunteer.py b/pybot/endpoints/slack/actions/mentor_volunteer.py deleted file mode 100644 index 5f79fce..0000000 --- a/pybot/endpoints/slack/actions/mentor_volunteer.py +++ /dev/null @@ -1,80 +0,0 @@ -import logging - -from sirbot import SirBot -from slack import methods -from slack.actions import Action -from slack.exceptions import SlackAPIError - -from pybot.endpoints.slack.message_templates.mentor_volunteer import MentorVolunteer -from pybot.endpoints.slack.utils import MENTOR_CHANNEL - -logger = logging.getLogger(__name__) - - -async def add_volunteer_skillset(action: Action, app: SirBot) -> None: - slack = app.plugins["slack"].api - - request = MentorVolunteer(action) - - selected_skill = request.selected_option - request.add_skillset(selected_skill["value"]) - await request.update_message(slack) - - -async def clear_volunteer_skillsets(action: Action, app: SirBot) -> None: - slack = app.plugins["slack"].api - - request = MentorVolunteer(action) - - request.clear_skillsets() - await request.update_message(slack) - - -async def submit_mentor_volunteer(action: Action, app: SirBot) -> None: - slack = app.plugins["slack"].api - admin_slack = app.plugins["admin_slack"].api - airtable = app.plugins["airtable"].api - - request = MentorVolunteer(action) - - if not request.validate_self(): - request.add_errors() - await request.update_message(slack) - return - - user_id = action["user"]["id"] - user_info = await slack.query(methods.USERS_INFO, {"user": user_id}) - airtable_fields = await build_airtable_fields(action, request, user_info) - - airtable_response = await airtable.add_record( - "Mentors", {"fields": airtable_fields} - ) - - if "error" in airtable_response: - request.airtable_error(airtable_response) - else: - - try: - await admin_slack.query( - methods.CONVERSATIONS_INVITE, - {"channel": MENTOR_CHANNEL, "users": [user_id]}, - ) - except SlackAPIError as error: - logger.debug("Error during mentor channel invite %s", error.data["errors"]) - - request.on_submit_success() - - await request.update_message(slack) - - -async def build_airtable_fields(action, request, user_info): - username = action["user"]["name"] - email = user_info["user"]["profile"]["email"] - name = user_info["user"]["real_name"] - airtable_fields = { - "Slack Name": username, - "Full Name": name, - "Skillsets": request.skillsets[1:], # hack to filter out empty first option - "Email": email, - } - return airtable_fields diff --git a/pybot/endpoints/slack/actions/new_member.py b/pybot/endpoints/slack/actions/new_member.py deleted file mode 100644 index 0c0c10c..0000000 --- a/pybot/endpoints/slack/actions/new_member.py +++ /dev/null @@ -1,97 +0,0 @@ -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.utils import COMMUNITY_CHANNEL -from pybot.endpoints.slack.utils.action_messages import ( - HELP_MENU_RESPONSES, - base_response, - direct_messaged_attachment, - greeted_attachment, - new_suggestion_text, - not_direct_messaged_attachment, - not_greeted_attachment, - reset_greet_message, - suggestion_dialog, -) - - -async def resource_buttons(action: Action, app: SirBot): - """ - Edits the resource message with the clicked on resource - """ - name = action["actions"][0]["name"] - - response = base_response(action) - response["text"] = HELP_MENU_RESPONSES[name] - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def open_suggestion(action: Action, app: SirBot): - """ - Opens the suggestion modal when the user clicks on the "Are we missing something?" button - """ - trigger_id = action["trigger_id"] - response = {"trigger_id": trigger_id, "dialog": suggestion_dialog(trigger_id)} - - await app.plugins["slack"].api.query(methods.DIALOG_OPEN, response) - - -async def post_suggestion(action: Action, app: SirBot): - """ - Posts a suggestion supplied by the suggestion modal to the community channel - """ - suggesting_user = action["user"]["id"] - suggestion = action["submission"]["suggestion"] - - response = { - "text": new_suggestion_text(suggesting_user, suggestion), - "channel": COMMUNITY_CHANNEL, - } - - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -async def member_greeted(action: Action, app: SirBot): - """ - Called when a community member clicks the button saying they greeted the new member - """ - response = base_response(action) - user_id = action["user"]["id"] - response["attachments"] = greeted_attachment(user_id) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def reset_greet(action: Action, app: SirBot): - """ - Resets the claim greet button back to its initial state and appends the user that hit reset and the time - """ - response = base_response(action) - response["attachments"] = not_greeted_attachment() - response["attachments"][0]["text"] = reset_greet_message(action["user"]["id"]) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def member_messaged(action: Action, app: SirBot): - """ - Called when a outreach team member clicks the button saying they messaged the new member - """ - response = base_response(action) - user_id = action["user"]["id"] - response["attachments"] = direct_messaged_attachment(user_id) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) - - -async def reset_message(action: Action, app: SirBot): - """ - Resets the claim messaged button back to its initial state and appends the user that hit reset and the time - """ - response = base_response(action) - response["attachments"] = not_direct_messaged_attachment() - response["attachments"][0]["text"] = reset_greet_message(action["user"]["id"]) - - await app.plugins["slack"].api.query(methods.CHAT_UPDATE, response) diff --git a/pybot/endpoints/slack/actions/report_message.py b/pybot/endpoints/slack/actions/report_message.py deleted file mode 100644 index 8949ad1..0000000 --- a/pybot/endpoints/slack/actions/report_message.py +++ /dev/null @@ -1,36 +0,0 @@ -import json - -from sirbot import SirBot -from slack import methods -from slack.actions import Action - -from pybot.endpoints.slack.utils.action_messages import ( - build_report_message, - report_dialog, -) - - -async def send_report(action: Action, app: SirBot): - """ - Called when a user submits the report dialog. Pulls the original message - info from the state and posts the details to the moderators channel - """ - slack_id = action["user"]["id"] - details = action["submission"]["details"] - message_details = json.loads(action.action["state"]) - - response = build_report_message(slack_id, details, message_details) - - await app["plugins"]["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -async def open_report_dialog(action: Action, app: SirBot): - """ - Opens the message reporting dialog for the user to provide details. - - Adds the message that they're reporting to the dialog's hidden state - to be pulled out when submitted. - """ - trigger_id = action["trigger_id"] - response = {"trigger_id": trigger_id, "dialog": report_dialog(action)} - await app.plugins["slack"].api.query(methods.DIALOG_OPEN, response) diff --git a/pybot/endpoints/slack/commands.py b/pybot/endpoints/slack/commands.py deleted file mode 100644 index c7c61d7..0000000 --- a/pybot/endpoints/slack/commands.py +++ /dev/null @@ -1,159 +0,0 @@ -import logging -import random - -from sirbot import SirBot -from sirbot.plugins.slack import SlackPlugin -from slack import methods -from slack.commands import Command - -from pybot.endpoints.slack.message_templates.commands import ( - mentor_request_blocks, - mentor_volunteer_blocks, - ticket_dialog, -) -from pybot.endpoints.slack.utils import MODERATOR_CHANNEL -from pybot.endpoints.slack.utils.action_messages import not_claimed_attachment -from pybot.endpoints.slack.utils.command_utils import get_slash_repeat_messages -from pybot.endpoints.slack.utils.general_utils import catch_command_slack_error -from pybot.endpoints.slack.utils.slash_lunch import LunchCommand - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin: SlackPlugin): - plugin.on_command("/lunch", slash_lunch, wait=False) - plugin.on_command("/repeat", slash_repeat, wait=False) - plugin.on_command("/report", slash_report, wait=False) - plugin.on_command("/roll", slash_roll, wait=False) - plugin.on_command("/mentor", slash_mentor, wait=False) - plugin.on_command("/mentor-volunteer", slash_mentor_volunteer, wait=False) - - -@catch_command_slack_error -async def slash_mentor(command: Command, app: SirBot): - airtable = app.plugins["airtable"].api - services = await airtable.get_all_records("Services", "Name") - skillsets = await airtable.get_all_records("Skillsets", "Name") - - blocks = mentor_request_blocks(services, skillsets) - - response = { - "text": "Mentor Request Form", - "blocks": blocks, - "channel": command["user_id"], - "as_user": True, - } - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -@catch_command_slack_error -async def slash_mentor_volunteer(command: Command, app: SirBot) -> None: - - response = { - "text": "Please fill up the Mentor Sign up Form here: https://op.co.de/volunteer-signup", - "channel": command["user_id"], - "as_user": True, - } - - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, response) - - -@catch_command_slack_error -async def slash_report(command: Command, app: SirBot): - """ - Sends text supplied with the /report command to the moderators channel along - with a button to claim the issue - """ - slack_id = command["user_id"] - text = command["text"] - - slack = app["plugins"]["slack"].api - - message = f"<@{slack_id}> sent report: {text}" - - response = { - "text": message, - "channel": MODERATOR_CHANNEL, - "attachments": [not_claimed_attachment()], - } - - await slack.query(methods.CHAT_POST_MESSAGE, response) - - ack = { - "text": f"Your report has been submitted successfully. The moderation team will review. Your Report:\n\n{message}", - "channel": slack_id, - } - - await slack.query(methods.CHAT_POST_MESSAGE, ack) - - -@catch_command_slack_error -async def slash_lunch(command: Command, app: SirBot): - """ - Provides the user with a random restaurant in their area. - """ - logger.debug(command) - lunch = LunchCommand( - command["channel_id"], - command["user_id"], - command.get("text"), - command["user_name"], - ) - - slack = app["plugins"]["slack"].api - - request = lunch.get_yelp_request() - async with app.http_session.get(**request) as r: - r.raise_for_status() - message_params = lunch.select_random_lunch(await r.json()) - - await slack.query(methods.CHAT_POST_EPHEMERAL, message_params) - - -@catch_command_slack_error -async def slash_repeat(command: Command, app: SirBot): - logger.info(f"repeat command data incoming {command}") - channel_id = command["channel_id"] - slack_id = command["user_id"] - slack = app["plugins"]["slack"].api - arguments = command["text"].split(" ") - - method_type, message = get_slash_repeat_messages(slack_id, channel_id, arguments) - - await slack.query(method_type, message) - - -@catch_command_slack_error -async def slash_roll(command: Command, app: SirBot): - """ - Invoked via the command /roll XdY, where X is an integer between 1 and 10, - and y is an integer between 1 and 20. - - Parses the number of dice and the type from the command - """ - slack = app["plugins"]["slack"].api - slack_id = command["user_id"] - channel_id = command["channel_id"] - text = command["text"] - - try: - text = text.lower() - numdice, typedice = [int(num) for num in text.split("d")] - if numdice <= 0 or numdice > 10 or typedice <= 0 or typedice > 20: - raise ValueError - except ValueError: - logger.debug("invalid input to roll: %s", text) - response = dict( - user=slack_id, - channel=channel_id, - text=( - "Sorry, I didn't understand your input. " - "Should be XDYY where X is the number of dice, and YY is the number of sides" - ), - ) - return await slack.query(methods.CHAT_POST_EPHEMERAL, response) - - dice = [random.randint(1, typedice) for _ in range(numdice)] - message = f"<@{slack_id}> Rolled {numdice} D{typedice}: {dice}" - response = dict(channel=channel_id, text=message) - await slack.query(methods.CHAT_POST_MESSAGE, response) diff --git a/pybot/endpoints/slack/events.py b/pybot/endpoints/slack/events.py deleted file mode 100644 index b8027ac..0000000 --- a/pybot/endpoints/slack/events.py +++ /dev/null @@ -1,65 +0,0 @@ -import asyncio -import logging - -from sirbot import SirBot -from slack.events import Event - -from pybot.endpoints.slack.utils.event_utils import ( - build_messages, - get_backend_auth_headers, - link_backend_user, - send_community_notification, - send_user_greetings, - build_delayed_messages, - send_social_cta, -) - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin): - plugin.on_event("team_join", team_join, wait=False) - plugin.on_event("team_join", team_join_delayed, wait=False) - - -async def team_join(event: Event, app: SirBot) -> None: - """ - Handler for when the Slack workspace has a new member join. - - After 30 seconds sends the new user a greeting, some resource links, and - notifies the community channel of the new member. - """ - slack_api = app.plugins["slack"].api - user_id = event["user"]["id"] - - *user_messages, community_message, outreach_team_message = build_messages(user_id) - futures = [ - send_user_greetings(user_messages, slack_api), - send_community_notification(community_message, slack_api), - send_community_notification(outreach_team_message, slack_api), - ] - - logger.info(f"New team join event: {event}") - await asyncio.sleep(30) - await asyncio.wait(futures) - - headers = await get_backend_auth_headers(app.http_session) - if headers: - await link_backend_user(user_id, headers, slack_api, app.http_session) - - -async def team_join_delayed(event: Event, app: SirBot) -> None: - """ - Handler for when the Slack workspace has a new member join. - - After 1 day sends the new user a greeting, a call to action to join social media - """ - slack_api = app.plugins["slack"].api - user_id = event["user"]["id"] - - social_media_messages = build_delayed_messages(user_id) - future = [send_social_cta(social_media_messages, slack_api)] - - logger.info(f"Scheduling delayed message") - await asyncio.sleep(900) - await asyncio.wait(future) diff --git a/pybot/endpoints/slack/message_templates/block_action.py b/pybot/endpoints/slack/message_templates/block_action.py deleted file mode 100644 index ac6b30b..0000000 --- a/pybot/endpoints/slack/message_templates/block_action.py +++ /dev/null @@ -1,95 +0,0 @@ -from __future__ import annotations - -from enum import IntEnum -from typing import Any, Coroutine, MutableMapping, Optional - -from slack import methods -from slack.actions import Action -from slack.io.abc import SlackAPI - - -class BlockAction(Action): - """ - Base class for working with Block format Slack Action events. - See https://api.slack.com/reference/messaging/blocks - and https://api.slack.com/messaging/composing/layouts - """ - - def __init__(self, raw_action: MutableMapping): - super().__init__(raw_action) - - @property - def original_message(self): - return self["message"] - - @property - def channel(self): - return self["channel"]["id"] - - @property - def blocks(self) -> list: - return self.original_message["blocks"] - - @blocks.setter - def blocks(self, value) -> None: - self.original_message["blocks"] = value - - @property - def attachments(self) -> list: - return self.original_message.get("attachments", []) - - @attachments.setter - def attachments(self, value) -> None: - self.original_message["attachments"] = value - - @property - def ts(self) -> str: - return self.original_message["ts"] - - @property - def actions(self): - return self["actions"] - - @property - def selected_option(self) -> Optional[dict]: - if "selected_option" in self.actions[0]: - return self.actions[0]["selected_option"] - return None - - def initial_option(self, index: IntEnum) -> str: - """ - Each section uses the `initial_option` key to store the latest - option selected by the user - """ - accessory = self.blocks[index]["accessory"] - if "initial_option" in accessory: - return accessory["initial_option"]["value"] - return "" - - @property - def update_params(self) -> dict: - return { - "channel": self.channel, - "ts": self.ts, - "blocks": self.blocks, - "attachments": self.attachments, - } - - def validate_self(self) -> bool: - """ - Should be overridden if action has any validation - """ - return True - - def update_message(self, slack: SlackAPI) -> Coroutine[Any, Any, dict]: - return slack.query(methods.CHAT_UPDATE, self.update_params) - - def add_errors(self): - error_attachment = { - "text": ":warning: Error - Cannot submit with current values :warning:", - "color": "danger", - } - self.attachments = [error_attachment] - - def clear_errors(self) -> None: - self.attachments = [] diff --git a/pybot/endpoints/slack/message_templates/commands.py b/pybot/endpoints/slack/message_templates/commands.py deleted file mode 100644 index 656e52a..0000000 --- a/pybot/endpoints/slack/message_templates/commands.py +++ /dev/null @@ -1,211 +0,0 @@ -from typing import List - - -def ticket_dialog(clicker_email, text): - return { - "callback_id": "open_ticket", - "title": "Open New Ticket", - "submit_label": "Submit", - "elements": [ - { - "type": "text", - "label": "Email", - "name": "email", - "subtype": "email", - "value": clicker_email, - }, - {"type": "text", "label": "Request Type", "name": "type", "value": text}, - {"type": "textarea", "label": "Details", "name": "details"}, - ], - } - - -def mentor_request_blocks(services, skillsets): - return [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ( - "👨‍🏫 Mentor Request Form 👩‍🏫\n" - "Thank you for signing up for a 30 minute mentoring session. Please fill out the form below" - ), - }, - }, - {"type": "divider"}, - { - "type": "section", - "block_id": "mentor_service", - "text": {"type": "mrkdwn", "text": "*Service*"}, - "accessory": { - "action_id": "mentor_service_select", - "type": "static_select", - "placeholder": {"type": "plain_text", "text": "Service"}, - "options": [ - {"text": {"type": "plain_text", "text": service}, "value": service} - for service in services - ], - }, - }, - { - "type": "section", - "block_id": "skillset", - "text": {"type": "mrkdwn", "text": "*Mentor Skillsets*\n"}, - "accessory": { - "type": "static_select", - "action_id": "skillset_select", - "placeholder": {"type": "plain_text", "text": "Skillset"}, - "options": [ - { - "text": {"type": "plain_text", "text": skillset}, - "value": skillset, - } - for skillset in sorted(skillsets) - ], - }, - }, - { - "type": "section", - "block_id": "clear_skillsets", - "text": {"type": "mrkdwn", "text": "*Selected Skillsets*"}, - "accessory": { - "type": "button", - "action_id": "clear_skillsets_btn", - "text": {"type": "plain_text", "text": "Reset Skillsets"}, - "value": "reset_skillsets", - }, - }, - { - "type": "section", - "block_id": "comments", - "text": {"type": "mrkdwn", "text": "*Add comments* (required)"}, - "accessory": { - "type": "button", - "action_id": "comments_btn", - "text": {"type": "plain_text", "text": "Add details"}, - "value": "addDetails", - }, - "fields": [{"type": "plain_text", "text": " "}], - }, - { - "type": "section", - "block_id": "affiliation", - "text": { - "type": "mrkdwn", - "text": "*I certify that I am a member of the following group*", - }, - "accessory": { - "type": "static_select", - "action_id": "affiliation_select", - "placeholder": {"type": "plain_text", "text": "Military affiliation"}, - "options": [ - { - "text": {"type": "plain_text", "text": "Veteran"}, - "value": "Veteran", - }, - { - "text": {"type": "plain_text", "text": "Active Duty"}, - "value": "Active Duty", - }, - { - "text": {"type": "plain_text", "text": "Military Spouse"}, - "value": "Military Spouse", - }, - { - "text": {"type": "plain_text", "text": "Non Veteran"}, - "value": "Non Veteran", - }, - ], - }, - }, - {"type": "divider"}, - { - "type": "actions", - "block_id": "submission", - "elements": [ - { - "type": "button", - "action_id": "submit_mentor_btn", - "text": {"type": "plain_text", "text": "Submit"}, - "style": "primary", - "value": "submit", - }, - { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Cancel"}, - "style": "danger", - "value": "cancel", - }, - ], - }, - ] - - -def mentor_volunteer_blocks(skillsets: List[str]) -> List[dict]: - return [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ( - "Thank you for volunteering to be a mentor for the Operation Code community! If you're looking " - "for the mentor request form, please use `/mentor` instead." - ), - }, - }, - {"type": "divider"}, - { - "type": "section", - "block_id": "volunteer_skillset", - "text": { - "type": "mrkdwn", - "text": "*What area(s) are you interested in mentoring in?*", - }, - "accessory": { - "type": "static_select", - "action_id": "skillset_select", - "placeholder": {"type": "plain_text", "text": "Skillset"}, - "options": [ - { - "text": {"type": "plain_text", "text": skillset}, - "value": skillset, - } - for skillset in sorted(skillsets) - ], - }, - }, - { - "type": "section", - "block_id": "clear_volunteer_skillsets", - "text": {"type": "mrkdwn", "text": "*Selected Skillsets*"}, - "fields": [{"type": "plain_text", "text": " ", "emoji": True}], - "accessory": { - "type": "button", - "action_id": "clear_skillsets_btn", - "text": {"type": "plain_text", "text": "Reset Skillsets"}, - "value": "reset_skillsets", - }, - }, - {"type": "divider"}, - { - "type": "actions", - "block_id": "submission", - "elements": [ - { - "type": "button", - "action_id": "submit_mentor_volunteer_btn", - "text": {"type": "plain_text", "text": "Submit"}, - "style": "primary", - "value": "submit", - }, - { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Cancel"}, - "style": "danger", - "value": "cancel", - }, - ], - }, - ] diff --git a/pybot/endpoints/slack/message_templates/mentor_request.py b/pybot/endpoints/slack/message_templates/mentor_request.py deleted file mode 100644 index 6506286..0000000 --- a/pybot/endpoints/slack/message_templates/mentor_request.py +++ /dev/null @@ -1,273 +0,0 @@ -from enum import IntEnum -from typing import Any, Coroutine, MutableMapping, Optional - -from slack import methods -from slack.actions import Action -from slack.io.abc import SlackAPI - -from pybot.endpoints.slack.utils.action_messages import now -from pybot.plugins.airtable.api import AirtableAPI - -from .block_action import BlockAction - - -class BlockIndex(IntEnum): - SERVICE = 2 - SKILLSET = 3 - SELECTED_SKILLSETS = 4 - COMMENTS = 5 - AFFILIATION = 6 - SUBMIT = 8 - - -class MentorRequest(BlockAction): - def __init__(self, raw_action: MutableMapping): - super().__init__(raw_action) - - @property - def service(self): - return self.initial_option(BlockIndex.SERVICE) - - @service.setter - def service(self, new_service): - block = self.blocks[BlockIndex.SERVICE] - block["accessory"]["initial_option"] = new_service - if self.validate_self(): - self.clear_errors() - - @property - def skillsets(self) -> [str]: - if self.skillset_fields: - return [field["text"] for field in self.skillset_fields] - return [] - - @property - def skillset_fields(self) -> list: - return self.blocks[BlockIndex.SELECTED_SKILLSETS].get("fields", []) - - def add_skillset(self, skillset: str) -> None: - """ - Appends the new skillset to the displayed skillsets - """ - if skillset not in self.skillsets: - new_field = {"type": "plain_text", "text": skillset, "emoji": True} - self.blocks[BlockIndex.SELECTED_SKILLSETS].setdefault("fields", []).append( - new_field - ) - - @property - def details(self) -> str: - block = self.blocks[BlockIndex.COMMENTS] - if "fields" in block: - return block["fields"][0]["text"] - return "" - - @details.setter - def details(self, new_details: str) -> None: - field = {"type": "plain_text", "text": new_details} - self.blocks[BlockIndex.COMMENTS]["fields"] = [field] - - @property - def affiliation(self) -> str: - return self.initial_option(BlockIndex.AFFILIATION) - - @affiliation.setter - def affiliation(self, new_affiliation: str) -> None: - self.blocks[BlockIndex.AFFILIATION]["accessory"][ - "initial_option" - ] = new_affiliation - - if self.validate_self(): - self.clear_errors() - - def validate_self(self) -> bool: - if not self.service or not self.affiliation or not self.details: - return False - self.clear_errors() - return True - - def add_errors(self) -> None: - submit_attachment = { - "text": ":warning: Service, group certification and comments are required. :warning:", - "color": "danger", - } - self.attachments = [submit_attachment] - - async def submit_request(self, username: str, email: str, airtable: AirtableAPI): - params = {"Slack User": username, "Email": email, "Status": "Available"} - if self.skillsets: - params["Skillsets"] = self.skillsets - if self.details: - params["Additional Details"] = self.details - - service_records = await airtable.find_records("Services", "Name", self.service) - params["Service"] = [service_records[0]["id"]] - return await airtable.add_record("Mentor Request", {"fields": params}) - - def submission_error( - self, airtable_response, slack: SlackAPI - ) -> Coroutine[Any, Any, dict]: - error_attachment = { - "text": ( - f"Something went wrong.\n" - f'Error Type:{airtable_response["error"]["type"]}\n' - f'Error Message: {airtable_response["error"]["message"]}' - ), - "color": "danger", - } - self.attachments = [error_attachment] - return self.update_message(slack) - - def submission_complete(self, slack: SlackAPI) -> Coroutine[Any, Any, dict]: - done_block = { - "type": "section", - "block_id": "submission", - "text": {"type": "mrkdwn", "text": "Request Submitted Successfully!"}, - "accessory": { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Dismiss", "emoji": True}, - "value": "dismiss", - }, - } - - self.blocks = [done_block] - - return self.update_message(slack) - - def clear_skillsets(self) -> None: - if self.skillset_fields: - del self.blocks[BlockIndex.SELECTED_SKILLSETS]["fields"] - - def clear_errors(self) -> None: - self.attachments = [] - - -class MentorRequestClaim(Action): - def __init__( - self, raw_action: MutableMapping, slack: SlackAPI, airtable: AirtableAPI - ): - super().__init__(raw_action) - self.slack = slack - self.airtable = airtable - self.text = raw_action["original_message"]["text"] - self.attachment = raw_action["original_message"]["attachments"][0] - self.should_update = True - - @property - def trigger(self) -> dict: - return self["actions"][0] - - @property - def click_type(self) -> str: - """ - Value of the button clicked. - """ - return self.trigger["value"] - - def is_claim(self) -> bool: - """ - Returns true if the Claim button was clicked - """ - return self.click_type == "mentee_claimed" - - @property - def record(self) -> str: - """ - Airtable record ID for the mentor request - """ - return self.trigger["name"] - - @property - def clicker(self) -> str: - """ - The Slack User ID of the button clicker - """ - return self["user"]["id"] - - @property - def attachment(self) -> dict: - return self["original_message"]["attachments"][0] - - @attachment.setter - def attachment(self, value: dict) -> None: - self["original_message"]["attachments"][0] = value - - def claim_request(self, mentor_record): - """ - Updates the airtable entry with the given record. - - If record couldn't be found this object's text field is changed - to an error message to be displayed when update_message is called - """ - if mentor_record: - self.attachment = self.mentee_claimed_attachment() - else: - self.attachment[ - "text" - ] = f":warning: <@{self.clicker}>'s slack Email not found in Mentor table. :warning:" - self.should_update = False - - return self.update_airtable(mentor_record) - - def unclaim_request(self): - """ - Changes the attachment to the un-claimed version and deletes the mentor from the - Airtable record - """ - self.attachment = self.mentee_unclaimed_attachment() - return self.update_airtable("") - - async def update_airtable(self, mentor_id: Optional[str]): - if mentor_id is not None: - return await self.airtable.update_request(self.record, mentor_id) - - async def update_message(self): - """ - Builds the slack API call to update the original message - """ - response = { - "channel": self["channel"]["id"], - "ts": self["message_ts"], - "text": self.text, - "attachments": self["original_message"]["attachments"], - } - await self.slack.query(methods.CHAT_UPDATE, response) - - def mentee_claimed_attachment(self) -> dict: - return { - "text": f":100: Request claimed by <@{self.clicker}>:100:\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claim_mentee", - "attachment_type": "default", - "actions": [ - { - "name": f"{self.record}", - "text": "Reset claim", - "type": "button", - "style": "danger", - "value": "reset_claim_mentee", - } - ], - } - - def mentee_unclaimed_attachment(self) -> dict: - return { - "text": f"Reset by <@{self.clicker}> at" - f" ", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claim_mentee", - "attachment_type": "default", - "actions": [ - { - "name": f"{self.record}", - "text": "Claim Mentee", - "type": "button", - "style": "primary", - "value": "mentee_claimed", - } - ], - } diff --git a/pybot/endpoints/slack/message_templates/mentor_volunteer.py b/pybot/endpoints/slack/message_templates/mentor_volunteer.py deleted file mode 100644 index ab49b7a..0000000 --- a/pybot/endpoints/slack/message_templates/mentor_volunteer.py +++ /dev/null @@ -1,99 +0,0 @@ -from enum import IntEnum -from typing import MutableMapping - -from pybot.endpoints.slack.utils import MENTOR_CHANNEL - -from .block_action import BlockAction - - -class VolunteerBlockIndex(IntEnum): - SKILLSET_OPTIONS = 2 - SELECTED_SKILLSETS = 3 - SUBMIT = 5 - - -class MentorVolunteer(BlockAction): - def __init__(self, raw_action: MutableMapping): - super().__init__(raw_action) - - if "original_message" not in self: - self["original_message"] = {} - - @property - def skillsets(self) -> [str]: - skillset_field = self.skillset_field_text - return skillset_field.split("\n") - - @property - def skillset_field_text(self) -> str: - return self.blocks[VolunteerBlockIndex.SELECTED_SKILLSETS]["fields"][0]["text"] - - @skillset_field_text.setter - def skillset_field_text(self, value): - self.blocks[VolunteerBlockIndex.SELECTED_SKILLSETS]["fields"][0]["text"] = value - - def add_skillset(self, skillset: str) -> None: - """ - Appends the new skillset to the displayed skillsets - """ - if skillset not in self.skillsets: - self.skillset_field_text += f"\n{skillset}" - - def clear_skillsets(self) -> None: - self.skillset_field_text = " " - - def validate_self(self): - if not self.skillsets: - return False - - self.clear_errors() - return True - - def add_errors(self) -> None: - submit_attachment = { - "text": ":warning: Please select at least one area. :warning:", - "color": "danger", - } - self.attachments = [submit_attachment] - - def airtable_error(self, airtable_response) -> None: - error_attachment = { - "text": ( - f"Something went wrong.\n" - f'Error Type:{airtable_response["error"]["type"]}\n' - f'Error Message: {airtable_response["error"]["message"]}' - ), - "color": "danger", - } - self.attachments = [error_attachment] - - def on_submit_success(self): - done_blocks = [ - {"type": "section", "text": {"type": "mrkdwn", "text": success_message}}, - { - "type": "actions", - "block_id": "submission", - "elements": [ - { - "type": "button", - "action_id": "cancel_btn", - "text": {"type": "plain_text", "text": "Dismiss"}, - "value": "dismiss", - } - ], - }, - ] - self.blocks = done_blocks - - -success_message = ( - "Thank you for signing up to be a mentor for Operation Code! You should have been automatically " - f"added to the <#{MENTOR_CHANNEL}|mentors-internal> channel. There is a bot that posts in that " - "channel when someone signs up for a 30 minute session with a mentor. If the skillsets they request " - "match the ones you listed when you signed up, you'll be notified in the thread. Click the green " - "button to claim them and reach out via DM to schedule a slack call. There are also a few pinned " - f"items in that channel that may be helpful. If you have any questions, please DM <@Raz0r|Raz0r>.\n\n" - "We don't currently have a formal long term mentorship program, but if you feel like continuing to " - "keep in contact with any members you speak to, that's perfectly fine.\n\n" - "Thank you for signing up!" -) diff --git a/pybot/endpoints/slack/message_templates/tech.py b/pybot/endpoints/slack/message_templates/tech.py deleted file mode 100644 index 74f8342..0000000 --- a/pybot/endpoints/slack/message_templates/tech.py +++ /dev/null @@ -1,129 +0,0 @@ -import logging -import re -from datetime import datetime, timedelta -from random import choice, random -from typing import Dict, Generator, List, Pattern - -logger = logging.getLogger(__name__) - - -class TechTermsGrabber: - # shared across all instances - TERM_URL = ( - "https://raw.githubusercontent.com/togakangaroo/tech-terms/master/terms.org" - ) - LAST_UPDATE = datetime(2012, 1, 1, 1, 1) - HOURS_BEFORE_REFRESH = 3 - - def __init__(self, app): - self.app = app - - def get_terms(self): - if ( - datetime.now() - timedelta(hours=self.HOURS_BEFORE_REFRESH) - ) > self.LAST_UPDATE: - self.TERMS = self._update_terms() - return self.TERMS - - async def _update_terms(self) -> Dict[str, list]: - two_col_org_row: Pattern[str] = self._compile_regex_from_parts() - - content = await self._grab_data_from_github() - lines: List[str] = content.splitlines() - - return { - x["term"].lower(): f'{x["term"]} is {x["definition"]}' - for x in self._filter_matches(lines, two_col_org_row) - } - - async def _grab_data_from_github(self) -> str: - async with self.app.http_session.get(self.TERM_URL) as r: - r.raise_for_status() - return await r.text(encoding="utf-8") - - def _compile_regex_from_parts(self) -> Pattern[str]: - n_spaces_pipe_n_spaces = "\\s*\\|\\s*" - non_greedy_group_of_chars = ".*?" - regex_string = ( - f"^{n_spaces_pipe_n_spaces}(?P{non_greedy_group_of_chars})" - f"{n_spaces_pipe_n_spaces}(?P{non_greedy_group_of_chars}){n_spaces_pipe_n_spaces}$" - ) - - return re.compile(regex_string) - - def _filter_matches( - self, lines: List[str], two_col_org_row: Pattern[str] - ) -> Generator[dict, None, None]: - for line in lines: - match = two_col_org_row.match(line).groupdict() - if match.get("term") and match.get("definition"): - yield match - - -class TechTerms: - # shared across all instances - TERMS = {} - ADD_GITHUB_CHANCE = 0.25 - - def __init__(self, channel: str, user: str, input_text: str, app): - - self.channel_id = channel - self.user_id = user - self.input_text = self.remove_tech(input_text) - self.app = app - self.response_params = None - - def remove_tech(self, initial_input): - return initial_input.split("!tech", 1)[1] - - async def grab_values(self) -> dict: - if not self.input_text: - return {"message": {"text": self._help_text(), "channel": self.channel_id}} - - else: - if not self.response_params: - await self._parse_input() - - if self.input_text: - return {"message": self._grab_term(term=self.input_text)} - - return {"message": self._grab_term()} - - async def _parse_input(self) -> None: - grabber = TechTermsGrabber(self.app) - self.TERMS = await grabber.get_terms() - - def _help_text(self): - return ( - "Use this to find descriptions of common and useful tech terms. Examples:\n" - + '"!tech Java" or "!tech prolog"' - + self._source_text() - ) - - def _source_text(self): - return ( - "\nTech Terms source: " - ) - - def _convert_key_to_dict(self, key: str, random_val: bool = False) -> dict: - return {"term": key, "random": random_val, "definition": f"{self.TERMS[key]}"} - - def _grab_term(self, term=None): - if term and self.TERMS.get(term.lower().strip()): - term_key: str = term.lower().strip() - return self._build_response_text(self._convert_key_to_dict(term_key)) - - return self._build_response_text(self._random_term()) - - def _build_response_text(self, term: dict) -> dict: - return {"channel": self.channel_id, "text": self._serialize_term(term)} - - def _random_term(self) -> dict: - item = choice(list(self.TERMS.keys())) - return self._convert_key_to_dict(item, random_val=True) - - def _serialize_term(self, term: Dict[str, str]) -> str: - random_text = "Selected random term:\n" - addnl = self._source_text() if random() < self.ADD_GITHUB_CHANCE else "" - - return f'{random_text if term["random"] else ""} {term["definition"]}{addnl}' diff --git a/pybot/endpoints/slack/messages.py b/pybot/endpoints/slack/messages.py deleted file mode 100644 index 04a3a1e..0000000 --- a/pybot/endpoints/slack/messages.py +++ /dev/null @@ -1,98 +0,0 @@ -import logging - -from sirbot import SirBot -from slack import methods -from slack.events import Message - -from .message_templates.tech import TechTerms -from .utils import BOT_URL - -logger = logging.getLogger(__name__) - - -def create_endpoints(plugin): - plugin.on_message(r".*", message_changed, subtype="message_changed") - plugin.on_message(r".*", message_deleted, subtype="message_deleted") - plugin.on_message(r".*\!tech", tech_tips) - plugin.on_message(r".*\<\!here\>", here_bad) - plugin.on_message(r".*\<\!channel\>", here_bad) - plugin.on_message(r".*\!pybot", advertise_pybot) - - -def not_bot_message(event: Message): - return ( - "message" not in event - or "subtype" not in event["message"] - or event["message"]["subtype"] != "bot_message" - ) - - -def not_bot_delete(event: Message): - return "previous_message" in event and "bot_id" not in event["previous_message"] - - -async def advertise_pybot(event: Message, app: SirBot): - response = dict( - channel=event["channel"], - text=f"OC-Community-Bot is a community led project\n <{BOT_URL}|source> ", - ) - - await app.plugins["slack"].api.query(methods.CHAT_POST_MESSAGE, data=response) - - -async def here_bad(event: Message, app: SirBot) -> None: - if "channel_type" in event and event["channel_type"] != "im": - user = event.get("user") - user_id = f"<@{user}>" if user else "Hey you" - await app.plugins["slack"].api.query( - methods.CHAT_POST_MESSAGE, - data=dict( - channel=event["channel"], - text=f"{user_id} - this had better be important!", - ), - ) - - -async def tech_tips(event: Message, app: SirBot): - if not_bot_message(event): - logger.info(f"tech tips logging: {event}") - try: - tech_terms = await TechTerms( - event["channel"], event["user"], event.get("text"), app - ).grab_values() - await app.plugins["slack"].api.query( - methods.CHAT_POST_MESSAGE, tech_terms["message"] - ) - - except Exception: - logger.debug(f"Exception thrown while logging message_changed {event}") - - -async def message_changed(event: Message, app: SirBot): - """ - Logs all message edits not made by a bot. - """ - try: - # need to check for bot_delete as deletes with replies that - # result in a "tombstone" also send as edits - if not_bot_message(event) and not_bot_delete(event): - logger.info( - f'CHANGE_LOGGING: edited: {event["ts"]} for user: {event["previous_message"]["user"]}\n{event}' - ) - except ValueError as e: - logger.debug( - f"Exception thrown while logging message_changed. Event: {event} || Error: {e}" - ) - - -async def message_deleted(event: Message, app: SirBot): - """ - Logs all message deletions not made by a bot. - """ - try: - if not_bot_delete(event): - logger.info(f'CHANGE_LOGGING: deleted: {event["ts"]}\nEvent: {event}') - except ValueError as e: - logger.debug( - f"Exception thrown while logging message_deleted. Event: {event} || Error: {e}" - ) diff --git a/pybot/endpoints/slack/utils/__init__.py b/pybot/endpoints/slack/utils/__init__.py deleted file mode 100644 index 69e0088..0000000 --- a/pybot/endpoints/slack/utils/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -import os - -BOT_USER_OAUTH_ACCESS_TOKEN = os.environ.get("BOT_USER_OAUTH_ACCESS_TOKEN") -BOT_OAUTH_TOKEN = os.environ.get("BOT_OAUTH_TOKEN") -BOT_OATH_TOKEN = os.environ.get("BOT_OATH_TOKEN") -MENTOR_CHANNEL = os.environ.get("MENTOR_CHANNEL", "mentors-internal") -COMMUNITY_CHANNEL = os.environ.get("COMMUNITY_CHANNEL", "greetings") -MODERATOR_CHANNEL = os.environ.get("MODERATOR_CHANNEL", "moderators") -OPS_CHANNEL = os.environ.get("OPS_CHANNEL", "oc-ops") -SLACK_BOT_USER_ID = os.environ.get("SLACK_BOT_USER_ID", "ABC123") -SLACK_BOT_ID = os.environ.get("SLACK_BOT_ID", "ABC123") -YELP_TOKEN = os.environ.get("YELP_TOKEN", "token") -PORT = os.environ.get("SIRBOT_PORT", 5000) -HOST = os.environ.get("SIRBOT_ADDR", "0.0.0.0") -PYBOT_ENV = os.environ.get("PYBOT_ENV", "dev") -BACKEND_URL = os.environ.get("BACKEND_URL", "https://api.operationcode.org") -BACKEND_USERNAME = os.environ.get("BACKEND_USERNAME", "Pybot@test.test") -BACKEND_PASS = os.environ.get("BACKEND_PASS", "fakePassword") - -BOT_URL = "https://github.com/OperationCode/operationcode-pybot" - -slack_configs = { - "token": BOT_USER_OAUTH_ACCESS_TOKEN - or BOT_OAUTH_TOKEN - or BOT_OATH_TOKEN, # fallback for old values - "signing_secret": os.environ.get("SLACK_BOT_SIGNING_SECRET"), - "verify": os.environ.get("VERIFICATION_TOKEN"), - "bot_id": SLACK_BOT_ID, - "bot_user_id": SLACK_BOT_USER_ID, -} diff --git a/pybot/endpoints/slack/utils/action_messages.py b/pybot/endpoints/slack/utils/action_messages.py deleted file mode 100644 index 4ff97f0..0000000 --- a/pybot/endpoints/slack/utils/action_messages.py +++ /dev/null @@ -1,366 +0,0 @@ -import json -from time import time -from typing import List - -from pybot.endpoints.slack.utils import MODERATOR_CHANNEL - -TICKET_OPTIONS = { - "notStarted": "Not Started", - "inProgress": "In-progress", - "waitingOnUser": "Waiting on User", - "rejected": "Rejected", - "duplicate": "Mark as Duplicate", - "complete": "Complete", -} - - -def now(): - """ - This has to be pulled out into its own method so a mock can - be injected for testing purposes - """ - return int(time()) - - -def base_response(action): - response = { - "text": action["original_message"].get("text", None), - "channel": action["channel"]["id"], - "ts": action["message_ts"], - } - return response - - -def update_ticket_message(action, selected_value): - user = action["user"]["id"] - update_message = ( - f"<@{user}> updated status to {selected_value} at " - f"" - ) - return { - "text": update_message, - "channel": action["channel"]["id"], - "thread_ts": action["message_ts"], - } - - -def updated_ticket_status(action): - selected_option = action["actions"][0]["selected_options"][0] - selected_option["text"] = TICKET_OPTIONS[selected_option["value"]] - - updated_attachments = action["original_message"]["attachments"] - updated_attachments[0]["actions"][0]["selected_options"] = [selected_option] - response = {**base_response(action), "attachments": updated_attachments} - return response, selected_option - - -def ticket_attachments(action): - user_id = action["user"]["id"] - request_type = action["submission"]["type"] - email = action["submission"]["email"] - details = action["submission"]["details"] - attachments = [ - { - "text": "", - "callback_id": "ticket_status", - "response_type": "in_channel", - "fallback": "request details should have been here", - "fields": [ - {"title": "User", "value": f"<@{user_id}>", "short": True}, - {"title": "Email", "value": f"{email}", "short": True}, - {"title": "Request Type", "value": f"{request_type}", "short": True}, - {"title": "Details", "value": f"{details}", "short": True}, - ], - "actions": [ - { - "name": "status", - "text": "Current Status", - "type": "select", - "selected_options": [ - {"text": "Not Started", "value": "notStarted"} - ], - "options": [ - {"text": text, "value": value} - for value, text in TICKET_OPTIONS.items() - ], - } - ], - }, - not_claimed_attachment(), - ] - return attachments - - -def greeted_attachment(user_id: str) -> List[dict]: - return [ - { - "text": f":100:<@{user_id}> has greeted the new user!:100:\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "greeted", - "attachment_type": "default", - "actions": [ - { - "name": "reset_greet", - "text": "Reset claim", - "type": "button", - "style": "danger", - "value": "reset_greet", - } - ], - } - ] - - -def not_greeted_attachment(): - return [ - { - "text": "", - "fallback": "Someone should greet them!", - "color": "#3AA3E3", - "callback_id": "greeted", - "attachment_type": "default", - "actions": [ - { - "name": "greeted", - "text": "I will greet them!", - "type": "button", - "style": "primary", - "value": "greeted", - } - ], - } - ] - - -def direct_messaged_attachment(user_id: str) -> List[dict]: - return [ - { - "text": f":100:<@{user_id}> has DMed the new user!:100:\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "messaged", - "attachment_type": "default", - "actions": [ - { - "name": "reset_message", - "text": f"Reset DM", - "type": "button", - "style": "danger", - "value": "reset_message", - } - ], - } - ] - - -def not_direct_messaged_attachment(): - return [ - { - "text": "", - "fallback": "Someone should DM them!", - "color": "#3AA3E3", - "callback_id": "messaged", - "attachment_type": "default", - "actions": [ - { - "name": "messaged", - "text": "I will DM them!", - "type": "button", - "style": "primary", - "value": "messaged", - } - ], - } - ] - - -def not_claimed_attachment(): - return { - "text": "", - "fallback": "not claimed attachment", - "color": "#3AA3E3", - "callback_id": "claimed", - "attachment_type": "default", - "short": True, - "actions": [ - { - "name": "claimed", - "text": "Claim", - "type": "button", - "style": "primary", - "value": "claimed", - } - ], - } - - -def claimed_attachment(user_id): - return { - "text": f"Claimed by <@{user_id}>\n" - f"", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "claimed", - "attachment_type": "default", - "actions": [ - { - "name": "reset_claim", - "text": "Reset claim", - "type": "button", - "style": "danger", - "value": "reset_claim", - } - ], - } - - -def reset_greet_message(user_id): - return ( - f"Reset by <@{user_id}> at" - f" " - ) - - -def suggestion_dialog(trigger_id): - return { - "callback_id": "suggestion_modal", - "title": "Help topic suggestion", - "submit_label": "Submit", - "trigger_id": trigger_id, - "elements": [ - { - "type": "text", - "label": "Suggestion", - "name": "suggestion", - "placeholder": "Underwater Basket Weaving", - } - ], - } - - -def report_dialog(action): - trigger_id = action["trigger_id"] - - user = action["message"].get("user") or action["message"].get( - "username" - ) # for bots - message_data = { - "text": action["message"]["text"], - "user": user, - "channel": action["channel"], - } - return { - "callback_id": "report_dialog", - "state": json.dumps(message_data), - "title": "Report details", - "submit_label": "Submit", - "trigger_id": trigger_id, - "elements": [ - { - "type": "textarea", - "label": "Details", - "name": "details", - "placeholder": "", - "required": False, - } - ], - } - - -def build_report_message(slack_id, details, message_details): - message = f"<@{slack_id}> sent a report with details: {details}" - - attachment = [ - { - "fields": [ - { - "title": "User", - "value": f"<@{message_details['user']}>", - "short": True, - }, - { - "title": "Channel", - "value": f"<#{message_details['channel']['id']}|{message_details['channel']['name']}>", - "short": True, - }, - {"title": "Message", "value": message_details["text"], "short": False}, - ] - }, - not_claimed_attachment(), - ] - - return {"text": message, "channel": MODERATOR_CHANNEL, "attachments": attachment} - - -def mentor_details_dialog(action, cur_details): - trigger_id = action["trigger_id"] - ts = action["message"]["ts"] - - return { - "callback_id": "mentor_details_submit", - "state": json.dumps({"ts": ts, "channel": action["channel"]["id"]}), - "title": "Additional Details", - "submit_label": "Submit", - "trigger_id": trigger_id, - "elements": [ - { - "type": "textarea", - "label": "Details", - "name": "details", - "placeholder": "", - "required": False, - "value": cur_details, - } - ], - } - - -def new_suggestion_text(user_id: str, suggestion: str) -> str: - return f":exclamation:<@{user_id}> just submitted a suggestion for a help topic:exclamation:\n-- {suggestion}" - - -HELP_MENU_RESPONSES = { - "slack": "Slack is an online chatroom service that the Operation Code community uses.\n" - "It can be accessed online, via https://operation-code.slack.com/ or via\n" - "desktop or mobile apps, located at https://slack.com/downloads/. In addition to\n" - "chatting, Slack also allows us to share files, audio conference and even program\n" - "our own bots! Here are some tips to get you started:\n" - " - You can customize your notifications per channel by clicking the gear to the\n" - " left of the search box\n" - " - Join as many channels as you want via the + next to Channels in the side bar.", - "python": "Python is a widely used high-level programming language used for general-purpose programming.\n" - "It's very friendly for beginners and is great for everything from web development to \n" - "data science.\n\n" - "Here are some python resources:\n" - " Operation Code Python Room: <#C04D6M3JT|python>\n" - " Python's official site: https://www.python.org/\n" - " Learn Python The Hard Way: https://learnpythonthehardway.org/book/\n" - " Automate The Boring Stuff: https://automatetheboringstuff.com/", - "mentor": "The Operation Code mentorship program aims to pair you with an experienced developer in order to" - " further your programming or career goals. When you sign up for our mentorship program you'll fill" - " out a form with your interests. You'll then be paired up with an available mentor that best meets" - " those interests.\n\n" - "If you're interested in getting paired with a mentor, please fill out our sign up form" - " here: http://op.co.de/mentor-request.\n ", - "javascript": "Javascript is a high-level programming language used for general-purpose programming.\n" - "In recent years it has exploded in popularity and with the popular node.js runtime\n" - "environment it can run anywhere from the browser to a server.\n\n" - "Here are some javascript resources:\n Operation Code Javascript Room: <#C04CJ8H2S|javascript>\n" - " Javascript Koans: https://github.com/mrdavidlaing/javascript-koans\n" - " Eloquent Javascript: http://eloquentjavascript.net/\n" - " Node School: http://nodeschool.io/\n" - " Node University: http://node.university/courses", - "ruby": "Ruby is one of the most popular languages to learn as a beginner.\n" - "While it can be used in any situation it's most popular for it's\n" - "web framework 'Rails' which allows people to build websites quickly \n" - "and easily.\n\n" - "Here are some ruby resources:\n" - " Operation Code Ruby Room: <#C04D6GTGT|ruby>\n" - " Try Ruby Online: http://tryruby.org/\n" - " Learn Ruby The Hard Way: http://ruby.learncodethehardway.org/book\n" - " Learn To Program: http://pine.fm/LearnToProgram/\n" - " Ruby Koans: http://rubykoans.com/", -} diff --git a/pybot/endpoints/slack/utils/command_utils.py b/pybot/endpoints/slack/utils/command_utils.py deleted file mode 100644 index 6d6dec4..0000000 --- a/pybot/endpoints/slack/utils/command_utils.py +++ /dev/null @@ -1,20 +0,0 @@ -from slack import methods - -from pybot.endpoints.slack.utils.slash_repeat import repeat_items - - -def get_slash_repeat_messages(user_id, channel, arguments): - response_type = { - "ephemeral": methods.CHAT_POST_EPHEMERAL, - "message": methods.CHAT_POST_MESSAGE, - } - - values_dict = repeat_items(arguments, user_id, channel) - return response_type[values_dict["type"]], values_dict["message"] - - -def action_value(attachment): - action = attachment["actions"][0] - if "selected_options" in action: - return action["selected_options"][0]["value"] - return "" diff --git a/pybot/endpoints/slack/utils/event_messages.py b/pybot/endpoints/slack/utils/event_messages.py deleted file mode 100644 index 709de9a..0000000 --- a/pybot/endpoints/slack/utils/event_messages.py +++ /dev/null @@ -1,124 +0,0 @@ -from typing import List - - -def team_join_initial_message(user_id: str) -> str: - return ( - f"Hi <@{user_id}>,\n\n" - "Welcome to Operation Code! I'm a bot designed to help answer questions and " - "get you on your way in our community.\n\n " - "Our goal here at Operation Code is to get veterans and their families started on the path to a career " - "in programming. We do that through providing you with scholarships, mentoring, career development " - "opportunities, conference tickets, and more!\n" - ) - - -def second_team_join_message() -> str: - return ( - "Much of the provided aid requires veteran or military spouse status. Please verify your status on " - "your profile at https://operationcode.org/ if you haven't already.\n\n" - "You're currently in Slack, a chat application that serves as the hub of Operation Code. " - "If you're visiting us via your browser, Slack provides a stand alone program to make staying in " - "touch even more convenient.\n\n" - "All active Operation Code projects are located on our source control repository. " - "Our projects can be viewed on GitHub\n\n" - "Lastly, please take a moment to review our Code of Conduct." - ) - - -def third_team_join_message() -> str: - return f"If this is your first time using Slack, please watch this to get familiar with the app." - - -def delayed_team_join_message() -> str: - return ( - f"Welcome to Operation Code's Slack Community, we're glad you're here! " - f"Please share with us in #general what brings you to Operation Code, " - f"and how we can assist you. Also, consider adding to your Operation Code " - f"profile the links to your LinkedIn and GitHub accounts. " - f"Lastly, consider connecting with us on our social media accounts: " - f", " - f", " - f", " - f" and " - f"" - f", and contribute to our open source platform on " - f". If you have any immediate needs, " - f"please tag our @outreach-team in any public channel. " - ) - - -def external_button_attachments() -> List[dict]: - return [ - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "external_buttons", - "attachment_type": "default", - "actions": [ - { - "name": "github", - "text": "GitHub", - "type": "button", - "value": "github", - "url": "https://github.com/OperationCode", - }, - { - "name": "download", - "text": "Slack Client", - "type": "button", - "value": "download", - "url": "https://slack.com/downloads", - }, - { - "name": "code_of_conduct", - "text": "Code of Conduct", - "type": "button", - "value": "code_of_conduct", - "url": "https://github.com/OperationCode/community/blob/master/code_of_conduct.md", - }, - ], - } - ] - - -def base_resources(): - return [ - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "resource_buttons", - "attachment_type": "default", - "actions": [ - { - "name": "javascript", - "text": "JavaScript", - "type": "button", - "value": "javascript", - }, - { - "name": "python", - "text": "Python", - "type": "button", - "value": "python", - }, - {"name": "ruby", "text": "Ruby", "type": "button", "value": "ruby"}, - ], - }, - { - "text": "", - "fallback": "", - "color": "#3AA3E3", - "callback_id": "suggestion", - "attachment_type": "default", - "actions": [ - { - "name": "suggestion_button", - "text": "Are we missing something? Click!", - "type": "button", - "value": "suggestion_button", - } - ], - }, - ] diff --git a/pybot/endpoints/slack/utils/event_utils.py b/pybot/endpoints/slack/utils/event_utils.py deleted file mode 100644 index 6d810c3..0000000 --- a/pybot/endpoints/slack/utils/event_utils.py +++ /dev/null @@ -1,144 +0,0 @@ -import logging -from typing import Dict, List, Tuple - -from aiohttp import ClientSession -from slack import methods -from slack.events import Message -from slack.io.abc import SlackAPI - -from pybot.endpoints.slack.utils import ( - BACKEND_PASS, - BACKEND_URL, - BACKEND_USERNAME, - COMMUNITY_CHANNEL, -) -from pybot.endpoints.slack.utils.action_messages import ( - not_direct_messaged_attachment, - not_greeted_attachment, -) -from pybot.endpoints.slack.utils.event_messages import ( - base_resources, - external_button_attachments, - second_team_join_message, - team_join_initial_message, - delayed_team_join_message, - third_team_join_message, -) - -logger = logging.getLogger(__name__) - - -def base_user_message(user_id: str) -> Message: - message = Message() - message["channel"] = user_id - message["as_user"] = True - return message - - -def build_messages( - user_id, -) -> Tuple[Message, Message, Message, Message, Message, Message]: - initial_message = base_user_message(user_id) - initial_message["text"] = team_join_initial_message(user_id) - - second_message = base_user_message(user_id) - second_message["text"] = second_team_join_message() - second_message["attachments"] = external_button_attachments() - - third_message = base_user_message(user_id) - third_message["text"] = third_team_join_message() - - action_menu = base_user_message(user_id) - action_menu["text"] = "We recommend the following resources." - action_menu["attachments"] = base_resources() - - community_message = Message() - community_message["text"] = f":tada: <@{user_id}> has joined! :tada:" - community_message["attachments"] = not_greeted_attachment() - community_message["channel"] = COMMUNITY_CHANNEL - - outreach_team_message = Message() - outreach_team_message["text"] = ( - f":spiral_note_pad: Outreach Team: Please reach out to <@{user_id}> via DM" - f":spiral_note_pad: " - ) - outreach_team_message["attachments"] = not_direct_messaged_attachment() - outreach_team_message["channel"] = COMMUNITY_CHANNEL - - return ( - initial_message, - second_message, - third_message, - action_menu, - community_message, - outreach_team_message, - ) - - -def build_delayed_messages(user_id) -> Tuple[Message]: - social_media_message = base_user_message(user_id) - social_media_message["text"] = delayed_team_join_message() - - return (social_media_message,) - - -async def send_user_greetings( - user_messages: List[Message], slack_api: SlackAPI -) -> None: - for message in user_messages: - await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=message) - - -async def send_community_notification( - community_message: Message, slack_api: SlackAPI -) -> dict: - return await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=community_message) - - -async def send_social_cta( - social_media_messages: List[Message], slack_api: SlackAPI -) -> None: - for message in social_media_messages: - await slack_api.query(url=methods.CHAT_POST_MESSAGE, data=message) - - -async def link_backend_user( - slack_id: str, - auth_header: Dict[str, str], - slack_api: SlackAPI, - session: ClientSession, -) -> None: - """ - Updates the slack user with their profile in the backend - """ - - user_info = await slack_api.query(methods.USERS_INFO, {"user": slack_id}) - email = user_info["user"]["profile"]["email"] - - async with session.patch( - f"{BACKEND_URL}/auth/profile/admin/", - headers=auth_header, - params={"email": email}, - json={"slackId": slack_id}, - ) as response: - data = await response.json() - logger.info(f"Backend response from user linking: {data}") - - -async def get_backend_auth_headers(session: ClientSession) -> Dict[str, str]: - """ - Authenticates with the OC Backend server - - :return: Authorization header containing the returned JWT - """ - async with session.post( - f"{BACKEND_URL}/auth/login/", - json={"email": BACKEND_USERNAME, "password": BACKEND_PASS}, - ) as response: - if 400 <= response.status: - logger.exception("Failed to authenticate with backend") - return {} - response.raise_for_status() - data = await response.json() - headers = {"Authorization": f"Bearer {data['token']}"} - return headers diff --git a/pybot/endpoints/slack/utils/general_utils.py b/pybot/endpoints/slack/utils/general_utils.py deleted file mode 100644 index 5399856..0000000 --- a/pybot/endpoints/slack/utils/general_utils.py +++ /dev/null @@ -1,42 +0,0 @@ -import functools - -from sirbot import SirBot -from slack.commands import Command -from slack.exceptions import SlackAPIError -from slack.methods import Methods - - -def catch_command_slack_error(func): - """ - Decorator for wrapping/catching exceptions thrown by - the slack client and displaying an error to the user. - - Only necessary (for now) for functions that post messages to - slack channels - """ - - @functools.wraps(func) - async def handler(command: Command, app: SirBot, *args, **kwargs): - try: - await func(command, app, *args, **kwargs) - - except SlackAPIError: - channel_id = command["channel_id"] - slash_command = command["command"] - slack_id = command["user_id"] - slack = app["plugins"]["slack"] - - await slack.api.query( - Methods.CHAT_POST_EPHEMERAL, - dict( - user=slack_id, - channel=slack_id, - as_user=True, - text=( - f"Could not post result of `{slash_command}` " - f"to channel <#{channel_id}>" - ), - ), - ) - - return handler diff --git a/pybot/endpoints/slack/utils/slash_lunch.py b/pybot/endpoints/slack/utils/slash_lunch.py deleted file mode 100644 index 250ce90..0000000 --- a/pybot/endpoints/slack/utils/slash_lunch.py +++ /dev/null @@ -1,124 +0,0 @@ -import logging -from random import randint -from typing import List - -from zipcodes import is_real - -from pybot.endpoints.slack.utils import YELP_TOKEN - -logger = logging.getLogger(__name__) - - -class LunchCommand: - DEFAULT_LUNCH_DISTANCE = 20 - MIN_LUNCH_RANGE = 1 - AUTH_HEADER = {"Authorization": f"Bearer {YELP_TOKEN}"} - - def __init__(self, channel: str, user: str, input_text: str, user_name: str): - - self.channel_id = channel - self.user_id = user - self.input_text = input_text - self.user_name = user_name - - self.lunch_api_params = self._parse_input() - - def get_yelp_request(self): - return { - "url": "https://api.yelp.com/v3/businesses/search", - "params": self.lunch_api_params, - "headers": self.AUTH_HEADER, - } - - def select_random_lunch(self, lunch_response: dict) -> dict: - location_count = len(lunch_response["businesses"]) - - selected_location = randint(0, location_count - 1) - location = lunch_response["businesses"][selected_location] - - logger.info(f"location selected for {self.user_name}: {location}") - - return self._build_response_text(location) - - # TODO: add test cases for various inputs - # TODO: allow user to set defaults - def _parse_input(self) -> dict: - if not self.input_text: - return { - "location": self._random_zip(), - "range": self._convert_to_meters(self.DEFAULT_LUNCH_DISTANCE), - "term": "lunch", - } - - else: - split_items = self.input_text.split() - zipcode = self._get_zipcode(split_items[0]) - distance = self._get_distance(split_items) - return {"location": zipcode, "range": distance, "term": "lunch"} - - def _get_distance(self, split_items: List[str]): - distance_index = min(len(split_items), 2) - 1 - - str_distance = split_items[distance_index] - distance = self._convert_max_distance(str_distance) - - if not self._within_lunch_range(distance): - distance = self.DEFAULT_LUNCH_DISTANCE - - return self._convert_to_meters(distance) - - def _build_response_text(self, loc_dict: dict) -> dict: - return { - "user": self.user_id, - "channel": self.channel_id, - "text": ( - f'The Wheel of Lunch has selected {loc_dict["name"]} ' - + f'at {" ".join(loc_dict["location"]["display_address"])}' - ), - } - - @classmethod - def _get_zipcode(cls, zipcode: str) -> int: - try: - - if is_real(zipcode): - return int(zipcode) - except TypeError: - pass - - return cls._random_zip() - - @staticmethod - def _random_zip() -> int: - """ - Because what doesn't matter is close food but good food - :return: zip_code - :rtype: str - """ - random_zip = 0 - while not is_real(str(random_zip)): - range_start = 10 ** 4 - range_end = (10 ** 5) - 1 - random_zip = randint(range_start, range_end) - - return random_zip - - def _within_lunch_range(self, input_number: int) -> bool: - return input_number <= self.DEFAULT_LUNCH_DISTANCE - - def _convert_max_distance(self, user_param: str) -> int: - - try: - distance = int(user_param) - - if distance < 0: - distance = abs(distance) - - return max(distance, self.MIN_LUNCH_RANGE) - - except ValueError: - return self.DEFAULT_LUNCH_DISTANCE - - @classmethod - def _convert_to_meters(cls, distance): - return int(distance * 1609.34) diff --git a/pybot/endpoints/slack/utils/slash_repeat.py b/pybot/endpoints/slack/utils/slash_repeat.py deleted file mode 100644 index 45ba2a6..0000000 --- a/pybot/endpoints/slack/utils/slash_repeat.py +++ /dev/null @@ -1,101 +0,0 @@ -from typing import Iterable - - -# TODO: use the github api to find the file even if location changes -def find_resources() -> dict: - return { - "link": "https://operationcode.org/resources", - "title": "A searchable database of learning resources", - "pretext": "Would you like some learning resources?", - } - - -def ask() -> dict: - return { - "link": "http://sol.gfxile.net/dontask.html", - "title": "Asking Questions", - "pretext": "You can just ask, we're all here to help", - } - - -def default_repeat_message(message_options: Iterable) -> str: - return "That is not a valid option valid options are:\n " + "".join( - [f'->\t"{key}"\n' for key in message_options] - ) - - -def modify_params(modify_options: dict) -> dict: - message = { - "channel": modify_options["channel_id"], - "attachments": [ - { - "pretext": "Text before block", - "title": "Text of link", - "title_link": "https://groove.hq/path/to/ticket/1943", - } - ], - } - - message["attachments"][0]["pretext"] = ( - f'<{modify_options["arguments"][1]}>: {modify_options["pretext"]} (sent by: <@{modify_options["slack_id"]}>)' - if len(modify_options["arguments"]) >= 2 - else f'<@{modify_options["slack_id"]}>: {modify_options["pretext"]}' - ) - message["attachments"][0]["title_link"] = modify_options["link"] - - return message - - -def repeat_items(arguments: list, slack_id: str, channel_id: str) -> dict: - # TODO: get better way of only showing unique values - # for keys instead of my wonky way of adding more options - messages = { - "10000": { - "link": "https://xkcd.com/1053/", - "title": "XKCD: lucky", - "pretext": "Looks like you're one of the lucky 10,000 today!", - }, - "ask": ask(), - "asking": ask(), - "ldap": { - "link": "http://large-type.com/#yes", - "title": "Is someone complaining about LDAP?", - "pretext": "What's that I hear about LDAP?", - }, - "merge": { - "link": "http://large-type.com/#WILL", - "title": "Who is that force merging to master?", - "pretext": "git push -f origin master", - }, - "firstpr": { - "link": "https://goo.gl/forms/r02wt0pBNhkxYciI3", - "title": "Get your sticker here!", - "pretext": ":firstpr:", - }, - "channels": { - "link": "https://github.com/OperationCode/operationcode_docs/blob/master/community/slack_channel_guide.md", - "title": "Channel Guide!", - "pretext": "Check out the Channel Guide!", - }, - # TODO: make this into a url call. - "resources": find_resources(), - "resource": find_resources(), - } - - modify_options = messages.get(arguments[0].lower()) - - if modify_options: - modify_options["slack_id"] = slack_id - modify_options["channel_id"] = channel_id - modify_options["arguments"] = arguments - - return {"type": "message", "message": modify_params(modify_options)} - else: - return { - "type": "ephemeral", - "message": { - "channel": channel_id, - "user": slack_id, - "text": default_repeat_message(messages.keys()), - }, - } diff --git a/pybot/plugins/__init__.py b/pybot/plugins/__init__.py deleted file mode 100644 index 9833b8a..0000000 --- a/pybot/plugins/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .airtable import AirtablePlugin -from .api import APIPlugin diff --git a/pybot/plugins/airtable/__init__.py b/pybot/plugins/airtable/__init__.py deleted file mode 100644 index 82e39ce..0000000 --- a/pybot/plugins/airtable/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .plugin import AirtablePlugin diff --git a/pybot/plugins/airtable/api.py b/pybot/plugins/airtable/api.py deleted file mode 100644 index 74db32a..0000000 --- a/pybot/plugins/airtable/api.py +++ /dev/null @@ -1,146 +0,0 @@ -import logging -from collections import defaultdict - -from multidict import MultiDict - -logger = logging.getLogger(__name__) - - -class AirtableAPI: - API_ROOT = "https://api.airtable.com/v0/" - record_id_to_name = defaultdict(dict) - - def __init__(self, session, api_key, base_key): - self.session = session - self.api_key = api_key - self.base_key = base_key - - async def get(self, url, **kwargs): - auth_header = {"Authorization": f"Bearer {self.api_key}"} - - async with self.session.get(url, headers=auth_header, **kwargs) as r: - return await r.json() - - async def patch(self, url, **kwargs): - auth_header = {"authorization": f"Bearer {self.api_key}"} - async with self.session.patch(url, headers=auth_header, **kwargs) as r: - r.raise_for_status() - return await r.json() - - async def post(self, url, **kwargs): - auth_header = {"authorization": f"Bearer {self.api_key}"} - async with self.session.post(url, headers=auth_header, **kwargs) as r: - return await r.json() - - async def _depaginate_records(self, url, params, offset): - records = [] - while offset: - params["offset"] = offset - response = await self.get(url, params=params) - records.extend(response["records"]) - offset = response.get("offset") - - return records - - def table_url(self, table_name, record_id=None): - url = f"{self.API_ROOT}{self.base_key}/{table_name}" - if record_id: - url += f"/{record_id}" - return url - - async def get_name_from_record_id(self, table_name: str, record_id): - if self.record_id_to_name[table_name]: - return self.record_id_to_name[table_name][record_id] - - url = self.table_url("Services") - params = {"fields[]": "Name"} - res_json = await self.get(url, params=params) - records = res_json["records"] - self.record_id_to_name[table_name] = { - record["id"]: record["fields"]["Name"] for record in records - } - return self.record_id_to_name[table_name][record_id] - - async def get_row_from_record_id(self, table_name: str, record_id: str) -> dict: - url = self.table_url(table_name, record_id) - try: - res_json = await self.get(url) - return res_json["fields"] - except Exception as ex: - logger.exception( - f"Couldn't get row from record id {record_id} in {table_name}", ex - ) - return {} - - async def get_all_records(self, table_name, field=None): - url = self.table_url(table_name) - if field: - params = {"fields[]": field} - res_json = await self.get(url, params=params) - return [record["fields"][field] for record in res_json["records"]] - else: - res_json = await self.get(url) - return res_json["records"] - - async def find_mentors_with_matching_skillsets(self, skillsets): - url = self.table_url("Mentors") - params = MultiDict( - [("fields", "Email"), ("fields", "Skillsets"), ("fields", "Slack Name")] - ) - skillsets = skillsets.split(",") - response = await self.get(url, params=params) - offset = response.get("offset") - mentors = response["records"] - - if offset: - additional_mentors = await self._depaginate_records(url, params, offset) - mentors.extend(additional_mentors) - - partial_match = [] - complete_match = [] - try: - for mentor in mentors: - if all( - skillset in mentor["fields"].get("Skillsets", []) - for skillset in skillsets - ): - complete_match.append(mentor["fields"]) - if any( - mentor["fields"] not in complete_match - and skillset in mentor["fields"].get("Skillsets", []) - for skillset in skillsets - ): - partial_match.append(mentor["fields"]) - except Exception as e: - logger.exception( - "Exception while trying to find filter mentors by skillset", e - ) - return [] - - if len(complete_match) < 5: - complete_match += partial_match - - return complete_match or partial_match - - async def find_records(self, table_name: str, field: str, value: str) -> list: - url = self.table_url(table_name) - - params = {"filterByFormula": f"FIND(LOWER('{value}'), LOWER({{{field}}}))"} - - try: - response = await self.get(url, params=params) - return response["records"] - except Exception as ex: - logger.exception( - f"Exception when attempting to get {field} from {table_name}.", ex - ) - return [] - - async def update_request(self, request_record, mentor_id): - url = self.table_url("Mentor Request", request_record) - data = {"fields": {"Mentor Assigned": [mentor_id] if mentor_id else None}} - return await self.patch(url, json=data) - - async def add_record(self, table, json): - url = self.table_url(table) - return await self.post(url, json=json) diff --git a/pybot/plugins/airtable/endpoints.py b/pybot/plugins/airtable/endpoints.py deleted file mode 100644 index 2613f25..0000000 --- a/pybot/plugins/airtable/endpoints.py +++ /dev/null @@ -1,53 +0,0 @@ -import asyncio -import logging - -from aiohttp.web_response import Response - -logger = logging.getLogger(__name__) - - -async def incoming_request(request): - airtable = request.app.plugins["airtable"] - payload = await request.json() - logger.debug("Incoming Airtable event payload: %s", payload) - - if payload["token"] != airtable.verify: - return Response(status=401) - - futures = list(_dispatch(airtable.routers["request"], payload, request.app)) - if futures: - return await _wait_and_check_result(futures) - return Response(status=200) - - -def _dispatch(router, event, app): - for handler, configuration in router.dispatch(event): - f = asyncio.ensure_future(handler(event, app)) - if configuration["wait"]: - yield f - else: - f.add_done_callback(_callback) - - -def _callback(f): - try: - f.result() - except Exception as e: - logger.exception(e) - - -async def _wait_and_check_result(futures): - dones, _ = await asyncio.wait(futures, return_when=asyncio.ALL_COMPLETED) - try: - results = [done.result() for done in dones] - except Exception as e: - logger.exception(e) - return Response(status=500) - - results = [result for result in results if isinstance(result, Response)] - if len(results) > 1: - logger.warning("Multiple web.Response for handler, returning none") - elif results: - return results[0] - - return Response(status=200) diff --git a/pybot/plugins/airtable/plugin.py b/pybot/plugins/airtable/plugin.py deleted file mode 100644 index c5307a7..0000000 --- a/pybot/plugins/airtable/plugin.py +++ /dev/null @@ -1,55 +0,0 @@ -import asyncio -import logging -import os -from collections import defaultdict - -from pybot.plugins.airtable import endpoints -from pybot.plugins.airtable.api import AirtableAPI - -logger = logging.getLogger(__name__) - - -class AirtablePlugin: - __name__ = "airtable" - - def __init__(self): - self.session = None # set lazily on plugin load - self.api_key = None - self.base_key = None - self.api = None - self.verify = None - - self.routers = {"request": RequestRouter()} - - def load(self, sirbot, api_key=None, base_key=None, verify=None): - self.session = sirbot.http_session - self.api_key = api_key or os.environ.get("AIRTABLE_API_KEY", "") - self.base_key = base_key or os.environ.get("AIRTABLE_BASE_KEY", "") - self.verify = verify or os.environ.get("AIRTABLE_VERIFY", "") - - self.api = AirtableAPI(self.session, self.api_key, self.base_key) - - sirbot.router.add_route("POST", "/airtable/request", endpoints.incoming_request) - - def on_request(self, request, handler, **kwargs): - if not asyncio.iscoroutinefunction(handler): - handler = asyncio.coroutine(handler) - options = {**kwargs, "wait": False} - self.routers["request"].register(request, (handler, options)) - - -class RequestRouter: - def __init__(self): - self._routes = defaultdict(list) - - def register(self, request_type, handler, **detail): - logger.info("Registering %s, %s to %s", request_type, detail, handler) - self._routes[request_type].append(handler) - - def dispatch(self, request): - logger.debug('Dispatching request "%s"', request.get("type")) - if request["type"] in self._routes: - for handler in self._routes.get(request["type"]): - yield handler - else: - return diff --git a/pybot/plugins/api/__init__.py b/pybot/plugins/api/__init__.py deleted file mode 100644 index 1c3af52..0000000 --- a/pybot/plugins/api/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .plugin import APIPlugin diff --git a/pybot/plugins/api/endpoints.py b/pybot/plugins/api/endpoints.py deleted file mode 100644 index f740ea8..0000000 --- a/pybot/plugins/api/endpoints.py +++ /dev/null @@ -1,52 +0,0 @@ -import asyncio -import json -import logging - -from aiohttp.web_response import Response - -from pybot.plugins.api.request import FailedVerification, SlackApiRequest - -logger = logging.getLogger(__name__) - - -async def slack_api(request): - api_plugin = request.app.plugins["api"] - - try: - slack_request = SlackApiRequest.from_request(request) - except FailedVerification: - logger.info(f"Failed verification to API route {request.url}.") - return Response(status=401) - - futures = list(_dispatch(api_plugin.routers["slack"], slack_request, request.app)) - - if futures: - return await _wait_and_check_result(futures) - return Response(status=200) - - -def _dispatch(router, event, app): - for handler, configuration in router.dispatch(event): - f = asyncio.ensure_future(handler(event, app)) - yield f - - -async def _wait_and_check_result(futures): - dones, _ = await asyncio.wait(futures, return_when=asyncio.ALL_COMPLETED) - try: - results = [done.result() for done in dones] - except Exception as e: - logger.exception(e) - return Response(status=500) - - if len(results) > 1: - logger.warning("Multiple web.Response for handler, returning none") - - elif results: - result = ( - results[0] - if isinstance(results[0], Response) - else Response(body=json.dumps(results[0])) - ) - - return result diff --git a/pybot/plugins/api/plugin.py b/pybot/plugins/api/plugin.py deleted file mode 100644 index 4e3061f..0000000 --- a/pybot/plugins/api/plugin.py +++ /dev/null @@ -1,49 +0,0 @@ -import asyncio -import logging -from collections import defaultdict - -from pybot.plugins.api import endpoints - -logger = logging.getLogger(__name__) - - -class APIPlugin: - __name__ = "api" - - def __init__(self): - self.session = None - self.routers = {"slack": SlackAPIRequestRouter()} - - def load(self, sirbot): - self.session = sirbot.http_session - - sirbot.router.add_route( - "GET", "/pybot/api/v1/slack/{resource}", endpoints.slack_api - ) - sirbot.router.add_route( - "POST", "/pybot/api/v1/slack/{resource}", endpoints.slack_api - ) - - def on_get(self, request, handler, **kwargs): - if not asyncio.iscoroutinefunction(handler): - handler = asyncio.coroutine(handler) - options = {**kwargs, "wait": False} - self.routers["slack"].register(request, (handler, options)) - - -class SlackAPIRequestRouter: - def __init__(self): - self._routes = defaultdict(list) - - def register(self, resource, handler, **detail): - logger.info(f"Registering {resource}, {detail} to {handler}") - self._routes[resource].append(handler) - - def dispatch(self, request): - resource = request.resource - logger.debug(f"Dispatching request {resource}") - if resource in self._routes: - for handler in self._routes.get(resource): - yield handler - else: - return diff --git a/pybot/plugins/api/request.py b/pybot/plugins/api/request.py deleted file mode 100644 index fa4554d..0000000 --- a/pybot/plugins/api/request.py +++ /dev/null @@ -1,88 +0,0 @@ -import copy -import os -from typing import MutableMapping - -BACKEND_AUTH_TOKEN = os.environ.get("BACKEND_AUTH_TOKEN", "devBackendToken") - - -class SlackApiRequest(MutableMapping): - """ - MutableMapping representing an api query request. Shamelessly stolen from pyslackers/slack-sansio - - Attributes: - resource: The resource the request was made for (i.e. the last part of the request url) - - query: Querystring params as a dict - - token: Bearer Token provided with request - """ - - auth_tokens = {BACKEND_AUTH_TOKEN} - - def __init__(self, raw_request, resource, query): - self.request = raw_request - self.resource = resource - self.query = query - self.token = self.__get_token(raw_request) - - if not self.authorized: - raise FailedVerification(self.token) - - @property - def authorized(self): - return self.token is not None and self.token in self.auth_tokens - - async def json(self): - if self.request.can_read_body: - return await self.request.json() - else: - return {} - - @classmethod - def from_request(cls, raw_request): - resource = raw_request.match_info["resource"] - query = raw_request.query - - return cls(raw_request, resource, query) - - @staticmethod - def __get_token(raw_request): - if "Authorization" in raw_request.headers: - auth_header = raw_request.headers["Authorization"] - if auth_header.startswith("Bearer "): - return auth_header[7:] - return None - - def __getitem__(self, item): - return self.request[item] - - def __setitem__(self, key, value): - self.request[key] = value - - def __delitem__(self, key): - del self.request[key] - - def __iter__(self): - return iter(self.request) - - def __len__(self): - return len(self.request) - - def __repr__(self): - return "API Request: " + str(self.request) - - def clone(self) -> "SlackApiRequest": - return self.__class__( - copy.deepcopy(self.request), - copy.deepcopy(self.resource), - copy.deepcopy(self.query), - ) - - -class FailedVerification(Exception): - """ - Raised when incoming API request fails verification - """ - - def __init__(self, token: str) -> None: - self.token = token diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 63f43a9..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,32 +0,0 @@ -[tool.poetry] -name = "operationcode-pybot" -version = "2.1" -description = "Operation Code's Official Slackbot" -authors = ["Allen Anthes "] -license = "MIT" - -[tool.poetry.dependencies] -python = "^3.7" -aiocontextvars = "^0.2.2" -cchardet = "^2.1.6" -cython = "^0.29.21" -python-dotenv = "^0.14.0" -pyyaml = "^5.4" -sentry-sdk = "^0.17.8" -sirbot = "^0.1.1" -zipcodes = "^1.1.3" - -[tool.poetry.dev-dependencies] -asynctest = "^0.13.0" -black = {version = "^20.8b1", allow-prereleases = true} -flake8 = "^3.8.3" -isort = "^4.3" -pytest = "^6.0.2" -pytest-aiohttp = "^0.3.0" -pytest-asyncio = "^0.14.0" -pytest-mock = "^3.3.1" -requests = "^2.26" - -[build-system] -requires = ["poetry>=0.12"] -build-backend = "poetry.masonry.api" diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..e7160c8 --- /dev/null +++ b/setup.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +ngrok_pid=$(pgrep ngrok) + +check=$? + +# check if the exit status returned success +if [ $check -eq 0 ]; then + echo "Current ngrok PID = ${ngrok_pid}" + echo "Killing current Ngrok instance..." + kill -9 "$ngrok_pid" + check=$? + sleep 2 + if [ $check -eq 0 ]; then + echo "Successfully killed previous Ngrok, starting new instance..." + ngrok http 80 --log=stdout > ngrok.log & + echo "Waiting for 5 seconds so Ngrok can start..." + sleep 5 + + # shellcheck disable=SC2155 + export NGROK_URL=$(curl http://localhost:4040/api/tunnels --silent | python -c "import json, sys; print(json.load(sys.stdin)['tunnels'][1]['public_url'])") + echo "New Ngrok URL is: $NGROK_URL" + + echo "Please enter a name for your bot: " + read -r bot_name + export BOT_NAME=${bot_name} + + echo "Please enter in your first initial and last name - for example - 'jstevens'; this is what will be at the end of your slash commands in the Slack workspace: " + read -r bot_username + export BOT_USERNAME=${bot_username} + else + echo "Failed to kill previous Ngrok, ending execution..." + fi +elif [ $check -eq 1 ]; then + echo "No previous ngrok PID found, starting new instance..." + ngrok http 80 --log=stdout > ngrok.log & +else + echo "Problem locating and/or killing an existing Ngrok instance, ending execution..." +fi + + diff --git a/tests/conftest.py b/tests/conftest.py index 8d78015..9dfeb34 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,55 +1,9 @@ -import copy - import pytest -from sirbot import SirBot -from sirbot.plugins.slack import SlackPlugin - -from pybot import endpoints -from pybot.plugins import AirtablePlugin, APIPlugin -from tests import data - -pytest_plugins = ("slack.tests.plugin",) - - -@pytest.fixture(params={**data.Action.__members__}) -def action(request): - if isinstance(request.param, str): - payload = copy.deepcopy(data.Action[request.param].value) - else: - payload = copy.deepcopy(request.param) - return payload - - -@pytest.fixture -async def bot(loop) -> SirBot: - b = SirBot() - slack = SlackPlugin( - token="token", - verify="supersecuretoken", - bot_user_id="bot_user_id", - bot_id="bot_id", - ) - airtable = AirtablePlugin() - endpoints.slack.create_endpoints(slack) - - api = APIPlugin() - endpoints.api.create_endpoints(api) - - b.load_plugin(slack) - b.load_plugin(airtable) - b.load_plugin(api) - - return b -@pytest.fixture -def slack_bot(bot: SirBot): - slack = SlackPlugin( - token="token", - verify="supersecuretoken", - bot_user_id="bot_user_id", - bot_id="bot_id", - ) - endpoints.slack.create_endpoints(slack) - bot.load_plugin(slack) - return bot +@pytest.fixture(scope="module") +def vcr_config(): + return { + # Replace the Authorization request header with "DUMMY" in cassettes + "filter_headers": [("Authorization", "DUMMY")], + } diff --git a/tests/data/__init__.py b/tests/data/__init__.py deleted file mode 100644 index 9374399..0000000 --- a/tests/data/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .actions import Action diff --git a/tests/data/actions.py b/tests/data/actions.py deleted file mode 100644 index e86948e..0000000 --- a/tests/data/actions.py +++ /dev/null @@ -1,58 +0,0 @@ -import json -from enum import Enum - -claim_event = { - "type": "interactive_message", - "user": {"id": "U123"}, - "actions": [{"name": "rec123", "value": "mentee_claimed"}], - "original_message": { - "text": "some text", - "attachments": [ - { - "text": "some text", - "actions": [{"name": "rec123", "value": "mentee_unclaimed"}], - } - ], - }, - "channel": {"id": "abc"}, - "message_ts": "123123.123", - "callback_id": "claim_mentee", - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -unclaim_event = { - "type": "interactive_message", - "user": {"id": "U123"}, - "actions": [{"name": "rec123", "value": "mentee_unclaimed"}], - "original_message": { - "text": "some text", - "attachments": [ - { - "text": "some text", - "actions": [{"name": "rec123", "value": "mentee_unclaimed"}], - } - ], - }, - "channel": {"id": "abc"}, - "message_ts": "123123.123", - "callback_id": "claim_mentee", - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -raw_claim_event = {"payload": json.dumps(claim_event)} -raw_unclaim_event = {"payload": json.dumps(unclaim_event)} - - -class Action(Enum): - claim_mentee = raw_claim_event - unclaim_mentee = raw_unclaim_event diff --git a/tests/data/events.py b/tests/data/events.py deleted file mode 100644 index ae26631..0000000 --- a/tests/data/events.py +++ /dev/null @@ -1,166 +0,0 @@ -TEAM_JOIN = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "team_join", - "channel": "C00000A00", - "user": { - "id": "U0AAAA", - "team_id": "T000AAA0A", - "name": "test", - "real_name": "test testerson", - }, - "event_ts": "123456789.000001", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -new_message = { - "type": "message", - "user": "U8FDR1603", - "text": "test3", - "client_msg_id": "025cc728-fcb5-4dd7-8920-619a605bb631", - "ts": "1540497949.000100", - "channel": "GDNHHNCTV", - "event_ts": "1540497949.000100", - "channel_type": "mpim", -} -edit_message = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U8FDR1603", - "text": "nevermind", - "client_msg_id": "9aff714d-8674-42fc-986c-0c1c06cca3fc", - "edited": {"user": "U8FDR1603", "ts": "1540497210.000000"}, - "ts": "1540497204.000100", - }, - "subtype": "message_changed", - "hidden": True, - "channel": "C8DA69KM4", - "previous_message": { - "type": "message", - "user": "U8FDR1603", - "text": "two", - "client_msg_id": "9aff714d-8674-42fc-986c-0c1c06cca3fc", - "ts": "1540497204.000100", - }, - "event_ts": "1540497210.000100", - "ts": "1540497210.000100", - "channel_type": "channel", - }, -} -delete_message = { - "type": "message", - "deleted_ts": "1540497676.000100", - "subtype": "message_deleted", - "hidden": True, - "channel": "GDNHHNCTV", - "previous_message": { - "type": "message", - "user": "U8FDR1603", - "text": "testing3", - "client_msg_id": "b5694bd6-6ed0-4ddd-bf84-3e2c8165c624", - "ts": "1540497676.000100", - }, - "event_ts": "1540497684.000100", - "ts": "1540497684.000100", - "channel_type": "mpim", -} - -MESSAGE_EDIT = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U000AA000", - "text": "hello world", - "edited": {"user": "U000AA000", "ts": "1513882449.000000"}, - "ts": "123456789.000001", - }, - "subtype": "message_changed", - "hidden": True, - "channel": "C00000A00", - "previous_message": { - "type": "message", - "user": "U000AA000", - "text": "foo bar", - "ts": "123456789.000001", - }, - "event_ts": "123456789.000002", - "ts": "123456789.000002", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -MESSAGE_DELETE = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U000AA000", - "text": "hello world", - "edited": {"user": "U000AA000", "ts": "1513882449.000000"}, - "ts": "123456789.000001", - }, - "subtype": "message_deleted", - "hidden": True, - "channel": "C00000A00", - "previous_message": { - "type": "message", - "user": "U000AA000", - "text": "foo bar", - "ts": "123456789.000001", - }, - "event_ts": "123456789.000002", - "ts": "123456789.000002", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} - -PLAIN_MESSAGE = { - "token": "supersecuretoken", - "team_id": "T000AAA0A", - "api_app_id": "A0AAAAAAA", - "event": { - "type": "message", - "message": { - "type": "message", - "user": "U000AA000", - "text": "hello world", - "edited": {"user": "U000AA000", "ts": "1513882449.000000"}, - "ts": "123456789.000001", - }, - "channel": "C00000A00", - "event_ts": "123456789.000002", - "ts": "123456789.000002", - }, - "type": "event_callback", - "authed_teams": ["T000AAA0A"], - "event_id": "AAAAAAA", - "event_time": 123456789, -} diff --git a/tests/endpoints/api/test_slack_api_endpoint.py b/tests/endpoints/api/test_slack_api_endpoint.py deleted file mode 100644 index 6191be7..0000000 --- a/tests/endpoints/api/test_slack_api_endpoint.py +++ /dev/null @@ -1,47 +0,0 @@ -import json - -import pytest -from asynctest import CoroutineMock -from sirbot import SirBot - -MOCK_USER_NAME = "userName" -MOCK_USER_ID = "U8N6XBL7Q" -AUTH_HEADER = {"Authorization": "Bearer devBackendToken"} - -VALID_SLACK_RESPONSE = CoroutineMock( - return_value={"user": {"exists": True, "id": MOCK_USER_ID, "name": MOCK_USER_NAME}} -) - - -@pytest.mark.parametrize( - "headers, status", - [ - ({"Authorization": "Bearer devBackendToken"}, 200), - ({"Authorization": "Bearer abc"}, 401), - (None, 401), - ], -) -async def test_detect_credentials(bot: SirBot, aiohttp_client, headers, status): - bot.plugins["slack"].api.query = VALID_SLACK_RESPONSE - client = await aiohttp_client(bot) - - res = await client.get( - "/pybot/api/v1/slack/verify?email=test@test.test", headers=headers - ) - - assert res.status == status - - -async def test_verify_returns_correct_success_params(bot: SirBot, aiohttp_client): - client = await aiohttp_client(bot) - - bot.plugins["slack"].api.query = VALID_SLACK_RESPONSE - - res = await client.get( - "/pybot/api/v1/slack/verify?email=test@test.test", headers=AUTH_HEADER - ) - body = json.loads(await res.text()) - - assert body["exists"] is True - assert body["id"] == MOCK_USER_ID - assert body["displayName"] == MOCK_USER_NAME diff --git a/tests/endpoints/slack/test_slack_actions.py b/tests/endpoints/slack/test_slack_actions.py deleted file mode 100644 index 62806b5..0000000 --- a/tests/endpoints/slack/test_slack_actions.py +++ /dev/null @@ -1,34 +0,0 @@ -from asynctest import CoroutineMock -from sirbot import SirBot - - -async def test_claim_mentee_response_attachment_is_list( - action: dict, aiohttp_client, bot: SirBot -): - client, slack_mock = await create_mocks(aiohttp_client, bot) - - await client.post("/slack/actions", data=action) - assert isinstance(slack_mock.call_args[0][1]["attachments"], list) - - -async def test_claim_mentee_response_contains_original_text( - action: dict, aiohttp_client, bot: SirBot -): - client, slack_mock = await create_mocks(aiohttp_client, bot) - await client.post("/slack/actions", data=action) - request_payload = slack_mock.call_args[0][1] - assert request_payload["text"] is not None - - -async def create_mocks(aiohttp_client, bot): - slack_mock = CoroutineMock( - return_value={"user": {"profile": {"email": "email@email.com"}}} - ) - airtable_mock = CoroutineMock(return_value="U123") - bot["plugins"]["slack"].api.query = slack_mock - bot["plugins"]["airtable"].api.find_records = CoroutineMock(return_value=[]) - bot["plugins"]["airtable"].api.update_request = airtable_mock - bot["plugins"]["airtable"].api.get_name_from_record_id = airtable_mock - bot["plugins"]["airtable"].api.get_row_from_record_id = airtable_mock - client = await aiohttp_client(bot) - return client, slack_mock diff --git a/tests/endpoints/slack/test_slack_events.py b/tests/endpoints/slack/test_slack_events.py deleted file mode 100644 index 73078a0..0000000 --- a/tests/endpoints/slack/test_slack_events.py +++ /dev/null @@ -1,41 +0,0 @@ -import asyncio -import logging - -import asynctest -from asynctest import CoroutineMock - -from pybot import endpoints -from pybot.endpoints.slack.events import create_endpoints, team_join -from tests.data.events import MESSAGE_DELETE, MESSAGE_EDIT, PLAIN_MESSAGE, TEAM_JOIN - - -async def test_team_join_handler_exists(bot): - endpoints.slack.create_endpoints(bot["plugins"]["slack"]) - - assert asynctest.asyncio.iscoroutinefunction( - bot["plugins"]["slack"].routers["event"]._routes["team_join"]["*"]["*"][0][0] - ) - - -async def test_edits_are_logged(bot, aiohttp_client, caplog): - client = await aiohttp_client(bot) - - with caplog.at_level(logging.INFO): - await client.post("/slack/events", json=MESSAGE_EDIT) - assert any("CHANGE_LOGGING: edited" in record.message for record in caplog.records) - - -async def test_deletes_are_logged(bot, aiohttp_client, caplog): - client = await aiohttp_client(bot) - - with caplog.at_level(logging.INFO): - await client.post("/slack/events", json=MESSAGE_DELETE) - assert any("CHANGE_LOGGING: deleted" in record.message for record in caplog.records) - - -async def test_no_other_messages_logged(bot, aiohttp_client, caplog): - client = await aiohttp_client(bot) - - with caplog.at_level(logging.INFO): - await client.post("/slack/events", json=PLAIN_MESSAGE) - assert not any("CHANGE_LOGGING" in record.message for record in caplog.records) diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..e4fecab --- /dev/null +++ b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,61 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Daily%20Programmer?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA42RXUvDMBiF/0rJdTvSOLuZK92csKmb0KI4kRGaWOKyZDTp7Bj973vb+lHBgZCL + 8J4nJycnB5SL1OTcIvpyQJIjWg+SyXZmlviCbBfRc4l89CaFqpkDSkTpAHLCOqmzoBWC3HwANWZO + ZCbfn9LnbCNOaXfMOu/BWCe4t9BAEUxIgENYSUjo2ZBi3MMYL4GdaukkU2r/3wOf2NgUGsJjH8Wq + yH6SrNokq06Se8MlTHnXlyThOe1HFIdfvr9Qb7SvC2o6LGx+VUzK28H15OlmLqcRwGLDpALtveDW + 6B4k2gltL7N63EvNBhDdFjRrCC9uCVT56JGpxlfqXbP77sCLFUvXXhKf6nWkTLq2f6tgnOYCPo0n + srm4W+GQkoj2B+1Tq9fqCPRzvKsqAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sun, 02 Jan 2022 15:47:21 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwgLCpmfGloKV5qC; path=/; expires=Mon, 02 Jan 2023 15:47:21 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '554' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..0aeb9ec --- /dev/null +++ b/tests/unit/cassettes/TestDailyProgrammerTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,63 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwgLCpmfGloKV5qC + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Daily%20Programmer?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA42RXUvDMBiF/0rJdTvSOLuZK92csKmb0KI4kRGaWOKyZDTp7Bj973vb+lHBgZCL + 8J4nJycnB5SL1OTcIvpyQJIjWg+SyXZmlviCbBfRc4l89CaFqpkDSkTpAHLCOqmzoBWC3HwANWZO + ZCbfn9LnbCNOaXfMOu/BWCe4t9BAEUxIgENYSUjo2ZBi3MMYL4GdaukkU2r/3wOf2NgUGsJjH8Wq + yH6SrNokq06Se8MlTHnXlyThOe1HFIdfvr9Qb7SvC2o6LGx+VUzK28H15OlmLqcRwGLDpALtveDW + 6B4k2gltL7N63EvNBhDdFjRrCC9uCVT56JGpxlfqXbP77sCLFUvXXhKf6nWkTLq2f6tgnOYCPo0n + srm4W+GQkoj2B+1Tq9fqCPRzvKsqAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sun, 02 Jan 2022 15:47:21 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwgLCpmfGloKV5qC; path=/; expires=Mon, 02 Jan 2023 15:47:21 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '554' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..42351ac --- /dev/null +++ b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_all_desired_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentors?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32RSW/CMBCF/4rlc0Bx1JYqJ3ZogXSBgkrVg5sM1I3JIC90Qfz32iGn0lbywXrz + zczTmz1VkKLKNI2f9lRkNPZCg2+TvHXJxufD5eqGBnQlQHpmT+/xnVx1aczCs4DOuSxbRLErfwGd + Sp7mJOEbcLIBbUSxrh27awrfHTHm2pAJZsKpvjcKo6gWMvdmrBFHLGasHobh8idK2p9+f7nPatWy + vY9Ro9tb9BNxdeFg2HAhXe3NZhqLujawg0I3116up7hxSHG0dV0SZHok6CGgfSvlv6Z71fDTYtNL + 1fxWasTOz+hzqcGnkQspfbQ+1Pxuzj7PZ+ar04PxA30O6IR/kAkUBsAxLKBtgX8ZSNB46PfiTGyA + LLH4034XtFAuQr8MlX4VWzJEqzS5BUUWAHm5vrJCFqhyBy+Eea2s22E0fxk+DqajVWKlt97BDAiu + SAeLzKaGtNIUtsYf1CgLAR1YkcELYk7ugVeqCzpVwB3lDZ+ePozDxvH0h+fDN8ty/B+ZAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '396' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:31 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwOluKvpW4Hx5E7F; path=/; expires=Sun, 01 Jan 2023 17:38:31 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '665' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..ead3ee9 --- /dev/null +++ b/tests/unit/cassettes/TestMentorTableBasic.test_mentor_table_has_correct_number_of_fields.yaml @@ -0,0 +1,64 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwOluKvpW4Hx5E7F + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentors?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32RSW/CMBCF/4rlc0Bx1JYqJ3ZogXSBgkrVg5sM1I3JIC90Qfz32iGn0lbywXrz + zczTmz1VkKLKNI2f9lRkNPZCg2+TvHXJxufD5eqGBnQlQHpmT+/xnVx1aczCs4DOuSxbRLErfwGd + Sp7mJOEbcLIBbUSxrh27awrfHTHm2pAJZsKpvjcKo6gWMvdmrBFHLGasHobh8idK2p9+f7nPatWy + vY9Ro9tb9BNxdeFg2HAhXe3NZhqLujawg0I3116up7hxSHG0dV0SZHok6CGgfSvlv6Z71fDTYtNL + 1fxWasTOz+hzqcGnkQspfbQ+1Pxuzj7PZ+ar04PxA30O6IR/kAkUBsAxLKBtgX8ZSNB46PfiTGyA + LLH4034XtFAuQr8MlX4VWzJEqzS5BUUWAHm5vrJCFqhyBy+Eea2s22E0fxk+DqajVWKlt97BDAiu + SAeLzKaGtNIUtsYf1CgLAR1YkcELYk7ugVeqCzpVwB3lDZ+ePozDxvH0h+fDN8ty/B+ZAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '396' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:32 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwOluKvpW4Hx5E7F; path=/; expires=Sun, 01 Jan 2023 17:38:32 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '665' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..ca334fb --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Affiliations?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQT0+DQBDFvwrZM5AFbWs4aW21tpZDISXaNA3CFNfALu4f1BC+u7vswaSJyR4m + 7/125s30iEPBeClQdOgRKVFkhA7SXcvu122G37MQuehMoDZMj5JaVRqSICSh1ckaJ86+NLXP67ED + od1YuSjOG/ijPUt7ln7OhXS2rCRaNb9CHIYeDvRLg1kUTKKrGx9j/HqJOvMfE2ScpAS/U8vvzWyx + zB5i8jTVMDQ5qbX3oUrBqC8kdEDFbWVkv2CNRqiNtR4JJ7EEGly0AFFw0krC6H+xt0Al484OPpW2 + zd3MxdQq3L+tXh6TzTlWNTrqXgWHXEKZknHWxXbX0WRqtxuOwy8BmLuRhQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '274' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:25 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwrvNzjVswDW2j23; path=/; expires=Sun, 01 Jan 2023 17:46:25 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '389' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..d1c2ae6 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipAffiliationTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwrvNzjVswDW2j23 + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Affiliations?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQT0+DQBDFvwrZM5AFbWs4aW21tpZDISXaNA3CFNfALu4f1BC+u7vswaSJyR4m + 7/125s30iEPBeClQdOgRKVFkhA7SXcvu122G37MQuehMoDZMj5JaVRqSICSh1ckaJ86+NLXP67ED + od1YuSjOG/ijPUt7ln7OhXS2rCRaNb9CHIYeDvRLg1kUTKKrGx9j/HqJOvMfE2ScpAS/U8vvzWyx + zB5i8jTVMDQ5qbX3oUrBqC8kdEDFbWVkv2CNRqiNtR4JJ7EEGly0AFFw0krC6H+xt0Al484OPpW2 + zd3MxdQq3L+tXh6TzTlWNTrqXgWHXEKZknHWxXbX0WRqtxuOwy8BmLuRhQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '274' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:26 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwrvNzjVswDW2j23; path=/; expires=Sun, 01 Jan 2023 17:46:26 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '389' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..a9d60be --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,63 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentor%20Requests?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32S3VLbMBCFX0Wj6yQjuw1JfUV+TEwSwtQ2ZKDDhWqvjbAipZYcGjK8O5IVOsBA + Z3zj3W/Psc/uAdeQyTpXOPh1wCzHgS00kX/9O7qZJYti1XDcwQUDbpkDjkGBRhPZCI0D0sGxfETn + Zsz77nfwkiqNLmTODG+lfOL7XeKZJ/UGge8FZNAjhNziDyga7612a9+oetSEfxeDabg+W7HzEwPD + hjJueg9NrqToKQ07EOq0tOVeJjcGEXQDhpi3BEocgZ87OOE0q9DKtTUozUTZdf/TreWjGQ2P6m+a + rndqK0f9BOody6xGesTOnEbcaoyKgnFGNZPCJGkzXDD/ptrKp3saj8PSIKa2gzTeysl8uyb3ax/f + mbk8Z3aIcjQFbb5DvXF495VJxTg32SsUw5/GEDbh1qn6ee3t+6l+moSwvHJO6qGcRftyGmX94Rys + k8vhApSiJaA0+cpnwinbWG1dN/Dvtd1Q68bLKhnuvDGZiXoknNuAblfVaOgt+9FtcWndXscuxYcz + MDfwIyDk9QzcOVnxz3fj+v9XMUvOaqAmkJS1W35/dmQYfDs5knfPL7PR6AbxAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '447' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:26 GMT + Server: + - Tengine + Set-Cookie: + - brw=brw6yqQpAzIJ7BgE8; path=/; expires=Sun, 01 Jan 2023 17:46:26 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '753' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..b3aad07 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipRequestsTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,65 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brw6yqQpAzIJ7BgE8 + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Mentor%20Requests?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA32S3VLbMBCFX0Wj6yQjuw1JfUV+TEwSwtQ2ZKDDhWqvjbAipZYcGjK8O5IVOsBA + Z3zj3W/Psc/uAdeQyTpXOPh1wCzHgS00kX/9O7qZJYti1XDcwQUDbpkDjkGBRhPZCI0D0sGxfETn + Zsz77nfwkiqNLmTODG+lfOL7XeKZJ/UGge8FZNAjhNziDyga7612a9+oetSEfxeDabg+W7HzEwPD + hjJueg9NrqToKQ07EOq0tOVeJjcGEXQDhpi3BEocgZ87OOE0q9DKtTUozUTZdf/TreWjGQ2P6m+a + rndqK0f9BOody6xGesTOnEbcaoyKgnFGNZPCJGkzXDD/ptrKp3saj8PSIKa2gzTeysl8uyb3ax/f + mbk8Z3aIcjQFbb5DvXF495VJxTg32SsUw5/GEDbh1qn6ee3t+6l+moSwvHJO6qGcRftyGmX94Rys + k8vhApSiJaA0+cpnwinbWG1dN/Dvtd1Q68bLKhnuvDGZiXoknNuAblfVaOgt+9FtcWndXscuxYcz + MDfwIyDk9QzcOVnxz3fj+v9XMUvOaqAmkJS1W35/dmQYfDs5knfPL7PR6AbxAgAA + headers: + Connection: + - keep-alive + Content-Length: + - '447' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:46:27 GMT + Server: + - Tengine + Set-Cookie: + - brw=brw6yqQpAzIJ7BgE8; path=/; expires=Sun, 01 Jan 2023 17:46:27 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '753' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..e625dd4 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Services?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA23OW0vDMBQH8K9S8tyWtDI386RjE+ZliJuKiozYHsuRNJFc5qX0u5vLgzCEPIT/ + +eXkPxANjdKtIex5INgSFoKbozvz6n5uH+eiXlGSkzcEEcxANsJ1HlkwFmW3S4OdVp9e3XMRN6Dc + x1tO1ryHP10kXSR9xY3NrlWLPg2valrXBa382VZTVp0wOikppU+HNJt/hyLxJ2f0mVt+XU4Xy4fz + Na6OPYaeo/Czd9caJUtjYQ/SnHYhLhvVeyJTrYsosk0SZMzJAkyj8cOikv/X9qbRwC20W4w7DlrP + 2GSWWo8v4y88kykbXQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:14 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwbGAe1ZDvQhU9Aj; path=/; expires=Sun, 01 Jan 2023 17:38:14 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '349' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..f710e0d --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipServicesTableBasic.test_mentorship_services_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwbGAe1ZDvQhU9Aj + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Services?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA23OW0vDMBQH8K9S8tyWtDI386RjE+ZliJuKiozYHsuRNJFc5qX0u5vLgzCEPIT/ + +eXkPxANjdKtIex5INgSFoKbozvz6n5uH+eiXlGSkzcEEcxANsJ1HlkwFmW3S4OdVp9e3XMRN6Dc + x1tO1ryHP10kXSR9xY3NrlWLPg2valrXBa382VZTVp0wOikppU+HNJt/hyLxJ2f0mVt+XU4Xy4fz + Na6OPYaeo/Czd9caJUtjYQ/SnHYhLhvVeyJTrYsosk0SZMzJAkyj8cOikv/X9qbRwC20W4w7DlrP + 2GSWWo8v4y88kykbXQEAAA== + headers: + Connection: + - keep-alive + Content-Length: + - '244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:17 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwbGAe1ZDvQhU9Aj; path=/; expires=Sun, 01 Jan 2023 17:38:17 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '349' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..8f92631 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Skillsets?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA2WQX2uDMBTFv4rkWSU61haf1tJO164+zNKxDSlObyVdTFj+uBXxuzfRlcEG9yGc + 88u999wOCSi5qCSK3jpEKhRZQZ7qODnXy6S8na0BuehIgFqmQxnVtYEUSEVYfRiNg+BfhtoXdOhA + WDu8XJQWDfzS3kh7I/1YSOVseUWMan+FOAw9HJjaBdPI1M3Exxi//kWdxdkuMkzSUsz16nszXa6e + 71PyMDEwNAWhxjvpSnLmSwUtMHlXW9kveWMQNq61HggnGwnUu2gLTHFhj2HPQOuPbNYGCxwzMWco + v/rOE3xqE+nK6STcvycvcbY5ppqi3DQqBRQKqh0ZBv2LFvxE6/P+AiCKxpmCAQAA + headers: + Connection: + - keep-alive + Content-Length: + - '276' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:32 GMT + Server: + - Tengine + Set-Cookie: + - brw=brweWqz6bh1Pd9Pan; path=/; expires=Sun, 01 Jan 2023 17:38:32 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '386' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..fb4d1d9 --- /dev/null +++ b/tests/unit/cassettes/TestMentorshipSkillsetsTableBasic.test_mentorship_skillsets_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brweWqz6bh1Pd9Pan + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Skillsets?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA2WQX2uDMBTFv4rkWSU61haf1tJO164+zNKxDSlObyVdTFj+uBXxuzfRlcEG9yGc + 88u999wOCSi5qCSK3jpEKhRZQZ7qODnXy6S8na0BuehIgFqmQxnVtYEUSEVYfRiNg+BfhtoXdOhA + WDu8XJQWDfzS3kh7I/1YSOVseUWMan+FOAw9HJjaBdPI1M3Exxi//kWdxdkuMkzSUsz16nszXa6e + 71PyMDEwNAWhxjvpSnLmSwUtMHlXW9kveWMQNq61HggnGwnUu2gLTHFhj2HPQOuPbNYGCxwzMWco + v/rOE3xqE+nK6STcvycvcbY5ppqi3DQqBRQKqh0ZBv2LFvxE6/P+AiCKxpmCAQAA + headers: + Connection: + - keep-alive + Content-Length: + - '276' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 17:38:33 GMT + Server: + - Tengine + Set-Cookie: + - brw=brweWqz6bh1Pd9Pan; path=/; expires=Sun, 01 Jan 2023 17:38:33 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '386' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..8284123 --- /dev/null +++ b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Message%20Text?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQXWvCMBSG/0rJtS1piwq52lcHOnUXlg4cQ0JzVrK1CSSpVUv/+/JxMRCEXBze + 5znhTUakoJaKaUQ+R8QZIi4os+46XKt1kQ+/1TuaoW8OrXNGVMLZWMmANlw0cQCxkoO1nqmBRqrL + Pb6jHdxj+7Zv/tkxsGNgG6pNtJWM29Q1zHCWxTi1p0yXJE8JXiQY48OtGj1dXGX/ql6rx744vy1f + io/XHV8trAwd5a1lPz3TUiTawAmEfmhcnNSys4oIldfeiPbBQNMMVbT193Jx8pONagX2A1jJ/cpN + SUzmeSg5fU1/3z9ZSnYBAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '245' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:14:51 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwmk4IX4aqVeCxyj; path=/; expires=Sun, 01 Jan 2023 18:14:50 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '374' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..e9f03cc --- /dev/null +++ b/tests/unit/cassettes/TestMessageTextTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwmk4IX4aqVeCxyj + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Message%20Text?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA3WQXWvCMBSG/0rJtS1piwq52lcHOnUXlg4cQ0JzVrK1CSSpVUv/+/JxMRCEXBze + 5znhTUakoJaKaUQ+R8QZIi4os+46XKt1kQ+/1TuaoW8OrXNGVMLZWMmANlw0cQCxkoO1nqmBRqrL + Pb6jHdxj+7Zv/tkxsGNgG6pNtJWM29Q1zHCWxTi1p0yXJE8JXiQY48OtGj1dXGX/ql6rx744vy1f + io/XHV8trAwd5a1lPz3TUiTawAmEfmhcnNSys4oIldfeiPbBQNMMVbT193Jx8pONagX2A1jJ/cpN + SUzmeSg5fU1/3z9ZSnYBAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '245' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:14:51 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwmk4IX4aqVeCxyj; path=/; expires=Sun, 01 Jan 2023 18:14:51 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '374' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml new file mode 100644 index 0000000..b6c820a --- /dev/null +++ b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_all_desired_fields.yaml @@ -0,0 +1,61 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Scheduled%20Messages?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA22QXU/CMBSG/8rSa7Z0TfhwV6KDBBVuIJJoDKnrYauunbQdshD+u6ebiR+Q9KI5 + 5zntc94jMZBVRliSPB+JFCTxBTBiHG/Vx65IneqTHtlKKD1zJLcF1xpK5LJKqVpL14RbAPHKs3cE + H7h1wRK0Q4BRxkIa41nFccKuEkojSukTYguuAAkH1kmdh93zoak+sTcHa3kOwQoO7pv5C0wN7GrQ + WYPdlMuywdoMRSQvg5Q7CFdS4XjlPcS5x+iXR6s7r4TED/6jQ6/MBhfR4KbxYbR51daM68nhfphO + 1tOFnA0QBoVe2Hurha10ZB3sQdvr3JcjDA4R3UVw1xLBsiPIqUeWZZ3/ZLPpVt90q68L0Jc2Y2cJ + P/KytZN6397w4cwApiN8OuerjhLW72ZPL6cvnONUTBYCAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '320' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:15:23 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwZfvUPfXAu7noUZ; path=/; expires=Sun, 01 Jan 2023 18:15:23 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '534' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml new file mode 100644 index 0000000..66c5f1c --- /dev/null +++ b/tests/unit/cassettes/TestScheduledMessagesTableBasic.test_mentorship_affiliation_table_has_correct_number_of_fields.yaml @@ -0,0 +1,63 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - DUMMY + Connection: + - keep-alive + Cookie: + - brw=brwZfvUPfXAu7noUZ + User-Agent: + - python-requests/2.26.0 + method: GET + uri: https://api.airtable.com/v0/appHcVtFOf2HaGQog/Scheduled%20Messages?pageSize=1&maxRecords=1&view=Fields + response: + body: + string: !!binary | + H4sIAAAAAAAAA22QXU/CMBSG/8rSa7Z0TfhwV6KDBBVuIJJoDKnrYauunbQdshD+u6ebiR+Q9KI5 + 5zntc94jMZBVRliSPB+JFCTxBTBiHG/Vx65IneqTHtlKKD1zJLcF1xpK5LJKqVpL14RbAPHKs3cE + H7h1wRK0Q4BRxkIa41nFccKuEkojSukTYguuAAkH1kmdh93zoak+sTcHa3kOwQoO7pv5C0wN7GrQ + WYPdlMuywdoMRSQvg5Q7CFdS4XjlPcS5x+iXR6s7r4TED/6jQ6/MBhfR4KbxYbR51daM68nhfphO + 1tOFnA0QBoVe2Hurha10ZB3sQdvr3JcjDA4R3UVw1xLBsiPIqUeWZZ3/ZLPpVt90q68L0Jc2Y2cJ + P/KytZN6397w4cwApiN8OuerjhLW72ZPL6cvnONUTBYCAAA= + headers: + Connection: + - keep-alive + Content-Length: + - '320' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 01 Jan 2022 18:15:23 GMT + Server: + - Tengine + Set-Cookie: + - brw=brwZfvUPfXAu7noUZ; path=/; expires=Sun, 01 Jan 2023 18:15:23 GMT; domain=.airtable.com; + samesite=none; secure + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + access-control-allow-headers: + - authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with + access-control-allow-methods: + - DELETE,GET,OPTIONS,PATCH,POST,PUT + access-control-allow-origin: + - '*' + airtable-uncompressed-content-length: + - '534' + content-encoding: + - gzip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/unit/test_airtable.py b/tests/unit/test_airtable.py new file mode 100644 index 0000000..87499d6 --- /dev/null +++ b/tests/unit/test_airtable.py @@ -0,0 +1,215 @@ +import pytest + +from modules.airtable import ( + mentor_table, + mentorship_services_table, + mentorship_skillsets_table, + mentorship_affiliations_table, + mentorship_requests_table, + scheduled_message_table, + message_text_table, + daily_programmer_table, +) + + +@pytest.mark.vcr() +class TestMentorTableBasic: + def setup(self): + self.desired_fields = { + "row_id", + "valid", + "slack_name", + "last_modified", + "last_modified_by", + "full_name", + "email", + "active", + "skills", + "max_mentees", + "bio", + "notes", + "time_zone", + "desired_mentorship_hours_per_week", + "mentees_worked_with", + "code_of_conduct_accepted", + "guidebook_read", + } + self.airtable_fields = mentor_table.table_fields + + def test_mentor_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentor_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipServicesTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "description", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = mentorship_services_table.table_fields + + def test_mentorship_services_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_services_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipSkillsetsTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "mentors", + "mentor_requests", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = mentorship_skillsets_table.table_fields + + def test_mentorship_skillsets_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_skillsets_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipAffiliationTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "description", + "last_modified", + "last_modified_by", + "valid", + "mentor_requests", + } + self.airtable_fields = mentorship_affiliations_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMentorshipRequestsTableBasic: + def setup(self): + self.desired_fields = { + "slack_name", + "email", + "service", + "affiliation", + "additional_details", + "skillsets_requested", + "slack_message_ts", + "claimed", + "claimed_by", + "claimed_on", + "reset_by", + "reset_on", + "reset_count", + "last_modified", + "last_modified_by", + "row_id", + } + self.airtable_fields = mentorship_requests_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestScheduledMessagesTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "channel", + "message_text", + "initial_date_time_to_send", + "frequency", + "last_sent", + "when_to_send", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = scheduled_message_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestMessageTextTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "text", + "category", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = message_text_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) + + +@pytest.mark.vcr() +class TestDailyProgrammerTableBasic: + def setup(self): + self.desired_fields = { + "name", + "slug", + "text", + "category", + "initial_slack_ts", + "blocks", + "initially_posted_on", + "last_posted_on", + "posted_count", + "last_modified", + "last_modified_by", + "valid", + } + self.airtable_fields = daily_programmer_table.table_fields + + def test_mentorship_affiliation_table_has_all_desired_fields(self) -> None: + for field in self.airtable_fields: + assert field in self.desired_fields + + def test_mentorship_affiliation_table_has_correct_number_of_fields(self) -> None: + assert len(self.airtable_fields) == len(self.desired_fields) From 70f9080da94817337c3846cff7e5869a93007423 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Wed, 9 Mar 2022 14:33:34 -0600 Subject: [PATCH 30/69] Updates for deployment --- .pylintrc | 567 ++++++++++++++++++ Pipfile | 1 + Pipfile.lock | 617 +++++++++++--------- Procfile | 1 + base_bot_manifest.yml | 73 +++ main.py | 49 +- modules/handlers/daily_programmer.py | 14 +- modules/utils/daily_programmer_scheduler.py | 7 +- modules/utils/message_scheduler.py | 9 +- requirements.txt | 52 ++ requirements_dev.txt | 75 +++ 11 files changed, 1143 insertions(+), 322 deletions(-) create mode 100644 .pylintrc create mode 100644 Procfile create mode 100644 base_bot_manifest.yml create mode 100644 requirements.txt create mode 100644 requirements_dev.txt diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..df55a77 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,567 @@ +[MASTER] +# Pulled from https://www.codeac.io/documentation/pylint-configuration.html + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-whitelist= + +# Add files or directories to the blacklist. They should be base names, not +# paths. +ignore= + +# Add files or directories matching the regex patterns to the blacklist. The +# regex matches against base names, not paths. +ignore-patterns= + +ignore-paths=.*/versions/.*$, + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use. +jobs=0 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python modules names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Specify a configuration file. +#rcfile= + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. +confidence= + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=print-statement, + parameter-unpacking, + unpacking-in-except, + old-raise-syntax, + backtick, + long-suffix, + old-ne-operator, + old-octal-literal, + import-star-module-level, + non-ascii-bytes-literal, + raw-checker-failed, + bad-inline-option, + locally-disabled, + file-ignored, + suppressed-message, + useless-suppression, + deprecated-pragma, + use-symbolic-message-instead, + apply-builtin, + basestring-builtin, + buffer-builtin, + cmp-builtin, + coerce-builtin, + execfile-builtin, + file-builtin, + long-builtin, + raw_input-builtin, + reduce-builtin, + standarderror-builtin, + unicode-builtin, + xrange-builtin, + coerce-method, + delslice-method, + getslice-method, + setslice-method, + no-absolute-import, + old-division, + dict-iter-method, + dict-view-method, + next-method-called, + metaclass-assignment, + indexing-exception, + raising-string, + reload-builtin, + oct-method, + hex-method, + nonzero-method, + cmp-method, + input-builtin, + round-builtin, + intern-builtin, + unichr-builtin, + map-builtin-not-iterating, + zip-builtin-not-iterating, + range-builtin-not-iterating, + filter-builtin-not-iterating, + using-cmp-argument, + eq-without-hash, + div-method, + idiv-method, + rdiv-method, + exception-message-attribute, + invalid-str-codec, + sys-max-int, + bad-python3-import, + deprecated-string-function, + deprecated-str-translate-call, + deprecated-itertools-function, + deprecated-types-field, + next-method-defined, + dict-items-not-iterating, + dict-keys-not-iterating, + dict-values-not-iterating, + deprecated-operator-function, + deprecated-urllib-function, + xreadlines-attribute, + deprecated-sys-function, + exception-escape, + comprehension-escape, + import-error, + too-many-arguments, + import-outside-toplevel, + attribute-defined-outside-init, + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[REPORTS] + +# Python expression which should return a note less than 10 (10 is the highest +# note). You have access to the variables errors warning, statement which +# respectively contain the number of errors / warnings messages and the total +# number of statements analyzed. This is used by the global evaluation report +# (RP0004). +evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +#msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +output-format=text + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. +#class-attribute-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=snake_case + +# Regular expression matching correct function names. Overrides function- +# naming-style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=yes + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=snake_case + +# Regular expression matching correct method names. Overrides method-naming- +# style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=snake_case + +# Regular expression matching correct module names. Overrides module-naming- +# style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. +#variable-rgx= + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it working +# install python-enchant package.. +spelling-dict= + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to indicated private dictionary in +# --spelling-private-dict-file option instead of raising a message. +spelling-store-unknown-words=no + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis. It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=250 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# List of optional constructs for which whitespace checking is disabled. `dict- +# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. +# `trailing-comma` allows a space between comma and closing bracket: (a, ). +# `empty-line` allows space-only lines. +no-space-check=trailing-comma, + dict-separator + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[LOGGING] + +# Format style used to check logging format string. `old` means using % +# formatting, while `new` is for `{}` formatting. +logging-format-style=new + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + TODO + + +[SIMILARITIES] + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + +# Ignore imports when computing similarities. +ignore-imports=no + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[IMPORTS] + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules=optparse,tkinter.tix + +# Create a graph of external dependencies in the given file (report RP0402 must +# not be disabled). +ext-import-graph= + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report RP0402 must not be disabled). +import-graph= + +# Create a graph of internal dependencies in the given file (report RP0402 must +# not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + + +[DESIGN] + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement. +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[CLASSES] + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=cls + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "Exception". +overgeneral-exceptions=Exception diff --git a/Pipfile b/Pipfile index 27cfc22..7ddab07 100644 --- a/Pipfile +++ b/Pipfile @@ -21,6 +21,7 @@ pytest = "*" black = "*" pytest-vcr = "*" pyyaml = "*" +pylint = "*" [requires] python_version = "3.10" diff --git a/Pipfile.lock b/Pipfile.lock index ffaf1a5..7b8be92 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "e7cb359b2375bd63dd0e5c6476a7c8c153506cc0b94c7624523eea210c24421a" + "sha256": "d938a8fa4cfae0a61f61a6689a45b9eff87bcfcd1eb58d35a3fa5b2a02ed6749" }, "pipfile-spec": 6, "requires": { @@ -99,7 +99,7 @@ "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==1.2.0" }, "airtable": { @@ -120,11 +120,11 @@ }, "apscheduler": { "hashes": [ - "sha256:5cf344ebcfbdaa48ae178c029c055cec7bc7a4a47c21e315e4d1f08bd35f2355", - "sha256:c22cb14b411a31435eb2c530dfbbec948ac63015b517087c7978adb61b574865" + "sha256:65e6574b6395498d371d045f2a8a7e4f7d50c6ad21ef7313d15b1c7cf20df1e3", + "sha256:ddc25a0ddd899de44d7f451f4375fb971887e65af51e41e5dcf681f59b8b2c9a" ], "index": "pypi", - "version": "==3.8.1" + "version": "==3.9.1" }, "asgiref": { "hashes": [ @@ -139,7 +139,7 @@ "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==4.0.2" }, "attrs": { @@ -159,19 +159,19 @@ }, "charset-normalizer": { "hashes": [ - "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd", - "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455" + "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", + "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" ], "markers": "python_version >= '3'", - "version": "==2.0.10" + "version": "==2.0.12" }, "click": { "hashes": [ - "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", - "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" + "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", + "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" ], - "markers": "python_version >= '3.6'", - "version": "==8.0.3" + "markers": "python_full_version >= '3.6.0'", + "version": "==8.0.4" }, "dailyprogrammer": { "hashes": [ @@ -192,11 +192,11 @@ }, "fastapi": { "hashes": [ - "sha256:019ec52c00581bc055e6dfb621aaa9c2a56007c283839305412e1073a777eaf1", - "sha256:7421a2f30e9ed1866874cff089733d4f9a0cd4f49b6ea3995c0de75e32bbb52f" + "sha256:124774ce4cb3322841965f559669b233a0b8d343ea24fdd8b293253c077220d7", + "sha256:43d12891b78fc497a50623e9c7c24640c569489f060acd9ce2c4902080487a93" ], "index": "pypi", - "version": "==0.72.0" + "version": "==0.75.0" }, "frozenlist": { "hashes": [ @@ -268,7 +268,7 @@ "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06", "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==0.13.0" }, "httptools": { @@ -323,76 +323,76 @@ }, "multidict": { "hashes": [ - "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", - "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", - "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", - "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", - "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", - "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", - "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", - "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", - "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", - "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", - "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", - "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", - "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", - "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", - "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", - "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", - "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", - "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", - "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", - "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", - "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", - "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", - "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", - "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", - "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", - "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", - "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", - "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", - "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", - "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", - "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", - "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", - "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", - "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", - "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", - "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", - "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", - "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", - "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", - "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", - "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", - "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", - "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", - "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", - "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", - "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", - "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", - "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", - "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", - "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", - "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", - "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", - "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", - "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", - "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", - "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", - "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", - "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", - "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" + "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", + "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", + "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", + "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", + "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", + "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", + "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", + "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", + "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", + "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", + "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", + "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", + "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", + "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", + "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", + "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", + "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", + "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", + "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", + "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", + "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", + "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", + "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", + "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", + "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", + "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", + "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", + "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", + "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", + "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", + "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", + "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", + "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", + "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", + "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", + "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", + "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", + "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", + "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", + "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", + "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", + "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", + "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", + "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", + "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", + "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", + "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", + "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", + "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", + "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", + "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", + "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", + "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", + "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", + "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", + "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", + "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", + "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", + "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" ], "markers": "python_version >= '3.7'", - "version": "==6.0.1" + "version": "==6.0.2" }, "pbr": { "hashes": [ - "sha256:176e8560eaf61e127817ef93d8a844803abb27a4d4637f0ff3bb783129be2e0a", - "sha256:672d8ebee84921862110f23fcec2acea191ef58543d34dfe9ef3d9f13c31cddf" + "sha256:27108648368782d07bbf1cb468ad2e2eeef29086affd14087a6d04b7de8af4ec", + "sha256:66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25" ], "markers": "python_version >= '2.6'", - "version": "==5.8.0" + "version": "==5.8.1" }, "ply": { "hashes": [ @@ -403,11 +403,11 @@ }, "pyairtable": { "hashes": [ - "sha256:4132af74f96e185ed04ab5bb73c1b7fcccd0b6e1578e41af149f1b9c1383788c", - "sha256:cfb5f26a2d5a75b3896428eb87def47427c3e570ac08bb61dec70927fe9b1117" + "sha256:61dcb32b825b21b2458b3eb9f94fd3ad0c11c0c8295a5f3ba975b75f37dec56a", + "sha256:96de465af151368d7f5891f38793e4b195d1c74161420c694f724454065b4f72" ], "index": "pypi", - "version": "==1.0.0.post1" + "version": "==1.1.0" }, "pydantic": { "hashes": [ @@ -528,19 +528,19 @@ }, "slack-bolt": { "hashes": [ - "sha256:12ade47fa61f66804715e54d0b3defe968d40b96d059afce1cb3bb9b4686bd05", - "sha256:be0a65a6d295101af75f4977c617a7702de7a6397e4e972fa026bccfea5f40e8" + "sha256:43aaadde470a8ed0d6737ed97b1f4f38a6ec53ab842eca076bad497cd8eb1d70", + "sha256:7aad413b3d59884c74defe73f9d697ac13056c9cfcd2f5482c5eb8c9f9aa9322" ], "index": "pypi", - "version": "==1.11.2" + "version": "==1.11.6" }, "slack-sdk": { "hashes": [ - "sha256:54f2a5f7419f1ab932af9e3200f7f2f93db96e0f0eb8ad7d3b4214aa9f124641", - "sha256:aae6ce057e286a5e7fe7a9f256e85b886eee556def8e04b82b08f699e64d7f67" + "sha256:128f3bb0b5b91454a3d5f140a61f3db370a0e1b50ffe0a8d9e9ebe0e894faed7", + "sha256:e1fa26786169176e707676decc287fd9d3d547bbc43c0a1a4f99eb373b07da94" ], "index": "pypi", - "version": "==3.13.0" + "version": "==3.15.2" }, "sniffio": { "hashes": [ @@ -555,23 +555,23 @@ "sha256:26a18cbda5e6b651c964c12c88b36d9898481cd428ed6e063f5f29c418f73050", "sha256:57eab3cc975a28af62f6faec94d355a410634940f10b30d68d31cb5ec1b44ae8" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==0.17.1" }, "typing-extensions": { "hashes": [ - "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e", - "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b" + "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", + "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" ], - "markers": "python_version >= '3.6'", - "version": "==4.0.1" + "markers": "python_full_version >= '3.6.0'", + "version": "==4.1.1" }, "tzdata": { "hashes": [ "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5", "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==2021.5" }, "tzlocal": { @@ -579,7 +579,7 @@ "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09", "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==4.1" }, "urllib3": { @@ -595,11 +595,11 @@ "standard" ], "hashes": [ - "sha256:0b89c91bb8fe84c4bded9996af13c4b8c0de799d29bffeaa0c8ad298f2be0934", - "sha256:192c2422b056a3beb512c6c260bf77a7a884204a4ae41856719c1913ead63bbb" + "sha256:8adddf629b79857b48b999ae1b14d6c92c95d4d7840bd86461f09bee75f1653e", + "sha256:c04a9c069111489c324f427501b3840d306c6b91a77b00affc136a840a3f45f1" ], "index": "pypi", - "version": "==0.17.0" + "version": "==0.17.5" }, "uvloop": { "hashes": [ @@ -631,56 +631,56 @@ }, "websockets": { "hashes": [ - "sha256:002071169d2e44ce8eb9e5ebac9fbce142ba4b5146eef1cfb16b177a27662657", - "sha256:05e7f098c76b0a4743716590bb8f9706de19f1ef5148d61d0cf76495ec3edb9c", - "sha256:08a42856158307e231b199671c4fce52df5786dd3d703f36b5d8ac76b206c485", - "sha256:0d93b7cadc761347d98da12ec1930b5c71b2096f1ceed213973e3cda23fead9c", - "sha256:10edd9d7d3581cfb9ff544ac09fc98cab7ee8f26778a5a8b2d5fd4b0684c5ba5", - "sha256:14e9cf68a08d1a5d42109549201aefba473b1d925d233ae19035c876dd845da9", - "sha256:181d2b25de5a437b36aefedaf006ecb6fa3aa1328ec0236cdde15f32f9d3ff6d", - "sha256:189ed478395967d6a98bb293abf04e8815349e17456a0a15511f1088b6cb26e4", - "sha256:1d858fb31e5ac992a2cdf17e874c95f8a5b1e917e1fb6b45ad85da30734b223f", - "sha256:1dafe98698ece09b8ccba81b910643ff37198e43521d977be76caf37709cf62b", - "sha256:3477146d1f87ead8df0f27e8960249f5248dceb7c2741e8bbec9aa5338d0c053", - "sha256:38db6e2163b021642d0a43200ee2dec8f4980bdbda96db54fde72b283b54cbfc", - "sha256:3a02ab91d84d9056a9ee833c254895421a6333d7ae7fff94b5c68e4fa8095519", - "sha256:3bbf080f3892ba1dc8838786ec02899516a9d227abe14a80ef6fd17d4fb57127", - "sha256:3ef6f73854cded34e78390dbdf40dfdcf0b89b55c0e282468ef92646fce8d13a", - "sha256:468f0031fdbf4d643f89403a66383247eb82803430b14fa27ce2d44d2662ca37", - "sha256:483edee5abed738a0b6a908025be47f33634c2ad8e737edd03ffa895bd600909", - "sha256:531d8eb013a9bc6b3ad101588182aa9b6dd994b190c56df07f0d84a02b85d530", - "sha256:5560558b0dace8312c46aa8915da977db02738ac8ecffbc61acfbfe103e10155", - "sha256:5bb6256de5a4fb1d42b3747b4e2268706c92965d75d0425be97186615bf2f24f", - "sha256:667c41351a6d8a34b53857ceb8343a45c85d438ee4fd835c279591db8aeb85be", - "sha256:6b014875fae19577a392372075e937ebfebf53fd57f613df07b35ab210f31534", - "sha256:6fdec1a0b3e5630c58e3d8704d2011c678929fce90b40908c97dfc47de8dca72", - "sha256:7bdd3d26315db0a9cf8a0af30ca95e0aa342eda9c1377b722e71ccd86bc5d1dd", - "sha256:7c9407719f42cb77049975410490c58a705da6af541adb64716573e550e5c9db", - "sha256:7d6673b2753f9c5377868a53445d0c321ef41ff3c8e3b6d57868e72054bfce5f", - "sha256:816ae7dac2c6522cfa620947ead0ca95ac654916eebf515c94d7c28de5601a6e", - "sha256:882c0b8bdff3bf1bd7f024ce17c6b8006042ec4cceba95cf15df57e57efa471c", - "sha256:8877861e3dee38c8d302eee0d5dbefa6663de3b46dc6a888f70cd7e82562d1f7", - "sha256:888a5fa2a677e0c2b944f9826c756475980f1b276b6302e606f5c4ff5635be9e", - "sha256:89e985d40d407545d5f5e2e58e1fdf19a22bd2d8cd54d20a882e29f97e930a0a", - "sha256:97b4b68a2ddaf5c4707ae79c110bfd874c5be3c6ac49261160fb243fa45d8bbb", - "sha256:98de71f86bdb29430fd7ba9997f47a6b10866800e3ea577598a786a785701bb0", - "sha256:9f304a22ece735a3da8a51309bc2c010e23961a8f675fae46fdf62541ed62123", - "sha256:9fd62c6dc83d5d35fb6a84ff82ec69df8f4657fff05f9cd6c7d9bec0dd57f0f6", - "sha256:a249139abc62ef333e9e85064c27fefb113b16ffc5686cefc315bdaef3eefbc8", - "sha256:b66e6d514f12c28d7a2d80bb2a48ef223342e99c449782d9831b0d29a9e88a17", - "sha256:b68b6caecb9a0c6db537aa79750d1b592a841e4f1a380c6196091e65b2ad35f9", - "sha256:baa83174390c0ff4fc1304fbe24393843ac7a08fdd59295759c4b439e06b1536", - "sha256:bb01ea7b5f52e7125bdc3c5807aeaa2d08a0553979cf2d96a8b7803ea33e15e7", - "sha256:cfae282c2aa7f0c4be45df65c248481f3509f8c40ca8b15ed96c35668ae0ff69", - "sha256:d0d81b46a5c87d443e40ce2272436da8e6092aa91f5fbeb60d1be9f11eff5b4c", - "sha256:d9b245db5a7e64c95816e27d72830e51411c4609c05673d1ae81eb5d23b0be54", - "sha256:ddab2dc69ee5ae27c74dbfe9d7bb6fee260826c136dca257faa1a41d1db61a89", - "sha256:e1b60fd297adb9fc78375778a5220da7f07bf54d2a33ac781319650413fc6a60", - "sha256:e259be0863770cb91b1a6ccf6907f1ac2f07eff0b7f01c249ed751865a70cb0d", - "sha256:e3872ae57acd4306ecf937d36177854e218e999af410a05c17168cd99676c512", - "sha256:e4819c6fb4f336fd5388372cb556b1f3a165f3f68e66913d1a2fc1de55dc6f58" - ], - "version": "==10.1" + "sha256:038afef2a05893578d10dadbdbb5f112bd115c46347e1efe99f6a356ff062138", + "sha256:05f6e9757017270e7a92a2975e2ae88a9a582ffc4629086fd6039aa80e99cd86", + "sha256:0b66421f9f13d4df60cd48ab977ed2c2b6c9147ae1a33caf5a9f46294422fda1", + "sha256:0cd02f36d37e503aca88ab23cc0a1a0e92a263d37acf6331521eb38040dcf77b", + "sha256:0f73cb2526d6da268e86977b2c4b58f2195994e53070fe567d5487c6436047e6", + "sha256:117383d0a17a0dda349f7a8790763dde75c1508ff8e4d6e8328b898b7df48397", + "sha256:1c1f3b18c8162e3b09761d0c6a0305fd642934202541cc511ef972cb9463261e", + "sha256:1c9031e90ebfc486e9cdad532b94004ade3aa39a31d3c46c105bb0b579cd2490", + "sha256:2349fa81b6b959484bb2bda556ccb9eb70ba68987646a0f8a537a1a18319fb03", + "sha256:24b879ba7db12bb525d4e58089fcbe6a3df3ce4666523183654170e86d372cbe", + "sha256:2aa9b91347ecd0412683f28aabe27f6bad502d89bd363b76e0a3508b1596402e", + "sha256:56d48eebe9e39ce0d68701bce3b21df923aa05dcc00f9fd8300de1df31a7c07c", + "sha256:5a38a0175ae82e4a8c4bac29fc01b9ee26d7d5a614e5ee11e7813c68a7d938ce", + "sha256:5b04270b5613f245ec84bb2c6a482a9d009aefad37c0575f6cda8499125d5d5c", + "sha256:6193bbc1ee63aadeb9a4d81de0e19477401d150d506aee772d8380943f118186", + "sha256:669e54228a4d9457abafed27cbf0e2b9f401445c4dfefc12bf8e4db9751703b8", + "sha256:6a009eb551c46fd79737791c0c833fc0e5b56bcd1c3057498b262d660b92e9cd", + "sha256:71a4491cfe7a9f18ee57d41163cb6a8a3fa591e0f0564ca8b0ed86b2a30cced4", + "sha256:7b38a5c9112e3dbbe45540f7b60c5204f49b3cb501b40950d6ab34cd202ab1d0", + "sha256:7bb9d8a6beca478c7e9bdde0159bd810cc1006ad6a7cb460533bae39da692ca2", + "sha256:82bc33db6d8309dc27a3bee11f7da2288ad925fcbabc2a4bb78f7e9c56249baf", + "sha256:8351c3c86b08156337b0e4ece0e3c5ec3e01fcd14e8950996832a23c99416098", + "sha256:8beac786a388bb99a66c3be4ab0fb38273c0e3bc17f612a4e0a47c4fc8b9c045", + "sha256:97950c7c844ec6f8d292440953ae18b99e3a6a09885e09d20d5e7ecd9b914cf8", + "sha256:98f57b3120f8331cd7440dbe0e776474f5e3632fdaa474af1f6b754955a47d71", + "sha256:9ca2ca05a4c29179f06cf6727b45dba5d228da62623ec9df4184413d8aae6cb9", + "sha256:a03a25d95cc7400bd4d61a63460b5d85a7761c12075ee2f51de1ffe73aa593d3", + "sha256:a10c0c1ee02164246f90053273a42d72a3b2452a7e7486fdae781138cf7fbe2d", + "sha256:a72b92f96e5e540d5dda99ee3346e199ade8df63152fa3c737260da1730c411f", + "sha256:ac081aa0307f263d63c5ff0727935c736c8dad51ddf2dc9f5d0c4759842aefaa", + "sha256:b22bdc795e62e71118b63e14a08bacfa4f262fd2877de7e5b950f5ac16b0348f", + "sha256:b4059e2ccbe6587b6dc9a01db5fc49ead9a884faa4076eea96c5ec62cb32f42a", + "sha256:b7fe45ae43ac814beb8ca09d6995b56800676f2cfa8e23f42839dc69bba34a42", + "sha256:bef03a51f9657fb03d8da6ccd233fe96e04101a852f0ffd35f5b725b28221ff3", + "sha256:bffc65442dd35c473ca9790a3fa3ba06396102a950794f536783f4b8060af8dd", + "sha256:c21a67ab9a94bd53e10bba21912556027fea944648a09e6508415ad14e37c325", + "sha256:c67d9cacb3f6537ca21e9b224d4fd08481538e43bcac08b3d93181b0816def39", + "sha256:c6e56606842bb24e16e36ae7eb308d866b4249cf0be8f63b212f287eeb76b124", + "sha256:cb316b87cbe3c0791c2ad92a5a36bf6adc87c457654335810b25048c1daa6fd5", + "sha256:cef40a1b183dcf39d23b392e9dd1d9b07ab9c46aadf294fff1350fb79146e72b", + "sha256:cf931c33db9c87c53d009856045dd524e4a378445693382a920fa1e0eb77c36c", + "sha256:d4d110a84b63c5cfdd22485acc97b8b919aefeecd6300c0c9d551e055b9a88ea", + "sha256:d5396710f86a306cf52f87fd8ea594a0e894ba0cc5a36059eaca3a477dc332aa", + "sha256:f09f46b1ff6d09b01c7816c50bd1903cf7d02ebbdb63726132717c2fcda835d5", + "sha256:f14bd10e170abc01682a9f8b28b16e6f20acf6175945ef38db6ffe31b0c72c3f", + "sha256:f5c335dc0e7dc271ef36df3f439868b3c790775f345338c2f61a562f1074187b", + "sha256:f8296b8408ec6853b26771599990721a26403e62b9de7e50ac0a056772ac0b5e", + "sha256:fa35c5d1830d0fb7b810324e9eeab9aa92e8f273f11fdbdc0741dcded6d72b9f" + ], + "version": "==10.2" }, "yarl": { "hashes": [ @@ -757,11 +757,19 @@ "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==1.7.2" } }, "develop": { + "astroid": { + "hashes": [ + "sha256:3975a0bd5373bdce166e60c851cfcbaf21ee96de80ec518c1f4cb3e94c3fb334", + "sha256:ab7f36e8a78b8e54a62028ba6beef7561db4cdb6f2a5009ecc44a6f42b5697ef" + ], + "markers": "python_version ~= '3.6'", + "version": "==2.6.6" + }, "attrs": { "hashes": [ "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", @@ -772,19 +780,40 @@ }, "black": { "hashes": [ - "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3", - "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f" + "sha256:07e5c049442d7ca1a2fc273c79d1aecbbf1bc858f62e8184abe1ad175c4f7cc2", + "sha256:0e21e1f1efa65a50e3960edd068b6ae6d64ad6235bd8bfea116a03b21836af71", + "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6", + "sha256:228b5ae2c8e3d6227e4bde5920d2fc66cc3400fde7bcc74f480cb07ef0b570d5", + "sha256:2d6f331c02f0f40aa51a22e479c8209d37fcd520c77721c034517d44eecf5912", + "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866", + "sha256:3524739d76b6b3ed1132422bf9d82123cd1705086723bc3e235ca39fd21c667d", + "sha256:35944b7100af4a985abfcaa860b06af15590deb1f392f06c8683b4381e8eeaf0", + "sha256:373922fc66676133ddc3e754e4509196a8c392fec3f5ca4486673e685a421321", + "sha256:5fa1db02410b1924b6749c245ab38d30621564e658297484952f3d8a39fce7e8", + "sha256:6f2f01381f91c1efb1451998bd65a129b3ed6f64f79663a55fe0e9b74a5f81fd", + "sha256:742ce9af3086e5bd07e58c8feb09dbb2b047b7f566eb5f5bc63fd455814979f3", + "sha256:7835fee5238fc0a0baf6c9268fb816b5f5cd9b8793423a75e8cd663c48d073ba", + "sha256:8871fcb4b447206904932b54b567923e5be802b9b19b744fdff092bd2f3118d0", + "sha256:a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5", + "sha256:b1a5ed73ab4c482208d20434f700d514f66ffe2840f63a6252ecc43a9bc77e8a", + "sha256:c8226f50b8c34a14608b848dc23a46e5d08397d009446353dad45e04af0c8e28", + "sha256:ccad888050f5393f0d6029deea2a33e5ae371fd182a697313bdbd835d3edaf9c", + "sha256:dae63f2dbf82882fa3b2a3c49c32bffe144970a573cd68d247af6560fc493ae1", + "sha256:e2f69158a7d120fd641d1fa9a921d898e20d52e44a74a6fbbcc570a62a6bc8ab", + "sha256:efbadd9b52c060a8fc3b9658744091cb33c31f830b3f074422ed27bad2b18e8f", + "sha256:f5660feab44c2e3cb24b2419b998846cbb01c23c7fe645fee45087efa3da2d61", + "sha256:fdb8754b453fb15fad3f72cd9cad3e16776f0964d67cf30ebcbf10327a3777a3" ], "index": "pypi", - "version": "==21.12b0" + "version": "==22.1.0" }, "click": { "hashes": [ - "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", - "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" + "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", + "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" ], - "markers": "python_version >= '3.6'", - "version": "==8.0.3" + "markers": "python_full_version >= '3.6.0'", + "version": "==8.0.4" }, "idna": { "hashes": [ @@ -801,70 +830,128 @@ ], "version": "==1.1.1" }, + "isort": { + "hashes": [ + "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7", + "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951" + ], + "markers": "python_version < '4.0' and python_full_version >= '3.6.1'", + "version": "==5.10.1" + }, + "lazy-object-proxy": { + "hashes": [ + "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7", + "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a", + "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c", + "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc", + "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f", + "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09", + "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442", + "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e", + "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029", + "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61", + "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb", + "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0", + "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35", + "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42", + "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1", + "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad", + "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443", + "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd", + "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9", + "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148", + "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38", + "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55", + "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36", + "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a", + "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b", + "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44", + "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6", + "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69", + "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4", + "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84", + "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de", + "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28", + "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c", + "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1", + "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8", + "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b", + "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb" + ], + "markers": "python_version >= '3.6'", + "version": "==1.7.1" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, "multidict": { "hashes": [ - "sha256:02847aa3602e21c04ac6fdef6f7c6dc916de8cce49a9eb59aeffedd3365f196c", - "sha256:05c3cca447fd39b566615d7cf918f0e83cd92f0549f8182a6cab6e4729c02566", - "sha256:0a9857789fd76e0394a5373598820bb2ea3dd113e2c0fb9a92248e3dadd81c5c", - "sha256:0b944477c1e7be8bea2ef819157fb01b79493af1a6dba83d315be63db2957af6", - "sha256:1354127c9687d0abbaadfb26e35db247ef1c35f0271e8052afa98b34a9140445", - "sha256:17289c1ad70e1104ea25f560f6e2941718112d59616482589646aa01fcf4d0d1", - "sha256:1b469534be490ded141d74d7a158db284055b0d04991c2634a9d26d906e063dd", - "sha256:241071469989c87da1835f3ccc4143a207b99a2ca27c19b7130a5edecc41a39e", - "sha256:2e82ac157bc0719b9802578964d4387e0d7dd530d1fd8949f3cef1c97f2e9d8a", - "sha256:2f90eb274732fe0958f2d9d4cc7a608bf218e63dd554a690ccafa30f9d9d1b2d", - "sha256:3424df56debab711f29c965cadb835dc3c702930265eae26f15ac784feb1dddd", - "sha256:36195396f2a76dd23a67ca2bdeb8589b6eaaef7e84c97cf90da3ede69f189baa", - "sha256:37228376057f37fb013130e83e7ad0921598760fb75bd8f0da17403390241d20", - "sha256:389a689aa3b657b87cb21f78468caa4dfccd758639ff4b37b6e2dceef7c5b12f", - "sha256:38ada537db7f9089560cf16dc5b8b280096213bc5260970929aca43675682739", - "sha256:39d5424379505110d6ca64e927f8b2772c57b05a3d240e66805244ecc4402311", - "sha256:3f97f03d7dbc33e20a73428be93974e82762b393579d59053da1257c35bad13b", - "sha256:48e0919ed5cc5e58c68f40b6516e3f1b0837580a7a8d51d9f99bf0f415d0b73a", - "sha256:4a98ee92e96157a3c787c5aa156968ceffb6fb4548c5f74ff879884fed2f9752", - "sha256:564ff7d88b4965cb5211ebf785bca409abbaac8dcca62b0fabe39d56a5ee7283", - "sha256:593586d7ac76ab7a9f229c49d81136b8c1a78119d948ba2a672f4fa681ad54ce", - "sha256:5a4fcf74d50a65fe99a68531d09f10ceef911992e0e64c1b2cf212effa075f8b", - "sha256:5c74c7a058a16b7dd24d030f0e8fe846f7d63f41cfeea89a804969cb129182a8", - "sha256:666f78daccf8133ebfacb77e81f4077570b03641b49555ebb5e75797b72770e1", - "sha256:6ee83096d27dfe52075385f5067d2a54fb227b41666b207e6a64f98ce9048266", - "sha256:70a5fff576fe9039550f8d6aacaa98ce26c41df97edc577688c563eb25bcbe83", - "sha256:7184dae6d519a8e629ef10e0e215dde022ee38d55254bea381ca0e61b8b197ea", - "sha256:7502c1610c7737697108ba4717274cca01130ce3e23227034b1601fb9fa0a8aa", - "sha256:798dd2d825ce6c0699ce261fda90020562236480192604cfc5be4a315f806810", - "sha256:7a6da1575300e24011352c7c620d19b072a2c9498429d1f587e5090621e6f568", - "sha256:7b487ad10f594e78e0e61662ff7643e1adc610919ea8a95dd976126bffc0256f", - "sha256:7c9213754993e0dcf70a4fffebef502daf9323fa8d56f0485f724bd4c2991667", - "sha256:9050a2487f9dee9b0abde090b2620a3ba57190d7fe1dc2932b32b9866f90df9e", - "sha256:92ba0e4745937efef33399348f62a2dc98505dde4d0764061a34123a55fe02e9", - "sha256:9c863a506466d64871c70e4204cecdcaf2c0c92d157683bb5d5b3e7b5aaea05a", - "sha256:a5210e5eca8f0fc0213da31cbc29587d15195b21f40ffd53ff513126c39be0e2", - "sha256:a542ceca143e19c08715defe133475961d43d7bfb48dbdc3ac506548ec168f18", - "sha256:a701e9ad52e47b740b5b9aba627ac8fc4ee9e68682f0228fb4a7c4562631ffac", - "sha256:a7c10ab3a1ad3188d9a4be01a10c0ddb67d6feaaea538781e73d6ba69fcafbbd", - "sha256:af1fdc8d25eb9e9998854e996bc982ae3be733590a9e8d6b179b28fd212ddf71", - "sha256:af441cfeb3003d96de8acdeb402187bc6a34f96e125618b8275bacfd29a6fad7", - "sha256:b6bfb0a4df79bd78907fff46c34ed47284d5eb459b096d2de896b0b1c31f3fa7", - "sha256:b85354b2d2fe38a3ab90348f8c9778a437d376252f62115cabea1106332bd1b6", - "sha256:bd21540c9cc9b90373b5a6aaed8f8d53815529e89210453e0566d00389034b82", - "sha256:caa9f2874519e0fbb19b90380532e59ef9e07d8ed22d8f0e2e69af796bae2c78", - "sha256:ccf0aaaef2f8a4cf1973ebe17162b0c3016859eb706d55b328993b8fd8c3515c", - "sha256:d13af99bf380567ede69927d3188cfaccfde76e78e336151e42e60fe03ca5c00", - "sha256:d2cc15d2507b0d5f09726fd97bb9ffaa6bb47487fe77a208262cb6187fd9dcf3", - "sha256:d40616f3f9326a18e1f2fa7c7e8e0e04a7e5228bfa2bd62c1e0d68fbc259b09b", - "sha256:d65b5bd50a5e1f4c6427ebcabb5acc62540301de733f81fd549cf7633826fccd", - "sha256:dbda7f3be5a75ee87a2649382e47f419374420ef244b372312e662637931399f", - "sha256:e037782357ddf6741023df1a84f17a3a1bb62abba52e41efa4014199f6338143", - "sha256:e19c9c56ddca200f7ffbf376cf2d1a370e8f2e306ec16510a4d90b78a1a0be62", - "sha256:e545e5922a4ae99e680a96ed88d03007bd4208fc2599ff273eb2086051d3ef74", - "sha256:ea08fb7383422148bcfc066c3d2dae03fcdb8bd06e7ce713badd86bc26c25179", - "sha256:efeba14caaacb4a202d977aca63866069e8a57e632282caf971ce8ff472a49cd", - "sha256:f24b3d4405271d6d1b920261437f3acb7dd1c329b0ac782b8b4e0ee7ad187e5b", - "sha256:f74a680ba9d6c543c1cdd8bcef464d58b933bed29edb89a0b3c0b33cc553181a", - "sha256:ff8004ecfb2cc00cd4f063c5e8b3cfd7e544bf774f17c2a861067444532e4fbc" + "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", + "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", + "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", + "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", + "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", + "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", + "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", + "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", + "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", + "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", + "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", + "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", + "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", + "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", + "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", + "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", + "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", + "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", + "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", + "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", + "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", + "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", + "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", + "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", + "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", + "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", + "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", + "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", + "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", + "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", + "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", + "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", + "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", + "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", + "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", + "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", + "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", + "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", + "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", + "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", + "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", + "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", + "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", + "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", + "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", + "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", + "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", + "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", + "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", + "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", + "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", + "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", + "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", + "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", + "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", + "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", + "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", + "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", + "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" ], "markers": "python_version >= '3.7'", - "version": "==6.0.1" + "version": "==6.0.2" }, "mypy-extensions": { "hashes": [ @@ -890,11 +977,11 @@ }, "platformdirs": { "hashes": [ - "sha256:1d7385c7db91728b83efd0ca99a5afb296cab9d0ed8313a45ed8ba17967ecfca", - "sha256:440633ddfebcc36264232365d7840a970e75e1018d15b4327d11f91909045fda" + "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", + "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" ], "markers": "python_version >= '3.7'", - "version": "==2.4.1" + "version": "==2.5.1" }, "pluggy": { "hashes": [ @@ -912,6 +999,14 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.11.0" }, + "pylint": { + "hashes": [ + "sha256:349b149e88e4357ed4f77ac3a4e61c0ab965cda293b6f4e58caf73d4b24ae551", + "sha256:adc11bec00c2084bf55c81dd69e26f2793fef757547997d44b21aed038f74403" + ], + "index": "pypi", + "version": "==3.0.0a4" + }, "pyparsing": { "hashes": [ "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", @@ -922,11 +1017,11 @@ }, "pytest": { "hashes": [ - "sha256:8fc363e0b7407a9397e660ef81e1634e4504faaeb6ad1d2416da4c38d29a0f45", - "sha256:e1af71303d633af3376130b388e028342815cff74d2f3be4aeb22f3fd94325e6" + "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db", + "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171" ], "index": "pypi", - "version": "==7.0.0rc1" + "version": "==7.0.1" }, "pytest-vcr": { "hashes": [ @@ -982,21 +1077,21 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, - "tomli": { + "toml": { "hashes": [ - "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f", - "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c" + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '3.6'", - "version": "==1.2.3" + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.10.2" }, - "typing-extensions": { + "tomli": { "hashes": [ - "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e", - "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '3.6'", - "version": "==4.0.1" + "markers": "python_version >= '3.7'", + "version": "==2.0.1" }, "vcrpy": { "hashes": [ @@ -1008,60 +1103,10 @@ }, "wrapt": { "hashes": [ - "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179", - "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096", - "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374", - "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df", - "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185", - "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785", - "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7", - "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909", - "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918", - "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33", - "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068", - "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829", - "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af", - "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79", - "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce", - "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc", - "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36", - "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade", - "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca", - "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32", - "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125", - "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e", - "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709", - "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f", - "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b", - "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb", - "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb", - "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489", - "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640", - "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb", - "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851", - "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d", - "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44", - "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13", - "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2", - "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb", - "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b", - "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9", - "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755", - "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c", - "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a", - "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf", - "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3", - "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229", - "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e", - "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de", - "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554", - "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10", - "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80", - "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056", - "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea" + "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.13.3" + "version": "==1.12.1" }, "yarl": { "hashes": [ @@ -1138,7 +1183,7 @@ "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==1.7.2" } } diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..d4f81e5 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: uvicorn app.main:app --host=0.0.0.0 --port=${PORT:-5000} \ No newline at end of file diff --git a/base_bot_manifest.yml b/base_bot_manifest.yml new file mode 100644 index 0000000..7dee965 --- /dev/null +++ b/base_bot_manifest.yml @@ -0,0 +1,73 @@ +_metadata: + major_version: 1 + minor_version: 1 +display_information: + name: OC-Community-Pybot +features: + bot_user: + display_name: OC-Community-Pybot + always_online: true + slash_commands: + - command: /mentor_request + url: https://oc-pybot-production.herokuapp.com/slack/events + description: Request a Mentor + should_escape: false + - command: /new_join + url: https://oc-pybot-production.herokuapp.com/slack/events + description: New join testing + should_escape: false + - command: /report + url: https://oc-pybot-production.herokuapp.com/slack/events + description: Sends a report to the moderation team + should_escape: false + - command: /join-blacks-in-tech + url: https://oc-pybot-production.herokuapp.com/slack/events + description: Sends a request to join the blacks-in-tech channel + should_escape: false + - command: /join-pride + url: https://oc-pybot-production.herokuapp.com/slack/events + description: Sends a request to join the operation-pride channel. + should_escape: false +oauth_config: + scopes: + bot: + - app_mentions:read + - channels:history + - channels:join + - channels:read + - chat:write + - chat:write.public + - commands + - emoji:read + - files:read + - groups:read + - groups:write + - im:write + - im:history + - links:read + - mpim:write + - mpim:history + - pins:read + - remote_files:read + - team.preferences:read + - team:read + - usergroups:read + - users.profile:read + - users:read + - users:read.email +settings: + event_subscriptions: + request_url: https://oc-pybot-production.herokuapp.com/slack/events + bot_events: + - app_mention + - member_joined_channel + - message.channels + - message.im + - message.mpim + - team_join + interactivity: + is_enabled: true + request_url: https://oc-pybot-production.herokuapp.com/slack/events + org_deploy_enabled: false + socket_mode_enabled: false + token_rotation_enabled: false diff --git a/main.py b/main.py index ea9a613..514327e 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,4 @@ import os - -# import sys -# import yaml -# import json -# from slack_bolt.app import App import re import uvicorn import logging @@ -50,7 +45,6 @@ from modules.models.slack_models.command_models import SlackCommandRequestBody from modules.models.slack_models.view_models import SlackViewRequestBody from modules.models.slack_models.action_models import SlackActionRequestBody -from modules.models.slack_models.shared_models import SlackTeam load_dotenv() logging.basicConfig(level=os.getenv("LOGGING_LEVEL", "INFO")) @@ -105,14 +99,14 @@ # Initialize an AsyncIOScheduler object to schedule tasks Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) -Trigger = IntervalTrigger(seconds=30) - +MessageTrigger = IntervalTrigger(seconds=30) +DailyProgrammerTrigger = IntervalTrigger(hours=24) # Start up our job scheduler on FastAPI startup and schedule jobs as needed @api.on_event("startup") async def startup_event() -> None: Scheduler.start() - # job = Scheduler.add_job(schedule_messages, trigger=Trigger) + # job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger) # logging.debug(f"Scheduled {job.name} with job_id: {job.id}") @@ -121,18 +115,18 @@ async def startup_event() -> None: async def shutdown_event(): await Scheduler.shutdown() - -@api.post("/pybot/api/v1/slack/invite") -async def invite_new_user( - email: str = Body( - ..., example="Test@test.com", description="Email address of the user to invite" - ) -) -> None: - await app.client.admin_users_invite( - team_id=SlackTeam.slack_id, - channel_ids=f"{SlackTeam.general_channel.id}", - email=email, - ) +# Currently, handled by the old Pybot and can't be handled by us without some legacy token usage +# @api.post("/pybot/api/v1/slack/invite") +# async def invite_new_user( +# email: str = Body( +# ..., example="Test@test.com", description="Email address of the user to invite" +# ) +# ) -> None: +# await app.client.admin_users_invite( +# team_id=SlackTeam.slack_id, +# channel_ids=f"{SlackTeam.general_channel.id}", +# email=email, +# ) # The base URI for Slack to communicate with our application - this URI is used for events, commands, and any other interaction @@ -174,13 +168,13 @@ async def handle_mentorship_request_claim_reset_click( await handle_mentorship_request_claim_reset(SlackActionRequestBody(**body), context) -# @app.command("/new_join") +@app.command("/new_join") # This is used specifically for testing in staging @app.event("member_joined_channel") async def handle_new_member_join_event( body: dict[str, Any], context: AsyncBoltContext ) -> None: logger.info("STAGE: Processing new member joining...") - if body["command"]: + if body["command"] and os.getenv("RUN_ENVIRONMENT") != "production": await handle_new_member_join(SlackCommandRequestBody(**body), context) else: await handle_new_member_join(MemberJoinedChannelEvent(**body), context) @@ -278,6 +272,13 @@ async def handle_daily_programmer( await handle_daily_programmer_post(MessageReceivedChannelEvent(**body), context) +@app.event("message") +async def handle_message_event( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing message event...") + await context.ack() + if __name__ == "__main__": if os.environ.get("RUN_ENV") == "development": uvicorn.run( @@ -289,4 +290,4 @@ async def handle_daily_programmer( ) else: # noinspection PyTypeChecker - uvicorn.run("main:api", host="0.0.0.0", port=5001) + uvicorn.run("main:api", host="0.0.0.0", port=5000) diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py index 57bf626..91c3d23 100644 --- a/modules/handlers/daily_programmer.py +++ b/modules/handlers/daily_programmer.py @@ -1,6 +1,6 @@ import re import logging -from typing import Optional +from typing import Optional, Union from datetime import datetime, timezone from difflib import SequenceMatcher from slack_bolt.context.async_context import AsyncBoltContext @@ -27,7 +27,7 @@ async def handle_daily_programmer_post( process_daily_programmer_post_text(parsed_body.event) -def check_for_existing_post(text: str) -> Optional[tuple[str, int]]: +def check_for_existing_post(text: str) -> Union[tuple[str, int], tuple[None, None]]: existing_posts = daily_programmer_table.all( view="Valid", fields=["Text", "Posted Count"] ) @@ -35,7 +35,7 @@ def check_for_existing_post(text: str) -> Optional[tuple[str, int]]: if SequenceMatcher(None, post["fields"]["Text"], text).ratio() > 0.85: logger.debug(f"Found matching post: {post}") return post["id"], int(post["fields"]["Posted Count"]) - return None + return None, None def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: @@ -52,12 +52,12 @@ def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: .replace("]", "") .replace("*", ""), "Text": body.text[name.span()[1] + 1 :], - "Initially Posted On": datetime.fromtimestamp( + "Initially Posted On": str(datetime.fromtimestamp( float(body.ts), timezone.utc - ), - "Last Posted On": datetime.fromtimestamp( + )), + "Last Posted On": str(datetime.fromtimestamp( float(body.ts), timezone.utc - ), + )), "Posted Count": 1, "Initial Slack TS": body.ts, "Blocks": body.blocks, diff --git a/modules/utils/daily_programmer_scheduler.py b/modules/utils/daily_programmer_scheduler.py index 6dc39bc..899ce2f 100644 --- a/modules/utils/daily_programmer_scheduler.py +++ b/modules/utils/daily_programmer_scheduler.py @@ -1,9 +1,8 @@ import logging -from slack_bolt.context.async_context import AsyncBoltContext +from slack_bolt.async_app import AsyncApp logger = logging.getLogger(__name__) -async def handle_daily_programmer_post(parsed_body, context: AsyncBoltContext) -> None: - logger.info("STAGE: Beginning task populate_daily_programmer_table...") - logger.debug(f"Received body: {parsed_body}") +async def post_daily_programmer_message(async_app: AsyncApp) -> None: + logger.info("STAGE: Beginning task post_daily_programmer_message...") diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index 74ec17b..67a5fad 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -46,11 +46,18 @@ async def schedule_messages(async_app: AsyncApp) -> None: blocks=general_announcement_blocks(message.name, message.message_text), ) if response.status_code == 200: + if message.frequency == "Daily": + next_when_to_send = datetime_to_update + timedelta(days=1) + elif message.frequency == "Weekly": + next_when_to_send = datetime_to_update + timedelta(days=7) + else: + next_when_to_send = datetime_to_update + timedelta(days=30) logging.debug( f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" + f"and Next Send: {next_when_to_send}" ) scheduled_message_table.update_record( - message.airtable_id, {"Last Sent": str(datetime_to_update)} + message.airtable_id, {"Last Sent": str(datetime_to_update), "When To Send": str(next_when_to_send)} ) else: logger.warning( diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4dddde0 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,52 @@ +# +# These requirements were autogenerated by pipenv +# To regenerate from the project's Pipfile, run: +# +# pipenv lock --requirements +# + +-i https://pypi.org/simple +aiohttp==3.8.1 +aiosignal==1.2.0; python_full_version >= '3.6.0' +airtable==0.4.8 +anyio==3.5.0; python_full_version >= '3.6.2' +apscheduler==3.9.1 +asgiref==3.5.0; python_version >= '3.7' +async-timeout==4.0.2; python_full_version >= '3.6.0' +attrs==21.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +certifi==2021.10.8 +charset-normalizer==2.0.12; python_version >= '3' +click==8.0.4; python_full_version >= '3.6.0' +dailyprogrammer==1.0 +decorator==5.1.1; python_version >= '3.5' +fastapi==0.75.0 +frozenlist==1.3.0; python_version >= '3.7' +h11==0.13.0; python_full_version >= '3.6.0' +httptools==0.3.0 +idna==3.3; python_version >= '3' +jsonpath-rw-ext==1.2.2 +jsonpath-rw==1.4.0 +multidict==6.0.2; python_version >= '3.7' +pbr==5.8.1; python_version >= '2.6' +ply==3.11 +pyairtable==1.1.0 +pydantic==1.9.0 +python-dotenv==0.19.2 +pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pytz==2021.3 +pyyaml==6.0 +requests==2.27.1 +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +slack-bolt==1.11.6 +slack-sdk==3.15.2 +sniffio==1.2.0; python_version >= '3.5' +starlette==0.17.1; python_full_version >= '3.6.0' +typing-extensions==4.1.1; python_full_version >= '3.6.0' +tzdata==2021.5; python_full_version >= '3.6.0' +tzlocal==4.1; python_full_version >= '3.6.0' +urllib3==1.26.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +uvicorn[standard]==0.17.5 +uvloop==0.16.0 +watchgod==0.7 +websockets==10.2 +yarl==1.7.2; python_full_version >= '3.6.0' diff --git a/requirements_dev.txt b/requirements_dev.txt new file mode 100644 index 0000000..c1c948a --- /dev/null +++ b/requirements_dev.txt @@ -0,0 +1,75 @@ +# +# These requirements were autogenerated by pipenv +# To regenerate from the project's Pipfile, run: +# +# pipenv lock --requirements --dev +# + +# Note: in pipenv 2020.x, "--dev" changed to emit both default and development +# requirements. To emit only development requirements, pass "--dev-only". + +-i https://pypi.org/simple +aiohttp==3.8.1 +aiosignal==1.2.0; python_full_version >= '3.6.0' +airtable==0.4.8 +anyio==3.5.0; python_full_version >= '3.6.2' +apscheduler==3.9.1 +asgiref==3.5.0; python_version >= '3.7' +astroid==2.6.6; python_version ~= '3.6' +async-timeout==4.0.2; python_full_version >= '3.6.0' +attrs==21.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +black==22.1.0 +certifi==2021.10.8 +charset-normalizer==2.0.12; python_version >= '3' +click==8.0.4; python_full_version >= '3.6.0' +dailyprogrammer==1.0 +decorator==5.1.1; python_version >= '3.5' +fastapi==0.75.0 +frozenlist==1.3.0; python_version >= '3.7' +h11==0.13.0; python_full_version >= '3.6.0' +httptools==0.3.0 +idna==3.3; python_version >= '3' +iniconfig==1.1.1 +isort==5.10.1; python_version < '4.0' and python_full_version >= '3.6.1' +jsonpath-rw-ext==1.2.2 +jsonpath-rw==1.4.0 +lazy-object-proxy==1.7.1; python_version >= '3.6' +mccabe==0.6.1 +multidict==6.0.2; python_version >= '3.7' +mypy-extensions==0.4.3 +packaging==21.3; python_version >= '3.6' +pathspec==0.9.0 +pbr==5.8.1; python_version >= '2.6' +platformdirs==2.5.1; python_version >= '3.7' +pluggy==1.0.0; python_version >= '3.6' +ply==3.11 +py==1.11.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +pyairtable==1.1.0 +pydantic==1.9.0 +pylint==3.0.0a4 +pyparsing==3.0.7; python_version >= '3.6' +pytest-vcr==1.0.2 +pytest==7.0.1 +python-dotenv==0.19.2 +pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pytz==2021.3 +pyyaml==6.0 +requests==2.27.1 +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +slack-bolt==1.11.6 +slack-sdk==3.15.2 +sniffio==1.2.0; python_version >= '3.5' +starlette==0.17.1; python_full_version >= '3.6.0' +toml==0.10.2; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' +tomli==2.0.1; python_version >= '3.7' +typing-extensions==4.1.1; python_full_version >= '3.6.0' +tzdata==2021.5; python_full_version >= '3.6.0' +tzlocal==4.1; python_full_version >= '3.6.0' +urllib3==1.26.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +uvicorn[standard]==0.17.5 +uvloop==0.16.0 +vcrpy==4.1.1; python_version >= '3.5' +watchgod==0.7 +websockets==10.2 +wrapt==1.12.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +yarl==1.7.2; python_full_version >= '3.6.0' From 1e1ea6605324fa7cd2398e8b7e95cfcebe89a8a3 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Wed, 9 Mar 2022 16:19:40 -0600 Subject: [PATCH 31/69] Updates procfile for deployment --- Procfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Procfile b/Procfile index d4f81e5..5ef4e89 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: uvicorn app.main:app --host=0.0.0.0 --port=${PORT:-5000} \ No newline at end of file +web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} \ No newline at end of file From abb14fc4d812b2400d90353060b637ea076c5567 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Wed, 9 Mar 2022 16:26:23 -0600 Subject: [PATCH 32/69] Updates formatting and logging --- main.py | 8 ++++---- modules/handlers/daily_programmer.py | 12 ++++++------ modules/models/slack_models/shared_models.py | 6 +++++- modules/utils/message_scheduler.py | 6 +++++- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/main.py b/main.py index 514327e..7a70c61 100644 --- a/main.py +++ b/main.py @@ -115,6 +115,7 @@ async def startup_event() -> None: async def shutdown_event(): await Scheduler.shutdown() + # Currently, handled by the old Pybot and can't be handled by us without some legacy token usage # @api.post("/pybot/api/v1/slack/invite") # async def invite_new_user( @@ -168,7 +169,7 @@ async def handle_mentorship_request_claim_reset_click( await handle_mentorship_request_claim_reset(SlackActionRequestBody(**body), context) -@app.command("/new_join") # This is used specifically for testing in staging +@app.command("/new_join") # This is used specifically for testing in staging @app.event("member_joined_channel") async def handle_new_member_join_event( body: dict[str, Any], context: AsyncBoltContext @@ -273,12 +274,11 @@ async def handle_daily_programmer( @app.event("message") -async def handle_message_event( - body: dict[str, Any], context: AsyncBoltContext -) -> None: +async def handle_message_event(body: dict[str, Any], context: AsyncBoltContext) -> None: logger.info("STAGE: Processing message event...") await context.ack() + if __name__ == "__main__": if os.environ.get("RUN_ENV") == "development": uvicorn.run( diff --git a/modules/handlers/daily_programmer.py b/modules/handlers/daily_programmer.py index 91c3d23..93f5549 100644 --- a/modules/handlers/daily_programmer.py +++ b/modules/handlers/daily_programmer.py @@ -52,12 +52,12 @@ def process_daily_programmer_post_text(body: SlackMessageInfo) -> None: .replace("]", "") .replace("*", ""), "Text": body.text[name.span()[1] + 1 :], - "Initially Posted On": str(datetime.fromtimestamp( - float(body.ts), timezone.utc - )), - "Last Posted On": str(datetime.fromtimestamp( - float(body.ts), timezone.utc - )), + "Initially Posted On": str( + datetime.fromtimestamp(float(body.ts), timezone.utc) + ), + "Last Posted On": str( + datetime.fromtimestamp(float(body.ts), timezone.utc) + ), "Posted Count": 1, "Initial Slack TS": body.ts, "Blocks": body.blocks, diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py index 0e3d628..444ef8e 100644 --- a/modules/models/slack_models/shared_models.py +++ b/modules/models/slack_models/shared_models.py @@ -1,9 +1,12 @@ import os +import logging from functools import cached_property -from typing import Any, Union, Optional +from typing import Any, Union from pydantic import BaseModel, Field +logger = logging.getLogger(__name__) + class SlackUserInfo(BaseModel): id: str = Field( @@ -277,6 +280,7 @@ def __init__(self, team_info: SlackTeamInfo) -> None: self._team_info = team_info def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: + logger.debug(f"Finding channel by name: {channel_name}") return [ conversation for conversation in self.full_conversation_list diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index 67a5fad..db94a37 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -57,7 +57,11 @@ async def schedule_messages(async_app: AsyncApp) -> None: f"and Next Send: {next_when_to_send}" ) scheduled_message_table.update_record( - message.airtable_id, {"Last Sent": str(datetime_to_update), "When To Send": str(next_when_to_send)} + message.airtable_id, + { + "Last Sent": str(datetime_to_update), + "When To Send": str(next_when_to_send), + }, ) else: logger.warning( From cb8f28db7fce5a1c6f4193f5b922761d06cc3469 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Wed, 9 Mar 2022 16:33:17 -0600 Subject: [PATCH 33/69] Updates formatting and logging --- main.py | 5 +++++ modules/models/slack_models/shared_models.py | 1 + 2 files changed, 6 insertions(+) diff --git a/main.py b/main.py index 7a70c61..ff884ad 100644 --- a/main.py +++ b/main.py @@ -278,6 +278,11 @@ async def handle_message_event(body: dict[str, Any], context: AsyncBoltContext) logger.info("STAGE: Processing message event...") await context.ack() +@app.event("app_mention") +async def handle_app_mention_event(body: dict[str, Any], context: AsyncBoltContext) -> None: + logger.info("STAGE: Processing app mention event...") + await context.ack() + if __name__ == "__main__": if os.environ.get("RUN_ENV") == "development": diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py index 444ef8e..58c6d9f 100644 --- a/modules/models/slack_models/shared_models.py +++ b/modules/models/slack_models/shared_models.py @@ -281,6 +281,7 @@ def __init__(self, team_info: SlackTeamInfo) -> None: def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: logger.debug(f"Finding channel by name: {channel_name}") + logger.debug(f"Full channel list: {self.full_conversation_list}") return [ conversation for conversation in self.full_conversation_list From 25e1f6f6d33e198fd4751155b8daa7f8b4e88416 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Wed, 9 Mar 2022 16:40:10 -0600 Subject: [PATCH 34/69] Updates greeting handler to fix message for reset --- modules/handlers/greeting_handler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/handlers/greeting_handler.py b/modules/handlers/greeting_handler.py index b31908e..2999450 100644 --- a/modules/handlers/greeting_handler.py +++ b/modules/handlers/greeting_handler.py @@ -102,7 +102,7 @@ async def handle_resetting_greeting_new_user_claim( message_ts=parsed_body.message.ts, username=parsed_body.user.username, action_ts=parsed_body.actions[0].action_ts, - claim=True, + claim=False, ) await context.respond( text="Modified the claim to greet the new user...", From 70cab62cd4af4fcef5a60b17a94ff6cc291e16f1 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Wed, 9 Mar 2022 18:53:29 -0600 Subject: [PATCH 35/69] Update report submission text --- modules/handlers/report_handler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/handlers/report_handler.py b/modules/handlers/report_handler.py index 8b19177..9b27c22 100644 --- a/modules/handlers/report_handler.py +++ b/modules/handlers/report_handler.py @@ -39,6 +39,7 @@ async def handle_report_submit(body: dict[str, Any], context: AsyncBoltContext) "value" ], ), + text="New report submitted..." ) if response.data["ok"]: await context.client.chat_postEphemeral( From 30918df3d890fcda06f2abd1a83b1f016fc7238a Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Wed, 9 Mar 2022 19:22:58 -0600 Subject: [PATCH 36/69] Adds acknowledgement for button clicks --- main.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/main.py b/main.py index ff884ad..39a19bb 100644 --- a/main.py +++ b/main.py @@ -283,6 +283,28 @@ async def handle_app_mention_event(body: dict[str, Any], context: AsyncBoltConte logger.info("STAGE: Processing app mention event...") await context.ack() +@app.action("oc_greeting_homepage_click") +async def handle_oc_greeting_homepage_click_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing OC greeting homepage click...") + await context.ack() + +@app.action("oc_greeting_slack_download_click") +async def handle_oc_greeting_slack_download_click_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing OC greeting slack download click...") + await context.ack() + + +@app.action("oc_greeting_coc_click") +async def handle_oc_greeting_coc_click_action( + body: dict[str, Any], context: AsyncBoltContext +) -> None: + logger.info("STAGE: Processing OC greeting coc click...") + await context.ack() + if __name__ == "__main__": if os.environ.get("RUN_ENV") == "development": From 1bbc25d794a237bc6bb42fc2dea2f57937d98446 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 10:45:56 -0500 Subject: [PATCH 37/69] Adds in Sentry and turns on message scheduler job --- Pipfile | 1 + Pipfile.lock | 112 +++++++++++++++++------------ main.py | 16 +++-- modules/utils/message_scheduler.py | 17 +++-- 4 files changed, 86 insertions(+), 60 deletions(-) diff --git a/Pipfile b/Pipfile index 7ddab07..e2a310a 100644 --- a/Pipfile +++ b/Pipfile @@ -15,6 +15,7 @@ pydantic = "*" apscheduler = "*" dailyprogrammer = "*" aiohttp = "==3.8.1" +sentry-sdk = "*" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 7b8be92..35561f6 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "d938a8fa4cfae0a61f61a6689a45b9eff87bcfcd1eb58d35a3fa5b2a02ed6749" + "sha256": "399673dec37d52ea0453eba0f37bf7dae0665fd48598e32a13b0f8dd5545307b" }, "pipfile-spec": 6, "requires": { @@ -99,7 +99,7 @@ "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==1.2.0" }, "airtable": { @@ -139,7 +139,7 @@ "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==4.0.2" }, "attrs": { @@ -170,7 +170,7 @@ "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==8.0.4" }, "dailyprogrammer": { @@ -268,37 +268,47 @@ "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06", "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==0.13.0" }, "httptools": { "hashes": [ - "sha256:04114db99605c9b56ea22a8ec4d7b1485b908128ed4f4a8f6438489c428da794", - "sha256:074afd8afdeec0fa6786cd4a1676e0c0be23dc9a017a86647efa6b695168104f", - "sha256:113816f9af7dcfc4aa71ebb5354d77365f666ecf96ac7ff2aa1d24b6bca44165", - "sha256:1a8f26327023fa1a947d36e60a0582149e182fbbc949c8a65ec8665754dbbe69", - "sha256:2119fa619a4c53311f594f25c0205d619350fcb32140ec5057f861952e9b2b4f", - "sha256:21e948034f70e47c8abfa2d5e6f1a5661f87a2cddc7bcc70f61579cc87897c70", - "sha256:32a10a5903b5bc0eb647d01cd1e95bec3bb614a9bf53f0af1e01360b2debdf81", - "sha256:3787c1f46e9722ef7f07ea5c76b0103037483d1b12e34a02c53ceca5afa4e09a", - "sha256:3f82eb106e1474c63dba36a176067e65b48385f4cecddf3616411aa5d1fbdfec", - "sha256:3f9b4856d46ba1f0c850f4e84b264a9a8b4460acb20e865ec00978ad9fbaa4cf", - "sha256:4137137de8976511a392e27bfdcf231bd926ac13d375e0414e927b08217d779e", - "sha256:4687dfc116a9f1eb22a7d797f0dc6f6e17190d406ca4e729634b38aa98044b17", - "sha256:47dba2345aaa01b87e4981e8756af441349340708d5b60712c98c55a4d28f4af", - "sha256:5a836bd85ae1fb4304f674808488dae403e136d274aa5bafd0e6ee456f11c371", - "sha256:6e676bc3bb911b11f3d7e2144b9a53600bf6b9b21e0e4437aa308e1eef094d97", - "sha256:72ee0e3fb9c6437ab3ae34e9abee67fcee6876f4f58504e3f613dd5882aafdb7", - "sha256:79717080dc3f8b1eeb7f820b9b81528acbc04be6041f323fdd97550da2062575", - "sha256:8ac842df4fc3952efa7820b277961ea55e068bbc54cb59a0820400de7ae358d8", - "sha256:9f475b642c48b1b78584bdd12a5143e2c512485664331eade9c29ef769a17598", - "sha256:b8ac7dee63af4346e02b1e6d32202e3b5b3706a9928bec6da6d7a5b066217422", - "sha256:c0ac2e0ce6733c55858932e7d37fcc7b67ba6bb23e9648593c55f663de031b93", - "sha256:c14576b737d9e6e4f2a86af04918dbe9b62f57ce8102a8695c9a382dbe405c7f", - "sha256:cdc3975db86c29817e6d13df14e037c931fc893a710fb71097777a4147090068", - "sha256:eda95634027200f4b2a6d499e7c2e7fa9b8ee57e045dfda26958ea0af27c070b" - ], - "version": "==0.3.0" + "sha256:1a99346ebcb801b213c591540837340bdf6fd060a8687518d01c607d338b7424", + "sha256:1ee0b459257e222b878a6c09ccf233957d3a4dcb883b0847640af98d2d9aac23", + "sha256:20a45bcf22452a10fa8d58b7dbdb474381f6946bf5b8933e3662d572bc61bae4", + "sha256:29bf97a5c532da9c7a04de2c7a9c31d1d54f3abd65a464119b680206bbbb1055", + "sha256:2c9a930c378b3d15d6b695fb95ebcff81a7395b4f9775c4f10a076beb0b2c1ff", + "sha256:2db44a0b294d317199e9f80123e72c6b005c55b625b57fae36de68670090fa48", + "sha256:3194f6d6443befa8d4db16c1946b2fc428a3ceb8ab32eb6f09a59f86104dc1a0", + "sha256:34d2903dd2a3dd85d33705b6fde40bf91fc44411661283763fd0746723963c83", + "sha256:48e48530d9b995a84d1d89ae6b3ec4e59ea7d494b150ac3bbc5e2ac4acce92cd", + "sha256:54bbd295f031b866b9799dd39cb45deee81aca036c9bff9f58ca06726f6494f1", + "sha256:5d1fe6b6661022fd6cac541f54a4237496b246e6f1c0a6b41998ee08a1135afe", + "sha256:645373c070080e632480a3d251d892cb795be3d3a15f86975d0f1aca56fd230d", + "sha256:6a1a7dfc1f9c78a833e2c4904757a0f47ce25d08634dd2a52af394eefe5f9777", + "sha256:701e66b59dd21a32a274771238025d58db7e2b6ecebbab64ceff51b8e31527ae", + "sha256:72aa3fbe636b16d22e04b5a9d24711b043495e0ecfe58080addf23a1a37f3409", + "sha256:7af6bdbd21a2a25d6784f6d67f44f5df33ef39b6159543b9f9064d365c01f919", + "sha256:7ee9f226acab9085037582c059d66769862706e8e8cd2340470ceb8b3850873d", + "sha256:7f7bfb74718f52d5ed47d608d507bf66d3bc01d4a8b3e6dd7134daaae129357b", + "sha256:8e2eb957787cbb614a0f006bfc5798ff1d90ac7c4dd24854c84edbdc8c02369e", + "sha256:903f739c9fb78dab8970b0f3ea51f21955b24b45afa77b22ff0e172fc11ef111", + "sha256:98993805f1e3cdb53de4eed02b55dcc953cdf017ba7bbb2fd89226c086a6d855", + "sha256:9967d9758df505975913304c434cb9ab21e2c609ad859eb921f2f615a038c8de", + "sha256:a113789e53ac1fa26edf99856a61e4c493868e125ae0dd6354cf518948fbbd5c", + "sha256:a522d12e2ddbc2e91842ffb454a1aeb0d47607972c7d8fc88bd0838d97fb8a2a", + "sha256:abe829275cdd4174b4c4e65ad718715d449e308d59793bf3a931ee1bf7e7b86c", + "sha256:c286985b5e194ca0ebb2908d71464b9be8f17cc66d6d3e330e8d5407248f56ad", + "sha256:cd1295f52971097f757edfbfce827b6dbbfb0f7a74901ee7d4933dff5ad4c9af", + "sha256:ceafd5e960b39c7e0d160a1936b68eb87c5e79b3979d66e774f0c77d4d8faaed", + "sha256:d1f27bb0f75bef722d6e22dc609612bfa2f994541621cd2163f8c943b6463dfe", + "sha256:d3a4e165ca6204f34856b765d515d558dc84f1352033b8721e8d06c3e44930c3", + "sha256:d9b90bf58f3ba04e60321a23a8723a1ff2a9377502535e70495e5ada8e6e6722", + "sha256:f72b5d24d6730035128b238decdc4c0f2104b7056a7ca55cf047c106842ec890", + "sha256:fcddfe70553be717d9745990dfdb194e22ee0f60eb8f48c0794e7bfeda30d2d5", + "sha256:fdb9f9ed79bc6f46b021b3319184699ba1a22410a82204e6e89c774530069683" + ], + "version": "==0.4.0" }, "idna": { "hashes": [ @@ -518,6 +528,14 @@ "index": "pypi", "version": "==2.27.1" }, + "sentry-sdk": { + "hashes": [ + "sha256:411a8495bd18cf13038e5749e4710beb4efa53da6351f67b4c2f307c2d9b6d49", + "sha256:aa52da941c56b5a76fd838f8e9e92a850bf893a9eb1e33ffce6c21431d07ee30" + ], + "index": "pypi", + "version": "==1.5.7" + }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", @@ -555,7 +573,7 @@ "sha256:26a18cbda5e6b651c964c12c88b36d9898481cd428ed6e063f5f29c418f73050", "sha256:57eab3cc975a28af62f6faec94d355a410634940f10b30d68d31cb5ec1b44ae8" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==0.17.1" }, "typing-extensions": { @@ -563,7 +581,7 @@ "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==4.1.1" }, "tzdata": { @@ -571,7 +589,7 @@ "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5", "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==2021.5" }, "tzlocal": { @@ -579,7 +597,7 @@ "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09", "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==4.1" }, "urllib3": { @@ -595,11 +613,11 @@ "standard" ], "hashes": [ - "sha256:8adddf629b79857b48b999ae1b14d6c92c95d4d7840bd86461f09bee75f1653e", - "sha256:c04a9c069111489c324f427501b3840d306c6b91a77b00affc136a840a3f45f1" + "sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6", + "sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23" ], "index": "pypi", - "version": "==0.17.5" + "version": "==0.17.6" }, "uvloop": { "hashes": [ @@ -624,10 +642,10 @@ }, "watchgod": { "hashes": [ - "sha256:48140d62b0ebe9dd9cf8381337f06351e1f2e70b2203fa9c6eff4e572ca84f29", - "sha256:d6c1ea21df37847ac0537ca0d6c2f4cdf513562e95f77bb93abbcf05573407b7" + "sha256:29a1d8f25e1721ddb73981652ca318c47387ffb12ec4171ddd7b9d01540033b1", + "sha256:339c2cfede1ccc1e277bbf5e82e42886f3c80801b01f45ab10d9461c4118b5eb" ], - "version": "==0.7" + "version": "==0.8" }, "websockets": { "hashes": [ @@ -757,7 +775,7 @@ "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==1.7.2" } }, @@ -812,7 +830,7 @@ "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==8.0.4" }, "idna": { @@ -1017,11 +1035,11 @@ }, "pytest": { "hashes": [ - "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db", - "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171" + "sha256:b555252a95bbb2a37a97b5ac2eb050c436f7989993565f5e0c9128fcaacadd0e", + "sha256:f1089d218cfcc63a212c42896f1b7fbf096874d045e1988186861a1a87d27b47" ], "index": "pypi", - "version": "==7.0.1" + "version": "==7.1.0" }, "pytest-vcr": { "hashes": [ @@ -1183,7 +1201,7 @@ "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==1.7.2" } } diff --git a/main.py b/main.py index 39a19bb..d2066fb 100644 --- a/main.py +++ b/main.py @@ -3,8 +3,10 @@ import uvicorn import logging from typing import Any + +import sentry_sdk from dotenv import load_dotenv -from fastapi import FastAPI, Request, Response, Body +from fastapi import FastAPI, Request, Response from slack_bolt.context.async_context import AsyncBoltContext from slack_bolt.async_app import AsyncApp from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler @@ -45,6 +47,7 @@ from modules.models.slack_models.command_models import SlackCommandRequestBody from modules.models.slack_models.view_models import SlackViewRequestBody from modules.models.slack_models.action_models import SlackActionRequestBody +from modules.utils.message_scheduler import schedule_messages load_dotenv() logging.basicConfig(level=os.getenv("LOGGING_LEVEL", "INFO")) @@ -94,6 +97,11 @@ # Define the application handler for the async Slack Bolt application - this adapter is specific to FastAPI app_handler = AsyncSlackRequestHandler(app) +# Sentry monitoring +if "SENTRY_DSN" in os.environ: + # pylint: disable=abstract-class-instantiated + sentry_sdk.init(dsn=os.getenv("SENTRY_DSN"), request_bodies="medium", environment=os.getenv("RUN_ENV", "development")) + # Define the API api = FastAPI() @@ -106,8 +114,8 @@ @api.on_event("startup") async def startup_event() -> None: Scheduler.start() - # job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger) - # logging.debug(f"Scheduled {job.name} with job_id: {job.id}") + job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger) + logging.debug(f"Scheduled {job.name} with job_id: {job.id}") # On shutdown, shutdown the scheduler service first @@ -307,7 +315,7 @@ async def handle_oc_greeting_coc_click_action( if __name__ == "__main__": - if os.environ.get("RUN_ENV") == "development": + if os.environ.get("RUN_ENVIRONMENT") == "development": uvicorn.run( "main:api", host="0.0.0.0", diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index db94a37..f00e636 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -31,7 +31,7 @@ async def schedule_messages(async_app: AsyncApp) -> None: ) # Add on 120 seconds to the timestamp in order to not run into the "time in past" error datetime_to_send_message = ( - int(datetime.now(timezone.utc).timestamp()) + 120 + int(datetime.now(timezone.utc).timestamp()) + 240 ) else: datetime_to_send_message = int(message.when_to_send.timestamp()) @@ -46,21 +46,20 @@ async def schedule_messages(async_app: AsyncApp) -> None: blocks=general_announcement_blocks(message.name, message.message_text), ) if response.status_code == 200: - if message.frequency == "Daily": - next_when_to_send = datetime_to_update + timedelta(days=1) - elif message.frequency == "Weekly": - next_when_to_send = datetime_to_update + timedelta(days=7) - else: - next_when_to_send = datetime_to_update + timedelta(days=30) + # if message.frequency == "Daily": + # next_when_to_send = datetime_to_update + timedelta(days=1) + # elif message.frequency == "Weekly": + # next_when_to_send = datetime_to_update + timedelta(days=7) + # else: + # next_when_to_send = datetime_to_update + timedelta(days=30) logging.debug( f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" - f"and Next Send: {next_when_to_send}" ) scheduled_message_table.update_record( message.airtable_id, { "Last Sent": str(datetime_to_update), - "When To Send": str(next_when_to_send), + # "When To Send": str(next_when_to_send), }, ) else: From 4ab4fe69c40b265c4494eeac452e0d7578994417 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 10:50:25 -0500 Subject: [PATCH 38/69] Updates job settings --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index d2066fb..c782dd5 100644 --- a/main.py +++ b/main.py @@ -107,14 +107,14 @@ # Initialize an AsyncIOScheduler object to schedule tasks Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) -MessageTrigger = IntervalTrigger(seconds=30) +MessageTrigger = IntervalTrigger(minutes=10) DailyProgrammerTrigger = IntervalTrigger(hours=24) # Start up our job scheduler on FastAPI startup and schedule jobs as needed @api.on_event("startup") async def startup_event() -> None: Scheduler.start() - job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger) + job = Scheduler.add_job(schedule_messages(async_app=app), trigger=MessageTrigger) logging.debug(f"Scheduled {job.name} with job_id: {job.id}") From d234c4804ee88a0ac91555adbf628252c10257ce Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 11:00:07 -0500 Subject: [PATCH 39/69] Updates job settings --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index c782dd5..4c9f524 100644 --- a/main.py +++ b/main.py @@ -114,7 +114,7 @@ @api.on_event("startup") async def startup_event() -> None: Scheduler.start() - job = Scheduler.add_job(schedule_messages(async_app=app), trigger=MessageTrigger) + job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger, kwargs={"async_app": app}) logging.debug(f"Scheduled {job.name} with job_id: {job.id}") From 12e98b8cc3a2c26c73c5877aeb97ca58f5e18821 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 11:20:17 -0500 Subject: [PATCH 40/69] Updates job settings --- main.py | 2 +- modules/models/scheduled_message_models.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 4c9f524..21a48db 100644 --- a/main.py +++ b/main.py @@ -121,7 +121,7 @@ async def startup_event() -> None: # On shutdown, shutdown the scheduler service first @api.on_event("shutdown") async def shutdown_event(): - await Scheduler.shutdown() + Scheduler.shutdown() # Currently, handled by the old Pybot and can't be handled by us without some legacy token usage diff --git a/modules/models/scheduled_message_models.py b/modules/models/scheduled_message_models.py index d59f2b5..96391c9 100644 --- a/modules/models/scheduled_message_models.py +++ b/modules/models/scheduled_message_models.py @@ -35,7 +35,7 @@ class ScheduledMessageInfo(AirtableRowBaseModel): example="2021-04-23T10:20:30.400+00:00", description="ISO formatted datetime in UTC to send the first message - this is used to set the schedule for this message", ) - frequency: FrequencyEnum = Field( + frequency: str = Field( ..., example="daily", description="Frequency to send the message - one of daily, weekly, monthly", From a88104b93897a2fe5baaa803de8eab8dfc026f52 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 12:20:06 -0500 Subject: [PATCH 41/69] Deletes messages and changes scheduled message behavior --- main.py | 5 +- modules/models/scheduled_message_models.py | 6 +- modules/utils/message_scheduler.py | 100 ++++++++++++--------- 3 files changed, 68 insertions(+), 43 deletions(-) diff --git a/main.py b/main.py index 21a48db..306bd81 100644 --- a/main.py +++ b/main.py @@ -113,6 +113,9 @@ # Start up our job scheduler on FastAPI startup and schedule jobs as needed @api.on_event("startup") async def startup_event() -> None: + messages = await app.client.chat_scheduledMessages_list() + for message in messages["scheduled_messages"]: + await app.client.chat_deleteScheduledMessage(channel=message["channel"], scheduled_message_id=message["id"]) Scheduler.start() job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger, kwargs={"async_app": app}) logging.debug(f"Scheduled {job.name} with job_id: {job.id}") @@ -183,7 +186,7 @@ async def handle_new_member_join_event( body: dict[str, Any], context: AsyncBoltContext ) -> None: logger.info("STAGE: Processing new member joining...") - if body["command"] and os.getenv("RUN_ENVIRONMENT") != "production": + if "command" in body.keys() and os.getenv("RUN_ENVIRONMENT") != "production": await handle_new_member_join(SlackCommandRequestBody(**body), context) else: await handle_new_member_join(MemberJoinedChannelEvent(**body), context) diff --git a/modules/models/scheduled_message_models.py b/modules/models/scheduled_message_models.py index 96391c9..809ec0b 100644 --- a/modules/models/scheduled_message_models.py +++ b/modules/models/scheduled_message_models.py @@ -40,13 +40,15 @@ class ScheduledMessageInfo(AirtableRowBaseModel): example="daily", description="Frequency to send the message - one of daily, weekly, monthly", ) - last_sent: datetime = Field( + scheduled_next: datetime = Field( None, example="2021-04-23T10:20:30.400+00:00", - description="When the message was last sent", + description="When the message was last scheduled to send", ) when_to_send: datetime = Field( ..., example="2021-04-23T10:20:30.400+00:00", description="When to send the message - this is calculated using a formula on the Airtable table", ) + + # TODO: Add in validation for the frequency to ensure it matches the Enum values \ No newline at end of file diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index f00e636..2e1f0b4 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -2,7 +2,7 @@ from datetime import datetime, timezone, timedelta from slack_bolt.async_app import AsyncApp -from modules.airtable.scheduled_message_table import ScheduledMessagesTable +from modules.airtable import scheduled_message_table from modules.slack.blocks.announcement_blocks import general_announcement_blocks from modules.utils import slack_team @@ -11,62 +11,82 @@ async def schedule_messages(async_app: AsyncApp) -> None: logging.info("STAGE: Beginning task schedule_messages...") - scheduled_message_table = ScheduledMessagesTable() messages = scheduled_message_table.all_valid_scheduled_messages logging.debug(f"Retrieved {len(messages)} total valid messages to be scheduled") for message in messages: - # If the next send time is more than 119 days in the future, skip it as that's the limit for Slack - if message.when_to_send < message.when_to_send + timedelta(days=119): - # If the datetime in the table is in the past, schedule the message for now plus 2 minutes but update the - # table to have a datetime that is today with the same hour and minute as the first time to send - # This can be readjusted in the table if need be to get the correct next send time - if message.when_to_send < datetime.now(timezone.utc): - datetime_to_update = datetime( - datetime.utcnow().year, - datetime.utcnow().month, - datetime.utcnow().day, - message.initial_date_time_to_send.hour, - message.initial_date_time_to_send.minute, - tzinfo=timezone.utc, - ) - # Add on 120 seconds to the timestamp in order to not run into the "time in past" error - datetime_to_send_message = ( - int(datetime.now(timezone.utc).timestamp()) + 240 - ) - else: - datetime_to_send_message = int(message.when_to_send.timestamp()) - datetime_to_update = message.when_to_send - logging.debug( - f"Scheduling message with name: {message.name} to be sent at datetime: {str(datetime_to_send_message)}" - ) + if message.scheduled_next < datetime.now(tz=timezone.utc): response = await async_app.client.chat_scheduleMessage( channel=slack_team.general_channel.id, - post_at=datetime_to_send_message, + post_at=int(message.when_to_send.timestamp()), text=f"Announcement in {message.channel}...", blocks=general_announcement_blocks(message.name, message.message_text), ) if response.status_code == 200: - # if message.frequency == "Daily": - # next_when_to_send = datetime_to_update + timedelta(days=1) - # elif message.frequency == "Weekly": - # next_when_to_send = datetime_to_update + timedelta(days=7) - # else: - # next_when_to_send = datetime_to_update + timedelta(days=30) logging.debug( - f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" + f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Scheduled Next: {message.when_to_send}" ) scheduled_message_table.update_record( message.airtable_id, { - "Last Sent": str(datetime_to_update), - # "When To Send": str(next_when_to_send), + "Scheduled Next": str(message.when_to_send), }, ) else: logger.warning( f"Issue sending the scheduled message: {message.name}, scheduling failed with slack response: {response.__dict__}" ) - else: - logging.warning( - f"Next send time for scheduled message: {message.name} is more than 119 days in the future" - ) + # # If the next send time is more than 119 days in the future, skip it as that's the limit for Slack + # if message.when_to_send < message.when_to_send + timedelta(days=119): + # # If the datetime in the table is in the past, schedule the message for now plus 2 minutes but update the + # # table to have a datetime that is today with the same hour and minute as the first time to send + # # This can be readjusted in the table if need be to get the correct next send time + # if message.when_to_send < datetime.now(timezone.utc): + # datetime_to_update = datetime( + # datetime.utcnow().year, + # datetime.utcnow().month, + # datetime.utcnow().day, + # message.initial_date_time_to_send.hour, + # message.initial_date_time_to_send.minute, + # tzinfo=timezone.utc, + # ) + # # Add on 120 seconds to the timestamp in order to not run into the "time in past" error + # datetime_to_send_message = ( + # int(datetime.now(timezone.utc).timestamp()) + 240 + # ) + # else: + # datetime_to_send_message = int(message.when_to_send.timestamp()) + # datetime_to_update = message.when_to_send + # logging.debug( + # f"Scheduling message with name: {message.name} to be sent at datetime: {str(datetime_to_send_message)}" + # ) + # response = await async_app.client.chat_scheduleMessage( + # channel=slack_team.general_channel.id, + # post_at=datetime_to_send_message, + # text=f"Announcement in {message.channel}...", + # blocks=general_announcement_blocks(message.name, message.message_text), + # ) + # if response.status_code == 200: + # # if message.frequency == "Daily": + # # next_when_to_send = datetime_to_update + timedelta(days=1) + # # elif message.frequency == "Weekly": + # # next_when_to_send = datetime_to_update + timedelta(days=7) + # # else: + # # next_when_to_send = datetime_to_update + timedelta(days=30) + # logging.debug( + # f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" + # ) + # scheduled_message_table.update_record( + # message.airtable_id, + # { + # "Last Sent": str(datetime_to_update), + # # "When To Send": str(next_when_to_send), + # }, + # ) + # else: + # logger.warning( + # f"Issue sending the scheduled message: {message.name}, scheduling failed with slack response: {response.__dict__}" + # ) + # else: + # logging.warning( + # f"Next send time for scheduled message: {message.name} is more than 119 days in the future" + # ) From 0531cf71bcf84e6db0140b4aa130699b520fee43 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 12:27:50 -0500 Subject: [PATCH 42/69] Fixes key issue --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 306bd81..097e2bb 100644 --- a/main.py +++ b/main.py @@ -115,7 +115,7 @@ async def startup_event() -> None: messages = await app.client.chat_scheduledMessages_list() for message in messages["scheduled_messages"]: - await app.client.chat_deleteScheduledMessage(channel=message["channel"], scheduled_message_id=message["id"]) + await app.client.chat_deleteScheduledMessage(channel=message["channel_id"], scheduled_message_id=message["id"]) Scheduler.start() job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger, kwargs={"async_app": app}) logging.debug(f"Scheduled {job.name} with job_id: {job.id}") From 558a078e9c7e288e6e62929270818b108966a47a Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 12:46:26 -0500 Subject: [PATCH 43/69] Adjusts schedule message flow --- modules/utils/message_scheduler.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index 2e1f0b4..d2f8c8b 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -10,19 +10,26 @@ async def schedule_messages(async_app: AsyncApp) -> None: - logging.info("STAGE: Beginning task schedule_messages...") + logger.info("STAGE: Beginning task schedule_messages...") messages = scheduled_message_table.all_valid_scheduled_messages - logging.debug(f"Retrieved {len(messages)} total valid messages to be scheduled") + logger.debug(f"Retrieved {len(messages)} total valid messages to be potentially be scheduled") for message in messages: if message.scheduled_next < datetime.now(tz=timezone.utc): + logger.debug(f"Scheduling message {message.name}") + if message.when_to_send < datetime.now(tz=timezone.utc): + logger.debug(f"Scheduling message {message.name} to be sent immediately") + send_message_timestamp = int(datetime.now(timezone.utc).timestamp()) + 240 + else: + send_message_timestamp = int(message.when_to_send.timestamp()) + response = await async_app.client.chat_scheduleMessage( channel=slack_team.general_channel.id, - post_at=int(message.when_to_send.timestamp()), + post_at=send_message_timestamp, text=f"Announcement in {message.channel}...", blocks=general_announcement_blocks(message.name, message.message_text), ) if response.status_code == 200: - logging.debug( + logger.debug( f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Scheduled Next: {message.when_to_send}" ) scheduled_message_table.update_record( @@ -56,7 +63,7 @@ async def schedule_messages(async_app: AsyncApp) -> None: # else: # datetime_to_send_message = int(message.when_to_send.timestamp()) # datetime_to_update = message.when_to_send - # logging.debug( + # logger.debug( # f"Scheduling message with name: {message.name} to be sent at datetime: {str(datetime_to_send_message)}" # ) # response = await async_app.client.chat_scheduleMessage( @@ -72,7 +79,7 @@ async def schedule_messages(async_app: AsyncApp) -> None: # # next_when_to_send = datetime_to_update + timedelta(days=7) # # else: # # next_when_to_send = datetime_to_update + timedelta(days=30) - # logging.debug( + # logger.debug( # f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" # ) # scheduled_message_table.update_record( From 597a24e55e48031375c0eb6126331a5a60e6e98c Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 13:07:13 -0500 Subject: [PATCH 44/69] Updates worker number and adds more logging --- Procfile | 2 +- modules/utils/message_scheduler.py | 55 ------------------------------ 2 files changed, 1 insertion(+), 56 deletions(-) diff --git a/Procfile b/Procfile index 5ef4e89..379fa06 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} \ No newline at end of file +web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} --workers 1 \ No newline at end of file diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index d2f8c8b..fe8b37d 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -42,58 +42,3 @@ async def schedule_messages(async_app: AsyncApp) -> None: logger.warning( f"Issue sending the scheduled message: {message.name}, scheduling failed with slack response: {response.__dict__}" ) - # # If the next send time is more than 119 days in the future, skip it as that's the limit for Slack - # if message.when_to_send < message.when_to_send + timedelta(days=119): - # # If the datetime in the table is in the past, schedule the message for now plus 2 minutes but update the - # # table to have a datetime that is today with the same hour and minute as the first time to send - # # This can be readjusted in the table if need be to get the correct next send time - # if message.when_to_send < datetime.now(timezone.utc): - # datetime_to_update = datetime( - # datetime.utcnow().year, - # datetime.utcnow().month, - # datetime.utcnow().day, - # message.initial_date_time_to_send.hour, - # message.initial_date_time_to_send.minute, - # tzinfo=timezone.utc, - # ) - # # Add on 120 seconds to the timestamp in order to not run into the "time in past" error - # datetime_to_send_message = ( - # int(datetime.now(timezone.utc).timestamp()) + 240 - # ) - # else: - # datetime_to_send_message = int(message.when_to_send.timestamp()) - # datetime_to_update = message.when_to_send - # logger.debug( - # f"Scheduling message with name: {message.name} to be sent at datetime: {str(datetime_to_send_message)}" - # ) - # response = await async_app.client.chat_scheduleMessage( - # channel=slack_team.general_channel.id, - # post_at=datetime_to_send_message, - # text=f"Announcement in {message.channel}...", - # blocks=general_announcement_blocks(message.name, message.message_text), - # ) - # if response.status_code == 200: - # # if message.frequency == "Daily": - # # next_when_to_send = datetime_to_update + timedelta(days=1) - # # elif message.frequency == "Weekly": - # # next_when_to_send = datetime_to_update + timedelta(days=7) - # # else: - # # next_when_to_send = datetime_to_update + timedelta(days=30) - # logger.debug( - # f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Last Sent: {datetime_to_update}" - # ) - # scheduled_message_table.update_record( - # message.airtable_id, - # { - # "Last Sent": str(datetime_to_update), - # # "When To Send": str(next_when_to_send), - # }, - # ) - # else: - # logger.warning( - # f"Issue sending the scheduled message: {message.name}, scheduling failed with slack response: {response.__dict__}" - # ) - # else: - # logging.warning( - # f"Next send time for scheduled message: {message.name} is more than 119 days in the future" - # ) From 852564176237ac3b378677c59375df21d95f88cf Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 13:23:35 -0500 Subject: [PATCH 45/69] Changes startup method --- main.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index 097e2bb..ca1f95c 100644 --- a/main.py +++ b/main.py @@ -54,7 +54,6 @@ logger = logging.getLogger(__name__) -# TODO: Add in /moderators slash command that lists the moderators pulled from Airtable # TODO: Change mentorship view to dynamically add descriptions for the mentorship service block - will require dispatching an action on select and updating the block # TODO: Allow matching mentor to mentee based on time zone, number of mentees a mentor already has (will need integration with Dreami to track long term relationships) # TODO: Integrate with current backend to grab information about the mentee after a request is sent to allow for better matching (could be related to time zone, zip code, etc) @@ -308,7 +307,6 @@ async def handle_oc_greeting_slack_download_click_action( logger.info("STAGE: Processing OC greeting slack download click...") await context.ack() - @app.action("oc_greeting_coc_click") async def handle_oc_greeting_coc_click_action( body: dict[str, Any], context: AsyncBoltContext @@ -325,7 +323,7 @@ async def handle_oc_greeting_coc_click_action( port=8010, reload=True, reload_dirs=["./models", "./tests"], + workers=1 ) else: - # noinspection PyTypeChecker - uvicorn.run("main:api", host="0.0.0.0", port=5000) + raise ValueError("RUN_ENVIRONMENT must be set to 'development'") From d10b57bbeed25059766952c8150bb211968df8e4 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 13:25:32 -0500 Subject: [PATCH 46/69] Change to preload in the Procfile --- Procfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Procfile b/Procfile index 379fa06..f1e0e36 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} --workers 1 \ No newline at end of file +web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} --workers 1 --preload \ No newline at end of file From dfc799822ac696300b4aede90c485d9dc06ea2aa Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 13:31:59 -0500 Subject: [PATCH 47/69] Adjusts scheduler instantiation --- Procfile | 2 +- main.py | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Procfile b/Procfile index f1e0e36..379fa06 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} --workers 1 --preload \ No newline at end of file +web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} --workers 1 \ No newline at end of file diff --git a/main.py b/main.py index ca1f95c..975fe1e 100644 --- a/main.py +++ b/main.py @@ -105,18 +105,19 @@ api = FastAPI() # Initialize an AsyncIOScheduler object to schedule tasks -Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) -MessageTrigger = IntervalTrigger(minutes=10) -DailyProgrammerTrigger = IntervalTrigger(hours=24) # Start up our job scheduler on FastAPI startup and schedule jobs as needed @api.on_event("startup") async def startup_event() -> None: + global Scheduler + Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) + message_trigger = IntervalTrigger(minutes=10) + # DailyProgrammerTrigger = IntervalTrigger(hours=24) messages = await app.client.chat_scheduledMessages_list() for message in messages["scheduled_messages"]: await app.client.chat_deleteScheduledMessage(channel=message["channel_id"], scheduled_message_id=message["id"]) Scheduler.start() - job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger, kwargs={"async_app": app}) + job = Scheduler.add_job(schedule_messages, trigger=message_trigger, kwargs={"async_app": app}) logging.debug(f"Scheduled {job.name} with job_id: {job.id}") From f8111512d6b5744b221274f00dff00be171a7e9b Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 13:40:13 -0500 Subject: [PATCH 48/69] Switches to background scheduler --- main.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 975fe1e..955f59d 100644 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ from slack_bolt.context.async_context import AsyncBoltContext from slack_bolt.async_app import AsyncApp from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler -from apscheduler.schedulers.asyncio import AsyncIOScheduler +from apscheduler.schedulers.asyncio import BackgroundScheduler from apscheduler.triggers.interval import IntervalTrigger from modules.handlers.channel_join_handler import ( @@ -105,19 +105,18 @@ api = FastAPI() # Initialize an AsyncIOScheduler object to schedule tasks +Scheduler = BackgroundScheduler({"apscheduler.timezone": "UTC"}) +MessageTrigger = IntervalTrigger(minutes=10) +# DailyProgrammerTrigger = IntervalTrigger(hours=24) # Start up our job scheduler on FastAPI startup and schedule jobs as needed @api.on_event("startup") async def startup_event() -> None: - global Scheduler - Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) - message_trigger = IntervalTrigger(minutes=10) - # DailyProgrammerTrigger = IntervalTrigger(hours=24) messages = await app.client.chat_scheduledMessages_list() for message in messages["scheduled_messages"]: await app.client.chat_deleteScheduledMessage(channel=message["channel_id"], scheduled_message_id=message["id"]) Scheduler.start() - job = Scheduler.add_job(schedule_messages, trigger=message_trigger, kwargs={"async_app": app}) + job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger, kwargs={"async_app": app}) logging.debug(f"Scheduled {job.name} with job_id: {job.id}") From d4c093ed83d958661aff9f5f4f50a9b2b288ab2e Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 13:44:45 -0500 Subject: [PATCH 49/69] Fixes import --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 955f59d..c345cb2 100644 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ from slack_bolt.context.async_context import AsyncBoltContext from slack_bolt.async_app import AsyncApp from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler -from apscheduler.schedulers.asyncio import BackgroundScheduler +from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.interval import IntervalTrigger from modules.handlers.channel_join_handler import ( From f627ec4609848eb80d005cfb43d7b897a035030c Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 13:48:40 -0500 Subject: [PATCH 50/69] Fixes issue with doubled jobs --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index c345cb2..16ced16 100644 --- a/main.py +++ b/main.py @@ -115,8 +115,8 @@ async def startup_event() -> None: messages = await app.client.chat_scheduledMessages_list() for message in messages["scheduled_messages"]: await app.client.chat_deleteScheduledMessage(channel=message["channel_id"], scheduled_message_id=message["id"]) - Scheduler.start() job = Scheduler.add_job(schedule_messages, trigger=MessageTrigger, kwargs={"async_app": app}) + Scheduler.start() logging.debug(f"Scheduled {job.name} with job_id: {job.id}") From 7dad53ced5e3a2cfca45a6aa40a2630cde88c08b Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 14:01:54 -0500 Subject: [PATCH 51/69] Changes back to async scheduler --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 16ced16..8ea7289 100644 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ from slack_bolt.context.async_context import AsyncBoltContext from slack_bolt.async_app import AsyncApp from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler -from apscheduler.schedulers.background import BackgroundScheduler +from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.triggers.interval import IntervalTrigger from modules.handlers.channel_join_handler import ( @@ -105,7 +105,7 @@ api = FastAPI() # Initialize an AsyncIOScheduler object to schedule tasks -Scheduler = BackgroundScheduler({"apscheduler.timezone": "UTC"}) +Scheduler = AsyncIOScheduler({"apscheduler.timezone": "UTC"}) MessageTrigger = IntervalTrigger(minutes=10) # DailyProgrammerTrigger = IntervalTrigger(hours=24) From 6ab416a6435977b3c1c862878c9b7805b58c1128 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 14:45:20 -0500 Subject: [PATCH 52/69] Updates message scheduler for different channels --- modules/utils/message_scheduler.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index fe8b37d..5a604ae 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -1,10 +1,10 @@ import logging -from datetime import datetime, timezone, timedelta +from datetime import datetime, timezone from slack_bolt.async_app import AsyncApp +from modules.utils import slack_team from modules.airtable import scheduled_message_table from modules.slack.blocks.announcement_blocks import general_announcement_blocks -from modules.utils import slack_team logger = logging.getLogger(__name__) @@ -19,23 +19,27 @@ async def schedule_messages(async_app: AsyncApp) -> None: if message.when_to_send < datetime.now(tz=timezone.utc): logger.debug(f"Scheduling message {message.name} to be sent immediately") send_message_timestamp = int(datetime.now(timezone.utc).timestamp()) + 240 + new_scheduled_next = datetime.now(timezone.utc) else: send_message_timestamp = int(message.when_to_send.timestamp()) + new_scheduled_next = message.when_to_send + + channel_to_send_to = slack_team.find_channel_by_name(message.channel) response = await async_app.client.chat_scheduleMessage( - channel=slack_team.general_channel.id, + channel=channel_to_send_to.id, post_at=send_message_timestamp, text=f"Announcement in {message.channel}...", blocks=general_announcement_blocks(message.name, message.message_text), ) if response.status_code == 200: logger.debug( - f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Scheduled Next: {message.when_to_send}" + f"Updating the Airtable {scheduled_message_table.table_name} table for row with id: {message.airtable_id} with new value Scheduled Next: {new_scheduled_next}" ) scheduled_message_table.update_record( message.airtable_id, { - "Scheduled Next": str(message.when_to_send), + "Scheduled Next": str(new_scheduled_next), }, ) else: From 9871136899c64c173529ef0aedb85b62937dbf8e Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 15:00:26 -0500 Subject: [PATCH 53/69] Adds back in frequency monitoring --- modules/utils/message_scheduler.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index 5a604ae..0cae378 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timezone +from datetime import datetime, timedelta, timezone from slack_bolt.async_app import AsyncApp from modules.utils import slack_team @@ -19,7 +19,12 @@ async def schedule_messages(async_app: AsyncApp) -> None: if message.when_to_send < datetime.now(tz=timezone.utc): logger.debug(f"Scheduling message {message.name} to be sent immediately") send_message_timestamp = int(datetime.now(timezone.utc).timestamp()) + 240 - new_scheduled_next = datetime.now(timezone.utc) + if message.frequency == "daily": + new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=1) + elif message.frequency == "weekly": + new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=7) + elif message.frequency == "monthly": + new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=30) else: send_message_timestamp = int(message.when_to_send.timestamp()) new_scheduled_next = message.when_to_send From 638d2e8918ef24159358c6d426cd3edef2259430 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 15:00:46 -0500 Subject: [PATCH 54/69] Adds back in frequency monitoring --- modules/utils/message_scheduler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index 0cae378..aef7cc7 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -23,7 +23,7 @@ async def schedule_messages(async_app: AsyncApp) -> None: new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=1) elif message.frequency == "weekly": new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=7) - elif message.frequency == "monthly": + else: new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=30) else: send_message_timestamp = int(message.when_to_send.timestamp()) From c50f740e4f554f4a74e133f43b696467966d358e Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 15:19:22 -0500 Subject: [PATCH 55/69] Changes to find next months monday for monthly frequency --- modules/utils/message_scheduler.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index aef7cc7..9a78103 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -24,7 +24,10 @@ async def schedule_messages(async_app: AsyncApp) -> None: elif message.frequency == "weekly": new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=7) else: - new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=30) + # Should find the next Monday in the month - will have to increase the variability in frequency to post theses on different days + next_month = datetime(message.when_to_send.year, message.when_to_send.month + 1, 7) + offset = -next_month.weekday() + new_scheduled_next = next_month + timedelta(days=offset) else: send_message_timestamp = int(message.when_to_send.timestamp()) new_scheduled_next = message.when_to_send From ceabe26414021daefd6f07765f7f0d1f4f94bd49 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Tue, 15 Mar 2022 15:23:08 -0500 Subject: [PATCH 56/69] More comments --- modules/utils/message_scheduler.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index 9a78103..7708560 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -14,8 +14,10 @@ async def schedule_messages(async_app: AsyncApp) -> None: messages = scheduled_message_table.all_valid_scheduled_messages logger.debug(f"Retrieved {len(messages)} total valid messages to be potentially be scheduled") for message in messages: + # If we had scheduled this message to be sent at a time in the past, proceed if message.scheduled_next < datetime.now(tz=timezone.utc): logger.debug(f"Scheduling message {message.name}") + # If when to send is in the past as well, that means we should send it immediately if message.when_to_send < datetime.now(tz=timezone.utc): logger.debug(f"Scheduling message {message.name} to be sent immediately") send_message_timestamp = int(datetime.now(timezone.utc).timestamp()) + 240 @@ -28,6 +30,7 @@ async def schedule_messages(async_app: AsyncApp) -> None: next_month = datetime(message.when_to_send.year, message.when_to_send.month + 1, 7) offset = -next_month.weekday() new_scheduled_next = next_month + timedelta(days=offset) + # Otherwise, we send it out normally using the when to send field else: send_message_timestamp = int(message.when_to_send.timestamp()) new_scheduled_next = message.when_to_send From 59d2fdfe5bbfd306e0aee763bc444ffed870b8e2 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 3 Apr 2022 09:36:52 -0500 Subject: [PATCH 57/69] Comments and changes to print out channel names --- modules/models/slack_models/shared_models.py | 2 +- modules/utils/message_scheduler.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py index 58c6d9f..98597f6 100644 --- a/modules/models/slack_models/shared_models.py +++ b/modules/models/slack_models/shared_models.py @@ -281,7 +281,7 @@ def __init__(self, team_info: SlackTeamInfo) -> None: def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: logger.debug(f"Finding channel by name: {channel_name}") - logger.debug(f"Full channel list: {self.full_conversation_list}") + logger.debug(f"Full channel list: {[conversation_info.name for conversation_info in self.full_conversation_list]}") return [ conversation for conversation in self.full_conversation_list diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index 7708560..e9d3bc5 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -1,3 +1,4 @@ +"""Module for scheduling messages in a background job""" import logging from datetime import datetime, timedelta, timezone from slack_bolt.async_app import AsyncApp @@ -10,6 +11,13 @@ async def schedule_messages(async_app: AsyncApp) -> None: + """Schedules messages to be sent to various channels. Pulls the messages from the Airtable table Scheduled Messages + As explained in the comments below, will schedule messages using the `when_to-send` field on the table, + which is calculated by Airtable based on the frequency and `scheduled_next` datetime + + :param async_app: the Slack Bolt async application. + :type async_app: slack_bolt.async_app.AsyncApp + """ logger.info("STAGE: Beginning task schedule_messages...") messages = scheduled_message_table.all_valid_scheduled_messages logger.debug(f"Retrieved {len(messages)} total valid messages to be potentially be scheduled") From 350787f18d60e2e21e56840a4b42eb6481939634 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 3 Apr 2022 09:47:05 -0500 Subject: [PATCH 58/69] More logging --- modules/models/slack_models/shared_models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py index 98597f6..20d9774 100644 --- a/modules/models/slack_models/shared_models.py +++ b/modules/models/slack_models/shared_models.py @@ -277,6 +277,7 @@ class SlackTeamInfo(BaseSlackTeamInfo): class SlackTeam: def __init__(self, team_info: SlackTeamInfo) -> None: + logger.debug(f"Initializing the Slack Team with team_info: {team_info}") self._team_info = team_info def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: From ee7d336165959dbc4b77bb6eb14fb2beb2e8f652 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 3 Apr 2022 09:56:45 -0500 Subject: [PATCH 59/69] Removes caching for teams --- modules/models/slack_models/shared_models.py | 18 +++++++++--------- modules/utils/__init__.py | 1 - 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py index 20d9774..b8cccb0 100644 --- a/modules/models/slack_models/shared_models.py +++ b/modules/models/slack_models/shared_models.py @@ -289,38 +289,38 @@ def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: if conversation.name == channel_name ][0] - @cached_property + @property def slack_id(self) -> str: return self._team_info.id - @cached_property + @property def name(self) -> str: return self._team_info.name - @cached_property + @property def full_conversation_list(self) -> list[SlackConversationInfo]: return self._team_info.conversations - @cached_property + @property def greetings_channel(self) -> SlackConversationInfo: return self.find_channel_by_name(os.getenv("GREETINGS_CHANNEL_NAME")) - @cached_property + @property def mentors_internal_channel(self) -> SlackConversationInfo: return self.find_channel_by_name(os.getenv("MENTORS_CHANNEL_NAME")) - @cached_property + @property def moderators_channel(self) -> SlackConversationInfo: return self.find_channel_by_name(os.getenv("MODERATORS_CHANNEL_NAME")) - @cached_property + @property def general_channel(self) -> SlackConversationInfo: return self.find_channel_by_name(os.getenv("GENERAL_CHANNEL_NAME")) - @cached_property + @property def pride_channel(self) -> SlackConversationInfo: return self.find_channel_by_name(os.getenv("PRIDE_CHANNEL_NAME")) - @cached_property + @property def blacks_in_tech(self) -> SlackConversationInfo: return self.find_channel_by_name(os.getenv("BLACKS_IN_TECH_CHANNEL_NAME")) diff --git a/modules/utils/__init__.py b/modules/utils/__init__.py index c525c0e..99185de 100644 --- a/modules/utils/__init__.py +++ b/modules/utils/__init__.py @@ -36,7 +36,6 @@ def snake_case(s: str) -> str: ).lower() -@lru_cache def get_team_info() -> SlackTeam: logger.info("STAGE: Retrieving team information...") try: From c21e7ceeadfca455133771e98e332ab582ee56c3 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 3 Apr 2022 10:19:22 -0500 Subject: [PATCH 60/69] More logging --- modules/models/slack_models/shared_models.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/models/slack_models/shared_models.py b/modules/models/slack_models/shared_models.py index b8cccb0..55a029d 100644 --- a/modules/models/slack_models/shared_models.py +++ b/modules/models/slack_models/shared_models.py @@ -283,12 +283,15 @@ def __init__(self, team_info: SlackTeamInfo) -> None: def find_channel_by_name(self, channel_name: str) -> SlackConversationInfo: logger.debug(f"Finding channel by name: {channel_name}") logger.debug(f"Full channel list: {[conversation_info.name for conversation_info in self.full_conversation_list]}") - return [ - conversation - for conversation in self.full_conversation_list - if conversation.name == channel_name - ][0] - + try: + return [ + conversation + for conversation in self.full_conversation_list + if conversation.name == channel_name + ][0] + except IndexError: + logger.exception(f"Could not find channel by name: {channel_name}") + raise Exception(f"Could not find channel by name: {channel_name}") @property def slack_id(self) -> str: return self._team_info.id From 1d7c3a3255bdea5d71f87bcae252c58b1a37618b Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Sun, 3 Apr 2022 10:30:56 -0500 Subject: [PATCH 61/69] Expands limits on team info --- modules/utils/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/utils/__init__.py b/modules/utils/__init__.py index 99185de..1547902 100644 --- a/modules/utils/__init__.py +++ b/modules/utils/__init__.py @@ -45,7 +45,7 @@ def get_team_info() -> SlackTeam: ) team_info = synchronous_app.client.team_info() conversations = synchronous_app.client.conversations_list( - exclude_archived=True, types=["public_channel", "private_channel"] + exclude_archived=True, types=["public_channel", "private_channel"], limit=1000 ) slack_team_response = SlackTeam( SlackTeamInfo( From 9e1614ac17c12e57c24acaca92761f5cacc7e325 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 26 Dec 2022 13:15:15 -0600 Subject: [PATCH 62/69] Building for Render --- .dockerignore | 2 + .github/workflows/megalinter.yml | 19 + .mega-linter.yml | 41 + .pre-commit-config.yaml | 58 + .yamllint.yaml | 5 + Pipfile | 31 - Pipfile.lock | 1208 -------------- Procfile | 3 +- build.sh | 6 + docker/Dockerfile | 18 +- docker/docker-compose.local.yml | 14 + docker/docker-compose.override.yml | 9 - docker/docker-compose.prod.yml | 6 - docker/docker-compose.yml | 18 +- fly.toml | 54 + main.py | 7 +- modules/models/slack_models/slack_models.py | 2 +- modules/slack/blocks/announcement_blocks.py | 1 + modules/slack/blocks/mentorship_blocks.py | 2 +- modules/utils/__init__.py | 6 +- modules/utils/message_scheduler.py | 6 +- poetry.lock | 1646 +++++++++++++++++++ pyproject.toml | 33 + 23 files changed, 1917 insertions(+), 1278 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/megalinter.yml create mode 100644 .mega-linter.yml create mode 100644 .pre-commit-config.yaml create mode 100644 .yamllint.yaml delete mode 100644 Pipfile delete mode 100644 Pipfile.lock create mode 100644 build.sh create mode 100644 docker/docker-compose.local.yml delete mode 100644 docker/docker-compose.override.yml delete mode 100644 docker/docker-compose.prod.yml create mode 100644 fly.toml create mode 100644 poetry.lock create mode 100644 pyproject.toml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..98e0167 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +fly.toml +.env \ No newline at end of file diff --git a/.github/workflows/megalinter.yml b/.github/workflows/megalinter.yml new file mode 100644 index 0000000..bd092d3 --- /dev/null +++ b/.github/workflows/megalinter.yml @@ -0,0 +1,19 @@ +--- +name: MegaLinter +"on": [push] + +concurrency: + group: ${{ github.ref }}-${{ github.workflow }} + cancel-in-progress: true + +jobs: + mega-lint: + name: Mega Linter + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Mega Linter + uses: oxsecurity/megalinter/flavors/python@v6 + env: + VALIDATE_ALL_CODEBASE: true + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.mega-linter.yml b/.mega-linter.yml new file mode 100644 index 0000000..1530071 --- /dev/null +++ b/.mega-linter.yml @@ -0,0 +1,41 @@ +--- +DISABLE: + - CLOUDFORMATION + - CSS + - EDITORCONFIG + - JAVASCRIPT + - TEKTON +DISABLE_LINTERS: + - JSON_PRETTIER + - REPOSITORY_GITLEAKS + - SPELL_CSPELL + - SPELL_PROSELINT + - PYTHON_BANDIT + # We use MyPy + - PYTHON_PYRIGHT +DISABLE_ERRORS_LINTERS: + - REPOSITORY_DEVSKIM + - REPOSITORY_SEMGREP +DOCKERFILE_HADOLINT_ARGUMENTS: "--ignore DL3008 --ignore DL3018 --ignore DL3013 --ignore DL3059 --ignore DL3005" +MARKDOWN_MARKDOWN_LINK_CHECK_CONFIG_FILE: ".markdown-link-check-config.json" +MARKDOWN_MARKDOWN_LINK_CHECK_DISABLE_ERRORS: true +PRINT_ALL_FILES: false +PYTHON_ISORT_CONFIG_FILE: "pyproject.toml" +PYTHON_MYPY_PRE_COMMANDS: + - command: "yes | pip install types-redis types-urllib3 types-requests && mkdir .mypy_cache" + continue_on_failure: true + cwd: "workspace" +PYTHON_MYPY_ARGUMENTS: + [ + "--ignore-missing-imports", + "--follow-imports=skip", + "--strict-optional", + "--disallow-any-generics", + ] +PYTHON_MYPY_CONFIG_FILE: "pyproject.toml" +REPOSITORY_DEVSKIM_ARGUMENTS: ["-g", ".mypy_cache/*"] +SHOW_ELAPSED_TIME: true +SPELL_MISSPELL_FILTER_REGEX_EXCLUDE: '(\.automation/generated|docs/descriptors)' +YAML_YAMLLINT_FILTER_REGEX_EXCLUDE: '(templates/\.mega-linter\.yml)' +YAML_PRETTIER_FILTER_REGEX_EXCLUDE: '(templates/\.mega-linter\.yml|mkdocs\.yml)' +YAML_V8R_FILTER_REGEX_EXCLUDE: '(descriptors|templates/\.mega-linter\.yml|\.codecov\.yml)' \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..24b9342 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,58 @@ +--- +repos: + - repo: https://github.com/ambv/black + rev: 22.12.0 + hooks: + - id: black + language_version: python3.10 + + - repo: https://github.com/pycqa/isort + rev: 5.10.1 + hooks: + - id: isort + name: isort (python) + types: [python] + args: ["--profile", "black"] + + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: debug-statements + - id: name-tests-test + + - repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.9.0 + hooks: + - id: python-check-blanket-noqa + - id: python-no-log-warn + - id: python-use-type-annotations + + - repo: local + # We do not use pre-commit/mirrors-mypy, + # as it comes with opinionated defaults + # (like --ignore-missing-imports) + # and is difficult to configure to run + # with the dependencies correctly installed. + hooks: + - id: mypy + name: mypy + entry: mypy + language: python + language_version: python3.10 + additional_dependencies: ["mypy==0.991"] + types: [python] + # use require_serial so that script + # is only called once per commit + require_serial: true + # Print the number of files as a sanity-check + verbose: true + args: + - --ignore-missing-imports + - --follow-imports=skip + - --install-types + - --non-interactive + - --strict-optional + - --disallow-any-generics \ No newline at end of file diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 0000000..faa0b38 --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,5 @@ +--- +extends: default + +rules: + line-length: disable \ No newline at end of file diff --git a/Pipfile b/Pipfile deleted file mode 100644 index e2a310a..0000000 --- a/Pipfile +++ /dev/null @@ -1,31 +0,0 @@ -[[source]] -url = "https://pypi.org/simple" -verify_ssl = true -name = "pypi" - -[packages] -fastapi = "*" -uvicorn = {extras = ["standard"], version = "*"} -slack-bolt = "*" -requests = "*" -slack-sdk = "*" -airtable = "*" -pyairtable = "*" -pydantic = "*" -apscheduler = "*" -dailyprogrammer = "*" -aiohttp = "==3.8.1" -sentry-sdk = "*" - -[dev-packages] -pytest = "*" -black = "*" -pytest-vcr = "*" -pyyaml = "*" -pylint = "*" - -[requires] -python_version = "3.10" - -[pipenv] -allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index 35561f6..0000000 --- a/Pipfile.lock +++ /dev/null @@ -1,1208 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "399673dec37d52ea0453eba0f37bf7dae0665fd48598e32a13b0f8dd5545307b" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.10" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "aiohttp": { - "hashes": [ - "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3", - "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782", - "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75", - "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf", - "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7", - "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675", - "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1", - "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785", - "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4", - "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf", - "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5", - "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15", - "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca", - "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8", - "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac", - "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8", - "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef", - "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516", - "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700", - "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2", - "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8", - "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0", - "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676", - "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad", - "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155", - "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db", - "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd", - "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091", - "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602", - "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411", - "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93", - "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd", - "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec", - "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51", - "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7", - "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17", - "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d", - "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00", - "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923", - "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440", - "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32", - "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e", - "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1", - "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724", - "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a", - "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8", - "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2", - "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33", - "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b", - "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2", - "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632", - "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b", - "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2", - "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316", - "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74", - "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96", - "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866", - "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44", - "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950", - "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa", - "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c", - "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a", - "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd", - "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd", - "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9", - "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421", - "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2", - "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922", - "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4", - "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237", - "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642", - "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578" - ], - "index": "pypi", - "version": "==3.8.1" - }, - "aiosignal": { - "hashes": [ - "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", - "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" - ], - "markers": "python_version >= '3.6'", - "version": "==1.2.0" - }, - "airtable": { - "hashes": [ - "sha256:d653e1b3b92297e3f0cc4226215d43d7fa99c72f38918e9371e445abf0baa70c", - "sha256:fb667e55da3af1341e0f2946014cc29e7d0613e69f3ee20528051c4075aee75c" - ], - "index": "pypi", - "version": "==0.4.8" - }, - "anyio": { - "hashes": [ - "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6", - "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e" - ], - "markers": "python_full_version >= '3.6.2'", - "version": "==3.5.0" - }, - "apscheduler": { - "hashes": [ - "sha256:65e6574b6395498d371d045f2a8a7e4f7d50c6ad21ef7313d15b1c7cf20df1e3", - "sha256:ddc25a0ddd899de44d7f451f4375fb971887e65af51e41e5dcf681f59b8b2c9a" - ], - "index": "pypi", - "version": "==3.9.1" - }, - "asgiref": { - "hashes": [ - "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0", - "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9" - ], - "markers": "python_version >= '3.7'", - "version": "==3.5.0" - }, - "async-timeout": { - "hashes": [ - "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", - "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" - ], - "markers": "python_version >= '3.6'", - "version": "==4.0.2" - }, - "attrs": { - "hashes": [ - "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", - "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==21.4.0" - }, - "certifi": { - "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" - ], - "version": "==2021.10.8" - }, - "charset-normalizer": { - "hashes": [ - "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", - "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" - ], - "markers": "python_version >= '3'", - "version": "==2.0.12" - }, - "click": { - "hashes": [ - "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", - "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" - ], - "markers": "python_version >= '3.6'", - "version": "==8.0.4" - }, - "dailyprogrammer": { - "hashes": [ - "sha256:1540a01c59b3b99a5b3f1dcd94032b639a09afae730ee7d80267a532be014949", - "sha256:32391ed029daebbc052ebc2a6c28e1ef97006338c396f2ae9958413eb1c137fc", - "sha256:5d646f22e2983b2b21486cf169f2a02faa423b63cfce30a2b985499e95a784b1" - ], - "index": "pypi", - "version": "==1.0" - }, - "decorator": { - "hashes": [ - "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", - "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" - ], - "markers": "python_version >= '3.5'", - "version": "==5.1.1" - }, - "fastapi": { - "hashes": [ - "sha256:124774ce4cb3322841965f559669b233a0b8d343ea24fdd8b293253c077220d7", - "sha256:43d12891b78fc497a50623e9c7c24640c569489f060acd9ce2c4902080487a93" - ], - "index": "pypi", - "version": "==0.75.0" - }, - "frozenlist": { - "hashes": [ - "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e", - "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08", - "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b", - "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486", - "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78", - "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468", - "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1", - "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953", - "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3", - "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d", - "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a", - "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141", - "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08", - "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07", - "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa", - "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa", - "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868", - "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f", - "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b", - "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b", - "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1", - "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f", - "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478", - "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58", - "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01", - "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8", - "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d", - "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676", - "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274", - "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab", - "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8", - "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24", - "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a", - "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2", - "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f", - "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f", - "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93", - "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1", - "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51", - "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846", - "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5", - "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d", - "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c", - "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e", - "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae", - "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02", - "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0", - "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b", - "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3", - "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b", - "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa", - "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a", - "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d", - "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed", - "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148", - "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9", - "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c", - "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2", - "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951" - ], - "markers": "python_version >= '3.7'", - "version": "==1.3.0" - }, - "h11": { - "hashes": [ - "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06", - "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442" - ], - "markers": "python_version >= '3.6'", - "version": "==0.13.0" - }, - "httptools": { - "hashes": [ - "sha256:1a99346ebcb801b213c591540837340bdf6fd060a8687518d01c607d338b7424", - "sha256:1ee0b459257e222b878a6c09ccf233957d3a4dcb883b0847640af98d2d9aac23", - "sha256:20a45bcf22452a10fa8d58b7dbdb474381f6946bf5b8933e3662d572bc61bae4", - "sha256:29bf97a5c532da9c7a04de2c7a9c31d1d54f3abd65a464119b680206bbbb1055", - "sha256:2c9a930c378b3d15d6b695fb95ebcff81a7395b4f9775c4f10a076beb0b2c1ff", - "sha256:2db44a0b294d317199e9f80123e72c6b005c55b625b57fae36de68670090fa48", - "sha256:3194f6d6443befa8d4db16c1946b2fc428a3ceb8ab32eb6f09a59f86104dc1a0", - "sha256:34d2903dd2a3dd85d33705b6fde40bf91fc44411661283763fd0746723963c83", - "sha256:48e48530d9b995a84d1d89ae6b3ec4e59ea7d494b150ac3bbc5e2ac4acce92cd", - "sha256:54bbd295f031b866b9799dd39cb45deee81aca036c9bff9f58ca06726f6494f1", - "sha256:5d1fe6b6661022fd6cac541f54a4237496b246e6f1c0a6b41998ee08a1135afe", - "sha256:645373c070080e632480a3d251d892cb795be3d3a15f86975d0f1aca56fd230d", - "sha256:6a1a7dfc1f9c78a833e2c4904757a0f47ce25d08634dd2a52af394eefe5f9777", - "sha256:701e66b59dd21a32a274771238025d58db7e2b6ecebbab64ceff51b8e31527ae", - "sha256:72aa3fbe636b16d22e04b5a9d24711b043495e0ecfe58080addf23a1a37f3409", - "sha256:7af6bdbd21a2a25d6784f6d67f44f5df33ef39b6159543b9f9064d365c01f919", - "sha256:7ee9f226acab9085037582c059d66769862706e8e8cd2340470ceb8b3850873d", - "sha256:7f7bfb74718f52d5ed47d608d507bf66d3bc01d4a8b3e6dd7134daaae129357b", - "sha256:8e2eb957787cbb614a0f006bfc5798ff1d90ac7c4dd24854c84edbdc8c02369e", - "sha256:903f739c9fb78dab8970b0f3ea51f21955b24b45afa77b22ff0e172fc11ef111", - "sha256:98993805f1e3cdb53de4eed02b55dcc953cdf017ba7bbb2fd89226c086a6d855", - "sha256:9967d9758df505975913304c434cb9ab21e2c609ad859eb921f2f615a038c8de", - "sha256:a113789e53ac1fa26edf99856a61e4c493868e125ae0dd6354cf518948fbbd5c", - "sha256:a522d12e2ddbc2e91842ffb454a1aeb0d47607972c7d8fc88bd0838d97fb8a2a", - "sha256:abe829275cdd4174b4c4e65ad718715d449e308d59793bf3a931ee1bf7e7b86c", - "sha256:c286985b5e194ca0ebb2908d71464b9be8f17cc66d6d3e330e8d5407248f56ad", - "sha256:cd1295f52971097f757edfbfce827b6dbbfb0f7a74901ee7d4933dff5ad4c9af", - "sha256:ceafd5e960b39c7e0d160a1936b68eb87c5e79b3979d66e774f0c77d4d8faaed", - "sha256:d1f27bb0f75bef722d6e22dc609612bfa2f994541621cd2163f8c943b6463dfe", - "sha256:d3a4e165ca6204f34856b765d515d558dc84f1352033b8721e8d06c3e44930c3", - "sha256:d9b90bf58f3ba04e60321a23a8723a1ff2a9377502535e70495e5ada8e6e6722", - "sha256:f72b5d24d6730035128b238decdc4c0f2104b7056a7ca55cf047c106842ec890", - "sha256:fcddfe70553be717d9745990dfdb194e22ee0f60eb8f48c0794e7bfeda30d2d5", - "sha256:fdb9f9ed79bc6f46b021b3319184699ba1a22410a82204e6e89c774530069683" - ], - "version": "==0.4.0" - }, - "idna": { - "hashes": [ - "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", - "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" - ], - "markers": "python_version >= '3'", - "version": "==3.3" - }, - "jsonpath-rw": { - "hashes": [ - "sha256:05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec" - ], - "version": "==1.4.0" - }, - "jsonpath-rw-ext": { - "hashes": [ - "sha256:0947e018c4e6d46f9d04c56487793c702eb225fa252891aa4ed41a9ca26f3d84", - "sha256:a9e44e803b6d87d135b09d1e5af0db4d4cf97ba62711a80aa51c8c721980a994" - ], - "version": "==1.2.2" - }, - "multidict": { - "hashes": [ - "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", - "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", - "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", - "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", - "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", - "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", - "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", - "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", - "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", - "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", - "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", - "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", - "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", - "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", - "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", - "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", - "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", - "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", - "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", - "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", - "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", - "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", - "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", - "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", - "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", - "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", - "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", - "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", - "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", - "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", - "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", - "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", - "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", - "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", - "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", - "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", - "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", - "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", - "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", - "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", - "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", - "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", - "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", - "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", - "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", - "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", - "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", - "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", - "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", - "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", - "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", - "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", - "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", - "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", - "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", - "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", - "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", - "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", - "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" - ], - "markers": "python_version >= '3.7'", - "version": "==6.0.2" - }, - "pbr": { - "hashes": [ - "sha256:27108648368782d07bbf1cb468ad2e2eeef29086affd14087a6d04b7de8af4ec", - "sha256:66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25" - ], - "markers": "python_version >= '2.6'", - "version": "==5.8.1" - }, - "ply": { - "hashes": [ - "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", - "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce" - ], - "version": "==3.11" - }, - "pyairtable": { - "hashes": [ - "sha256:61dcb32b825b21b2458b3eb9f94fd3ad0c11c0c8295a5f3ba975b75f37dec56a", - "sha256:96de465af151368d7f5891f38793e4b195d1c74161420c694f724454065b4f72" - ], - "index": "pypi", - "version": "==1.1.0" - }, - "pydantic": { - "hashes": [ - "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3", - "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398", - "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1", - "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65", - "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4", - "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16", - "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2", - "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c", - "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6", - "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce", - "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9", - "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3", - "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034", - "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c", - "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a", - "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77", - "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b", - "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6", - "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f", - "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721", - "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37", - "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032", - "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d", - "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed", - "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6", - "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054", - "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25", - "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46", - "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5", - "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c", - "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070", - "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1", - "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7", - "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d", - "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145" - ], - "index": "pypi", - "version": "==1.9.0" - }, - "python-dotenv": { - "hashes": [ - "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3", - "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f" - ], - "version": "==0.19.2" - }, - "pytz": { - "hashes": [ - "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c", - "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" - ], - "version": "==2021.3" - }, - "pytz-deprecation-shim": { - "hashes": [ - "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", - "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==0.1.0.post0" - }, - "pyyaml": { - "hashes": [ - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" - ], - "version": "==6.0" - }, - "requests": { - "hashes": [ - "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", - "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" - ], - "index": "pypi", - "version": "==2.27.1" - }, - "sentry-sdk": { - "hashes": [ - "sha256:411a8495bd18cf13038e5749e4710beb4efa53da6351f67b4c2f307c2d9b6d49", - "sha256:aa52da941c56b5a76fd838f8e9e92a850bf893a9eb1e33ffce6c21431d07ee30" - ], - "index": "pypi", - "version": "==1.5.7" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, - "slack-bolt": { - "hashes": [ - "sha256:43aaadde470a8ed0d6737ed97b1f4f38a6ec53ab842eca076bad497cd8eb1d70", - "sha256:7aad413b3d59884c74defe73f9d697ac13056c9cfcd2f5482c5eb8c9f9aa9322" - ], - "index": "pypi", - "version": "==1.11.6" - }, - "slack-sdk": { - "hashes": [ - "sha256:128f3bb0b5b91454a3d5f140a61f3db370a0e1b50ffe0a8d9e9ebe0e894faed7", - "sha256:e1fa26786169176e707676decc287fd9d3d547bbc43c0a1a4f99eb373b07da94" - ], - "index": "pypi", - "version": "==3.15.2" - }, - "sniffio": { - "hashes": [ - "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663", - "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de" - ], - "markers": "python_version >= '3.5'", - "version": "==1.2.0" - }, - "starlette": { - "hashes": [ - "sha256:26a18cbda5e6b651c964c12c88b36d9898481cd428ed6e063f5f29c418f73050", - "sha256:57eab3cc975a28af62f6faec94d355a410634940f10b30d68d31cb5ec1b44ae8" - ], - "markers": "python_version >= '3.6'", - "version": "==0.17.1" - }, - "typing-extensions": { - "hashes": [ - "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", - "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" - ], - "markers": "python_version >= '3.6'", - "version": "==4.1.1" - }, - "tzdata": { - "hashes": [ - "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5", - "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21" - ], - "markers": "python_version >= '3.6'", - "version": "==2021.5" - }, - "tzlocal": { - "hashes": [ - "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09", - "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f" - ], - "markers": "python_version >= '3.6'", - "version": "==4.1" - }, - "urllib3": { - "hashes": [ - "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed", - "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.8" - }, - "uvicorn": { - "extras": [ - "standard" - ], - "hashes": [ - "sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6", - "sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23" - ], - "index": "pypi", - "version": "==0.17.6" - }, - "uvloop": { - "hashes": [ - "sha256:04ff57aa137230d8cc968f03481176041ae789308b4d5079118331ab01112450", - "sha256:089b4834fd299d82d83a25e3335372f12117a7d38525217c2258e9b9f4578897", - "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861", - "sha256:30ba9dcbd0965f5c812b7c2112a1ddf60cf904c1c160f398e7eed3a6b82dcd9c", - "sha256:3a19828c4f15687675ea912cc28bbcb48e9bb907c801873bd1519b96b04fb805", - "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d", - "sha256:647e481940379eebd314c00440314c81ea547aa636056f554d491e40503c8464", - "sha256:6ccd57ae8db17d677e9e06192e9c9ec4bd2066b77790f9aa7dede2cc4008ee8f", - "sha256:772206116b9b57cd625c8a88f2413df2fcfd0b496eb188b82a43bed7af2c2ec9", - "sha256:8e0d26fa5875d43ddbb0d9d79a447d2ace4180d9e3239788208527c4784f7cab", - "sha256:98d117332cc9e5ea8dfdc2b28b0a23f60370d02e1395f88f40d1effd2cb86c4f", - "sha256:b572256409f194521a9895aef274cea88731d14732343da3ecdb175228881638", - "sha256:bd53f7f5db562f37cd64a3af5012df8cac2c464c97e732ed556800129505bd64", - "sha256:bd8f42ea1ea8f4e84d265769089964ddda95eb2bb38b5cbe26712b0616c3edee", - "sha256:e814ac2c6f9daf4c36eb8e85266859f42174a4ff0d71b99405ed559257750382", - "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228" - ], - "version": "==0.16.0" - }, - "watchgod": { - "hashes": [ - "sha256:29a1d8f25e1721ddb73981652ca318c47387ffb12ec4171ddd7b9d01540033b1", - "sha256:339c2cfede1ccc1e277bbf5e82e42886f3c80801b01f45ab10d9461c4118b5eb" - ], - "version": "==0.8" - }, - "websockets": { - "hashes": [ - "sha256:038afef2a05893578d10dadbdbb5f112bd115c46347e1efe99f6a356ff062138", - "sha256:05f6e9757017270e7a92a2975e2ae88a9a582ffc4629086fd6039aa80e99cd86", - "sha256:0b66421f9f13d4df60cd48ab977ed2c2b6c9147ae1a33caf5a9f46294422fda1", - "sha256:0cd02f36d37e503aca88ab23cc0a1a0e92a263d37acf6331521eb38040dcf77b", - "sha256:0f73cb2526d6da268e86977b2c4b58f2195994e53070fe567d5487c6436047e6", - "sha256:117383d0a17a0dda349f7a8790763dde75c1508ff8e4d6e8328b898b7df48397", - "sha256:1c1f3b18c8162e3b09761d0c6a0305fd642934202541cc511ef972cb9463261e", - "sha256:1c9031e90ebfc486e9cdad532b94004ade3aa39a31d3c46c105bb0b579cd2490", - "sha256:2349fa81b6b959484bb2bda556ccb9eb70ba68987646a0f8a537a1a18319fb03", - "sha256:24b879ba7db12bb525d4e58089fcbe6a3df3ce4666523183654170e86d372cbe", - "sha256:2aa9b91347ecd0412683f28aabe27f6bad502d89bd363b76e0a3508b1596402e", - "sha256:56d48eebe9e39ce0d68701bce3b21df923aa05dcc00f9fd8300de1df31a7c07c", - "sha256:5a38a0175ae82e4a8c4bac29fc01b9ee26d7d5a614e5ee11e7813c68a7d938ce", - "sha256:5b04270b5613f245ec84bb2c6a482a9d009aefad37c0575f6cda8499125d5d5c", - "sha256:6193bbc1ee63aadeb9a4d81de0e19477401d150d506aee772d8380943f118186", - "sha256:669e54228a4d9457abafed27cbf0e2b9f401445c4dfefc12bf8e4db9751703b8", - "sha256:6a009eb551c46fd79737791c0c833fc0e5b56bcd1c3057498b262d660b92e9cd", - "sha256:71a4491cfe7a9f18ee57d41163cb6a8a3fa591e0f0564ca8b0ed86b2a30cced4", - "sha256:7b38a5c9112e3dbbe45540f7b60c5204f49b3cb501b40950d6ab34cd202ab1d0", - "sha256:7bb9d8a6beca478c7e9bdde0159bd810cc1006ad6a7cb460533bae39da692ca2", - "sha256:82bc33db6d8309dc27a3bee11f7da2288ad925fcbabc2a4bb78f7e9c56249baf", - "sha256:8351c3c86b08156337b0e4ece0e3c5ec3e01fcd14e8950996832a23c99416098", - "sha256:8beac786a388bb99a66c3be4ab0fb38273c0e3bc17f612a4e0a47c4fc8b9c045", - "sha256:97950c7c844ec6f8d292440953ae18b99e3a6a09885e09d20d5e7ecd9b914cf8", - "sha256:98f57b3120f8331cd7440dbe0e776474f5e3632fdaa474af1f6b754955a47d71", - "sha256:9ca2ca05a4c29179f06cf6727b45dba5d228da62623ec9df4184413d8aae6cb9", - "sha256:a03a25d95cc7400bd4d61a63460b5d85a7761c12075ee2f51de1ffe73aa593d3", - "sha256:a10c0c1ee02164246f90053273a42d72a3b2452a7e7486fdae781138cf7fbe2d", - "sha256:a72b92f96e5e540d5dda99ee3346e199ade8df63152fa3c737260da1730c411f", - "sha256:ac081aa0307f263d63c5ff0727935c736c8dad51ddf2dc9f5d0c4759842aefaa", - "sha256:b22bdc795e62e71118b63e14a08bacfa4f262fd2877de7e5b950f5ac16b0348f", - "sha256:b4059e2ccbe6587b6dc9a01db5fc49ead9a884faa4076eea96c5ec62cb32f42a", - "sha256:b7fe45ae43ac814beb8ca09d6995b56800676f2cfa8e23f42839dc69bba34a42", - "sha256:bef03a51f9657fb03d8da6ccd233fe96e04101a852f0ffd35f5b725b28221ff3", - "sha256:bffc65442dd35c473ca9790a3fa3ba06396102a950794f536783f4b8060af8dd", - "sha256:c21a67ab9a94bd53e10bba21912556027fea944648a09e6508415ad14e37c325", - "sha256:c67d9cacb3f6537ca21e9b224d4fd08481538e43bcac08b3d93181b0816def39", - "sha256:c6e56606842bb24e16e36ae7eb308d866b4249cf0be8f63b212f287eeb76b124", - "sha256:cb316b87cbe3c0791c2ad92a5a36bf6adc87c457654335810b25048c1daa6fd5", - "sha256:cef40a1b183dcf39d23b392e9dd1d9b07ab9c46aadf294fff1350fb79146e72b", - "sha256:cf931c33db9c87c53d009856045dd524e4a378445693382a920fa1e0eb77c36c", - "sha256:d4d110a84b63c5cfdd22485acc97b8b919aefeecd6300c0c9d551e055b9a88ea", - "sha256:d5396710f86a306cf52f87fd8ea594a0e894ba0cc5a36059eaca3a477dc332aa", - "sha256:f09f46b1ff6d09b01c7816c50bd1903cf7d02ebbdb63726132717c2fcda835d5", - "sha256:f14bd10e170abc01682a9f8b28b16e6f20acf6175945ef38db6ffe31b0c72c3f", - "sha256:f5c335dc0e7dc271ef36df3f439868b3c790775f345338c2f61a562f1074187b", - "sha256:f8296b8408ec6853b26771599990721a26403e62b9de7e50ac0a056772ac0b5e", - "sha256:fa35c5d1830d0fb7b810324e9eeab9aa92e8f273f11fdbdc0741dcded6d72b9f" - ], - "version": "==10.2" - }, - "yarl": { - "hashes": [ - "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac", - "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8", - "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e", - "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746", - "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98", - "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125", - "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d", - "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d", - "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986", - "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d", - "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec", - "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8", - "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee", - "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3", - "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1", - "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd", - "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b", - "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de", - "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0", - "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8", - "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6", - "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245", - "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23", - "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332", - "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1", - "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c", - "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4", - "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0", - "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8", - "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832", - "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58", - "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6", - "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1", - "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52", - "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92", - "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185", - "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d", - "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d", - "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b", - "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739", - "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05", - "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63", - "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d", - "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa", - "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913", - "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe", - "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b", - "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b", - "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656", - "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1", - "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4", - "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e", - "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63", - "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271", - "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed", - "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d", - "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda", - "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265", - "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f", - "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c", - "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba", - "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c", - "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b", - "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523", - "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a", - "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef", - "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95", - "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72", - "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794", - "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41", - "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", - "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" - ], - "markers": "python_version >= '3.6'", - "version": "==1.7.2" - } - }, - "develop": { - "astroid": { - "hashes": [ - "sha256:3975a0bd5373bdce166e60c851cfcbaf21ee96de80ec518c1f4cb3e94c3fb334", - "sha256:ab7f36e8a78b8e54a62028ba6beef7561db4cdb6f2a5009ecc44a6f42b5697ef" - ], - "markers": "python_version ~= '3.6'", - "version": "==2.6.6" - }, - "attrs": { - "hashes": [ - "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", - "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==21.4.0" - }, - "black": { - "hashes": [ - "sha256:07e5c049442d7ca1a2fc273c79d1aecbbf1bc858f62e8184abe1ad175c4f7cc2", - "sha256:0e21e1f1efa65a50e3960edd068b6ae6d64ad6235bd8bfea116a03b21836af71", - "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6", - "sha256:228b5ae2c8e3d6227e4bde5920d2fc66cc3400fde7bcc74f480cb07ef0b570d5", - "sha256:2d6f331c02f0f40aa51a22e479c8209d37fcd520c77721c034517d44eecf5912", - "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866", - "sha256:3524739d76b6b3ed1132422bf9d82123cd1705086723bc3e235ca39fd21c667d", - "sha256:35944b7100af4a985abfcaa860b06af15590deb1f392f06c8683b4381e8eeaf0", - "sha256:373922fc66676133ddc3e754e4509196a8c392fec3f5ca4486673e685a421321", - "sha256:5fa1db02410b1924b6749c245ab38d30621564e658297484952f3d8a39fce7e8", - "sha256:6f2f01381f91c1efb1451998bd65a129b3ed6f64f79663a55fe0e9b74a5f81fd", - "sha256:742ce9af3086e5bd07e58c8feb09dbb2b047b7f566eb5f5bc63fd455814979f3", - "sha256:7835fee5238fc0a0baf6c9268fb816b5f5cd9b8793423a75e8cd663c48d073ba", - "sha256:8871fcb4b447206904932b54b567923e5be802b9b19b744fdff092bd2f3118d0", - "sha256:a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5", - "sha256:b1a5ed73ab4c482208d20434f700d514f66ffe2840f63a6252ecc43a9bc77e8a", - "sha256:c8226f50b8c34a14608b848dc23a46e5d08397d009446353dad45e04af0c8e28", - "sha256:ccad888050f5393f0d6029deea2a33e5ae371fd182a697313bdbd835d3edaf9c", - "sha256:dae63f2dbf82882fa3b2a3c49c32bffe144970a573cd68d247af6560fc493ae1", - "sha256:e2f69158a7d120fd641d1fa9a921d898e20d52e44a74a6fbbcc570a62a6bc8ab", - "sha256:efbadd9b52c060a8fc3b9658744091cb33c31f830b3f074422ed27bad2b18e8f", - "sha256:f5660feab44c2e3cb24b2419b998846cbb01c23c7fe645fee45087efa3da2d61", - "sha256:fdb8754b453fb15fad3f72cd9cad3e16776f0964d67cf30ebcbf10327a3777a3" - ], - "index": "pypi", - "version": "==22.1.0" - }, - "click": { - "hashes": [ - "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", - "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" - ], - "markers": "python_version >= '3.6'", - "version": "==8.0.4" - }, - "idna": { - "hashes": [ - "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", - "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" - ], - "markers": "python_version >= '3'", - "version": "==3.3" - }, - "iniconfig": { - "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" - ], - "version": "==1.1.1" - }, - "isort": { - "hashes": [ - "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7", - "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951" - ], - "markers": "python_version < '4.0' and python_full_version >= '3.6.1'", - "version": "==5.10.1" - }, - "lazy-object-proxy": { - "hashes": [ - "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7", - "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a", - "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c", - "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc", - "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f", - "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09", - "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442", - "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e", - "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029", - "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61", - "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb", - "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0", - "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35", - "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42", - "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1", - "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad", - "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443", - "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd", - "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9", - "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148", - "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38", - "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55", - "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36", - "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a", - "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b", - "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44", - "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6", - "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69", - "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4", - "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84", - "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de", - "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28", - "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c", - "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1", - "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8", - "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b", - "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb" - ], - "markers": "python_version >= '3.6'", - "version": "==1.7.1" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "multidict": { - "hashes": [ - "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", - "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", - "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", - "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", - "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", - "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", - "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", - "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", - "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", - "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", - "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", - "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", - "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", - "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", - "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", - "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", - "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", - "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", - "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", - "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", - "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", - "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", - "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", - "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", - "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", - "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", - "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", - "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", - "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", - "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", - "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", - "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", - "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", - "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", - "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", - "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", - "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", - "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", - "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", - "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", - "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", - "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", - "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", - "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", - "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", - "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", - "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", - "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", - "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", - "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", - "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", - "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", - "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", - "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", - "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", - "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", - "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", - "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", - "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" - ], - "markers": "python_version >= '3.7'", - "version": "==6.0.2" - }, - "mypy-extensions": { - "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" - ], - "version": "==0.4.3" - }, - "packaging": { - "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" - ], - "markers": "python_version >= '3.6'", - "version": "==21.3" - }, - "pathspec": { - "hashes": [ - "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", - "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" - ], - "version": "==0.9.0" - }, - "platformdirs": { - "hashes": [ - "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", - "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" - ], - "markers": "python_version >= '3.7'", - "version": "==2.5.1" - }, - "pluggy": { - "hashes": [ - "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", - "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" - ], - "markers": "python_version >= '3.6'", - "version": "==1.0.0" - }, - "py": { - "hashes": [ - "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", - "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.11.0" - }, - "pylint": { - "hashes": [ - "sha256:349b149e88e4357ed4f77ac3a4e61c0ab965cda293b6f4e58caf73d4b24ae551", - "sha256:adc11bec00c2084bf55c81dd69e26f2793fef757547997d44b21aed038f74403" - ], - "index": "pypi", - "version": "==3.0.0a4" - }, - "pyparsing": { - "hashes": [ - "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", - "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484" - ], - "markers": "python_version >= '3.6'", - "version": "==3.0.7" - }, - "pytest": { - "hashes": [ - "sha256:b555252a95bbb2a37a97b5ac2eb050c436f7989993565f5e0c9128fcaacadd0e", - "sha256:f1089d218cfcc63a212c42896f1b7fbf096874d045e1988186861a1a87d27b47" - ], - "index": "pypi", - "version": "==7.1.0" - }, - "pytest-vcr": { - "hashes": [ - "sha256:23ee51b75abbcc43d926272773aae4f39f93aceb75ed56852d0bf618f92e1896", - "sha256:2f316e0539399bea0296e8b8401145c62b6f85e9066af7e57b6151481b0d6d9c" - ], - "index": "pypi", - "version": "==1.0.2" - }, - "pyyaml": { - "hashes": [ - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" - ], - "version": "==6.0" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.2" - }, - "tomli": { - "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" - ], - "markers": "python_version >= '3.7'", - "version": "==2.0.1" - }, - "vcrpy": { - "hashes": [ - "sha256:12c3fcdae7b88ecf11fc0d3e6d77586549d4575a2ceee18e82eee75c1f626162", - "sha256:57095bf22fc0a2d99ee9674cdafebed0f3ba763018582450706f7d3a74fff599" - ], - "markers": "python_version >= '3.5'", - "version": "==4.1.1" - }, - "wrapt": { - "hashes": [ - "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.12.1" - }, - "yarl": { - "hashes": [ - "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac", - "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8", - "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e", - "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746", - "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98", - "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125", - "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d", - "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d", - "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986", - "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d", - "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec", - "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8", - "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee", - "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3", - "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1", - "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd", - "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b", - "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de", - "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0", - "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8", - "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6", - "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245", - "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23", - "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332", - "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1", - "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c", - "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4", - "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0", - "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8", - "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832", - "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58", - "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6", - "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1", - "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52", - "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92", - "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185", - "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d", - "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d", - "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b", - "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739", - "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05", - "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63", - "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d", - "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa", - "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913", - "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe", - "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b", - "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b", - "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656", - "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1", - "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4", - "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e", - "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63", - "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271", - "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed", - "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d", - "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda", - "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265", - "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f", - "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c", - "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba", - "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c", - "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b", - "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523", - "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a", - "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef", - "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95", - "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72", - "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794", - "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41", - "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576", - "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59" - ], - "markers": "python_version >= '3.6'", - "version": "==1.7.2" - } - } -} diff --git a/Procfile b/Procfile index 379fa06..f6315d9 100644 --- a/Procfile +++ b/Procfile @@ -1 +1,2 @@ -web: uvicorn main:api --host=0.0.0.0 --port=${PORT:-5000} --workers 1 \ No newline at end of file +# Modify this Procfile to fit your needs +web: gunicorn server:app diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..72edb52 --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -o errexit + +pip install --upgrade pip + +poetry install \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 78aaa8b..1919149 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -9,11 +9,11 @@ ENV PYTHONUNBUFFERED 1 RUN apk update && \ apk add --no-cache build-base musl-dev python3-dev libffi-dev openssl-dev -COPY Pipfile Pipfile.lock ./ +COPY pyproject.toml poetry.lock ./ RUN pip install --upgrade pip -RUN pip install pipenv +RUN pip install 'poetry==1.3.1' # The `dev` stage creates an image and runs the application with development settings FROM builder as dev @@ -22,18 +22,22 @@ ENV PIP_DISABLE_PIP_VERSION_CHECK on ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 -COPY . ./ +COPY .. ./ -RUN pipenv install --dev +RUN poetry install -ENTRYPOINT ["pipenv", "run", "python3", "main.py"] +ENTRYPOINT ["poetry", "run", "python3", "main.py"] # The `prod` stage creates an image that will run the application with production # settings FROM builder As prod +COPY .. ./ + ENV PYTHONDONTWRITEBYTECODE 1 -RUN pipenv install +RUN poetry config virtualenvs.create false + +RUN poetry install -ENTRYPOINT ["pipenv", "run", "python3", "main.py"] +ENTRYPOINT ["python3", "main.py"] diff --git a/docker/docker-compose.local.yml b/docker/docker-compose.local.yml new file mode 100644 index 0000000..bd7159f --- /dev/null +++ b/docker/docker-compose.local.yml @@ -0,0 +1,14 @@ +version: '3.9' +services: + pybot: + image: pybot:latest + container_name: pybot01 + ports: + - "5001:5001" + + ngrok: + image: wernight/ngrok:latest + environment: + - NGROK_PORT=pybot:5001 + ports: + - "4040:4040" diff --git a/docker/docker-compose.override.yml b/docker/docker-compose.override.yml deleted file mode 100644 index 879eb78..0000000 --- a/docker/docker-compose.override.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '3.9' -services: - pybot: - container_name: pybot-dev - build: - target: dev - context: .. - dockerfile: docker/Dockerfile - env_file: ../.env \ No newline at end of file diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml deleted file mode 100644 index cf28b94..0000000 --- a/docker/docker-compose.prod.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: '3.9' - -services: - pybot: - build: - target: prod \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index bd7159f..bd3a081 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,14 +1,12 @@ version: '3.9' + services: pybot: - image: pybot:latest - container_name: pybot01 - ports: - - "5001:5001" - - ngrok: - image: wernight/ngrok:latest - environment: - - NGROK_PORT=pybot:5001 + container_name: oc-pybot + restart: on-failure + build: + context: .. + dockerfile: docker/Dockerfile + command: uvicorn main:api -host 0.0.0.0 --port 5001 --reload --log-level 'debug' ports: - - "4040:4040" + - "5001:5001" \ No newline at end of file diff --git a/fly.toml b/fly.toml new file mode 100644 index 0000000..9e68fce --- /dev/null +++ b/fly.toml @@ -0,0 +1,54 @@ +# fly.toml file generated for oc-pybot-staging on 2022-12-26T11:33:23-06:00 + +app = "oc-pybot-staging" +kill_signal = "SIGINT" +kill_timeout = 15 +processes = [] + +[build] + dockerfile = "./docker/Dockerfile" + build-target = "prod" + +[env] + AIRTABLE_BASE_NAME = "Pybot-Staging-Base" + AIRTABLE_BASE_ID = "appHcVtFOf2HaGQog" + BLACKS_IN_TECH_CHANNEL_NAME = "blacks-in-tech" + GREETINGS_CHANNEL_NAME = "greetings" + GENERAL_CHANNEL_NAME = "general" + LOGGING_LEVEL = "DEBUG" + MENTORS_CHANNEL_NAME = "mentors-internal" + MODERATORS_CHANNEL_NAME = "moderators" + PRIDE_CHANNEL_NAME = "operation-pride" + RUN_ENVIRONMENT = "staging" + SLACK_BOT_TOKEN="xoxb-2875898822021-3229597617521-OOTeggp3JsBEGajAWcYtFKzz" + SLACK_SIGNING_SECRET="181e66d74ca2527998432a830d4bef65" + +[experimental] + allowed_public_ports = [] + auto_rollback = true + +[[services]] + http_checks = [] + internal_port = 8080 + processes = ["app"] + protocol = "tcp" + script_checks = [] + [services.concurrency] + hard_limit = 25 + soft_limit = 20 + type = "connections" + + [[services.ports]] + force_https = true + handlers = ["http"] + port = 80 + + [[services.ports]] + handlers = ["tls", "http"] + port = 443 + + [[services.tcp_checks]] + grace_period = "1s" + interval = "15s" + restart_limit = 1 + timeout = "2s" diff --git a/main.py b/main.py index 8ea7289..b3e103f 100644 --- a/main.py +++ b/main.py @@ -326,4 +326,9 @@ async def handle_oc_greeting_coc_click_action( workers=1 ) else: - raise ValueError("RUN_ENVIRONMENT must be set to 'development'") + uvicorn.run( + "main:api", + host="0.0.0.0", + port=5001, + workers=1 + ) diff --git a/modules/models/slack_models/slack_models.py b/modules/models/slack_models/slack_models.py index f523215..1d6974b 100644 --- a/modules/models/slack_models/slack_models.py +++ b/modules/models/slack_models/slack_models.py @@ -15,7 +15,7 @@ class SlackResponseBody(BasicSlackRequest): type: str = Field( ..., example="view_submission", - description="The type of request the reponse is responding to", + description="The type of request the response is responding to", ) originating_user: SlackUserInfo = Field( ..., description="The info of the user who triggered the request" diff --git a/modules/slack/blocks/announcement_blocks.py b/modules/slack/blocks/announcement_blocks.py index 83cf4bf..da027fc 100644 --- a/modules/slack/blocks/announcement_blocks.py +++ b/modules/slack/blocks/announcement_blocks.py @@ -1,4 +1,5 @@ from typing import Union + from slack_sdk.models.blocks.blocks import HeaderBlock, SectionBlock from slack_sdk.models.blocks.basic_components import PlainTextObject, MarkdownTextObject diff --git a/modules/slack/blocks/mentorship_blocks.py b/modules/slack/blocks/mentorship_blocks.py index 9c0d7af..3139b95 100644 --- a/modules/slack/blocks/mentorship_blocks.py +++ b/modules/slack/blocks/mentorship_blocks.py @@ -267,6 +267,6 @@ def request_claim_tagged_users_block(usernames: list[str]) -> SectionBlock: return SectionBlock( block_id="mentorship_request_tagged_users", text=MarkdownTextObject( - text=message_row.text.format("@" + " @".join(usernames)) + text=message_row.text.format(" ".join([f"<@{username}>" for username in usernames])) ), ) diff --git a/modules/utils/__init__.py b/modules/utils/__init__.py index 1547902..0a5f0e7 100644 --- a/modules/utils/__init__.py +++ b/modules/utils/__init__.py @@ -3,7 +3,6 @@ from datetime import datetime from pathlib import Path from re import sub -from functools import lru_cache from pyairtable import Table from slack_bolt.app import App from slack_sdk.models.blocks import SectionBlock, MarkdownTextObject @@ -135,3 +134,8 @@ def table_fields(table: Table) -> list[str]: load_dotenv(dotenv_path=f"{str(Path(__file__).parent.parent.parent)}/.env") slack_team = get_team_info() + + + + + diff --git a/modules/utils/message_scheduler.py b/modules/utils/message_scheduler.py index e9d3bc5..24926a2 100644 --- a/modules/utils/message_scheduler.py +++ b/modules/utils/message_scheduler.py @@ -34,11 +34,13 @@ async def schedule_messages(async_app: AsyncApp) -> None: elif message.frequency == "weekly": new_scheduled_next = datetime.now(timezone.utc) + timedelta(days=7) else: + when_to_send_month = message.when_to_send.month + 1 if message.when_to_send.month < 12 else 1 + when_to_send_year = message.when_to_send.year + 1 if message.when_to_send.month == 12 else message.when_to_send.year # Should find the next Monday in the month - will have to increase the variability in frequency to post theses on different days - next_month = datetime(message.when_to_send.year, message.when_to_send.month + 1, 7) + next_month = datetime(when_to_send_year, when_to_send_month, 7) offset = -next_month.weekday() new_scheduled_next = next_month + timedelta(days=offset) - # Otherwise, we send it out normally using the when to send field + # Otherwise, we send it out normally using the when_to_send field else: send_message_timestamp = int(message.when_to_send.timestamp()) new_scheduled_next = message.when_to_send diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..ca77605 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1646 @@ +# This file is automatically @generated by Poetry and should not be changed by hand. + +[[package]] +name = "aiohttp" +version = "3.8.3" +description = "Async http client/server framework (asyncio)" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9"}, + {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e"}, + {file = "aiohttp-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b"}, + {file = "aiohttp-3.8.3-cp310-cp310-win32.whl", hash = "sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb"}, + {file = "aiohttp-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715"}, + {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008"}, + {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d"}, + {file = "aiohttp-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34"}, + {file = "aiohttp-3.8.3-cp311-cp311-win32.whl", hash = "sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697"}, + {file = "aiohttp-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290"}, + {file = "aiohttp-3.8.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1"}, + {file = "aiohttp-3.8.3-cp36-cp36m-win32.whl", hash = "sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b"}, + {file = "aiohttp-3.8.3-cp36-cp36m-win_amd64.whl", hash = "sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494"}, + {file = "aiohttp-3.8.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0"}, + {file = "aiohttp-3.8.3-cp37-cp37m-win32.whl", hash = "sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033"}, + {file = "aiohttp-3.8.3-cp37-cp37m-win_amd64.whl", hash = "sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091"}, + {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb"}, + {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4"}, + {file = "aiohttp-3.8.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937"}, + {file = "aiohttp-3.8.3-cp38-cp38-win32.whl", hash = "sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76"}, + {file = "aiohttp-3.8.3-cp38-cp38-win_amd64.whl", hash = "sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446"}, + {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06"}, + {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba"}, + {file = "aiohttp-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403"}, + {file = "aiohttp-3.8.3-cp39-cp39-win32.whl", hash = "sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618"}, + {file = "aiohttp-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7"}, + {file = "aiohttp-3.8.3.tar.gz", hash = "sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269"}, +] + +[package.dependencies] +aiosignal = ">=1.1.2" +async-timeout = ">=4.0.0a3,<5.0" +attrs = ">=17.3.0" +charset-normalizer = ">=2.0,<3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns", "cchardet"] + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "anyio" +version = "3.6.2" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" +optional = false +python-versions = ">=3.6.2" +files = [ + {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"}, + {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16,<0.22)"] + +[[package]] +name = "apscheduler" +version = "3.9.1.post1" +description = "In-process task scheduler with Cron-like capabilities" +category = "main" +optional = false +python-versions = "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +files = [ + {file = "APScheduler-3.9.1.post1-py2.py3-none-any.whl", hash = "sha256:c8c618241dbb2785ed5a687504b14cb1851d6f7b5a4edf3a51e39cc6a069967a"}, + {file = "APScheduler-3.9.1.post1.tar.gz", hash = "sha256:b2bea0309569da53a7261bfa0ce19c67ddbfe151bda776a6a907579fdbd3eb2a"}, +] + +[package.dependencies] +pytz = "*" +setuptools = ">=0.7" +six = ">=1.4.0" +tzlocal = ">=2.0,<3.0.0 || >=4.0.0" + +[package.extras] +asyncio = ["trollius"] +doc = ["sphinx", "sphinx-rtd-theme"] +gevent = ["gevent"] +mongodb = ["pymongo (>=3.0)"] +redis = ["redis (>=3.0)"] +rethinkdb = ["rethinkdb (>=2.4.0)"] +sqlalchemy = ["sqlalchemy (>=0.8)"] +testing = ["mock", "pytest", "pytest-asyncio", "pytest-asyncio (<0.6)", "pytest-cov", "pytest-tornado5"] +tornado = ["tornado (>=4.3)"] +twisted = ["twisted"] +zookeeper = ["kazoo"] + +[[package]] +name = "astroid" +version = "2.12.13" +description = "An abstract syntax tree for Python with inference support." +category = "dev" +optional = false +python-versions = ">=3.7.2" +files = [ + {file = "astroid-2.12.13-py3-none-any.whl", hash = "sha256:10e0ad5f7b79c435179d0d0f0df69998c4eef4597534aae44910db060baeb907"}, + {file = "astroid-2.12.13.tar.gz", hash = "sha256:1493fe8bd3dfd73dc35bd53c9d5b6e49ead98497c47b2307662556a5692d29d7"}, +] + +[package.dependencies] +lazy-object-proxy = ">=1.4.0" +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] + +[[package]] +name = "async-timeout" +version = "4.0.2" +description = "Timeout context manager for asyncio programs" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, + {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, +] + +[[package]] +name = "attrs" +version = "22.2.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] + +[[package]] +name = "black" +version = "22.12.0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2022.12.7" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, +] + +[[package]] +name = "charset-normalizer" +version = "2.1.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +] + +[package.extras] +unicode-backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dill" +version = "0.3.6" +description = "serialize all of python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, + {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, +] + +[package.extras] +graph = ["objgraph (>=1.7.2)"] + +[[package]] +name = "exceptiongroup" +version = "1.1.0" +description = "Backport of PEP 654 (exception groups)" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, + {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "fastapi" +version = "0.88.0" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "fastapi-0.88.0-py3-none-any.whl", hash = "sha256:263b718bb384422fe3d042ffc9a0c8dece5e034ab6586ff034f6b4b1667c3eee"}, + {file = "fastapi-0.88.0.tar.gz", hash = "sha256:915bf304180a0e7c5605ec81097b7d4cd8826ff87a02bb198e336fb9f3b5ff02"}, +] + +[package.dependencies] +pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" +starlette = "0.22.0" + +[package.extras] +all = ["email-validator (>=1.1.1)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +dev = ["pre-commit (>=2.17.0,<3.0.0)", "ruff (==0.0.138)", "uvicorn[standard] (>=0.12.0,<0.19.0)"] +doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "typer[all] (>=0.6.1,<0.7.0)"] +test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==22.10.0)", "coverage[toml] (>=6.5.0,<7.0)", "databases[sqlite] (>=0.3.2,<0.7.0)", "email-validator (>=1.1.1,<2.0.0)", "flask (>=1.1.2,<3.0.0)", "httpx (>=0.23.0,<0.24.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.982)", "orjson (>=3.2.1,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "peewee (>=3.13.3,<4.0.0)", "pytest (>=7.1.3,<8.0.0)", "python-jose[cryptography] (>=3.3.0,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "pyyaml (>=5.3.1,<7.0.0)", "ruff (==0.0.138)", "sqlalchemy (>=1.3.18,<=1.4.41)", "types-orjson (==3.6.2)", "types-ujson (==5.5.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)"] + +[[package]] +name = "flake8" +version = "6.0.0" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" +optional = false +python-versions = ">=3.8.1" +files = [ + {file = "flake8-6.0.0-py2.py3-none-any.whl", hash = "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7"}, + {file = "flake8-6.0.0.tar.gz", hash = "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.10.0,<2.11.0" +pyflakes = ">=3.0.0,<3.1.0" + +[[package]] +name = "frozenlist" +version = "1.3.3" +description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4"}, + {file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0"}, + {file = "frozenlist-1.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd"}, + {file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f"}, + {file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420"}, + {file = "frozenlist-1.3.3-cp310-cp310-win32.whl", hash = "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642"}, + {file = "frozenlist-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1"}, + {file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7"}, + {file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678"}, + {file = "frozenlist-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b"}, + {file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4"}, + {file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81"}, + {file = "frozenlist-1.3.3-cp311-cp311-win32.whl", hash = "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8"}, + {file = "frozenlist-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32"}, + {file = "frozenlist-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d"}, + {file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb"}, + {file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401"}, + {file = "frozenlist-1.3.3-cp37-cp37m-win32.whl", hash = "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a"}, + {file = "frozenlist-1.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411"}, + {file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a"}, + {file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5"}, + {file = "frozenlist-1.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2"}, + {file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13"}, + {file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3"}, + {file = "frozenlist-1.3.3-cp38-cp38-win32.whl", hash = "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b"}, + {file = "frozenlist-1.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef"}, + {file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf"}, + {file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1"}, + {file = "frozenlist-1.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b"}, + {file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab"}, + {file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1"}, + {file = "frozenlist-1.3.3-cp39-cp39-win32.whl", hash = "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38"}, + {file = "frozenlist-1.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9"}, + {file = "frozenlist-1.3.3.tar.gz", hash = "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"}, +] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httptools" +version = "0.5.0" +description = "A collection of framework independent HTTP protocol utils." +category = "main" +optional = false +python-versions = ">=3.5.0" +files = [ + {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8f470c79061599a126d74385623ff4744c4e0f4a0997a353a44923c0b561ee51"}, + {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e90491a4d77d0cb82e0e7a9cb35d86284c677402e4ce7ba6b448ccc7325c5421"}, + {file = "httptools-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1d2357f791b12d86faced7b5736dea9ef4f5ecdc6c3f253e445ee82da579449"}, + {file = "httptools-0.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f90cd6fd97c9a1b7fe9215e60c3bd97336742a0857f00a4cb31547bc22560c2"}, + {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5230a99e724a1bdbbf236a1b58d6e8504b912b0552721c7c6b8570925ee0ccde"}, + {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a47a34f6015dd52c9eb629c0f5a8a5193e47bf2a12d9a3194d231eaf1bc451a"}, + {file = "httptools-0.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:24bb4bb8ac3882f90aa95403a1cb48465de877e2d5298ad6ddcfdebec060787d"}, + {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e67d4f8734f8054d2c4858570cc4b233bf753f56e85217de4dfb2495904cf02e"}, + {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e5eefc58d20e4c2da82c78d91b2906f1a947ef42bd668db05f4ab4201a99f49"}, + {file = "httptools-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0297822cea9f90a38df29f48e40b42ac3d48a28637368f3ec6d15eebefd182f9"}, + {file = "httptools-0.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:557be7fbf2bfa4a2ec65192c254e151684545ebab45eca5d50477d562c40f986"}, + {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:54465401dbbec9a6a42cf737627fb0f014d50dc7365a6b6cd57753f151a86ff0"}, + {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4d9ebac23d2de960726ce45f49d70eb5466725c0087a078866043dad115f850f"}, + {file = "httptools-0.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:e8a34e4c0ab7b1ca17b8763613783e2458e77938092c18ac919420ab8655c8c1"}, + {file = "httptools-0.5.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f659d7a48401158c59933904040085c200b4be631cb5f23a7d561fbae593ec1f"}, + {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1616b3ba965cd68e6f759eeb5d34fbf596a79e84215eeceebf34ba3f61fdc7"}, + {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3625a55886257755cb15194efbf209584754e31d336e09e2ffe0685a76cb4b60"}, + {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:72ad589ba5e4a87e1d404cc1cb1b5780bfcb16e2aec957b88ce15fe879cc08ca"}, + {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:850fec36c48df5a790aa735417dca8ce7d4b48d59b3ebd6f83e88a8125cde324"}, + {file = "httptools-0.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f222e1e9d3f13b68ff8a835574eda02e67277d51631d69d7cf7f8e07df678c86"}, + {file = "httptools-0.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3cb8acf8f951363b617a8420768a9f249099b92e703c052f9a51b66342eea89b"}, + {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550059885dc9c19a072ca6d6735739d879be3b5959ec218ba3e013fd2255a11b"}, + {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a04fe458a4597aa559b79c7f48fe3dceabef0f69f562daf5c5e926b153817281"}, + {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d0c1044bce274ec6711f0770fd2d5544fe392591d204c68328e60a46f88843b"}, + {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c6eeefd4435055a8ebb6c5cc36111b8591c192c56a95b45fe2af22d9881eee25"}, + {file = "httptools-0.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5b65be160adcd9de7a7e6413a4966665756e263f0d5ddeffde277ffeee0576a5"}, + {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fe9c766a0c35b7e3d6b6939393c8dfdd5da3ac5dec7f971ec9134f284c6c36d6"}, + {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85b392aba273566c3d5596a0a490978c085b79700814fb22bfd537d381dd230c"}, + {file = "httptools-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5e3088f4ed33947e16fd865b8200f9cfae1144f41b64a8cf19b599508e096bc"}, + {file = "httptools-0.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c2a56b6aad7cc8f5551d8e04ff5a319d203f9d870398b94702300de50190f63"}, + {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b571b281a19762adb3f48a7731f6842f920fa71108aff9be49888320ac3e24d"}, + {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa47ffcf70ba6f7848349b8a6f9b481ee0f7637931d91a9860a1838bfc586901"}, + {file = "httptools-0.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:bede7ee075e54b9a5bde695b4fc8f569f30185891796b2e4e09e2226801d09bd"}, + {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:64eba6f168803a7469866a9c9b5263a7463fa8b7a25b35e547492aa7322036b6"}, + {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4b098e4bb1174096a93f48f6193e7d9aa7071506a5877da09a783509ca5fff42"}, + {file = "httptools-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9423a2de923820c7e82e18980b937893f4aa8251c43684fa1772e341f6e06887"}, + {file = "httptools-0.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca1b7becf7d9d3ccdbb2f038f665c0f4857e08e1d8481cbcc1a86a0afcfb62b2"}, + {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:50d4613025f15f4b11f1c54bbed4761c0020f7f921b95143ad6d58c151198142"}, + {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ffce9d81c825ac1deaa13bc9694c0562e2840a48ba21cfc9f3b4c922c16f372"}, + {file = "httptools-0.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:1af91b3650ce518d226466f30bbba5b6376dbd3ddb1b2be8b0658c6799dd450b"}, + {file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"}, +] + +[package.extras] +test = ["Cython (>=0.29.24,<0.30.0)"] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] + +[[package]] +name = "isort" +version = "5.11.4" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "isort-5.11.4-py3-none-any.whl", hash = "sha256:c033fd0edb91000a7f09527fe5c75321878f98322a77ddcc81adbd83724afb7b"}, + {file = "isort-5.11.4.tar.gz", hash = "sha256:6db30c5ded9815d813932c04c2f85a360bcdd35fed496f4d8f35495ef0a261b6"}, +] + +[package.extras] +colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile-deprecated-finder = ["pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + +[[package]] +name = "lazy-object-proxy" +version = "1.8.0" +description = "A fast and thorough lazy object proxy." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4fd031589121ad46e293629b39604031d354043bb5cdf83da4e93c2d7f3389fe"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:b70d6e7a332eb0217e7872a73926ad4fdc14f846e85ad6749ad111084e76df25"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:eb329f8d8145379bf5dbe722182410fe8863d186e51bf034d2075eb8d85ee25b"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4e2d9f764f1befd8bdc97673261b8bb888764dfdbd7a4d8f55e4fbcabb8c3fb7"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:e20bfa6db17a39c706d24f82df8352488d2943a3b7ce7d4c22579cb89ca8896e"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:14010b49a2f56ec4943b6cf925f597b534ee2fe1f0738c84b3bce0c1a11ff10d"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6850e4aeca6d0df35bb06e05c8b934ff7c533734eb51d0ceb2d63696f1e6030c"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:5b51d6f3bfeb289dfd4e95de2ecd464cd51982fe6f00e2be1d0bf94864d58acd"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6f593f26c470a379cf7f5bc6db6b5f1722353e7bf937b8d0d0b3fba911998858"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1c7c0433154bb7c54185714c6929acc0ba04ee1b167314a779b9025517eada"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:d176f392dbbdaacccf15919c77f526edf11a34aece58b55ab58539807b85436f"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:afcaa24e48bb23b3be31e329deb3f1858f1f1df86aea3d70cb5c8578bfe5261c"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:71d9ae8a82203511a6f60ca5a1b9f8ad201cac0fc75038b2dc5fa519589c9288"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:8f6ce2118a90efa7f62dd38c7dbfffd42f468b180287b748626293bf12ed468f"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:eac3a9a5ef13b332c059772fd40b4b1c3d45a3a2b05e33a361dee48e54a4dad0"}, + {file = "lazy_object_proxy-1.8.0-pp37-pypy37_pp73-any.whl", hash = "sha256:ae032743794fba4d171b5b67310d69176287b5bf82a21f588282406a79498891"}, + {file = "lazy_object_proxy-1.8.0-pp38-pypy38_pp73-any.whl", hash = "sha256:7e1561626c49cb394268edd00501b289053a652ed762c58e1081224c8d881cec"}, + {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"}, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "multidict" +version = "6.0.4" +description = "multidict implementation" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, + {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, + {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, + {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, + {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, + {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, + {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, + {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, + {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, + {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, + {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, + {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, + {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, +] + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] + +[[package]] +name = "packaging" +version = "22.0" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"}, + {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"}, +] + +[[package]] +name = "pathspec" +version = "0.10.3" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"}, + {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"}, +] + +[[package]] +name = "platformdirs" +version = "2.6.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "platformdirs-2.6.0-py3-none-any.whl", hash = "sha256:1a89a12377800c81983db6be069ec068eee989748799b946cce2a6e80dcc54ca"}, + {file = "platformdirs-2.6.0.tar.gz", hash = "sha256:b46ffafa316e6b83b47489d240ce17173f123a9b9c83282141c3daf26ad9ac2e"}, +] + +[package.extras] +docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"] +test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pyairtable" +version = "1.4.0" +description = "Python Client for the Airtable API" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "pyairtable-1.4.0-py2.py3-none-any.whl", hash = "sha256:f127af0796bfe40d349937b4c1a0ff81b7740fc3c8ebd0e6d0e559f42026be4b"}, + {file = "pyairtable-1.4.0.tar.gz", hash = "sha256:e2e9cf7b14afcf5bac69f79f6a61e61bb8c8ff94656e9c7ebeef406c0fbfbb8c"}, +] + +[package.dependencies] +requests = ">=2" + +[[package]] +name = "pyaml" +version = "21.10.1" +description = "PyYAML-based module to produce pretty and readable YAML-serialized data" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pyaml-21.10.1-py2.py3-none-any.whl", hash = "sha256:19985ed303c3a985de4cf8fd329b6d0a5a5b5c9035ea240eccc709ebacbaf4a0"}, + {file = "pyaml-21.10.1.tar.gz", hash = "sha256:c6519fee13bf06e3bb3f20cacdea8eba9140385a7c2546df5dbae4887f768383"}, +] + +[package.dependencies] +PyYAML = "*" + +[[package]] +name = "pycodestyle" +version = "2.10.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"}, + {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"}, +] + +[[package]] +name = "pydantic" +version = "1.10.2" +description = "Data validation and settings management using python type hints" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd"}, + {file = "pydantic-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98"}, + {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912"}, + {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559"}, + {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236"}, + {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c"}, + {file = "pydantic-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644"}, + {file = "pydantic-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f"}, + {file = "pydantic-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a"}, + {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525"}, + {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283"}, + {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42"}, + {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52"}, + {file = "pydantic-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c"}, + {file = "pydantic-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5"}, + {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c"}, + {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254"}, + {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5"}, + {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d"}, + {file = "pydantic-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2"}, + {file = "pydantic-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13"}, + {file = "pydantic-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116"}, + {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624"}, + {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1"}, + {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9"}, + {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965"}, + {file = "pydantic-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e"}, + {file = "pydantic-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488"}, + {file = "pydantic-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41"}, + {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b"}, + {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe"}, + {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d"}, + {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda"}, + {file = "pydantic-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6"}, + {file = "pydantic-1.10.2-py3-none-any.whl", hash = "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709"}, + {file = "pydantic-1.10.2.tar.gz", hash = "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410"}, +] + +[package.dependencies] +typing-extensions = ">=4.1.0" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pyflakes" +version = "3.0.1" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"}, + {file = "pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"}, +] + +[[package]] +name = "pylint" +version = "2.15.9" +description = "python code static checker" +category = "dev" +optional = false +python-versions = ">=3.7.2" +files = [ + {file = "pylint-2.15.9-py3-none-any.whl", hash = "sha256:349c8cd36aede4d50a0754a8c0218b43323d13d5d88f4b2952ddfe3e169681eb"}, + {file = "pylint-2.15.9.tar.gz", hash = "sha256:18783cca3cfee5b83c6c5d10b3cdb66c6594520ffae61890858fe8d932e1c6b4"}, +] + +[package.dependencies] +astroid = ">=2.12.13,<=2.14.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, +] +isort = ">=4.2.5,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "pytest" +version = "7.2.0" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, + {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, +] + +[package.dependencies] +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-vcr" +version = "1.0.2" +description = "Plugin for managing VCR.py cassettes" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pytest-vcr-1.0.2.tar.gz", hash = "sha256:23ee51b75abbcc43d926272773aae4f39f93aceb75ed56852d0bf618f92e1896"}, + {file = "pytest_vcr-1.0.2-py2.py3-none-any.whl", hash = "sha256:2f316e0539399bea0296e8b8401145c62b6f85e9066af7e57b6151481b0d6d9c"}, +] + +[package.dependencies] +pytest = ">=3.6.0" +vcrpy = "*" + +[[package]] +name = "python-dotenv" +version = "0.21.0" +description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "python-dotenv-0.21.0.tar.gz", hash = "sha256:b77d08274639e3d34145dfa6c7008e66df0f04b7be7a75fd0d5292c191d79045"}, + {file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pytz" +version = "2022.7" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2022.7-py2.py3-none-any.whl", hash = "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd"}, + {file = "pytz-2022.7.tar.gz", hash = "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a"}, +] + +[[package]] +name = "pytz-deprecation-shim" +version = "0.1.0.post0" +description = "Shims to make deprecation of pytz easier" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, + {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, +] + +[package.dependencies] +tzdata = {version = "*", markers = "python_version >= \"3.6\""} + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] + +[[package]] +name = "requests" +version = "2.28.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" +files = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "sentry-sdk" +version = "1.12.1" +description = "Python client for Sentry (https://sentry.io)" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "sentry-sdk-1.12.1.tar.gz", hash = "sha256:5bbe4b72de22f9ac1e67f2a4e6efe8fbd595bb59b7b223443f50fe5802a5551c"}, + {file = "sentry_sdk-1.12.1-py2.py3-none-any.whl", hash = "sha256:9f0b960694e2d8bb04db4ba6ac2a645040caef4e762c65937998ff06064f10d6"}, +] + +[package.dependencies] +certifi = "*" +urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} + +[package.extras] +aiohttp = ["aiohttp (>=3.5)"] +beam = ["apache-beam (>=2.12)"] +bottle = ["bottle (>=0.12.13)"] +celery = ["celery (>=3)"] +chalice = ["chalice (>=1.16.0)"] +django = ["django (>=1.8)"] +falcon = ["falcon (>=1.4)"] +fastapi = ["fastapi (>=0.79.0)"] +flask = ["blinker (>=1.1)", "flask (>=0.11)"] +httpx = ["httpx (>=0.16.0)"] +opentelemetry = ["opentelemetry-distro (>=0.350b0)"] +pure-eval = ["asttokens", "executing", "pure-eval"] +pymongo = ["pymongo (>=3.1)"] +pyspark = ["pyspark (>=2.4.4)"] +quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] +rq = ["rq (>=0.6)"] +sanic = ["sanic (>=0.8)"] +sqlalchemy = ["sqlalchemy (>=1.2)"] +starlette = ["starlette (>=0.19.1)"] +tornado = ["tornado (>=5)"] + +[[package]] +name = "setuptools" +version = "65.6.3" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, + {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "slack-bolt" +version = "1.16.1" +description = "The Bolt Framework for Python" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "slack_bolt-1.16.1-py2.py3-none-any.whl", hash = "sha256:96b584c0f568fa0be5c8177cc5628a7772ff28067fc5a6bfc174d170048a36e5"}, + {file = "slack_bolt-1.16.1.tar.gz", hash = "sha256:ecef3da9b7c98b0d4333141c461caa405fb62f4b79a7bead6a35445164473cf7"}, +] + +[package.dependencies] +slack-sdk = ">=3.18.5,<4" + +[package.extras] +adapter = ["CherryPy (>=18,<19)", "Django (>=3,<5)", "Flask (>=1,<3)", "Werkzeug (>=2,<3)", "boto3 (<=2)", "bottle (>=0.12,<1)", "chalice (>=1.27.3,<2)", "falcon (>=2,<4)", "fastapi (>=0.70.0,<1)", "gunicorn (>=20,<21)", "pyramid (>=1,<3)", "sanic (>=22,<23)", "starlette (>=0.14,<1)", "tornado (>=6,<7)", "uvicorn (<1)", "websocket-client (>=1.2.3,<2)"] +adapter-testing = ["Flask (>=1,<2)", "Werkzeug (>=1,<2)", "boddle (>=0.2,<0.3)", "docker (>=5,<6)", "moto (>=3,<4)", "requests (>=2,<3)", "sanic-testing (>=0.7)"] +async = ["aiohttp (>=3,<4)", "websockets (>=10,<11)"] +testing = ["Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (>=1,<2)", "aiohttp (>=3,<4)", "black (==22.8.0)", "click (<=8.0.4)", "itsdangerous (==2.0.1)", "pytest (>=6.2.5,<7)", "pytest-asyncio (>=0.18.2,<1)", "pytest-cov (>=3,<4)"] +testing-without-asyncio = ["Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (>=1,<2)", "black (==22.8.0)", "click (<=8.0.4)", "itsdangerous (==2.0.1)", "pytest (>=6.2.5,<7)", "pytest-cov (>=3,<4)"] + +[[package]] +name = "slack-sdk" +version = "3.19.5" +description = "The Slack API Platform SDK for Python" +category = "main" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "slack_sdk-3.19.5-py2.py3-none-any.whl", hash = "sha256:0b52bb32a87c71f638b9eb47e228dffeebf89de5e762684ef848276f9f186c84"}, + {file = "slack_sdk-3.19.5.tar.gz", hash = "sha256:47fb4af596243fe6585a92f3034de21eb2104a55cc9fd59a92ef3af17cf9ddd8"}, +] + +[package.extras] +optional = ["SQLAlchemy (>=1,<2)", "aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "websocket-client (>=1,<2)", "websockets (>=10,<11)"] +testing = ["Flask (>=1,<2)", "Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (<2)", "black (==22.8.0)", "boto3 (<=2)", "click (==8.0.4)", "codecov (>=2,<3)", "databases (>=0.5)", "flake8 (>=5,<6)", "itsdangerous (==1.1.0)", "moto (>=3,<4)", "psutil (>=5,<6)", "pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "pytest-cov (>=2,<3)"] + +[[package]] +name = "sniffio" +version = "1.3.0" +description = "Sniff out which async library your code is running under" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, + {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, +] + +[[package]] +name = "starlette" +version = "0.22.0" +description = "The little ASGI library that shines." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "starlette-0.22.0-py3-none-any.whl", hash = "sha256:b5eda991ad5f0ee5d8ce4c4540202a573bb6691ecd0c712262d0bc85cf8f2c50"}, + {file = "starlette-0.22.0.tar.gz", hash = "sha256:b092cbc365bea34dd6840b42861bdabb2f507f8671e642e8272d2442e08ea4ff"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "tomlkit" +version = "0.11.6" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, + {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, +] + +[[package]] +name = "typing-extensions" +version = "4.4.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, +] + +[[package]] +name = "tzdata" +version = "2022.7" +description = "Provider of IANA time zone data" +category = "main" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2022.7-py2.py3-none-any.whl", hash = "sha256:2b88858b0e3120792a3c0635c23daf36a7d7eeeca657c323da299d2094402a0d"}, + {file = "tzdata-2022.7.tar.gz", hash = "sha256:fe5f866eddd8b96e9fcba978f8e503c909b19ea7efda11e52e39494bad3a7bfa"}, +] + +[[package]] +name = "tzlocal" +version = "4.2" +description = "tzinfo object for the local timezone" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "tzlocal-4.2-py3-none-any.whl", hash = "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745"}, + {file = "tzlocal-4.2.tar.gz", hash = "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7"}, +] + +[package.dependencies] +pytz-deprecation-shim = "*" +tzdata = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +devenv = ["black", "pyroma", "pytest-cov", "zest.releaser"] +test = ["pytest (>=4.3)", "pytest-mock (>=3.3)"] + +[[package]] +name = "urllib3" +version = "1.26.13" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, + {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "uvicorn" +version = "0.20.0" +description = "The lightning-fast ASGI server." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uvicorn-0.20.0-py3-none-any.whl", hash = "sha256:c3ed1598a5668208723f2bb49336f4509424ad198d6ab2615b7783db58d919fd"}, + {file = "uvicorn-0.20.0.tar.gz", hash = "sha256:a4e12017b940247f836bc90b72e725d7dfd0c8ed1c51eb365f5ba30d9f5127d8"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} +h11 = ">=0.8" +httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + +[[package]] +name = "uvloop" +version = "0.17.0" +description = "Fast implementation of asyncio event loop on top of libuv" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718"}, + {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c"}, + {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d"}, + {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024"}, + {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa"}, + {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811"}, + {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c"}, + {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e"}, + {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539"}, + {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4"}, + {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05"}, + {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376"}, + {file = "uvloop-0.17.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b"}, + {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8"}, + {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62"}, + {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d"}, + {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667"}, + {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738"}, + {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20"}, + {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f"}, + {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595"}, + {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578"}, + {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474"}, + {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b"}, + {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c"}, + {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8"}, + {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c"}, + {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9"}, + {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded"}, + {file = "uvloop-0.17.0.tar.gz", hash = "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1"}, +] + +[package.extras] +dev = ["Cython (>=0.29.32,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["Cython (>=0.29.32,<0.30.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"] + +[[package]] +name = "vcrpy" +version = "4.2.1" +description = "Automatically mock your HTTP interactions to simplify and speed up testing" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "vcrpy-4.2.1-py2.py3-none-any.whl", hash = "sha256:efac3e2e0b2af7686f83a266518180af7a048619b2f696e7bad9520f5e2eac09"}, + {file = "vcrpy-4.2.1.tar.gz", hash = "sha256:7cd3e81a2c492e01c281f180bcc2a86b520b173d2b656cb5d89d99475423e013"}, +] + +[package.dependencies] +PyYAML = "*" +six = ">=1.5" +wrapt = "*" +yarl = "*" + +[[package]] +name = "watchfiles" +version = "0.18.1" +description = "Simple, modern and high performance file watching and code reload in python." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "watchfiles-0.18.1-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:9891d3c94272108bcecf5597a592e61105279def1313521e637f2d5acbe08bc9"}, + {file = "watchfiles-0.18.1-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:7102342d60207fa635e24c02a51c6628bf0472e5fef067f78a612386840407fc"}, + {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:00ea0081eca5e8e695cffbc3a726bb90da77f4e3f78ce29b86f0d95db4e70ef7"}, + {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8e6db99e49cd7125d8a4c9d33c0735eea7b75a942c6ad68b75be3e91c242fb"}, + {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc7c726855f04f22ac79131b51bf0c9f728cb2117419ed830a43828b2c4a5fcb"}, + {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbaff354d12235002e62d9d3fa8bcf326a8490c1179aa5c17195a300a9e5952f"}, + {file = "watchfiles-0.18.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:888db233e06907c555eccd10da99b9cd5ed45deca47e41766954292dc9f7b198"}, + {file = "watchfiles-0.18.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:dde79930d1b28f15994ad6613aa2865fc7a403d2bb14585a8714a53233b15717"}, + {file = "watchfiles-0.18.1-cp37-abi3-win32.whl", hash = "sha256:e2b2bdd26bf8d6ed90763e6020b475f7634f919dbd1730ea1b6f8cb88e21de5d"}, + {file = "watchfiles-0.18.1-cp37-abi3-win_amd64.whl", hash = "sha256:c541e0f2c3e95e83e4f84561c893284ba984e9d0025352057396d96dceb09f44"}, + {file = "watchfiles-0.18.1-cp37-abi3-win_arm64.whl", hash = "sha256:9a26272ef3e930330fc0c2c148cc29706cc2c40d25760c7ccea8d768a8feef8b"}, + {file = "watchfiles-0.18.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:9fb12a5e2b42e0b53769455ff93546e6bc9ab14007fbd436978d827a95ca5bd1"}, + {file = "watchfiles-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:548d6b42303d40264118178053c78820533b683b20dfbb254a8706ca48467357"}, + {file = "watchfiles-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0d8fdfebc50ac7569358f5c75f2b98bb473befccf9498cf23b3e39993bb45a"}, + {file = "watchfiles-0.18.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0f9a22fff1745e2bb930b1e971c4c5b67ea3b38ae17a6adb9019371f80961219"}, + {file = "watchfiles-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b02e7fa03cd4059dd61ff0600080a5a9e7a893a85cb8e5178943533656eec65e"}, + {file = "watchfiles-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a868ce2c7565137f852bd4c863a164dc81306cae7378dbdbe4e2aca51ddb8857"}, + {file = "watchfiles-0.18.1.tar.gz", hash = "sha256:4ec0134a5e31797eb3c6c624dbe9354f2a8ee9c720e0b46fc5b7bab472b7c6d4"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "websockets" +version = "10.4" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "websockets-10.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48"}, + {file = "websockets-10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab"}, + {file = "websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c"}, + {file = "websockets-10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032"}, + {file = "websockets-10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4"}, + {file = "websockets-10.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50"}, + {file = "websockets-10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8"}, + {file = "websockets-10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1"}, + {file = "websockets-10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331"}, + {file = "websockets-10.4-cp310-cp310-win32.whl", hash = "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a"}, + {file = "websockets-10.4-cp310-cp310-win_amd64.whl", hash = "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089"}, + {file = "websockets-10.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47a2964021f2110116cc1125b3e6d87ab5ad16dea161949e7244ec583b905bb4"}, + {file = "websockets-10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e789376b52c295c4946403bd0efecf27ab98f05319df4583d3c48e43c7342c2f"}, + {file = "websockets-10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d3f0b61c45c3fa9a349cf484962c559a8a1d80dae6977276df8fd1fa5e3cb8c"}, + {file = "websockets-10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f55b5905705725af31ccef50e55391621532cd64fbf0bc6f4bac935f0fccec46"}, + {file = "websockets-10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00c870522cdb69cd625b93f002961ffb0c095394f06ba8c48f17eef7c1541f96"}, + {file = "websockets-10.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f38706e0b15d3c20ef6259fd4bc1700cd133b06c3c1bb108ffe3f8947be15fa"}, + {file = "websockets-10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f2c38d588887a609191d30e902df2a32711f708abfd85d318ca9b367258cfd0c"}, + {file = "websockets-10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fe10ddc59b304cb19a1bdf5bd0a7719cbbc9fbdd57ac80ed436b709fcf889106"}, + {file = "websockets-10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90fcf8929836d4a0e964d799a58823547df5a5e9afa83081761630553be731f9"}, + {file = "websockets-10.4-cp311-cp311-win32.whl", hash = "sha256:b9968694c5f467bf67ef97ae7ad4d56d14be2751000c1207d31bf3bb8860bae8"}, + {file = "websockets-10.4-cp311-cp311-win_amd64.whl", hash = "sha256:a7a240d7a74bf8d5cb3bfe6be7f21697a28ec4b1a437607bae08ac7acf5b4882"}, + {file = "websockets-10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:74de2b894b47f1d21cbd0b37a5e2b2392ad95d17ae983e64727e18eb281fe7cb"}, + {file = "websockets-10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3a686ecb4aa0d64ae60c9c9f1a7d5d46cab9bfb5d91a2d303d00e2cd4c4c5cc"}, + {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d15c968ea7a65211e084f523151dbf8ae44634de03c801b8bd070b74e85033"}, + {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41"}, + {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e23173580d740bf8822fd0379e4bf30aa1d5a92a4f252d34e893070c081050df"}, + {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:dd500e0a5e11969cdd3320935ca2ff1e936f2358f9c2e61f100a1660933320ea"}, + {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4239b6027e3d66a89446908ff3027d2737afc1a375f8fd3eea630a4842ec9a0c"}, + {file = "websockets-10.4-cp37-cp37m-win32.whl", hash = "sha256:8a5cc00546e0a701da4639aa0bbcb0ae2bb678c87f46da01ac2d789e1f2d2038"}, + {file = "websockets-10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:a9f9a735deaf9a0cadc2d8c50d1a5bcdbae8b6e539c6e08237bc4082d7c13f28"}, + {file = "websockets-10.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c1289596042fad2cdceb05e1ebf7aadf9995c928e0da2b7a4e99494953b1b94"}, + {file = "websockets-10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0cff816f51fb33c26d6e2b16b5c7d48eaa31dae5488ace6aae468b361f422b63"}, + {file = "websockets-10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dd9becd5fe29773d140d68d607d66a38f60e31b86df75332703757ee645b6faf"}, + {file = "websockets-10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45ec8e75b7dbc9539cbfafa570742fe4f676eb8b0d3694b67dabe2f2ceed8aa6"}, + {file = "websockets-10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f72e5cd0f18f262f5da20efa9e241699e0cf3a766317a17392550c9ad7b37d8"}, + {file = "websockets-10.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:185929b4808b36a79c65b7865783b87b6841e852ef5407a2fb0c03381092fa3b"}, + {file = "websockets-10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d27a7e34c313b3a7f91adcd05134315002aaf8540d7b4f90336beafaea6217c"}, + {file = "websockets-10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:884be66c76a444c59f801ac13f40c76f176f1bfa815ef5b8ed44321e74f1600b"}, + {file = "websockets-10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:931c039af54fc195fe6ad536fde4b0de04da9d5916e78e55405436348cfb0e56"}, + {file = "websockets-10.4-cp38-cp38-win32.whl", hash = "sha256:db3c336f9eda2532ec0fd8ea49fef7a8df8f6c804cdf4f39e5c5c0d4a4ad9a7a"}, + {file = "websockets-10.4-cp38-cp38-win_amd64.whl", hash = "sha256:48c08473563323f9c9debac781ecf66f94ad5a3680a38fe84dee5388cf5acaf6"}, + {file = "websockets-10.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:40e826de3085721dabc7cf9bfd41682dadc02286d8cf149b3ad05bff89311e4f"}, + {file = "websockets-10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56029457f219ade1f2fc12a6504ea61e14ee227a815531f9738e41203a429112"}, + {file = "websockets-10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5fc088b7a32f244c519a048c170f14cf2251b849ef0e20cbbb0fdf0fdaf556f"}, + {file = "websockets-10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fc8709c00704194213d45e455adc106ff9e87658297f72d544220e32029cd3d"}, + {file = "websockets-10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0154f7691e4fe6c2b2bc275b5701e8b158dae92a1ab229e2b940efe11905dff4"}, + {file = "websockets-10.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c6d2264f485f0b53adf22697ac11e261ce84805c232ed5dbe6b1bcb84b00ff0"}, + {file = "websockets-10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9bc42e8402dc5e9905fb8b9649f57efcb2056693b7e88faa8fb029256ba9c68c"}, + {file = "websockets-10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:edc344de4dac1d89300a053ac973299e82d3db56330f3494905643bb68801269"}, + {file = "websockets-10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:84bc2a7d075f32f6ed98652db3a680a17a4edb21ca7f80fe42e38753a58ee02b"}, + {file = "websockets-10.4-cp39-cp39-win32.whl", hash = "sha256:c94ae4faf2d09f7c81847c63843f84fe47bf6253c9d60b20f25edfd30fb12588"}, + {file = "websockets-10.4-cp39-cp39-win_amd64.whl", hash = "sha256:bbccd847aa0c3a69b5f691a84d2341a4f8a629c6922558f2a70611305f902d74"}, + {file = "websockets-10.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:82ff5e1cae4e855147fd57a2863376ed7454134c2bf49ec604dfe71e446e2193"}, + {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d210abe51b5da0ffdbf7b43eed0cfdff8a55a1ab17abbec4301c9ff077dd0342"}, + {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:942de28af58f352a6f588bc72490ae0f4ccd6dfc2bd3de5945b882a078e4e179"}, + {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9b27d6c1c6cd53dc93614967e9ce00ae7f864a2d9f99fe5ed86706e1ecbf485"}, + {file = "websockets-10.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3d3cac3e32b2c8414f4f87c1b2ab686fa6284a980ba283617404377cd448f631"}, + {file = "websockets-10.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:da39dd03d130162deb63da51f6e66ed73032ae62e74aaccc4236e30edccddbb0"}, + {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389f8dbb5c489e305fb113ca1b6bdcdaa130923f77485db5b189de343a179393"}, + {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09a1814bb15eff7069e51fed0826df0bc0702652b5cb8f87697d469d79c23576"}, + {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff64a1d38d156d429404aaa84b27305e957fd10c30e5880d1765c9480bea490f"}, + {file = "websockets-10.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b343f521b047493dc4022dd338fc6db9d9282658862756b4f6fd0e996c1380e1"}, + {file = "websockets-10.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:932af322458da7e4e35df32f050389e13d3d96b09d274b22a7aa1808f292fee4"}, + {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a4162139374a49eb18ef5b2f4da1dd95c994588f5033d64e0bbfda4b6b6fcf"}, + {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c57e4c1349fbe0e446c9fa7b19ed2f8a4417233b6984277cce392819123142d3"}, + {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b627c266f295de9dea86bd1112ed3d5fafb69a348af30a2422e16590a8ecba13"}, + {file = "websockets-10.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72"}, + {file = "websockets-10.4.tar.gz", hash = "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3"}, +] + +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] + +[[package]] +name = "yarl" +version = "1.8.2" +description = "Yet another URL library" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "yarl-1.8.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bb81f753c815f6b8e2ddd2eef3c855cf7da193b82396ac013c661aaa6cc6b0a5"}, + {file = "yarl-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:47d49ac96156f0928f002e2424299b2c91d9db73e08c4cd6742923a086f1c863"}, + {file = "yarl-1.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3fc056e35fa6fba63248d93ff6e672c096f95f7836938241ebc8260e062832fe"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58a3c13d1c3005dbbac5c9f0d3210b60220a65a999b1833aa46bd6677c69b08e"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10b08293cda921157f1e7c2790999d903b3fd28cd5c208cf8826b3b508026996"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de986979bbd87272fe557e0a8fcb66fd40ae2ddfe28a8b1ce4eae22681728fef"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c4fcfa71e2c6a3cb568cf81aadc12768b9995323186a10827beccf5fa23d4f8"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae4d7ff1049f36accde9e1ef7301912a751e5bae0a9d142459646114c70ecba6"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf071f797aec5b96abfc735ab97da9fd8f8768b43ce2abd85356a3127909d146"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:74dece2bfc60f0f70907c34b857ee98f2c6dd0f75185db133770cd67300d505f"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:df60a94d332158b444301c7f569659c926168e4d4aad2cfbf4bce0e8fb8be826"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:63243b21c6e28ec2375f932a10ce7eda65139b5b854c0f6b82ed945ba526bff3"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cfa2bbca929aa742b5084fd4663dd4b87c191c844326fcb21c3afd2d11497f80"}, + {file = "yarl-1.8.2-cp310-cp310-win32.whl", hash = "sha256:b05df9ea7496df11b710081bd90ecc3a3db6adb4fee36f6a411e7bc91a18aa42"}, + {file = "yarl-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:24ad1d10c9db1953291f56b5fe76203977f1ed05f82d09ec97acb623a7976574"}, + {file = "yarl-1.8.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2a1fca9588f360036242f379bfea2b8b44cae2721859b1c56d033adfd5893634"}, + {file = "yarl-1.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f37db05c6051eff17bc832914fe46869f8849de5b92dc4a3466cd63095d23dfd"}, + {file = "yarl-1.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77e913b846a6b9c5f767b14dc1e759e5aff05502fe73079f6f4176359d832581"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0978f29222e649c351b173da2b9b4665ad1feb8d1daa9d971eb90df08702668a"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388a45dc77198b2460eac0aca1efd6a7c09e976ee768b0d5109173e521a19daf"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2305517e332a862ef75be8fad3606ea10108662bc6fe08509d5ca99503ac2aee"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42430ff511571940d51e75cf42f1e4dbdded477e71c1b7a17f4da76c1da8ea76"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3150078118f62371375e1e69b13b48288e44f6691c1069340081c3fd12c94d5b"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c15163b6125db87c8f53c98baa5e785782078fbd2dbeaa04c6141935eb6dab7a"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4d04acba75c72e6eb90745447d69f84e6c9056390f7a9724605ca9c56b4afcc6"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e7fd20d6576c10306dea2d6a5765f46f0ac5d6f53436217913e952d19237efc4"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:75c16b2a900b3536dfc7014905a128a2bea8fb01f9ee26d2d7d8db0a08e7cb2c"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6d88056a04860a98341a0cf53e950e3ac9f4e51d1b6f61a53b0609df342cc8b2"}, + {file = "yarl-1.8.2-cp311-cp311-win32.whl", hash = "sha256:fb742dcdd5eec9f26b61224c23baea46c9055cf16f62475e11b9b15dfd5c117b"}, + {file = "yarl-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8c46d3d89902c393a1d1e243ac847e0442d0196bbd81aecc94fcebbc2fd5857c"}, + {file = "yarl-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ceff9722e0df2e0a9e8a79c610842004fa54e5b309fe6d218e47cd52f791d7ef"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6b4aca43b602ba0f1459de647af954769919c4714706be36af670a5f44c9c1"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1684a9bd9077e922300ecd48003ddae7a7474e0412bea38d4631443a91d61077"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebb78745273e51b9832ef90c0898501006670d6e059f2cdb0e999494eb1450c2"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3adeef150d528ded2a8e734ebf9ae2e658f4c49bf413f5f157a470e17a4a2e89"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57a7c87927a468e5a1dc60c17caf9597161d66457a34273ab1760219953f7f4c"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:efff27bd8cbe1f9bd127e7894942ccc20c857aa8b5a0327874f30201e5ce83d0"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a783cd344113cb88c5ff7ca32f1f16532a6f2142185147822187913eb989f739"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:705227dccbe96ab02c7cb2c43e1228e2826e7ead880bb19ec94ef279e9555b5b"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:34c09b43bd538bf6c4b891ecce94b6fa4f1f10663a8d4ca589a079a5018f6ed7"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a48f4f7fea9a51098b02209d90297ac324241bf37ff6be6d2b0149ab2bd51b37"}, + {file = "yarl-1.8.2-cp37-cp37m-win32.whl", hash = "sha256:0414fd91ce0b763d4eadb4456795b307a71524dbacd015c657bb2a39db2eab89"}, + {file = "yarl-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:d881d152ae0007809c2c02e22aa534e702f12071e6b285e90945aa3c376463c5"}, + {file = "yarl-1.8.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5df5e3d04101c1e5c3b1d69710b0574171cc02fddc4b23d1b2813e75f35a30b1"}, + {file = "yarl-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7a66c506ec67eb3159eea5096acd05f5e788ceec7b96087d30c7d2865a243918"}, + {file = "yarl-1.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b4fa2606adf392051d990c3b3877d768771adc3faf2e117b9de7eb977741229"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e21fb44e1eff06dd6ef971d4bdc611807d6bd3691223d9c01a18cec3677939e"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93202666046d9edadfe9f2e7bf5e0782ea0d497b6d63da322e541665d65a044e"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc77086ce244453e074e445104f0ecb27530d6fd3a46698e33f6c38951d5a0f1"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dd68a92cab699a233641f5929a40f02a4ede8c009068ca8aa1fe87b8c20ae3"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b372aad2b5f81db66ee7ec085cbad72c4da660d994e8e590c997e9b01e44901"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e6f3515aafe0209dd17fb9bdd3b4e892963370b3de781f53e1746a521fb39fc0"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dfef7350ee369197106805e193d420b75467b6cceac646ea5ed3049fcc950a05"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:728be34f70a190566d20aa13dc1f01dc44b6aa74580e10a3fb159691bc76909d"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ff205b58dc2929191f68162633d5e10e8044398d7a45265f90a0f1d51f85f72c"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf211dcad448a87a0d9047dc8282d7de59473ade7d7fdf22150b1d23859f946"}, + {file = "yarl-1.8.2-cp38-cp38-win32.whl", hash = "sha256:272b4f1599f1b621bf2aabe4e5b54f39a933971f4e7c9aa311d6d7dc06965165"}, + {file = "yarl-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:326dd1d3caf910cd26a26ccbfb84c03b608ba32499b5d6eeb09252c920bcbe4f"}, + {file = "yarl-1.8.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f8ca8ad414c85bbc50f49c0a106f951613dfa5f948ab69c10ce9b128d368baf8"}, + {file = "yarl-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:418857f837347e8aaef682679f41e36c24250097f9e2f315d39bae3a99a34cbf"}, + {file = "yarl-1.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ae0eec05ab49e91a78700761777f284c2df119376e391db42c38ab46fd662b77"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:009a028127e0a1755c38b03244c0bea9d5565630db9c4cf9572496e947137a87"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3edac5d74bb3209c418805bda77f973117836e1de7c000e9755e572c1f7850d0"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da65c3f263729e47351261351b8679c6429151ef9649bba08ef2528ff2c423b2"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ef8fb25e52663a1c85d608f6dd72e19bd390e2ecaf29c17fb08f730226e3a08"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcd7bb1e5c45274af9a1dd7494d3c52b2be5e6bd8d7e49c612705fd45420b12d"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44ceac0450e648de86da8e42674f9b7077d763ea80c8ceb9d1c3e41f0f0a9951"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:97209cc91189b48e7cfe777237c04af8e7cc51eb369004e061809bcdf4e55220"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:48dd18adcf98ea9cd721a25313aef49d70d413a999d7d89df44f469edfb38a06"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e59399dda559688461762800d7fb34d9e8a6a7444fd76ec33220a926c8be1516"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d617c241c8c3ad5c4e78a08429fa49e4b04bedfc507b34b4d8dceb83b4af3588"}, + {file = "yarl-1.8.2-cp39-cp39-win32.whl", hash = "sha256:cb6d48d80a41f68de41212f3dfd1a9d9898d7841c8f7ce6696cf2fd9cb57ef83"}, + {file = "yarl-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:6604711362f2dbf7160df21c416f81fac0de6dbcf0b5445a2ef25478ecc4c778"}, + {file = "yarl-1.8.2.tar.gz", hash = "sha256:49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +lock-version = "2.0" +python-versions = "^3.10" +content-hash = "2b4115745f00ee1043d7c644879d49dc11e387ea6fd80c4d34352a3be71bea27" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..6cfbc57 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,33 @@ +[tool.poetry] +name = "operationcode-pybot" +version = "0.1.0" +description = "Slack bot for Operation Code Slack." +authors = ["Judson Stevens "] + +[tool.poetry.dependencies] +aiohttp = "^3.8.3" +APScheduler = "^3.9.1" +fastapi = "^0.88.0" +pydantic = "^1.10.2" +pyairtable = "^1.3.0" +requests = "^2.28.1" +sentry-sdk = "^1.11.1" +slack-bolt = "^1.16.0" +uvicorn = {extras = ["standard"], version = "^0.20.0"} +python = "^3.10" + +[tool.poetry.group.dev.dependencies] +black = "^22.12.0" +pyaml = "^21.10.1" +pylint = "^2.15.8" +pytest = "^7.2.0" +pytest-vcr = "^1.0.2" +flake8 = "^6.0.0" + +[build-system] +requires = ["poetry>=1.3"] +build-backend = "poetry.masonry.api" + +[flake8] +exclude = ["__pycache__", ".git"] +max-complexity = 10 \ No newline at end of file From 9806771de6df6633ed7eae3cd9e12ede56ed8af5 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 26 Dec 2022 13:17:15 -0600 Subject: [PATCH 63/69] Removing secrets --- .gitignore | 3 ++- fly.toml | 54 ------------------------------------------------------ 2 files changed, 2 insertions(+), 55 deletions(-) delete mode 100644 fly.toml diff --git a/.gitignore b/.gitignore index d3b2551..d0a90bc 100644 --- a/.gitignore +++ b/.gitignore @@ -105,4 +105,5 @@ venv.bak/ .mypy_cache/ .idea/* -env* \ No newline at end of file +env* +fly.toml \ No newline at end of file diff --git a/fly.toml b/fly.toml deleted file mode 100644 index 9e68fce..0000000 --- a/fly.toml +++ /dev/null @@ -1,54 +0,0 @@ -# fly.toml file generated for oc-pybot-staging on 2022-12-26T11:33:23-06:00 - -app = "oc-pybot-staging" -kill_signal = "SIGINT" -kill_timeout = 15 -processes = [] - -[build] - dockerfile = "./docker/Dockerfile" - build-target = "prod" - -[env] - AIRTABLE_BASE_NAME = "Pybot-Staging-Base" - AIRTABLE_BASE_ID = "appHcVtFOf2HaGQog" - BLACKS_IN_TECH_CHANNEL_NAME = "blacks-in-tech" - GREETINGS_CHANNEL_NAME = "greetings" - GENERAL_CHANNEL_NAME = "general" - LOGGING_LEVEL = "DEBUG" - MENTORS_CHANNEL_NAME = "mentors-internal" - MODERATORS_CHANNEL_NAME = "moderators" - PRIDE_CHANNEL_NAME = "operation-pride" - RUN_ENVIRONMENT = "staging" - SLACK_BOT_TOKEN="xoxb-2875898822021-3229597617521-OOTeggp3JsBEGajAWcYtFKzz" - SLACK_SIGNING_SECRET="181e66d74ca2527998432a830d4bef65" - -[experimental] - allowed_public_ports = [] - auto_rollback = true - -[[services]] - http_checks = [] - internal_port = 8080 - processes = ["app"] - protocol = "tcp" - script_checks = [] - [services.concurrency] - hard_limit = 25 - soft_limit = 20 - type = "connections" - - [[services.ports]] - force_https = true - handlers = ["http"] - port = 80 - - [[services.ports]] - handlers = ["tls", "http"] - port = 443 - - [[services.tcp_checks]] - grace_period = "1s" - interval = "15s" - restart_limit = 1 - timeout = "2s" From ec416f8b870ebebd5735217bbd0b8977198c39a8 Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 26 Dec 2022 13:19:45 -0600 Subject: [PATCH 64/69] Update build file --- build.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.sh b/build.sh index 72edb52..6113546 100644 --- a/build.sh +++ b/build.sh @@ -3,4 +3,8 @@ set -o errexit pip install --upgrade pip +pip install 'poetry==1.3.1' + +poetry config virtualenvs.create false + poetry install \ No newline at end of file From 51c299ecf5dddd10e6974316e695c102421d151f Mon Sep 17 00:00:00 2001 From: Judson Stevens Date: Mon, 26 Dec 2022 13:40:44 -0600 Subject: [PATCH 65/69] Update healthcheck endpoint --- main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index b3e103f..ff48463 100644 --- a/main.py +++ b/main.py @@ -146,6 +146,10 @@ async def base_endpoint(req: Request) -> Response: return await app_handler.handle(req) +@api.get('/healthz') +async def healthz() -> Response: + return Response(status_code=200) + @app.command("/mentor_request") async def handle_mentor_request_command( context: AsyncBoltContext, @@ -330,5 +334,6 @@ async def handle_oc_greeting_coc_click_action( "main:api", host="0.0.0.0", port=5001, - workers=1 + workers=1, + lifespan="on" ) From dd20f121b2fbd95387a45e7eb508426dba54efc5 Mon Sep 17 00:00:00 2001 From: Judson Stevens <35241250+JudsonStevens@users.noreply.github.com> Date: Sun, 9 Jul 2023 13:42:17 -0500 Subject: [PATCH 66/69] Adds ruff and first experiments with vector DB (#386) * Adds ruff and first experiments with vector DB * Updates packages * Small linting fixes * Small linting fixes * Small linting fixes * Fix bot manifest --- .github/workflows/megalinter.yml | 4 +- .gitignore | 4 +- .mega-linter.yml | 6 +- .pre-commit-config.yaml | 31 +- .pylintrc | 567 --- .yamllint.yaml | 5 +- README.md | 51 +- base_bot_manifest.yml | 1 + bot_manifest.yml | 1 + data/.DS_Store | Bin 0 -> 6148 bytes data/VA-Documents/2020-CFR-Title38-Vol-1.pdf | Bin 0 -> 4360628 bytes data/VA-Documents/2020-CFR-Title38-Vol-2.pdf | Bin 0 -> 4615132 bytes docker/Dockerfile | 10 +- docker/docker-compose.local.yml | 7 +- docker/docker-compose.weaviate.yml | 18 + docker/example.env | 21 - main.py | 262 +- modules/__init__.py | 1 + modules/airtable/__init__.py | 8 +- modules/airtable/daily_programmer_table.py | 29 +- modules/airtable/mentorship_tables.py | 134 +- modules/airtable/message_text_table.py | 26 +- modules/airtable/scheduled_message_table.py | 17 +- modules/airtable/shared_table.py | 19 +- modules/databases/__init__.py | 0 modules/databases/vector_database_config.py | 42 + modules/handlers/__init__.py | 1 + modules/handlers/channel_join_handler.py | 56 +- modules/handlers/daily_programmer.py | 71 +- modules/handlers/greeting_handler.py | 31 +- modules/handlers/mentorship_handler.py | 101 +- modules/handlers/report_handler.py | 39 +- modules/models/__init__.py | 1 + modules/models/daily_programmer_models.py | 7 +- modules/models/greeting_models.py | 30 +- modules/models/mentorship_models.py | 67 +- modules/models/message_text_models.py | 9 +- modules/models/report_models.py | 1 + modules/models/scheduled_message_models.py | 30 +- modules/models/shared_models.py | 14 +- modules/models/slack_models/__init__.py | 1 + modules/models/slack_models/action_models.py | 27 +- modules/models/slack_models/command_models.py | 4 +- modules/models/slack_models/event_models.py | 31 +- modules/models/slack_models/message_models.py | 1 + modules/models/slack_models/shared_models.py | 201 +- modules/models/slack_models/slack_models.py | 55 +- modules/models/slack_models/view_models.py | 9 +- modules/slack/__init__.py | 1 + modules/slack/blocks/__init__.py | 1 + modules/slack/blocks/announcement_blocks.py | 26 +- ...response_to_user_on_successful_report.json | 2 +- modules/slack/blocks/greeting_blocks.py | 27 +- modules/slack/blocks/mentorship_blocks.py | 115 +- modules/slack/blocks/new_join_blocks.py | 40 +- modules/slack/blocks/report_blocks.py | 62 +- modules/slack/blocks/shared_blocks.py | 33 +- modules/utils/__init__.py | 120 +- modules/utils/daily_programmer_scheduler.py | 8 +- modules/utils/message_scheduler.py | 51 +- modules/utils/one_off_scripts.py | 36 +- modules/utils/vector_delete_data.py | 16 + modules/utils/vector_ingestion.py | 68 + modules/utils/vector_search.py | 30 + poetry.lock | 3507 ++++++++++++++--- pyproject.toml | 143 +- requirements.txt | 52 - requirements_dev.txt | 75 - tests/__init__.py | 1 + tests/conftest.py | 7 +- tests/unit/__init__.py | 1 + tests/unit/test_airtable.py | 77 +- 72 files changed, 4360 insertions(+), 2190 deletions(-) delete mode 100644 .pylintrc create mode 100644 data/.DS_Store create mode 100644 data/VA-Documents/2020-CFR-Title38-Vol-1.pdf create mode 100644 data/VA-Documents/2020-CFR-Title38-Vol-2.pdf create mode 100644 docker/docker-compose.weaviate.yml delete mode 100644 docker/example.env create mode 100644 modules/databases/__init__.py create mode 100644 modules/databases/vector_database_config.py create mode 100644 modules/utils/vector_delete_data.py create mode 100644 modules/utils/vector_ingestion.py create mode 100644 modules/utils/vector_search.py delete mode 100644 requirements.txt delete mode 100644 requirements_dev.txt diff --git a/.github/workflows/megalinter.yml b/.github/workflows/megalinter.yml index bd092d3..d143737 100644 --- a/.github/workflows/megalinter.yml +++ b/.github/workflows/megalinter.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Mega Linter - uses: oxsecurity/megalinter/flavors/python@v6 + uses: oxsecurity/megalinter/flavors/python@v7 env: VALIDATE_ALL_CODEBASE: true - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index d0a90bc..7ae0dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -106,4 +106,6 @@ venv.bak/ .idea/* env* -fly.toml \ No newline at end of file +fly.toml + +.ruff_cache \ No newline at end of file diff --git a/.mega-linter.yml b/.mega-linter.yml index 1530071..714b46e 100644 --- a/.mega-linter.yml +++ b/.mega-linter.yml @@ -11,7 +11,9 @@ DISABLE_LINTERS: - SPELL_CSPELL - SPELL_PROSELINT - PYTHON_BANDIT + - PYTHON_FLAKE8 # We use MyPy + - PYTHON_PYLINT - PYTHON_PYRIGHT DISABLE_ERRORS_LINTERS: - REPOSITORY_DEVSKIM @@ -36,6 +38,6 @@ PYTHON_MYPY_CONFIG_FILE: "pyproject.toml" REPOSITORY_DEVSKIM_ARGUMENTS: ["-g", ".mypy_cache/*"] SHOW_ELAPSED_TIME: true SPELL_MISSPELL_FILTER_REGEX_EXCLUDE: '(\.automation/generated|docs/descriptors)' -YAML_YAMLLINT_FILTER_REGEX_EXCLUDE: '(templates/\.mega-linter\.yml)' +YAML_YAMLLINT_FILTER_REGEX_EXCLUDE: '(templates/\.mega-linter\.yml/tests)' YAML_PRETTIER_FILTER_REGEX_EXCLUDE: '(templates/\.mega-linter\.yml|mkdocs\.yml)' -YAML_V8R_FILTER_REGEX_EXCLUDE: '(descriptors|templates/\.mega-linter\.yml|\.codecov\.yml)' \ No newline at end of file +YAML_V8R_FILTER_REGEX_EXCLUDE: '(descriptors|templates/\.mega-linter\.yml|\.codecov\.yml)' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 24b9342..746ce0d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,34 +1,17 @@ --- repos: - repo: https://github.com/ambv/black - rev: 22.12.0 + rev: 23.3.0 hooks: - id: black language_version: python3.10 + args: [--line-length=119] - - repo: https://github.com/pycqa/isort - rev: 5.10.1 + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: "v0.0.277" hooks: - - id: isort - name: isort (python) - types: [python] - args: ["--profile", "black"] - - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 - hooks: - - id: trailing-whitespace - - id: end-of-file-fixer - - id: check-yaml - - id: debug-statements - - id: name-tests-test - - - repo: https://github.com/pre-commit/pygrep-hooks - rev: v1.9.0 - hooks: - - id: python-check-blanket-noqa - - id: python-no-log-warn - - id: python-use-type-annotations + - id: ruff-autofix + args: [--fix] - repo: local # We do not use pre-commit/mirrors-mypy, @@ -42,7 +25,7 @@ repos: entry: mypy language: python language_version: python3.10 - additional_dependencies: ["mypy==0.991"] + additional_dependencies: ["mypy==1.4.1"] types: [python] # use require_serial so that script # is only called once per commit diff --git a/.pylintrc b/.pylintrc deleted file mode 100644 index df55a77..0000000 --- a/.pylintrc +++ /dev/null @@ -1,567 +0,0 @@ -[MASTER] -# Pulled from https://www.codeac.io/documentation/pylint-configuration.html - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-whitelist= - -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore= - -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= - -ignore-paths=.*/versions/.*$, - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. -jobs=0 - -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. -limit-inference-results=100 - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# Specify a configuration file. -#rcfile= - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then re-enable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable=print-statement, - parameter-unpacking, - unpacking-in-except, - old-raise-syntax, - backtick, - long-suffix, - old-ne-operator, - old-octal-literal, - import-star-module-level, - non-ascii-bytes-literal, - raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead, - apply-builtin, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - execfile-builtin, - file-builtin, - long-builtin, - raw_input-builtin, - reduce-builtin, - standarderror-builtin, - unicode-builtin, - xrange-builtin, - coerce-method, - delslice-method, - getslice-method, - setslice-method, - no-absolute-import, - old-division, - dict-iter-method, - dict-view-method, - next-method-called, - metaclass-assignment, - indexing-exception, - raising-string, - reload-builtin, - oct-method, - hex-method, - nonzero-method, - cmp-method, - input-builtin, - round-builtin, - intern-builtin, - unichr-builtin, - map-builtin-not-iterating, - zip-builtin-not-iterating, - range-builtin-not-iterating, - filter-builtin-not-iterating, - using-cmp-argument, - eq-without-hash, - div-method, - idiv-method, - rdiv-method, - exception-message-attribute, - invalid-str-codec, - sys-max-int, - bad-python3-import, - deprecated-string-function, - deprecated-str-translate-call, - deprecated-itertools-function, - deprecated-types-field, - next-method-defined, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, - deprecated-operator-function, - deprecated-urllib-function, - xreadlines-attribute, - deprecated-sys-function, - exception-escape, - comprehension-escape, - import-error, - too-many-arguments, - import-outside-toplevel, - attribute-defined-outside-init, - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=c-extension-no-member - - -[REPORTS] - -# Python expression which should return a note less than 10 (10 is the highest -# note). You have access to the variables errors warning, statement which -# respectively contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io - - -[BASIC] - -# Naming style matching correct argument names. -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style. -#argument-rgx= - -# Naming style matching correct attribute names. -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Naming style matching correct class attribute names. -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. -#class-attribute-rgx= - -# Naming style matching correct class names. -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming- -# style. -#class-rgx= - -# Naming style matching correct constant names. -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style. -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names. -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style. -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma. -good-names=i, - j, - k, - ex, - Run, - _ - -# Include a hint for the correct naming format with invalid-name. -include-naming-hint=yes - -# Naming style matching correct inline iteration names. -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. -#inlinevar-rgx= - -# Naming style matching correct method names. -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style. -#method-rgx= - -# Naming style matching correct module names. -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style. -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty - -# Naming style matching correct variable names. -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style. -#variable-rgx= - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes. -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: none. To make it working -# install python-enchant package.. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to indicated private dictionary in -# --spelling-private-dict-file option instead of raising a message. -spelling-store-unknown-words=no - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. -ignore-none=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis. It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=250 - -# Maximum number of lines in a module. -max-module-lines=1000 - -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma, - dict-separator - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[LOGGING] - -# Format style used to check logging format string. `old` means using % -# formatting, while `new` is for `{}` formatting. -logging-format-style=new - -# Logging modules to check that the string format arguments are in logging -# function parameter format. -logging-modules=logging - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - TODO - - -[SIMILARITIES] - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[IMPORTS] - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules=optparse,tkinter.tix - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled). -ext-import-graph= - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled). -import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - - -[DESIGN] - -# Maximum number of arguments for function / method. -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in an if statement. -max-bool-expr=5 - -# Maximum number of branch for function / method body. -max-branches=12 - -# Maximum number of locals for function / method body. -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body. -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=cls - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "Exception". -overgeneral-exceptions=Exception diff --git a/.yamllint.yaml b/.yamllint.yaml index faa0b38..ea1e363 100644 --- a/.yamllint.yaml +++ b/.yamllint.yaml @@ -1,5 +1,8 @@ --- extends: default +ignore: | + tests/* + rules: - line-length: disable \ No newline at end of file + line-length: disable diff --git a/README.md b/README.md index e42eef7..822b406 100644 --- a/README.md +++ b/README.md @@ -207,13 +207,13 @@ For example, in order to work on the app's functionality on a `team_join` event, In the section which says "Subscribe to events on behalf of users", you must add the following events: -Event Name | Required OAuth Scope -------- | ----------- -member_joined_channel | channels:read or groups:read -message.channels | channels:history -message.groups | groups:history -message.im | im:history -team_join | users:read +| Event Name | Required OAuth Scope | +|-----------------------|------------------------------| +| member_joined_channel | channels:read or groups:read | +| message.channels | channels:history | +| message.groups | groups:history | +| message.im | im:history | +| team_join | users:read | #### Slash Commands @@ -228,16 +228,15 @@ listening on followed by the text _/slack/commands_. For example: You'll use the same URI for each command. Here's a table listing of currently supported commands along with some suggested configuration text: -Command | Description | Usage Hint -------- | ----------- | ---------- -/lunch | find lunch suggestions nearby | <zip code> <distance in miles> -/mentor | request mentoring | -/mentor-volunteer | offer to mentor others | -/repeat | parrot canned messages | <10000|ask|ldap|merge|firstpr|channels|resources> -/report | report something to the admins | -/roll | roll x dice with y sides | -/ticket | submit ticket to admins | (text of ticket) - +| Command | Description | Usage Hint | +|-------------------|--------------------------------|--------------------------------------| +| /lunch | find lunch suggestions nearby | <zip code> <distance in miles> | +| /mentor | request mentoring | | +| /mentor-volunteer | offer to mentor others | | +| /repeat | parrot canned messages | <10000 |ask|ldap|merge|firstpr|channels|resources> +| /report | report something to the admins | | +| /roll | roll x dice with y sides | | +| /ticket | submit ticket to admins | (text of ticket) | **👋 IMPORTANT!** @@ -261,21 +260,9 @@ is listening on followed by the text _/slack/actions_. For example: You'll also want to make sure to configure the report message action with the following parameters: -Name | Description | Callback ID ----- | ----------- | ----------- -Report Message | Report this message to admins | report_message - -## Known Configuration Settings - -This application has a number of environment variables that can be set when -launching to alter the behaviour of the application. The list below is an -incomplete description of a number of them. Please feel free to update this -list with more details via a PR: - -Name | Description | Example ----- | ----------- | ------- -SLACK_BOT_SIGNING_SECRET | The unique signing secret used by Slack for a specific app that will be validated by pybot when inspecting an inbound API request | f3b4d774b79e0fb55af624c3f376d5b4 -BOT_USER_OAUTH_ACCESS_TOKEN | The bot user specific OAuth token used to authenticate the bot when making API requests to Slack | xoxb-800506043194-810119867738-vRvgSc3rslDUgQakFbMy3wAt +| Name | Description | Callback ID | +|----------------|-------------------------------|----------------| +| Report Message | Report this message to admins | report_message | ## License This package is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). diff --git a/base_bot_manifest.yml b/base_bot_manifest.yml index 7dee965..5470dc1 100644 --- a/base_bot_manifest.yml +++ b/base_bot_manifest.yml @@ -1,3 +1,4 @@ +--- _metadata: major_version: 1 minor_version: 1 diff --git a/bot_manifest.yml b/bot_manifest.yml index fe47902..24895b8 100644 --- a/bot_manifest.yml +++ b/bot_manifest.yml @@ -1,3 +1,4 @@ +--- _metadata: major_version: 1 minor_version: 1 diff --git a/data/.DS_Store b/data/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d2cb4cb13f36d244bd54aa07585dfd1ac765fc85 GIT binary patch literal 6148 zcmeHK!A`6jP(!-{R{0x=4e#eJ36SB<^ExPT$ZDw-D+9Z>b3E>;H+35S8d?Q@fm&8APT&oV zxfQ;6{U}t?J;qG(CwYv_05iZ0EG`4~#B+*^TOwD+3@`(~WPr{GiAv~NObzOz0|)wj zr1cyj3EFg*Ae0tei>X0eK@lbu(WDA{#SkVP{nEy{7E^;J9faN)pJR6x_J$(#?&y~~ z9E59-M`nN-m}VerrX}kCXY=p>(@8vI2AF|`VnF1YUbBHE+1@%+9Q9g>dW%XzajC(t k6f|@z##m~_8>m{)FUdf3Ev5$1gTg-ong$-2fj?#76Zdyc>i_@% literal 0 HcmV?d00001 diff --git a/data/VA-Documents/2020-CFR-Title38-Vol-1.pdf b/data/VA-Documents/2020-CFR-Title38-Vol-1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6fe47fdf268c6a97702a00a7a4bfc7c54cd6a16c GIT binary patch literal 4360628 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%0A8j+CsIR4m}mO3^euv18_@Mz~za(>kxnUq|v} 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ÅnRb=luby8f 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

QYllXMvy}B6~Ds;fJj$z)tDMOpYxKT3r zrSq_>u4~OL)V}bqyga^NHYj+W0%tF#sb<;e)1gTN!OSNwkR{b7r3d^5$u5{h9$h;d zu55;t%=pyW_p{~HVU41*w)?s?SypN!W(mqF6hnou_mPNTAj`2&@Crv+r*&dmO(`L% z*#lh+)Jm8I;JLoM`PH({-B)~}w-udJ6Zp82W}2nGOMju9Q)CxD6P{Zkiv!5|_YO_o z6b}BCD|w0R*q#_`2tdeBEj2j+f`R&qyV#a0B|Oq3p$N;+Ce1qz+K77Vfx@VV*Xwk= zM)w1vvpXv7j_^)Foh6VhEu)S801tr-wWvf-AiSum=WODba?rh@s0qlBhG1Yr-Iw~a z0*pP9BZb2g9!{>3OSpZF--g!u+_Uxz$L$j`Yj6}^L*GE^|ak)wpET!jO|vS?+{NTeFxnY z&(;34g~^bV47Z;cS{SN>t6ofA@2D(=TU#*4&kw4sPX|*?k4sx5B0{b$m%o?Sl&fwC zM5d-f!pTFxFaRvL{o&lGjRMR~WB_;>0xS~sEe*XJlIE7HZmtY-Brc+5q|k^;n!(q{ z$0Z~tZZR8+^XW*L>96&mmx4ogB}j9(zB6TL@*~`qLLoK_I?yxlsUh13Ojmu{1Cs;Y zB6H$gO;`=#qd7~glB5}o65JJ2*8G+sH)VMGO8hdsp}Fo;Z=D$9K`Bg5we5&6=194> z5*DIn0Ib33dIg?>Hx<%_1P30&2T-V;pYu^hKBO;&2*HI zNx7{{cn1u*(MegqKA$0zHg;_2DOl-r_t^z(LI|)DCMtnF$FwNa1?$R2mB_@Vr=q2e zgGeWe&aC|94bH4B+7<#>v#Bb6md8Leo`vvE2gtChT@76K{`SyBpPoSH^Br#YrD2>kJ=hNX&3GM@;d@MqRk}^=bqA?kjjk7TO%QJu#eMA!NZ@g50bHsW4JY*+k6~#hn zLPFd7fz}FW5blCZK*d9XUSboJ*5~S$AcRi-Cs^&N9#pC}ulyl$7nSm6t?kC-m>zl6yTAw+xtV&W}^+PPSy{b=0=KPvllA$b4WeWSsHak${&0 zT`yL^r%X_sAoJFup0+f7I+mqIJ)8^4--pB_jX}#&^{0nkreu+%Vv0g!NQ)y5ND)bO zI;L|M$(zu^agBTee6efX;IyQKk)cI4o-WU8SC$VDw#WvtL}v00@nGH|*$r)JIT=!S;P zk|%3Dm)SnvQ^`P_id2A>9dnziA!sYeswgaUkj_KOD3{5w2fazvr*KbyKVfl)7l7SC z^dW98_eqFDNkA$0A%V&WlwtgQ9|1IbO0L9LCS!Gty~aMUiQ=7>)w0P~GW*O>7wrpH z?Yh6;FWSi4N$9h6wdJ&@s;f)q&+NMLBIf;7!o~kkNkwnDeD50mz3agNSWdOVD?^*9 z9d(iy5lQ1@JS&`5+FBlMUEN@G&i*ueE?QZ+<~~j_lCZpD!Qd>9EWf|F?eu_YswtD? zb!+Dwrd7gBPmd`1i>Uk_QHm#dxtj&Rpe@kwv;ZKkW0YjB(gy|(Ehz5Fkj32Lzyf^> zhUofrA=aosz#9^rSI!2kCFtyO$c9N$!J?e3z$-+`2k)2L4loX#t4E(ElUH*|s*4SL zalN2n`|DHH>CXYQUf+r7$@4KmOZ$5VX>D2cDEFR(%rJrh;j`H)KNUsuT6tCJG7G$i zVes;(4Qj@`qL6spMll>Wpk%MWUr4tT*Pi!_c%;JsWGzLPt)dl$#k<~?(5q-Zq&)L>k!`ahO zFkXd0*ewV&(`ypt1ITTz>z*=O(b?)Ie0BHz17A8SK6Wurhe9TbpWAyxpqO4 zKTY31lWytn64e64EyhdPEQY4hu9?KRdWeA17Nl%zC)_h1VUY=86WNukXe%n|8Ll6h zSmE^Xa2|J{(fXz`_Tqz#BOMv<_K7aZ1k;2|hB z)}yH3QnOvZ(;4LZ_=5Zwlntx1>7BlCPl~2Ufk|v@*^yL>F(Bgx$(V{x9IR| zm+;W=S)CG@!2dci@v;q)MY~{&XycSs9Or_t{wn?53M;YxW3;*ATGq8ye7zKoSO3a^ z6exGc>emPO+Lg?@A3XcXH9%L6$LrvW&&B}Xe=uz-s$rBMIBzI z_SA&z&g%>ZW3KvUuYjItJWt6pU&}S0|CDvap4Of@eI6M9{Bv{O=@g3QO2A%Ex5w-R z%?7gU=aeqYMB_JVB9T^f@i$=|#>{?VaUwWb|P2KPnCHv!A z`<9_NV3a=Tg%F2S5hfpgRoMw~10f@!;tLz?t=N+aw8wD0 zk4Rb_BP>cyf*Haxsc?fK1EE`4tJvU_1i29%Oq%dq`lm27#(9qXhK7QIhK5MudHF_p zI!5T&J(YyH$6Nw6MO{5v2cHDrQ{^xA)S_wK@Upo8wV=X+-ivDEbEdh4ty6S;O~@&C zP_7XoM)4>>$z&F-n|QG&3~NW{4uAXVii<<{X6}jX^%yu2TsrGQI_+}wybx)h(1H8$ z8Y2&0$3gc|3=wC$Acc6EK8Hi)H|PNNc~7Et9(2tv`stMvwGI|=o|CDkGj-o%Ivfrk z@fV1vzcMFBl7qc`ilQ^0Zdquqo+=tzfP|N9qIU3sr8k6rn&VZo;NHZKe>PoMq;;}ch|Ak(@JfH zORSM;(ej-WgE`(oo`SPt#2XWt0Ei>O2R?(Z$pv_uuk4|H4kA(mx$l#XCnhWg0yRW$ z0&W|K*8df)uOr7>Tq;WIf-CaV!xbpAhC&{dk}QbUf4XD|czA@bC2M*AgBAO-xL08q zU*kb5l0#4@Q9D(*SJg!Mj?DS`Hh+ksv9y&A2Vkjm*}t#=LA{BZxu{7=T^mRO*emop zG;K8Q(#jnfl^g6L7fJ=+gR5Y*;q+=Oa;5~+Qi z7lyrhRNX0&#*7M0rA}SixRjpd#pR*XXC6(2^i~QL@o`Bv;5^Yy0m;H+Nc8ztgsnhdRz772Q-Ktt`)pgD6cFo_PgD?jVT2*NZ8hx390ypx=m4Wra(n$-1Zcn+ z6u5$PctTztoMY}0EHFu~or_B%14QWPTuJ#b8t2Lyw`OJ_JQ!O8Zl&)!mf&fjcwFV; zXyhTV7F!3SVFTYooQXXZe4FBmOD@$G)A(`9G7nn$>YAqjsk}?=;R_iGNhJm>VLO0zrw-0wB)270Ds$an=jr)x%;Fdl4gE%ICkw+;)yXdGW4UWqIJ-x zlf4p`YiN#6Nu@aDnGt5pAoVhWo&DM;+z13A0|X{JiJt1dFY2ca^$lDDz<$57i- z(i&N93H&G;(`yH?bQWL(E;A~-aO*v;T>2Efbm8^Ye$a=7-F0=i9kDUI-o$#SmJ121 z^7U#saIs;~@zsSyKwi`FBlyv$RmGc)n9p09h~+Tf33~kfe?Zwy%>`g5z{jmtCw3r znkw4T%PVSVTl7y<79E2=d0)?BV(A?Fl(g3r%g(eeushhNf4WVUR(`CAo_Z*93aV^<@0A{2(q|0DHzT*bZLI`xqo*-k}@8tZdjvAnj z<7h$j{u{Iw*W}khp&OM!l-RZ0%I{`TXUJ%EP!WmH%7z5*qsbTR%-74B1s*$qKCQ$f zJJV@ip!2U3h(4L}4c7sNLb#^s#+>Ujgm1r^Sch+UKjLmDO()vO_$RR;FXkAibTAvh1D#Hp@m9D9aR$7CN# z6aVOkZ+$dQ4jUEI(ugHwgz6BuxXi*%GkmP+_Z6DjhsciQIs1=6y_2S9US7~C9gWas z1zS4Jj3y)$Xih6T)j@oi)1&SOu_h7zx&@ZilsfXIoC)pUNLWPMpqEk?cK-vB7kaM-U{Q7@UgwF!m0|{_Cy@2=rD;|!#Li?XTw-bAh*`F8!*|&X=|H5^6jvqjo(la-LVrv^Lx_MhiM0ck2mI2fyzai%< z7~kP830}EhJ?@YAVO9LnAg%?W!-{=*q|{VT;1+=?gh;1qiZNuOgsvDG$5i1joZ`JemiC?4rtg) z9NuaU$RxcxTEXA==)Z9L0m`GemIb%*s8cFS5|aLmU}jdux;*0z{DPVHYZlsvSdIw| zFm|Mkddu9a47Qoew<;pbii;nugbc@pgwcMFXxYB7AD4&O4BW~zPRq; z5|XQQPd-c?>dGc$myc>nYuZ7i|OoP829|vA&~wk-)}%vv-Ea$gIblsBTLU(t-f>z9LYJbhIfDmN#J!vj*w z*toIMy9R z?kLbmiP!qYk5$VkYu$s%CrZUnI2lA^ z%tE#vBHCE&SybM63+vkE-7Rm_P-~8|WlBl{(R5-xBIB?k1u8}BQ=9V3QghN?tU^l* zd1${`9K5Rn>1n^^4X0Y@#fDx=Zr7fUP#D+3pxgR{U;+UG6qAw)g8FzUuSksDAXdt+ zR;h6`#(6{}6o}R8gA!iW#AQ_%BtIQ?EyuE?Tl1CEw8%?Ke-R5-2 z*Jj$>EOu+0%-#)6ENE*(*>7#vg6gN}$p5))0zz)(M5kF*pJVCDSVFxoQY6?F^5cg&B;SV-l3U&~#` zKcB5cNwK_If01$#MO`g~i&NWZ>}N^;iL9NIUn{f>VNToXq#(GevmcsloF$1_iizKp z09eZy(emrJWLrvTle6}_z$kmExdfuj(Y|B6V|w4z;^DG=dYyCTY7;ixZ4`zTW4io3 zSFBY05Ye9?U_fbbaWO!mUcFw>nfstCXqPM|>GTa2$N5XaSkE3;A&-r2*Bj5B4&T4G zeL9|3&QIHxn?20+u2()wB=$77RzuaD)T`C&x0Z_2P~GhNE>ftOTO4#k8*I)^4iV#7A#gb2rMG>Dd_fTAKrI~4 ztAG0&+Hlmo@%XtVJ(aKQfwyu3&eH~h9q;I1Mh|l9P%RRgj%6Tw!1^;;=Qs0vB-bg0 zTt_9#3L9?eb8tky?(aD^mXA|BSOlla_wA1ZrwW~5+BLUUbphXfaP9JAe=Y05b1P(z zYQDc^Aip8nSbW8NKqMBi*IDO9D9CPqk$8eT$!}Hwsr~`J3dzwYaITRp;Z3C0(k_F`f}?rrB}@^UBK=_UQs?yMBo z)~963K*d~-)r!evo9p0oJbJ0B$X4$|==>(Q2eh z6}7v_X`xZ6?NGK1j0PV>wHIvC^?-DGgswzc^dw{)6vdi@#~&W(TOC`I#svK$3Pxmd zb#=3h^v{)xwRR*XQkk-VPYwfS_>)k7(8ku4{hJ`;wxYcsQC|Uj%-E9{eAXUJGB}$B z58BGvqehp^sDh*$C&s8@ZuF$s7#Xs?0%C|)V-NvuD9gmUpasNV(Y|r>zq3*-ZttLe zJ0kmyo@;|lN&+@7r8{^_bL4;G`Nqr8ZoI^BFJX2=LH8sPo;>n-7Aom0CLKbkkl3wQ zewSMExeh+h3?FdMf#YDgyuH&lV6*RAbC90}+P3+g^nOY=R zayylJk8WQ?$*gr~ZeZgK-H>__VgrKfK?)l-$ zZV{GRuBKL%IWp5Igiua%Frt8n4xw%ss+)WGmyc<0Y$zeD?KegYwW+hTblI%JH~f1|UQK!s6ED;UsOsHL&1CgzBBOsza6u|uz-)zbLu5^M$0eBx6<*@lBQEEb!h z`sITMv|^k`8w=QT;=?Y)Uo*ym-e|qvs_iETLmS6~ zFauM>_=5V_V?#ZLtLKZzccrT2L@OZ}9kM#Go5=?;BSf^mf&J~PWkuu|zZl;;90%qC z5G<0zSZWkKg>-6qHH-D@bU;NG!0ucA@_A4gdU3I-iWul$(umfm*k7_R>Ic-YvCLmP z60HG0@U*l{qGFleD<$r?hF&ij85_@gc)id&6#;z-dSECsRziK`YDx;A?S3N0>jl~c zsRj73TZlFeDvD=Eqg88*XsCRFF_2Uyx5RC(aCjST3GEX+p+VG{@gs~fhLM{g>gEut z&Z5j+GP?15;QF&8WP`_i=un@|&YJkF;cvo-OoIlT);aE=ds=!YAi+Gp~o`|}M7_)g8ZDMVKioX7&CCTtt? zaAXQLvJ0Dg9Gl|EZb^%$dgZJMG&)y+^3YbVFjH#(0>eR-%KMrG9m>>iCywHH&h1ts za7}L+VSVMbrrrTVv)m>5df?8|#5S5;)-x7SH!7RU2lZgHZ9H*>@&T~YjvlS*x3^``!%2 z-!RyAOz0@LTAqwnr<^+4+rA2cbJZ_7JzVPy2hWre~*zKAFm`11fL zC&&j!Y~JAOBy>y#;U{y^<~*GdpIc*p8W*nVFf{F*C=^95XX>%#1NJQ*6h~ z%y?htobNl?y}S4BJyn0zUu9V{E$G&$CG|-2KD~HFTe<#BiQ`tZ+Ks;~>yd<;+Pi(3 zb3H+0>H`8(Mdu>VNpL7y-GKzm>$jfk8e^dOvqQpBvD}CR#|fP1-jxy&`-Rr)1D$JC#+W#00~=8lYE z@7rWPo+#cZXvdZ7NDySKlvKnttTrY2TjP>vM)t1~L2;qM^lho`YwA&%ZJr;r<=RuB zI0p*25-;x@@DAB;mzS4NROI;kbs*|$2CyJ|e`wtI5oZMBNx%W-T@@TjcbNMMg%VA0 zHs(*8JUHF~r5U|40O`R^!#aNyAHE+luO*uQfjLqGd~-POE4(@7VcF9DuwZkNiOCZw z>G_@Ym=C^h>(oc}J&7hl9k?hV3J+n#RRi|PRm+;yr;veC@~?Iuofi68Lp7XZlOq%C z1P%Eu@+rk9nIQHZa6mo^G}u1b@^WZ0YISWDH*uva6B$A^FepSBx7gx5t0N^u__o3n zeeeD@a!R@JdPTtCcdRAcFy+x6H_Xb)GRKUWNEpPlhMmjZM%W((@IUiJpGXyB#?6-o zmOHnCXX(O-V6sf*iuql%V(5c=3^L7*ZJhy+&JPudumy$~V{?6K$Cr)mZvN%%ed1-2 z5_us4@Si+~`eH4@ovpxLl+7+ISZDA97diZmtj>vRZz3h?g+j46wb)3;MW)f#p++3l_iYHs(2hsIvwv?+YCA)1(S64reLNh+QG5=7jCrduIxN!^!mF*%e zxq_-K>SC=U$}kZA-rETx8Fex4cf2Adb%#5oNBA*cTULY!%CadbjnZs$;R-VUlXOe2 z_zVH#WfH{|>@x>*p2GMhG=1~(u9?k2wKHM{cLfXfa@8@Ko$+(ns?gA^6qlnRhIcQn z$(X)>P9-1j6#hOGXw;-NV#!nmO_i~#0qVEG^r|20YqE|Ltv2A5k3mV`EiXU6mJbMH z`xLt8rB05R-$;_{=uYBdq*A7lb;Xj-*i%}l*h6x3&8tQq_o>xW(4=i#GTZC$5bfXy z7zJ;)5-q(>99B-#T&{~Vdj%EDGK4I*Sb!zef*X!J5>i8GD5AcevdD%<`o?F02+N6P z&z%YHed!Mi;ED{1R-LC1+BpKBWj~wf4<=HJmL^hWx>S6euJfhvkMI+zf&KZ7j2#V{ z(^KD*Zt^5*Y-+Dy*|Jz(l`*Dahxv&@XFx(o8|0=hTYhKTP%BiR`iyvw=zQOU6o^N_ z=d+P8#Zwz198j<>&BIU622y?+TmftUtV#XNq3&NBC@hnv8>CR%SMrq=^h?ExvkMkC zT!^CW-+Jdlub~ZN^V27`=)=N=-CE^xBv)sQ9h#P7aaU7#^hBo=O{k=lNQg#>m@KZylMvkJi62)9bLFMHf7Wm9I~I{ z9zk)g;`&!Mt?wDbM!OajO%`(yEMPc7Yln}QcC9dv!8sN8n8{JjX+zO`&DYwd`0?eS zHpd|XqM55cKoSCkw_xr5h{)yk&KQJ?oiWQB4l4FdgxZwwuF5%yR5rV^A%xkFNLEd- z!k6cIISOV1Zu(*$pU}b7Cfh60w*?_;RTtenq-heFXvo64jr6MMFrkVka#%xMg(pf$ zeaXs_xy8a}C=FaI)vcROJw3b>d(r85mP;m1%$JAb%_1hJr?x?EvB#4`E_3381c%(q z%JW0u!>Bi+%}srq1psdHq&JXZx6L!(61((^5vF>bB@@0cir3bD8vfj7;pk4eHny&4 z0W~mXuukvr7sHZCtEUl_5j){s-So57XJl%Z{En=|3Yt{}z%C5(7COg8$0#f3UF1aW zctbUFdMfMW<{5vd+m`kr4SJ>%a$Wi=bmnM>z#|w?J{&m-Z5+ATcteYZ3LXiH#tSE; zT~XI~JtG(Ay$V{te#s9czloXJG-n3jb0`loPe>Thh+IP(&p95_)Vl?>huMy1xXPQp zu-Nywh~69DtjS-nTOMMAvrhq=b(oz0!d;Z?>OSLs_!U|tc5=7l*$8Zn^o)gA`Kfro z0bJi`jQ^a>$a#76Wbv#D|IH+|*lFHUQC!`xfPudvF&y(6Ej;zZ$2gB{eScjl5yc%$ zTpC3T=1V0v5`;V9!l*>4%Cm0MuJDq*#g95tU)h1qL0vgxPb9y-0xfz$P5JHdany

F5ug@k^S`N{cM>xaIrC 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

0VkAZt6QqwSd(1Po2uF{yc3&wfg;xzCZ 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⋘>LEzE6(r@_ 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

    @g6xPEw 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 z⪼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%0D#;Su@FI{rCY$B_Z(cXmA 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�XfA+$3#R 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

    *H8E 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%0DNPv9;k4#?^}R~WiW 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%0AdT4xylTu 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

    D%$PZo_&XP0a0IwveEC{THA*Dm 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%0D$#m&(3cv@sDZ@u^?bk8Wdy*;kAldY~f@EJr= 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

    kxS#`UmX0^ozCJnVMZJP-`kHrR6D zch&!J;z69`taCQ!@Lv?1sB_FU(4)b^%xS3a6_^%EF#}HFJi`an$D`F`BJ0;Gu5JXh zWNJn@0V_8Y0~HMJ%Dhe|*_*VNzUp{pl9bARvdyj1dg3@#Ur%>s_(ue0T^m1MPU!ksr5|YY^s(hlC@BfLaMWXHQg(J< zQ)A#5qbboTHbQPlYaNPnS+y!0GATR)u;_ ziXf#^diPDtRSZ;!X8(BcV&4CYbCoZmMZ2%8 zDBZ-M2FjE6OrsAAR+LOl0jEp7(owIx${74eoC+V~GB)!%Rn2+~4~sWWmcY<(_R$g_$c#B1X*gb`|xRUv2eoD0136 z&$Y>1sq`scTEQJ;3Qk;L*88VrSv##PsU1-j0wwK4?8bwf_d++U%)@4*c&UD-4<}jE%EIH>RET(|ct< z!qfM-P{fXUIh^Q}y&u}4HmskI7>tVe&7GwxzMP$xR(PSUacs;uyl>sr%|YG!CMOmq zM!R_adr{?EWMzA7Z>As?~j9HQpz%5z=iQ33DI-Jo!xC7Cx2w^8Ox&@ENv& zmM)u`OOGjC(%!cPCaiXo?OVH~HN^0OuXk|umCb?c)_vcw z`v^)b4*CljizfFt9Wwv49k~=VFg4_jI4-t0x95$lU5efqls9w~h9HX_evWt6{SF;V z1S$Gz5P}9eG~AFsBx>pvNI)k~gJDFI))Nf>VH!!|?K)?gvv}I^N2De?;xv$sj>eOj z?o7w3K(s1T+@J>MPzCSQ+t$$T#|pa~4C|zfYpev{Vd1bZrY>KaDt#+h{*blDp*l-eXHc9M^+{7Lx)3SCXWu_%7@AKQ$N0hz|ahzglquy=+{Snjc6mwXQ?4DtxpjLPa!Qt2kU9J6&!L76_WxrCtimjP%2FRa7o90`-|8bJJfe2@B*qSUd4nSfLlt zXP2SSMhbWPE#jStk)`@Q`=O!Y*z4DAuiM^*hV_s1U+8MAdr^^H6;sxfGW$xPJpG|y zOZ)kzfeXG94F3tt@hN&R)!1X$&;3Z8N5%LLWOdE}3528#QjOGvw_FVA!tiC}jObt@ z159qFsr%}^CWahMZxe`8u$7DU} zHpbnb4!Pa)Ynb_Zdu z%~9`wF&l~__<|pd)rgrhH%1fszlEzF=1LQ-!zq6lYy5JL;)^=fefkZj+VX z9w6*8qRqAfY?5dyWNXy}wRY7TSh!+|&iW6z2eM71m(?mV+%&F}2eA*V>Jw5O(Kd0+ zxMCI_INMzpmik@LH#bWgGazg;-UJ$7NM|)`Z*la$dSLoGtNmGAw?nT0hgt)39&; zmekDSa=KDeXj{nneU<^*@|cADN=mh7=kxUW#vx2$)gep5dsAabMd-_|O-^WJ=&(2Pn`0(PoTO8Md1_F))?%X(re2L5RWZdm zsuZV%0rXjmEbb;!UGjeCW z^&CzVgA&ViY}=W)E?3b8^OdEILD@e_MlEhZc73e1|9#&#C!>G)hQ~jihbf74wN|FU zmy%W>GUDoxz;d?i7D=UNs02%nCOqM(-`|`U&En^x6hJsCZXqq<_r;67088C!qvYzVaFhmR{simQV5OrV;dt8Hs zJfM?m1(&Ag&uzr4Vb80z2O*6Qnd6*e{JN{*c=t_@d(Dw$kq$FcoB~$gez?-Cu5XZ4Nds-B}1;`2ki{a3)2!q!mic&69^G!pv6s8))LXo2^d z(6IO!o*+Q)E5ZEZMYS~nkkci(ks2!y7_>p0zX^P#?(8C4J7nrr!5RiHErq<1Ef zSq}6G=#|SbGGlDk(9AWCCZjpjnHD851r%q5KO^!rELe~fXkrHf=28fBQdv#M2lzW4 z4p_ki8a^U@2!{od9)T}G13lJgz<>KDst*UM6%!Qp`QFpKr@txcxmn6g*QWlz_Bq{3 zN1YRR*l!Y2cTPC!Vxjsh39vub7oSR0i;x5YdK*DP|2q%JR8BNq*hEn%`=y^FplY2j z-QWPR9odN3A>GOSHC)l*>cCXN(I$hG4QZksp%!V-I3VMA1kk?x`jVX2F`iZ0jeX|R z-i?P8O-Vm>(@naAW3v9(1^%A3#qx=?!KOM+xBekREA~6)UHNgZ(eY+j8g!K1xSF=1 zrSKA&LE{hg%?jtLYxqr!KZDs_=~)P_Hm9ZVe3_*xZDzqdJzn@&c+tqM%Oh3UvyPtl zVY^*jy`fE%A1R=EA!o(g3t2APR7_fJkosWs1L_4YSOV~qz=`5T15diCL%R=MwDP#J zGFn$czMsv&Bx^`TDB2rBe%F-={?olJ%0?T7MlS;}YgIK^@MEk91sYuWu5A&ttF`EBgUZ^3HXgS zS)d0hxb}w5`q5B}+hqoA%LR*Ov!iWv@k1T#|P zL|2Dxg1K~!OV@kL=-NL~h8dve;kblFDpn}+d9|?%5nDQfRbV?CPBL5h~C1yW9>SX*_^e*Sb}{{v_Buw&RtP}lz?Cd4 zNwOy;?x%Rv-CX(8d@>w+55y9XIJ1f441&Bpnsx2Aefbmo1wr{ri=_J@t%IWHKPDK8 zx=eHM_=#Gn)pst?RYE)F(%|tLbtZ>JGq`A>HIv49^*4qu^YpZxEO(O*)+J1qSyk*q zSr4O+V5uS@VZaD>Ke!~kbCOzKK$RT5@@TQ)tJznuFX>B^YUTwZik!1sB0r5LH}`*< z>~HoeC}c;-wj)KiekzK56tc4|#q;Iv<2lO5UKckHzkdDC%2H4Fe94}Ho1G}J*Acjh zs+-n-*TKaY4i5O>P3OKWhE@NluwEhSCd ze!X8!z(3W#`-e&_lJ3>^Wb8U4HtQPwRGVFLUl7jG0}Q?&SJD?!_@3V>xI@(?Os${I z=L|cvpa0wTT~eS?k%u`~nsB(t(`RjK=%b3{VIxoHKn$TI)jL9k`fe@VU(N{ix%jr@ z0d$)UVypL`-=k(aY4MoJ=AAzG#^8jOlb)GnSiB4;9Mf*`+9W3E1tcr#c_$4=B)KxvUwjtme#-?3UHi(4u+?%B=qSOMDiaGR9jOZZ7ND+pA^Cgep8GIE^crSJH zD&$@GdVV>dX*~Nuh8|JbNK+*&SEe9$BV5uX$X23#9iTjcF%gVnaC95eprn{la4SNl zgfBS^7(_6@cCaTinBqwiKg45v9#Jd8B@HtaE~R1wAX+rgG!=ltfaObuRZCH5fVJA_ zZg^4BUilUet({$sDK+&q5OOE)LFze&|NYau7hWt5mP!9HU%jotvuLPvbJ@vHu#rLe z>2)iN@vt9-@KLp|GfY;W3NoxEw65zsZ%xj6_z-`A(*fzu3}1J%%7X7Ak0%e^>e)7a zJ94BA=JeTPAKK}r7loXqRI26Ph$(S6v!V==q&RVC)9?R^@14#ao^+I(YkEK?F=z9HPjvXJO|7$<24lqsuUBIMN4(PdOE4A9ZHV4fvm}X4q5<*2IhLcvZOB`+)$u5JG{!1HF`5?Ir58rOyCZS%Y~q-6 ze&6nAGDZ5o23YY; zdFcD;V!03Nqy5A(WCkCjvO z=scYICj_?`iSnFa4Zmb@R5g%IIA$?3V#6O15v`pqo5P zI&yeuOX2c6JIAYco&eq`fy;VO?h4&966R3IC5_I*SYc?tC*lyFBTI&QJw$zg$5N1h%YWGia&xU(>j zlDkN{L=I|1JeUmPAsc^{> zGO*{6{Q&B9&^RiVZbw!Os%^qAAcU$iS0~`mqKC<0HW~S@n zz0gt%90S3Sm`pBMm7C3U*b84LmRPODK(z%)%a^)0@Kw1%C8|WQ7f=Xgp+BkIencLf zILYP4k)o*uRM#c&vq<3P*eCNCWP3@r+rz~caW8v>9_fih?7c(F^@_YM-yy1;T1x%4 zIYuljcMT4lCa8?_ABF#2b_LUR2`wbR2jVeZ3-wKIwEm?rWy9!rTU%C9vG1JC0oIS+ zkE2E8c+&Ko*&coO7FeAe$mXnJ>q(YeKe&&IK8oNhl7vo%lajP*hBL-9#AEJSDi#SM z3!8xnQ=oZru_mzP04(|F4oj%PZ%s*Ot1S z*1+UunY2e6GgS2SPQK#Zp*3$ISP{AjNBEh17b)VD8r#uco@6=*Ee<9G(=N8=Ekrpr z;K5=hNDB)d(H_p10(Y!ePNtXEfqYsq>)zxFZfoM72D&q8M7VMU#zfPz1PPLHq?RcP zCR>NIj$r0e{?XZ2Y53yhk_$1Oog=B3%o73cw0fzbd%`nV(t8&Lc(BEiPd7CSO!}^aEdhoYp>e zFX5Z}ee2$rl{y7s4n-GEoWu;5D+hsV4s96-t zVV5!h9nzYpq%Y4$?C>uLs)@k7bzGM?xg0*8t}??K;53q6a1C0BPK^AvHRM3-Z1oKA zuKLE1^WD{xq+xZORhtUywZfz*AVA4&ke7`h9od!NZT?68&1-xGZB85Q!U}dAo zfs2ioY4xU#@Bugs*;KX$mAC%qFWi8pyaMY5`$mnh5ND$}MgwQ^@e8b7HB#W|!TW|@ z4OBFMplgpaWd?=d3^D~CTlf!WS}DWN4E30TK$k9D`s7P%24srleoub)v~QW~B5`oW{)j(+zS8Rlc6AWI-*u)s_e+%f@BmGJzz!i>{=mx#0q5xoBYcL^bjx*qO&O4mTGmNDn~v}4?YuU5&Aj*qO*rVS2la0%zcul^v< zjL05xrd==GSGk;1%dh_kJ z3>XSLZ)=Nmm_6LPHc8jb8B;hv%8GXP$6Im6=D*yzzii|t!7S*kK<$%Wy&7%e7?Bq6 zQ9#G4IkyGGJ`)tcEGXs>pKuB18K+iVWw_U(MG{aDG*B?zmVz11*6_nZz>z~18J5@*bvA%l$%Y`)gK}d}WGWvOhb#x)PWQZR_KHV$K)0IE zg;^Z90j8tkS1|~m!%i+YPKdlhIEE&wc6i$atPLNWZ65j7UgEKhx!Z0BjAsmvo>)0Pe$NNupw`ECV>#2U8EZ{rcU*G}6C9G3 zHE$j}%5eC&uea(!y8oRL1|?!l!j$I~L5OvJD{37(2tOvk_1Q=w-2Sk^=#zs4%%f_- zluy;*Vt<0?h&Jo`D+pN)#?>cm-uWC|G2!=iemdHB?Do)j=oDnv@9#_RM*AskOQh2J z7pzzhCVxprzTo(ku#3paQcs<8Tld3TR!oo@qDXC|FGRFr=XlO&!g%t@E^7dYNy+wu z$ezyB4u>o`IemO*!pR3!GGiL0ovhnCF6U+Iu$&l!1{&OSkodFc-6j^0Y50+u5R7tw zeJRjE9buY?oa#UAdThv-g#RVD4zV7@)2geq;@cZS9B|uGV9sIr&vrKtw#450Oxo^a zA#Me$09U{c9VtvFh|N#n5CD$f9ygA)h(IT10HnfSYO+2QkxvV*0F^Km0%Eaaf=B10 zfpxQ}P7PIgv!Y^{Tu z4dUFmUq1((56H=xBmP%5t7yGQphZlo@_Bu7d}w5BbG)%OWK-Kd2?aZ@2zFALn0$q7 zD-Nj`BV@(TzU0DzVYa?vYoSv~Crubd7CqW}2)eL?(gLpYILP+vIC^6~p51iXz~set z@KK1V(31kenv){}a(>@`f5AW^z37srMw6AJLuF%K4P(uP*Z*qXFt=>TR_Q`)iO*0M z*;<4NBfh~1XplCrg=9O=Os_uNtBOHg_q|nKe~nMo4(N*Oe{z`YzZ3c(1Pn|H0-Hg4 z^)Ov(K~0dq>*you0i5nIy4CChb+(B%uzUCP-oAiQcZ0T8{~PEC$_0t62Gj(dp%jmf zl{e7%)Cu2z67I;4@}v;EqNX^z@ioUej$ zAB{-=NK`C%y;yO2UH`Pwu1%Hqm9ox9qiy43rH9W-&o-Csu%u+AkLC1SYbR=i_YDuY z7*qy{jA6L%+(mV}Bz9-emVq&8n2*NI^MJ8`HlozONpJ+DQ8N;l@jq&%@&|*q`&71W2oRvPB#(Kg--SQxb?YhQkR;hMdA^rak9Qck=k96NGpiFsU zyl67okZ<+o9P3OfA8eAhCYCN5ah?JWkQj-gCW0H*GfBDd?g=XJy!KSVp7oWwc?)Ti ziV;~XW&NpNVlaQu7d7DQkU37Oge;iX)IW&(86man13mi+lU+?Ql~SpU>y{}Rj#X*v zWytj&cRYDNNix?#5bkFVj*vVBP$BpqT0Y21lr_iWm#ne{@!pEF`p%OaZv~ z=Iht3FE^KzMZVgX^1j^Q_07hS{^p+Xqx(+Wmr4huf48I>R{o%|=xXZ^PTw8vzn1j+ z^V(1n3J^Jd#_~=fTNKd@dZ<~pEnajXn@vx)DG=gjv1gYMoag5&HfC~e&^lE&e^*+R zn58H^M$IDpw;XvquYX;L&-lqtpL+d0xO|}9`z6k2R*O`0`YQoTHn@Rb*X;V2-?OHu zQr2bvybu9xFd4&rgraFy()`PMe*B`j<-B|KX1!Oi>7>F z{Pw5p?D5Z_j$A=iQ?M7FjY$f2`6Ma8*d2ApCs&x&%!3jcp3)%b%jx18-COEmg-PM@K(35Bpf5sFWtY8Aw$YbUH>kXDV!WM!T z0;I;5qt4C^Pf9><@ghVGcsI>~rDq>+Tngog7cUobuixZyoBkmMK0dYNHTjAf*2gA?%>VouWJLr}?w9>kiK2{OnQt zbyRlS_{hk~zPb{AXJcH^Xu=fbvBKAsFSQFM({9NE6S~R)Wj%&S4+$1IV&OW}4vfXL zANJgJ14Sk+2|e$ut+zZ&BO0R%qPf&n4b*eBu!FG3xgJep$N5|cN9K*~^C%5(YFzfN zf-Y+tEn7Et>V#<~*|ReRD7%|;VZO~u$RKNxjSso(2PL`u3e+^!DWhgv)e2x}Nr6R4 z1K7o|ngH|XssfS&m?H!_lboyT%wq5M6x%}wY`;wZU%oLjz6VkidRy~ z=9IpJx~ErQ5TF{ZAp!z$BL-kL+jSZ-DDVS4H(mv{cd!vjWeq`PupLbWDj2Z#yu zYV&8AXfZ1kF)mguPHEZhu>#10lt*w)B%vo?Yd`J3S8`0bV|Y|`FWvw77S6iCmu3CU zJKlfxZ`aWFFwyMn!%Scs>Dc)f`7mN4u;vdLx6$PtrjrEqh4^l6eOl%c zI{NATy^{WZDl@@gV54Yu?Chno+6k*orv2@I!6xpmwbr89t2)D(PNt_O!PU>yt==2!+^3u3J z>gRD4VcTV4yGYb@6Xb!Nio(#qbtJNY@KSqfsX-)UmT&NWLD{oNKvpwX1T|31U6)dA z11_ZkA57ol>n0?Ol?p&X7cG)1%Q^NiO%{Ad@?FB%kZ$;oUydUbRH06obA~wVAh+k2=R6)OL?`tvxpM zN#fvw0Xz2-rkC`a7(Mrv!pWV(<#!BPd)G)xybqYQ=GmCksX>r~4Jbi!`aPKHEFSIw0g3f|EvqZ41^|D;(a7!?+`PSI+e@?-u z;1nggO$#H@1Fqwosa@}(!=qpXL_FbeY+$a_6D&@wBR%lE;x&MMbKH-rQu@}q{EdB^ z;zhJp@D|C?E!zR@Aa)=jd7#RN!SC!J1ID)3hnydqwp!BO%__8eCX5}vwE2cKTszr` z^rNBX2bRkpF%pV)9L{2V5U~(fsOK%gybWixQ_a$1k%;TDdW-A>pKHPmj+X%)Qwn%aYhZZGN@Pj6pTi*2c>+$o!@TdUwlSg4xX7SpcH!Uy;DwSNX)JD}*mpq)M%%s~ zlbF^uTa7IBn6KLh4ZkMOeOe`XBN(^i6;ufc=`V;1%Znq6LUUJ zZoX%l_xa9R z$#sq@Z)J_)@S0Z4!m>bJqkGu(-iNlGJBNpg4W_(^JHIEcu&->WQ|JCq9tuIwWzj_| ze`(=A0$N}8WQsvp;;d%4qaqA`QNH18J`u)|^ZZPHl!PV5AXKe$^2@J|Ca~p?E0g1w z5K<%|_mz)?Dd-Eju|;~XsAKUXD#M8?)r1Zq&t46;)$^rn}GlTPv(1V z`ovS^2$yi8f~o}DfnW~A+e@iz)Ru`1q zcc-MK*1LcgrEt!pqHzqy`&$xD5YtEMS6d}$Srx&hfj||UVj+6=s5%nt(2&yD_+4vm z2urNL(iZ+j?C1jB!bCVf%<=Nyvvbl3k^`Z$6nZKla{*a147@V3Ie<@n$)e5W3?N0< zoI#eW70?raYfMx*>UM1CX^0AnpeoF9ma@Q^1y`oRpRi(u#1QTdST^Ww;~~){9{?tk zDltoryZd+kfpyY1OkeHz5X7EYS`WW$JGe3(QA4o*?fY&>>=jG0V(JZHiLg|d$n6r^ z$?1cS_?%9d^-Cz#Va}R}o9D}!F$(?=t8u#;&ubRT|;BdgUgZLm(54|P{Hx3yf65@EH z;le0Y9l!&A6NP6hB}GnH(re&#!Z?_D%G|zr*dfO4&3Vl`|E+!_9WgpIF93Xk?@{0plg3{rVf@TeI2%R_t@} zXfy3lDm_h0c07l55Z3to9im@kG1Z-dShxh9E4Hv-7i|*gc%!-JTki(HwL_+5CFrRo zVgIs?7{dUFpcDE^ROMbGJ$Vvr0CvzYoCHgxms7A>P@gwm$h4czy^*btWdM>F)bqVWW{WDm1 zUwTJ+KbU1B^{Ls|UNHTPDl%Hd|#=x%j>MuLMGeR}UOz ziEU2Heo_9U9--Iq#t-t`XGZ>b3kvRK|KUfM^xZEN1vG5v^W$hiD1cj_H`A5pKWE}h zH-gZawCG_!Vi_Z&U}HwTK-aXU`SMppoxq5+8^E7en&o5N zjYv+Jk+ zTTF`r6}CT;Qal#CyL{qlKf)B%8}Q~R(aDS`aEYYny#n4D`#39X&4r~8?Wjj`m_nrLwbZ!U7T2q$jY9%;y_y1`67I>)B_Wj@5 z*>;lJ`4)0)$BarkkqJ?|W{g9H39XyQp3gk6gq>eXrU%Kv(1-~VU#)7DnZ%=dZj!*yTxb(!qHB2=*k>fL(6CMF)Yhxw0u z+u7aycZRQR;p}=-)Q?P;RSo(`lU)M$V})H2gpsR)X6UL-np9eQKEwY43S!N)3T_2g zwFO&uf872uuW@Ak%j;*q#gKdoga4=TwJWl%DJq28$6CheG)-bhxHjR;FV8h>IK2Du zH8aY155Zp1y5WwCfE&WLg$zOQ{Ppj3SNiO}I=Ok$S0-GiXbpc{b~EY8wyNEemXj{8 z4>)^^cdO&C#>ro~xQdxoMvkA?8v4<^O1%H`_dkHVjY*9dryiKGhR6uPP3$EK4LYpP z;hvK+2@ol%KY&D$1@XnVcUztH>%RGYSY}9fe&`IEn`*sSSc7(d0<^Bu?Y{Wb(Sak@ z)kisjEz#_hM010qD<2blli)l`Y4V+ov`Xw2=R2#9If*7_ir^_IPrGs zUpH)6H$;JDrq#2Q2E5^mE){K(Ro%_5CdQI4*q??tb=tH{97!4pB zr7$9P8df^1p&7y;d&(qWp)Np~2Cq>9`r*w0EM_KZ zFRIZLA;jkiWiDy*TsCu2nCuX9&uj(5FIk9a%t%eA=4CdINM6gimae8*O?`b?c!jAZ zHNV!|7?_7(f=Y&{sErxUJXSL+uUbn#+eMk=zo8=e!1f!MhWag+G?zO+9$o6sixE*q zn0`nz$^8X~7Yap`cQfw0$OM=snikCm&L3z)%Z9lFy7A7ergwuGvZsi&MSD>mD-dJC z?hd0o{4Wfm*4?=g&elc-iBgp*9d1UXJy_B3!2Z*%lr2fy6ja^r25S2e?Ba#ly+C(^ z&cQjfdz@jbDb|Lhurvc(cRn28cNH#(|7J9itAv?iFA7XmLrjfi zeq`;)#;6OCvh`W(ejbYUJsP{cYV6)bWJ6J1U-#R*PZyO&GbMLNSJgf`vu+%BKFu;JkcN%ue!OHyIzet?KWKpT_p~d4}EXom}Hv4&1Jn&~g|%GOQs8 zz2ur$d%d?r%qWZV0n=9B&&J30tZ4Z|)4jEua!%9S!p-9tAqbVEV@C|FU^PHY3nbN7 zpr=$LcoNKDhbHWSHsRPnAA_qqZP>h3x_*wwRVPGXvbqRBmV5SJD5gog zPAzuAUjY7!14jZe0o4FQo9XRJoMu3Hh6d38&Z;JfwE_Wr`UNd(*;5=F;>%5Ckf;wj zANoqrx-K8gNb9h^qYM7}yYnx8!^Z!Y$GE*9*0+i*7m!}lfK&`*DT^&UL6~ilT19(V zSlt~i1>MM?TMgR!XJ^U>d%hVJo0-HGJeer9R>qkKpeqszYqRz%?9s+p*w^96V~cOM<(vW39IVOp3bUKQ*_hziWS}61 zJgQS7!%LZhK62tlSJi`ErcuD%i9zMcM@ze(sNYU?$4|yLPn9-5@q4?iM@t@qF0}<3 z#dIn!9IfqdJ!l9V_NW18t86nvz)y8;;Xxq|8f9|XzwzTmgixaXi7<*Cn)d=3R0k{n zGO&YDhN>nC^kc>?8(biE2kqM}5k&LOTV-0G}X#!^Mq= z_<$7%xPvWI$@36PBuUGxcT*>BN4*()QfVJPyW>W5_}qf`dDmYKjjl@BN} z*gD_ORYM+q<X`oH{-jAe_+ zH(OImFj22HQxcpqRJ!P74rMA~h>(mW;BU z+h@{mU3W|ypiH%BJtCa%T0#@)nOjTfKb$24r1eX&hzTW11OE_T(N3XQAn_GB1Qipl zakUgNI3p)T=N<|qCjT&%a-nf3A`fmN@+DHKx#{VC)HxpY2z1c5%=GI^t6(|Ah0IJy zz=$ib>IjVfwoOReJb7%Tcv)LpX|ZI$_1@yJnZNu&RvmCXKKP&A8HjoXq!}k^C}}5v z%S4B0OQXxj6W+o2f{bR@g`va_fJN`+A0i#$i2zAv2+NHdmS%0M2pd1KTWUc$_fX9) zP$8QT-#($5@TgCJA$b?Q-oL5fC{|h|TGF)xL&cqNfV-{m`3_fg>%ud)v+)r2umKRM;zW)lths{qdqG5a@){V0``X8e& z-@a4I>Yi`oIZ%({r#`(MpDlZG8^L2x)=7YjEqIv6$0J&8kGJx2r(YFk6=H zY9F$~K6$>K$kk?_&Gc<+Hnn}-IyJfJPHcW46_IcwuJBv0WgnP95}{81%rlNu2>lly z9_!%?L`KXNXJX7ZJTR1m@en+=rNZ_|{?>iR*!hFB**i2rPqe67hJnmVq*AI6>ikZL z(+>Sp&62c=)XuZ~5up)-ssKH2@=Kc8zr!U~7x%X~wAzcl;Bk7gS1oa0kR1XA2q%!f zl=uV8MDkbvm#8tD#os5tgug4z|6;9yL<9JlU|I?E7gv!~z+zIfk)LYZ5=7RwAsFB< znkj4gvwzo`4uchc|M&wxde`mh>}LN1j(SThi}$@IxA<&95Of9WeGD!QWm-fbf0k@&Lz zcX=Vn@w5F_RlqQbKIh~FDbPsS2i%noPy?>OI0NYXMv<0v%+F3fJK^bhHL&2h3K}=U zu{Tp=onz|5_QIae(|GnJ%~Dp+>$>M#la`!P6t2p(zZ_PhEm{i!Vm8k0Q`Wasmr|d# z^bNyox&+B<8r>VEh(t0rHuO=g%zK^H7DP7P$fAcqQ~vJ!;7Q-f{ZGn+H$8cL@%^^@ zKX<;4c{p#m%UU|TWow{IhH248ls*pzm>HZ#&$%GR+Pq+U)Z>PWQ4j&Z=VEH1K^(+P zV0sXCSg=WVWW|8=#uwsT3;6fA)E?;n)Pe?5KSC^)t9$Z1r<=_P!%jB-Muae;JPfl~X=T>JK4G@<`DsA@Aa~xl!4% z>oKepLdFrZ6Z)Jrmkkj2oBqtLhDcd(KOUs*S>#LK$biP(kU&H^@pf|JRj~n9&NT+DHLTP7_*D-j*90V1p-8nJK zAjTa7Rghsp8z2Xl%oMzl&vNiz9*r(n!8gg?)s{l+r!!n}wrzM&Ni>Mj?Az0@AdM7J zBFn$_3x+H!pV*6V#IU9m!uq>J;JxF)>yqekA8PWy4av`AKeBTkmKk>H_Hf0qw#9_8 z0{!~JT=!#(Qvn|0D`S&TGNr>{uBG!NuU5OBYR}^TT|yDPKv;p{Rb&6Lm(!%V1uSL$ zw^iJ(lug%#>QBmwmCrUMw4O-VK6K&8weHBlx;%YIPGF~GF81$O)CO$elQ*V|?}4>H zOocYl7o2}#2h!1HNq3|{Iy<8OA1IC>KBQBTo!O)IYqn7$*^!N(XQU0uLUlsL8(WU4 zTc3SRXWrBfdC`4k(GT%ALiGeO*RExF7T6WZFtdOeLPU$k`{CgWY+mq^I7{i0bjpH9 z`J+l=kezn?cm+D{q-X+d4Kn6v0#F}8yc^|lG;R9N+Lt*^6S{e`pTPuzq_063PT?iU z(qkSq2+Kz&|C4>>VU_yG{j!n8Y2_9NOD<1MN#B49)4Tksr$thcNrLytn&|1>aqovN zRYs2+Wi`64w3k|hcE+@rk)%*HlDmI}=Hn72 z9jiodZ#+YiLE(bUN47n#hEM%eaHoJ?zSe(lWBB7} z-y_$qb{8J)zA^Rk)7U+_^x`De&+787c0Q;4etF8_EihEzBdfgh5Q^6Hun^QW_GHy4 z+F=K}0O~HZStm`76_SJLB>$gozYi5WqsiC&F*q%P78k_nqer_ z#QXrG)agE+o`o7yDNV~+t75p{ubzg*NF)F*Y1>HP1}2;t_l@4Jve*H<16{_>9q7V< z8=u%A1}s6|96>t3#rY?a6CMwO_YO$-l;GOA0p-9i@%%~Hr&pl7b~?tznigQL*2~#$-G}z zwIABB!SiT=)t%sk$@nApOTeviOk=bPv0*8!zk{2!mGY`(EZH3XNMi2-9thYPwDl0d zBxD%50e|8GiW4u%BfLQo$4T0gy_7%UOqcP90EXyVc%`S6JaL+-J(DybcP z8RdM&fk&4Xp#w^2<(=Vk!NCtT5YwF(YhR!-a!@tk+k&aoz7e!zsLKbYXZ}&N2mwRY(9PY;714wJ9XHr1ucaj`9&fi#Uk4}b;BRk~mbWK(OEB-I^PL&L)n$t5 zZMei(*Mif@t6jx#Xp*ACs3yl2p|@T|>JyQjCW?txTR9zDjdDGa(8Fm>I$cx%B|)i- zdOV$d2>GI!i94Y~NxbCnRh3wYl@vxVDw{1 z>R3FZ|2fu?a0!pz2FmE@+?uqKURBX^I7HUEGNjo5p8K4KN3_8E1qts2=D-I}E?6-s zrs!Ajz>G{EBkM<+tr9U-(N&im=RD;?8{MJd}U>g)Ftt=7vRzZdRELQ6&0$-^2vl6`_?PXo5( z+GP%OY@j2Qm2uesJMiR_!7b({187i{2^Lj`*`Bdf52<5Aw_6Ve-q=0#sXQ+(ZmeQ; z+}ybLl)LX--Hw?h921w9@f6M5fc08k(#u-D_Zoz`rMlGD{U-8hmaMR^#cGqE z_wpk3ED%fl`TMGlD&K#MREML&BX*|!OojdUbW}obo;;qKw50jg22UwY-T5etk9n9Y zqz;c|7AGHHr*k<+29X?AQL_K-1MVsWXgn%xjMM?66M}AvSfu6vt4AP0Vprf31&G&c zn*|$2KJ_&!SP8GLN}u{%e?Z=<{orpxZO30>xL9S%68L1bDT{*0FUTC&b-N6*i%q@hjr3m{-Dh(+C&zeh1 z!pS2cm(If;E9N>mY2?9^#vjv~Uckg{IGY4cII!bam@R;Ug4h0h8%`?}OCV~7E_ylM zPD0J{9g&Y%h()2HXjuUQ^wB+@ALu)$*wTgS7HpQJJB1SDw@|$vjgc zdHYn-3r)YYcN3pp_RmjO`P1ij5T%lHn5_a-#FM6z%!4`LQrSrGeCwR_^)apfcFLi9 zSFhE6Q+6?>HDPRhXQy-81+8yJg`p2iCLR6EK1QsO>~x+f*%_Foe;CXh)&o3?hqvV9 z>fyj*dQoc=ahi~oNVzC+)0;4Y;bxz>mD%?eI@2sGE?weFmx3-XoRfoR=rG@%zcp~~ zEXVJ4<2#opRkd&OE@&F*AQ+@TqZcB!Jdd5$V zNxXcn-Zg(oD3OQ((nTnU@Ej8E9zS?g8@@{hil-iT)|?GL#(hp?fNCM;MixjU3{b?N zX`;etm$X$~*(+Z88dlWSSR4Fj?Aa!{@y$2Sd*`~_zCXc#xt?OAChpqdjyP4Vg)?7F zHXE4IffLhoc$S#&!LSk^H&-vj3YNl9=pd17flfVqE4@iUzR_70Yrv!YAZP$6F3|ws z8bOm0>d>dW;%Y6{#ut1gd0px)85q8KvTkvKk8bJw%lgsQD+*s70-WF@Wj0|xIr zpl@imbNBr_-MuLgNUcb}6 z5nXzndq*)2+TI;`V`JP%Z)f&_G84goaKN!#GCC&3x;={XUKSjMmWqVh@`DWlEH=;L z_-DgcDmlyh#?~tot?HsFkt0UeWL2lt7ms^xT-< zRZ!XdUOd{CmSX7juobWt^7a%l1BHSIyHieK#4bUQA zp`M(mBrW83*gATkdd25^4BrI-m9!}aNd_?xNDd{%mGH3I>euQEvw&Fke%O)Gzt|c^ z>r}Dx!Gt?ye$J~M0jjr1E^et6Sh}73^Yk?!YECJCmpsWHY|2~c+P)(9;i~P%Jo_E# ztElgj&NvLJJLPazO6b1+aZF(MsQ#x5YW+nJ6#^oR;@wu{3Mn1N0$6CdZLPqX3Obs0 z9uha(9)2z|`MK5&?JGBzj7(F?f@yA}?a@7h^D7;^L_3|KXLQkb?{#^MI^G?UA+ep$ zVTkcSNl2ndJr8MyUHKCJK(DX%NjZ=G;tXSQ0rCl?W;X6Y&Ozb+PhGKdH4H@kmWGbL zrnwCWwtJ2(SFU}D)@apn&LhFz_s<)u1SK79YqhaR`;_oYQ zcc_4;s8KSkQe*HSOU{$0=Vn8RQGUVDC46=a$*AzdI^cevRQuz^`hd9B)GBPKg)5 zN`{#tRsGqrkWFutQ*EV!%C}|rWCK`>G60TIa7aZbt37CF@r@Jd%@U?F26cq0$~A{N zwL6w4a1AUUzCdRRhgU$lkg#4-5e9*>h!y{}F-=vjQ(lmbl#=Ob;gZd_#IK<2qJ5 zR+iqdlX8sYBF0WHhNVUrcZb;9oWVM!mxSAfsugG;?j#{rVwTJM$JiNV4@%_p6~)Lr zhCL9<;u<_%P(!QHp(<+eI^bYx+~{Fgc^eM{S+!a##2`uB*k6onBZa2tp*6ROE-GPg zfomPTtdX@Z6lVpIeOt)6(b~c-C0tNymg>u?-qVF)U;;!E3uA*3sCRvd{;TLbB z(j!TozMx^Zx)p>BlWmkKcdq+ymOu5fIP`1T2hu!mi5`}yqMj%&Mm#@zcfJ4Z**VxS zNcXTYlypJY1)S)TYgua*wz}O()`~eLrZ+;`eF9fK$%{Ru9?285#uQDe{Yr{jg@=>% z>MZm0=kQLYLAbb<3Z%K!y2>S_`@s9t1?0gWV97=FpIE^ZU9M$m;P&;pdJxIgFca^$ z%B&aCT^xxe-9-|TT{g}rvAR@Q;aE~o_N(dQwb40eH<>oZ4sPq%YxUDeYg}yd#dmYO z#Ua!Du)x@=E#s-&?S<|fXe5i~vM);>NiD)Pve-rhE3Y{O47N1t#M6ShW{7h*#)LFH`iwV z=F{?-sgWk@cWY8Fv0uZkH)OZ8?6h3x5Z)RI+tnI-2u<;9aFgU2l1athP|vDQ)WUi& zGJqLv8}1y>@^c`!>}ODcf&aJ%=7)`BO9)?su#GT-J5XCajp06<)a7g$6O1G;4aDhd zC@~K+z8%qZZC!jg+t?BW$ln&)$u{v5I)wVzxHjR3%xL48>FFoxZbg5}4|1G?yO5{r z_UDQ5yEP1dL|HK@C8$ZS zburkNu_36mL})i$iL;Q&^N1pvMi_wR3o>a7c-%yK8^W)ePC(J}ZSpcpdKJyB8We+V zh4)FOwfVoH=v(9AHnXG7lZgu&8;x~354b(DgGAhkbpw5Ui-md0*pA4vk?K7COh3~- zEd<&GH4IGaw1CR!13> zjFgR()s@CxmkeF(sPP;T(8F%JcXNw-RXPO%dfHt{8t*;!sPZL$h#^0sFZZc+5z!Zj zuH3o^+s;3?G=!q)#u3eNx57E)F}UJTU^;FHMDDCJmUw*+*7Q;HOt1I%anA3fhF|Tr z#58xfAbagCxvZ6@%>lu1r*8(QXbo*6T?m^R75%DHGD8>w<`>`!bf6}vvr`|9F?L1? zzt~LX;*F%@SOexTd@%jLxm)Hhm)zLoq0Oa&6PcKli`Zu-pFJ46ieOC%sC8Mq4I zHdinfm?cBd`7;>!e)Z$ArN8g`5qvQfBu8Ixja4BvHexzs39ra3Hqg)4`;kcj3bqPvPAa;8g|V#mRe zosIzt`p3TzWID_6DA!qfI>f~HU9&3rb*%P9>E>d_2%vjgl=APN(=x#O) zp)I~`$u-X7u0dI=yV|p~Oa*{M0k4BR8vXe{xJo*oXW`nqvoAtDeNio}VK(g?vXh7qxP) zI&!kjqe8vzXTh@TNRDmRUj*(u{X;^Y_o=8;#_KMulT%Ne-OVt1>CWTM=aKgOu7qp? zeUZvDOXl5HI^fIM%c;IOGZDNZE?8$thAYCX=VtubrwFymR{Nqqf|}PGEa<00`SeOO zehajv+HKm3al?}9vJk4-yq0%G+7tf75GHI_`#h8NTx|U>KC2DYMsNNDV1=e>Kk}w) zIVBPh*hz-lgiu136^YTyPLv)J9B_oEjA}r5m*$%Ru z$Od(|J!_j)&zif3ZiX?MA2HvUsP!9m`WsO*^~6BWw7?JN^R33sqUh2@twMpMnw}A& zcZEmu=*bhV%`>$tdE61Sx9M`~gC4=H*OH3R<+M}U7x29OS_3+L1Z5)%;b=*#r@uq{ z7wX7S$R+1-ElR-&>>WU$D?6!Q6S|DI;1omZh!+g<(w^RkdoY=1o=oSHK;s+<v1s z7JD@?gm};$fix}r?fm`cDl&B`5xB;>O9n8RB>$e;EUKp7&`;#1>_TNgU6j?rP;kp; z-v@&>5pDJv7*>#)lHekA3AlEi^c17HSKhQcubuC?(yK?Eu%L9eP`)q8l96O?62a#} zoLe#g=#WpIhpulC`Ol#Q4-nsYlHIxYlkw;KvuA8a?gVxyxEm%*ej zFw=kg$1(Q3=@wU(xXP|#>t@>*%ZcztF#E->FAR$*esdK)Yj-K`2=X?q64j&}BO>szn5+Tkr#w@uH9u2rb~ z5iQiQVV;4$!h=Jd4ptp^qXm%%b|o)TQQiX`t;SpAcOpzE}CNpo|` z+=wmw2G%bP7T>2tQq5fb0ZGr*oKxO-GN5K_EwV>BNXkP4YY5hBy8{YvqlDt-oMO>y z^`7DE8{7cf7QdRt6KJT%mRp}M6kAX8^ z&z{Lk-A9*yc@qc6fStRCZ^acaL9Er=acs3!YB4MdU7SK^(+*jFf&G!N2s|Te4w;Q$ z*+CpiO9TCDBmMpoASNj1cc4d%a2Y>DMk-brjqeU{=Kc290rNQ?((iWMw$p(Sz<2w$ zvvXI?{VvvR-=c*BogHh=H|=Zls2{BH0O!ngr7wnJ1j#X{n@vCGTEgBeDOtoTKeSGn zlxM^Vt5gc*gyc2o-ROyy%iJJ#Du?)pR%v8wKLbGK- z%C|#0DQF1m!4z<9#dIFKLjo;2pc*30O>=e{vz~@YW#zPO0d3yO3u_hlw>9?qX~8!m zi=%86?LGms2OV`dmriXgyVwE7goi-7Y$-i8)PP$HIZNlA)5QF(qCZ0f&%R#P5?y@K zlzQkM)1v*MLO$Z1N+YD;cAD=^&8*cTsYZE4z&U#(K^>`%eCo+D60}IVWv#`^IWuB9 zyxJZ8%gj2W;PY^GbH##dNnY(1s)XisaxGmE{Y0tr^ak8h^l(&UA>TPfP3=w8qV%b+ zzjvVL?@0Zz8gL2I?VzGXYN&X4>u&xU?POHghy)pze?a~uur)Um<+bbu6cx-|1)TL9hQ@CsM)73@SABg+gBrnUK?igNixs@*C^_r^SjJzU6XLtaNK{z%E z14v7OONh={hjPc5>_@UOgMv~^@1!&!_Y4&#W*jp}ReD9rlBMS%MbI+Ob+#24Y{y@T zP>ZstwNKM-a+QiKMmtUW+DOSymlWcmHm{Y6mws+eo2J z)rGg`h1(t|>Ti*bA99_*K%oDXqUFAk`sli)CqGIS=%4aE(#%gemmVMD5m_`ADH}9z z-uWj^T;eo;Y`9}6F`Wsg>;SzRAn{RwXIthyS!>RK@B#A3!z+9)W4Fm1{S9y*MZ6}8 zWUc^~$<#f40ac+!Q(&KNgAw5#jEW4*L&JZ>l$RXc(;G@Ut#VRt-dQKua-hCr=Xh#k zlsfi8_-xNNmulQ2^CI(13tkVp%ujfIwIDu@inK%`Us?iFLe}$Os-?6bK0h^r&l%;g z4@k2-ZPk$lt0SYen`WYomNA|8;5+_KzYnUYu047q38`yKAnuc>wX4__I9q13{jE1Q zpJg=towmND+tYkx-`NE}U07?kH-C53aIA8qvu00z!QQi+w_c}tnZE?-LNSLU+(>i5 zDctoPVfk{;d~*>iY1QU#po1--4iGyM0$&4Iq7G0wD_)~W&MlmS;=4c-FL79QB<1W} zoSdj-nl#9J)|avl9FK0^ool6Gl63J4?pdM4^`J2iEEHWh@&F%C)S@k$t*x1^C(%-G zNl_&B(xI=S`+XtM79P^3Q(7^CG2j*;od2hSlmO{yT{Y4I4E#pM709j?tTw`0*0X?+ zUqyuloM{NvjR8Vhnrb@mMySTtZiDL_@XKVX2gEY8Wc8?pA%Uk_)%)xOr%&bhtSO1X zatMr4$3QE@;6pXWd&HI3um=d|0l9(|AQ@<)=`#uD z)h_lehPiOeBNf5`R%Wj^4H~CM7G04sxj7>L>Bem{!q+%14|ZPeTxs6k>euSkzE~KU zw`YaiC81mj)LOAL%~Mj+e0S$ozUxg&zt&ZZ3boI9vm|Y;T-rX31=)ZYf^xE0six34 zSQ=_|NqOmxCkJ*ZL04@{u70(AZo12}1NC9P@ljz-{Y0MQ+~w3?(}Fo~p4@2Xv<8)z z<*G~iHmf3>7gbYjepsJPp%}fLtCljPXceL9aw!?d20-0316JWEDPDjXCSYk_`Gc(A#RkvVJ|yHnDv6t<$}sp>TeBa8|_p>)J>a^ z1Q_OSP5rPYAxLRcex#*x`>o5((R<>)-zTt`e0I%}as%)2L#`1Z=#NP+L#{ZaRhlx^En zac!aERMGs6o5adpk^9WfcnWw_PH%2=xl=D^X^W|jnSoO-xoA0LMrTH};8{A>U=J1V z(gm#sYc){qw35yTJsIJZK8G`JCee)vK)W*c{_9M}Iu$sV#&~Ni-h<9I!+tn2;Q_&1_UOhlaWANuv?<2*nS3SLjJsb{)wS>P} zY)0&}c=Xv^+J+o3_Ho=mFL2R@#-jDyV;=9Ir^lUPS;H-ojbNH|`Mg;14ss}8-d;6a zu;$_e>3CFI;D$lRDuIJ%$I-F2(f{sFU3W?u`R;-}wn~EOeeL@Fp;YxtMxhVa$4~Wz zaBcl1<-43S?(@Tuq43~YfgL=HJ1zmSnfQ!)-9 zo*~{3daw~kYf><{TZYfy@ILBEg2UCds~e^V3_bH68rXYj=(UN<&F}r@&n#Jqx+&0h^7wY1`NcGOdw3m=2oD#9AO&nkF zQ*ct5ZvWzU!_EF@Q-0X; zqAwZv7Bl0|9{f&Y{|{RN(uP5uL(>W|uvF4Gfdc?Q4F?Bham4fOb_#(G_4PDNR8zd@ z(yNv8_uf>tMwVZVEV(wn)vwJut68+XW*Mn!!MiTHd z_SS~zgWQ;UJ&9VM*5I2%yR!uCsMTxF0C@+3O0+XefTe_*-gU+%Rlys131}T3>WAJK>P#do6>-JyKeuBl$k*K$m@SoG{b9Y7#3>xQEQoA;d9PwVvpwK~S zkys{j+2KTvBGc6xJs-v=A=)%J>teLcFvDIqW}EiBR8R-`2Ift3$P@|q5P~V>G3{uQ z5BP#8Y7cYTFa2)pQLkVd_=*0$d;f>!$%YB{f3`iBd^Tf7CU04i;uu_ocFrPWCQQPd zjyqiqBQ}VLE4hD~$e)@`W2})V*J~%~4q&}BpD8wk^{5`r=gQJonQmv9k|8y}RJMtGU#EIK0%DId?%B9wCX(Z4wO zer;D#{h(!SWGF*?Ouw0k`eMz1a4V3mp$8hlM}wdK63+o58*n2a`_8ZrgA|KXYBE63 zwEC7jnp@<jTNx&*;hM1e=6+7c14W!GI@+?pF@gEE+DTdO9j~bkubpW&JtJ#U%5k zJHu0~eVR4vTIXQV*?A*J?^PZuU2mP$b8fg^7z8M6Gbow_>V*4bU9%sHnQBD_`*fae z2y51hKWrPQdOcp&M~n(_uu4EwE(mA6?RcL(;`yd>LCDegfU)qlD{td?4m?x{bHChe z6cLq_1KYKG6lJQU9t6%4yL#-Kk!xi7ifgd%E6-WhwR|@q$t`mkE@r!x`z|OI?>=>n zoE2aVi{R}7t<^AqzzhVJ7rOa5@Koko&fL$X-gtb^_`YEoow4fk&ohReI4eJ$Qm-9U z76N9L?DTp2p>1#b8oIdNK$-x0N+_M>X@z$cF@#VlvceC9N`-zQHI}UL)KXqp-^0(w z4}Ol!DFjMrg8vF)RPw?a#iGHbBKsF>pT`AU<&l9slbeQ970zK9mCG^qVr zNEp*4=>5nxy1_BDh-+zN zCO&)C_^jRhxDR6Y&fW!G6@ep*??A4~^BbdZOApm5OyCID?Aa@`TMqCoipaS9phau( zf|e3D?zBW~yX;nfx3SLbae@C}2`G8{OXJ=YY+K&8Z&GNJ`PsdcQO}Kw-$M` zqyblPtFHuPN=R6VH1GgL&HL4V>?~rg0v0UqG0)AV=V~*kT=biSehmtG!H?U+j! zDZTF9e_P-`!qx3Fsf$%il>RbJ{-oWz{kwq`DXdw}pG)>{9=aUu_n{rrayLJQB@7zT z_fw3z-X)=U?0l=V9K;dw%uyo%ftA&Sj~`45f62y84aJTI9`5gZeu#%EY8DKyuA(;j zXOJ7w9S#|e+o+-X#EiQt`!{rH^5y~WzZ(j#=eOmt|7~1Yi$#}l1K+4IJ4JNz`Iw|W zbc%#gm%1EvJ(5Nt&1LSDZqwcJ2ge4jSQwxp z*Ol1HWF|ktb}fX3n-pMq-pctcZSYz8^E-RsEORIJSefzeXC<8r+^Ratn-pD>T@zOi zeXJ{tk}ke^cQaO78D@gT#u0rT>@gZ|xH7_MnvWAXjmb0Iy}iZulIHi?8PI9RBG)(P zaf31E#KA@NKrY5I6#_X|hxGvmjgBQ*6s;JA8&oqQO<>CM`RA8SFQMa-s1~}-_DQk) zN{gefyl7Bo84qC8$3$qPY@m$U@{Kyayca6QLno9#l2psjmm!*`(!zAmPg?O{5Dnyk z&qMzQsbl0utjPwD<_kVWq@D$b)nEs?Is}Ebc?uve;w9z;1&cqMCZZV@Ds66&7i;mX zVdUh;ZRy`A=Y?#6GmOFQNXT-}#HuOT%kBo;g8DkOgvH{pIPF@Cdd|F@jH5B zuaBeTg_zF3@Ib}Rf1LYQeA|tBMqlq6WOX*39~5a`sR|CLl#Nc@ANfHj{(+Ef+1P1; zpc}o{qdrn(cIIWd-5SCBBZBRbNlHaX?e>py#f|%KI7apNg!0(3UnlO?t%;nm*p$vn z2D&Eoe&+Sy7MUDnV8HIiC}UxS&v26X06Pb>B%%d_{k3$i+vDEVKckGN*H0(Qgg9ap zh-8qvJSBtaExOVCnOg7;Mu98(--s9?5jPp!DGptk`o>Jx=;IAxglm2;UuPDKxmc%D zz19KQ{HNaL!IMF#gW(Mxq>edJFcvddQaoauXN+&4mWWBtfqH_sGF*CS40a9lkO&GS zj$;y6R+Sax9T|zfes2v5H$n@-vap_~!q4cdFE!lCkS$4YEhTo0l}mhf zdWwY)g|sDZM~=lSL<*(ee(mJsYi2LMnku>h?%e%HYTE7dm`@M`UClu!H_W9DanMYc zwB%e2uwP}ea#pe%K^_qpWL!SrYot*AtX5trD3TS}C5?WZxUVdj+BCS>!0#32_SCUG z&`b@a>vJ&EVJ&k>ax^o_goNA|%|W-UC*On&hhl{VN0N+A7NU+sCxQ`0Of8d_sN=h# zohcc7IZ_aG9ecVO>NOf%Bbn+!glXLS$5TVg(}Gv>ep=G^_-A#z!RB(fiWKtss}}Q? zI;LVsPKIGmtYy_&I)Jwg_7Ea_j$2G)Sn?sHP&ZPPlJf6`NTaye6-JBGArc-$hLVVI zf-zR8wl7rKU)fksm%pY>=slJtxuQ!Aoq?HYV}M{=h;c^09@Q#PD4N+747cwrDaM4$$h_j0iRO}0*w~|sK)&VC)8Uy)!`*RTm6nW@Pi?Q7`iNfGvpe9Mv_v24w%mqEe={n=9^rZx!*VX`>E7(n z=^lt85OLS&XYO6TNR#`C1tvlh^LH$4Yd+iAn%!*{4zaV-pR+*Dfc2k&D-K%I2RE?= zC!_^U7Vs;)J%-usNFVz%4StGdRG;->TUBU&B6`;~nw9zMk9?KY@NrfTo9q%30Db)Hkv__!$?WYg}*By46-a3Oif}V%qY2vY5R>)dH3%f9V>~u5#FA! zKI-@F*v9sNr2!lW6o4S%?DAR8_5~5(&uefbFkyk!#o~hHLg>zBlct4XLNk`ePItx|H1eO=gEeb zqi>rOjbTQycjAZh!e{RW2wzbjiTz4Ij4<%k^de?jIWAiDDf$<5nUVo-d?GoC-f5Dy z%!p(7V=#I@y9bsz7(SQ?bx`U64d_MRKR!3fwtU-Ec}ZhrXLT-n!fR;iQ$zRr8$$yt za+lI8{T(Nsq?NzrIW|iq@7!9P!LC*;LS``792v1hsEn*vGU9U`j@B*swD@sjd}r2Z z+pe;^&(dK)jT6FzFOTtBARpAsudGg4=X15e5{jU_8h1z?thZ>+Iuvqlr+)hBm$2;b zFBS6-?jLb@U2Auu^Jx1wQ#T}i!7xFy-!(U59|kqy1=22e-h7;Vfp{h7T0Ja6^hKgL(Dp* zWqXVkO&%_(PO%(7kO&f)H9S`Gg%3FOm@C!=ugJYY&;yN)?yHi0Kt3;v$S zR!&&53b3_j5s4l^u(e@nY}EG{>72v#D{_TAbyFz&Df?S`e~*vF$NZujHE&F!UtX^o zOYerA3R;1L&TAEF605)o#O#dRK2maRI^Yg^>8KMRbq_jqizVZ-Y3;N_oS*mPucj2htcw{8uj^ph*>Gw6>N(kVX% zBv+Ko5AL{R0hZ;93006s4?&=zaoEzgpH}*-*9UjMSNuZ0c!!;QeWWsc_Km=sH?CK` zccx44SH1i@`cuJ>@}+^lU+g!J8|~#0wj97hSlU3oKt*RmT>#$<-b`#CyzXqWfCV%* z+9sQ$*1J#z^!|!CnGG(tPZq3Q#bYup3FgQ$iFr zPKt%-;h`GAKg@7#+aX#wQDv8xa7Wf7E7u0CGQ6eI#$(Zm^1Da7LImog*P{!HD?76S zo`lRX=@TW-eQgu$g#3V8n-~gU z-n2WfVQB7jxshWJA-sw4Y8TOyNCxdXDgJ?Qe??UCb~>eqkdm$-xp8H=^^hgRy%ghA z!fk+t(RL!sesY6?=5_3J>ApX9C$<>_$r6}y#P5!2+&wioHPyF$+v$vNE4^!}c^~8B4g45p`nNE3*3af!+$Ab^ zsL9>HeP4i$zG@q%kh7T9z22kNr_$`QHj}sF<_ZD~*{T^wKcNfGz2;2`OpqKn-i-)u zgA+74E%VRsy?;zh;+m7qHv-Mxj-0j)<{)}WdVpIA(tsNqg2@eT(my*^FcwBF0>ITB zkI--!KUfrCcO)kn-WR0kGo$$`67>>s-U;>Qf42eb1Hc7Yq|Lz$T}uc=({Ce2-K${_^gmJ0T7`7pWu_tyitdURLAW7Pi!Rp)Z0Dxke(F9iE*p7_zYHKgJsF{?u9!}S%118YJ0B!(>GP0T0^Jm zIwSKShvQnAccgM_WNr}j2a*k4xXA$$5^Ex`!-V^dL*$^FsD;iBV_#IBLIZq=;4d9u zt3s$(Yqd{GUB7`qaYGI`N-bJot&orb5F1wolnr-$7Ut`_au66fNPnt7kkUt<%eZ_lZwsQyD2W({-3Plt~5{Z!JkAgWD zRvGWJTo>LptZ2hbJI_iEA#H2Syc&-bD6{at1_d^Tut+M2_8JM>?^n`?my(kh8Ifed zrT(Z;k4ODiUD~!?+V{l2*o~}Tj6-z846Qp!;8+mT)PcViGM0%Wms z)4^mGs!!l3?Z-yYUT|u$@M_$6uo3_waeuba9MnAG;`|w(c(q5E?S`~tZLC+oadqf*6eHjv)a8G z#}?26VNv{Va>BkFs#!X9ZAJzl&lL=ETmn=xSe+%G8-5OQ^)s;1HUE1Dk#*skS|MZ_ zHxh9d;3@LE=Et+HaK6~^2APnwHkw|B#!&Z#r52&Ek#y1XB*+p@61AKmGNR2ean+kq zJ{b?URJuwbj&RN9yFB1G9}fRceK{2b@5F5-qpV30ga3TVL4CT6exfxv z;Zyt3r-4<hQ{Ru_wf9dXCKQ&dWtpQ_uDI4vH~&O%q5H1s|j zWKC-%l7*_gwX}bjrIqkqH`R6mUM0W)x4nkc1 z7ZG0~M-6j7hX{mQ)(C&m#-C3FsJpneI0o*kpUgelV2%;Bt11=Txv6l^`Gd;J?AsJ7Y$} z)F(mYJ4L$^0G}U$G;n+H_L3h!elHuuMveO3coh0o$YMnaq67=D!8JCl_B=W^_36N* zf55}EcFE(nUK3SmH#e);O14rC`K>+9-(7)8nRo@9?stApZ=u^{=jrfy^dW+Aki!M` z$(9C6`~4s*MLV6GKny^Uk$AL4T0~%zM|*)6u@?H|a9Lv3%%xuE2R)vOtNQpn`OB3Sil)c^RTd{ZLZAu*Nl@7LXn6(DFCZCz+BB%Z0<6k9M&2qR0$yRwSKaiph zgM;UV*Ms-Rg*`XgZV4I{h_sXNV#d|Nk+GM3H@MwD%aIP_6UE$APG>atbQSz}+r91^%CWro`0k>iO2tK* z8?PBvPgyozKvFBIx%qr^za4MTb4XzVLHuP2=%3XX-prJqN6z%%>LodUl^t+VMC6tZfnjmj`0& zA^gp;!4&$s5n(gloTB3L>g4+RXG_P4v0*MB*_8Y?vDGwrgx$cF++ zC=YcpQk!1vS3_+Izw0_MI;Z}8#{DpIcl1Acr6RO2n$}KQ7D-=G zh=W-MyrHb8e?0!+{l+NhR)pC>lM=OMVdp!=+wEJv_>bqWpM7t?`8)TuUJmOidDExN zxZU;_D!?)9k=1;6fT(4tkP`7etZ|3&Z4t5mInRX6%;eJ0Sb|uLy2}N9EsRYvNzs8w zPRFhynWrGq;Y0fWw}7k;5YA@^SvV3i+cUcBWc7fa(^uK=A!VU0SkTQMK=i_``y2{NJ535gEvUmTayn&>??dgmW@bbRPBFLX zu}jPo-N%Tn_}n2$;*_BX&>}P#7YDW+FHrMnlFaBiwPsOOU7rd*O|ImdzRYs{z;ZyW zlRYa@7Id#&cJJu+LYBh_%`NC<$(tun7LCwL{rr_e9j{rc#X zf6xZM-Z4))yl2x=okjQ)LfQA*6K)+$|6rkLJ zX3-_r(z_jLT^DE#t^JI5WZ^KJ9o2SgYSzS^ptsw9Tb}*B*W;!k!FK-s5kl^Z>+XIv z>3BC<+}!eXK+0o%khEZ!A=zchV_&l~xqj2|IK4ba>aeaBCyulNh)ZGwWt=tuAmF`O zL5+e0Czb=|$C}>`p~1wd`2X?rF7Qz2?fdxmu~R#QoliL*Y7RQ7M1-i;j2VYAQVuDp zun8s2uIStvLz7cSo2V8Q8i{I@C0ggU*mX!Ug{ZYDRGULjlK=Idp5OoVdY(PB#rS;Q z@B6;)>%Q*m=7|IKr1BLSRu2&IyS*(kPG)gZzSPlI6lv1^g; z<-Dv4J>}mkAyXE9gt2D7!@-2Io!ko&#|fD-ivb(|N+5iul8Hi? zCm0-t6EKhg3_9h^qO|Pi$=*EuPGM^XkTATW;DL<2UuuuR`A(zOmgn zS&ioZEsQU%%oeed=Dy!`%@ZEaC+F)Zd_)&{*qV_%c+_}aCY|4#0~5D_RT zz&pr>wdvvo36YCc>+%)4uI*i40wxRn7t2Tdc)cGF)i|AWl)&Q8mmaCA!pZ)GbIAI| zp4dBJe}r@^{0Ne-Z5TosqWlQth|aTsn3CRT^wekXzKXYHLxW{&gqA>VW6@YEvm@;4 zk&0grm-Rlj<$gEp7AcKAvs{mD?~OuqvZdSm6WZ7_e%Ob##2UiqV#W!sr7zmbNVot8 zH2PXKJCj%gj76Y@1gmlee~&}V)))|@4kTDPHJ7LV9B+9J;(z*2A&TWmP87y@7;$So zWI;Bh!P%eIuul@M?2U zpHmZ!Q2Z(-o00R8yUcFMCSwzf0`t&rR-Qk!{mDNN1)J7x9v+c7QaE@NL~m$@c&vmS zW0!TVvtKB(0MRjaOy0n3S`tdx8F>m{v5(#L{J!Pg`(I~2xc@|2#mUk+s>P62A^G6P zc^8Nhgh{+=wjz8}Q}Nu{n(TQpME|UgyKKTm1JfvLzyCLKg8QHXL{Io>oPG{67$Ps8 z9HwoN>QJQs@Io<@R8wUUPt63T#0_#t&c_Ae(Kqx4S*QL{n)iN4{m{CM&9{R*4Xzf4 z{xf~QVj|}p0nE>1@Cir{AG9NVo89-~DS{?^Budj@zkw*K=OAmpNY}t5TbZj-WT5Y5 z#L)-0&*1JHJ%BkWG;)#xprJsQgyj*V(uoa2IIi6tNeb)C#J=X=glLxQC;LW+mmfGX zQGR60fse&JFc7w_-gO^elqG}d9LP8$pY^WAUn(v4ymzyZo^oS{V$c5W>t7y$>lnep zfW5L{j;bZ}BiPA;XJ&{)y6v43zkvXBdyM2m2(Zdj>4&aY+?zby9bR25Z0=YmB8%>_>68wS8ADH&N)s1|wH!5%H3`0xIIp@Wn)s&0 z$JK*`WvorBA#x?8s3Hf+9D%m;NXzSqh*7DFB5lypAlPzWqD@-1e8e+!503d4%6PVi zv_ETyQP_<%7&O2h$2R+@@?%@W3Z7rYB$iAp>Xsl_ik}Q*hdZ`Uk^_9XTD_{bV*@TO z3C6cbHRJ?73mtalOcvI&TZtY=lu!87SU=KR;q{e!C+9BDtIccIKqMcIDEPDcFa?`T z;_UyUGC<+s)O^Lc*w4eGQ9h~=WANs0lS(kVNf&Hz2R-dO4N?qp2Ji#ppy8R|U+`B> zHNF=4)vaP4A~8Cc7@w5TEgc}x1&sDNz(|B9Md{Pl*aN%;GWU#LV?Kz>J~EMmPxQ_q zvG#=?^W3#}d(S&H?Nn^@@^Tu)VELuNaf=llJgh-Wd6=-O39WNr$IXx5Pt{uDcyu-W z%v>DB-3gJ-UPCV&V$=c`r`WHZ?A%{COSI}7*f&DgLjp$Emt>bq{cgDKG!0%lJPbGJ zcCZ6pm)2ml%4F-?z(pR(lmj;X4fTG1u`vflCke7-bvl45&09Y^K0qn#01ah}+k>y0zNVF!BSV5?NN+>9Im~8bsvl3- zS_w}vK88{an{tAi@C^vwfdYYj-Wqn%gD4b)=sqVpJW zS(K585wckapFv@)qDpcrNCY;jI1-cbb2VPW_G~*#eq=VCRf%(SKS~nQuu`T~ng)$bf&^stD`r_BPjV=MXI^-UYCDkWG_>lI|qWyOqv* zRhI)7?sLgMg<7?G4ZpDHk`<3!8G+07=EqGH?Pb|P1)uJXMH!R5v$xsHOc^L-;Tr_4 z3vDeH$E`?>3#pj_jWFcbZy)Wx&#;vo3!pto^NIz_hWAE(ViI%poCpO7e5PEOa+etc zstuR}|CyzttPNuT*`;8#w0{S>LMxFmSBsG-O-b!*zGs$V8p>61eMX)v8INYid^7+5 zB%l`w3ogdYEerWWLT(gp8qPO~<~T_#0(MNO=Z?y|1~`oGM_4#a>q?n!Jeq#8SRLZ_ zz2;=(fJAod7`=VyS=pRT&HGJ1XPn>Q1OmeFoiW{1zod9)O&9}L8A6))hS&!;ve zcm}l2Z=748M6vQigM$gM|`djVl*eBVW$xoB6K0~%5gD+>o@&x^#LMv6CF^dw6 zOqp3U!Gp{gEnD_025T$Enc{8`W+gqi3A#r3QX5#Jxnx8-_hhXS2_K~Chac|Na$LGs z)hTa5gzl--U0ZLYH(TRmdtJ~VQsX(;K3j}t(>ce47D&#@M4z-(j5ozI1)-VCRngVa z;jC_NfAgjDaoc)VkK)A5ACsqfHTBYUm@yiGn*VR z`D?xV7Z+!Z=<&O@pT2BSY}0wQy!CGPzPsHZKmFWFi`x#2-S$<&jUgCVd*Mjmf9aKfFP$G&F6_Ul`OmFtZ6z&&3k;kkUv^=t>d0$)ATA&mo}SQFO(g}L1=GC6dQ zJSGNT%U+s1ZDPgu*Yk6$#|Mwd3fC*%eEJ-%ThIgJNs3EPgb_%(feABVR+YL+IuwK&DN zljiKM&PWCqMo4hrPDd%Mw3Q%}@!Q>AcrtdKl)~i{G}zYz`9U8>@Zg1bdLnC}>vTS7RPWga9aYRJve#$a9sF3>h_Ok1LIPxi;-To{@&?Sri zHMcXf_xs6-(flrL;pHawN2UbRvba%@5JbQkjAg*cVf;guJK=gKzm9N&lD7}0Q3Hwr zj83HPjk-}dcBHVY;-0K0v0L$`nLgS5N#g81G6(m|(RK`71!!`>r|(}eenN^^2T;SM zUph|bScz0Jj+8F%vG!OVL13f59e$K88AiZU&jQMhTqS@Qed$Srq*yA5OD#o zna&U!`+BKS>bV4e#!#(^F7x)5?>L+T){v|9@Ao<3OA4flpps&#d?{K^EbX5`=b~su zuaZS4q9-v1vLJ;*RK+J^5$hnrF8wSaopeEfhw`{@C4rS8)`&H&a!8s(!agQrl)g_u z{LzNX^&jpv=bmfCc9out1`<$}GnfH}4MO+;2Lvj2G~1ADm3*aEkR;SX<-=oe1HcH3+<89WytNH(s4?lW)2r zt+k^5hR(%wQSRaMNA?>**_57T0Qrtd_OuX>*m(=7S>=nqp|fPo9WuJMhg9GtK?@{n z?8(T1Eo%2d`%$tWyMaSZ1PNQszyJm)c;6fU z*!seotM!UU`v+Y{3E13qCxD=Ert(hq(7Y@V=C{HRQiZk#Ef}csVwT*1e;h3Y2*#R#QnvQZ<@Yb;dBuCY ztk+#lKW>QJk3dUK7h*AY+JgVUpydPt;{Ts`n+6YDf7-NV^25vs;ZIatv+=^^U5x0r zknOZZ8f}hGkIDjjlps-k6|#;B2?45!Oa1+-idl?ypis3zVE7fy^SOs&4CkQ-1hE z=r=%C35}QNDdMvY4hgrOJ3(rSDY%~{ep>i7)X$kxz!3VvM)a*oOEZmR`#6-Q?@pqL z)^b&HG5kpTj)EPsu!t?47}0rpZ_DI?Nx!nh+h*guiD@aVgK*K4gdBY9@aIA-=AtgI zssCZm8fW9_>)BIUkQtSU9B35>%Rw@o&M_n?Qs6sBdG@#%aKal`7Jd$u;7}xVZfbtW zp<3zOSzFv2``G`zTWx-(HC%A{k$`i|Bu-|4_K^Vb0i=@$+YU?};ehb-2X9RZ| zLwoo$fLH*k2|~9|hhp@k1PSRYPe)pS5SGDH;N-Wvp%*^q(_(w;*c0~hTIm+*~(lYJ}Pf@ebzh`M4xiQYZL^Y&r17AOa)He@5UL)W#AGKR&()*{>yIc2QN zBYBlaMlxsQlL8V4n6vMgQ&lox-LJC#v{%T(?Nwd*bT$^eeYMH& zhNAvJx4vUM+laquC?>Wvv5qB`r@C$o&C;df5)w;3B2d=Lf}6Y+j98?dwt%y;K6XVQ zWRU%<@kzt+L-j&|o70N#y&9qm#t2Nla=keB)5eLtYf4MXZXT7EG|9~ttz0y%?11!% z*i=uN7zhh_O*Xp&T1^B^hnOECMbks17=5Rg0;e8SAhc%NoX!+{-#Txf@uIb}Ko^j} zN(v22!m&4Ik$jWYJPT4mI`csu0VdM&9))X8KY85U&ptoFv|?g#JqcB=6+xIW=RKW;FD| z|0RZFX=nhr3YAXCkMlEHCmp1t_%J`b>dGOdQAK}y(19ag?%k_S_IbMIV;O(JOQYQ} z{+R;jLs^vZ(1|5SPrf{P)Q135$U#z2sL|BPH^aC9-JBfg7;S#*@GN=9`p6+96R4)i zE!g$Hjhg_-K-Eo%KA@(r<`4&dj3Wf%h*=)qVznltZMIhWrG$Jfi5{=1sU&%?cuMAZ zcy1I(nGh?w4BDw9?>pMZ!#JA=qr9w z(7CoQP2H+2XXA4$!-gJtPsJw^e86`{8h|RpI(a-SJi2h--TEkOLAgr4WkuoSklFWl zee6rVu-Pk4zLRVhpR61=u|3ke;`^SKBa@xi%Rkpg$#NdwUp`e!LG$=PH^D9y;_}A_ zL}l{B@j58S8sGu+G4RH~j{MPt;^D(SJA6~D6K=#@FFdi2rzAzUrM>m{>fRyCSXJ8h z_z%r`K4;{5>&Qgvp;7Pg=v>`bQ5O_hS-H8oIw|k;Xrf+H9FeYFZvDKUj??|;u-b7P z0I_vLc7H69O67|@zkJ%5)!m+IMG8OTWR?F(pU9sxA!B~%jKczn zj(Ku1QLG0z6OoPWSH_)p@ zIloS&i^8sA*V*C4LSEEbv%Tgdu5Vx6-*!3AgqPdv?NfeY=h#(>8!3V8ZCuG36BnXj0o@{TtR+r_a!0xUO zvpyffRQ&>)b9H2C-)DvYo=0_o#hXmOM7UwKE(l?idcj3F)MEQnMu5rDM(hM=P$uke z9;K(;(G`J^H@SA&elOPQbljIi6i8Ql6i3e)7N+fT6eKl4TC2OYFPD*B6-FV zu>}7GDK5*aE2uHQ;Yjqv*r;qQcxlu`_b05*nfo-_K$lB3m85Wrq;Gm(8b$L`8uX1q znVB&vvq`bYX7{LQ(ALv@*56aOZ498k&2SpUvBm%;G1({AkQ^@tsyDE0=0YU{f#^tB zQcw|qQ#40Y^$+{tp0gp__F`dUA@@KV{o^+0=-O;w1JFS0Af&)m2JF!eD5}I9+}^DZ ze&?|+Rze&_O=U<09?&^u!Xb|jLHDHrWzw1Frqt7G0NbZ3%*BvNpq}6UJGyjq zEEBe|fo|XjD_b+Y*exh5P}gKQ&Bl>~7W28o(YOFN=u8Q`?Q7zayG`9CqiBL^EMYID zG{*s`AHUtzw)Fat*~0KZwiO#f@2?B=@Pp3FYLd{qD(TE)D0|T=RdNW(a$<|~c-WFP zV%wLxQSj>r2ZxkuXNBz~T)jtLbrEas>>311ReT6eM96)G?VWErhqAA?2VaE3gBe-g%Hm z>j9pG{i{f2eq{otUg41dCFhkF#&L#?c@JM#1p4_4vF+91^_$?!1 zTz5u=0?mS95`2UJK$N6@kOjM5@BuFUgl9q^#4iH*l1VCTp2wjSXw#;3_>O2SWYNrweTiem_f1Hk(g!sC+R zhN5|fr4&5V|4`4lhLApz&qdY(B?;aa5jQQ?*7$}fJ>34UEehq~n?p87+^q|sQOBvW z#nQYdz54E4QFDzM`^k$Gm>G0(TkdCzqILK0b-1D04RW$$?fB=q+ZPf#ilJtEh872f zNl1Jq{3ZLSx&j{w0d&J%1@Oz-nes;!q@mQ3*7nmZ*_-x_?ZfStuMdrXe(_B7bXRA6 zNc2JL?4c*p`1>X-Y?0@)FVZ0{b!TvL0#AT&gsNweex}1Y-*sxgClgNK`%DbX^D**5 z@CL#q3Vqx~5Hw_!$Ep*p<-6{O%$zm3YTW!6{o@uHpSv?2*&KN<`!Y*osUxp^WwREQ zy|@)k!x*YbjAx8$nrA_CmhhJ(Jji2+=Ret|=@aK@nS@VI$UJPhV!xM&VCK!)mu*{+ z)azb}#+1VP`eGaC2yMjk{~qahZmG%}>uW9_$T<7DT6G_qm!u>(=Em8d6XY2>`<*O3 z7|s1E+~{7s8iJ1Ld2+ARX~mNxLrHc9p`kSa%icL|d9*zEgW88#cXG?ed}XqH&gKYCevykZW1!>oAlIGWF9k+ZbRh{<1jINURsx@U9q8e>k7`NKMhv``+PaSOc@ zPCXJoY1!cuL%)b(AjZOpVL~Y18suSD6)+dhA%7l_cs>O4BaiS5^*UgE{i9<_=y_gK za^Pb3A-WD)V>c+>KLU4U>~@gT&E00i8%|XR4nTN9vH9nZiT_cfvyY+$Z1VLuqdXwJ zY#)~&=RL=6AoTH+$iVsxbcABlzhd?iF7eFEZ3&9Vua_W#)RsX+6YqRd=AGu(0U25H%1 zQfk)ZYa7VW41c3KR%kqCaXd|UFYvSDBjW}4Hpsh*+e}}7dM&#Xm7{F0WIn80V3V;n zkUrgK;WfJcsv8D5N6)~46-gbZKIlavLp68J_m&dXO4|rGg-^mU2aA8ILD*9plu2yM9YuTDs_d$&R zFUjuBWvjN!Fs|JEhfV*JXFnSfq3*NKQy_`#NtHxMi~GrV&oYjk5)0STA=p3l5%12NIT!S z8RJ)I%mVk)7=2{79tZ|CXLv;Ht-+S8TWO>&F-SY-aR6PjUqg=Rz_$3Jdr}x+{)gr8 z__&bjwNrr;EyywyiSFp!FIi@+oh6N>t;3^(bgG1Z=$GZkU(-|4o`zJ}52HLkfis5P zb=NYR9?v|#xjgEub?W1WeF+cyM(`+>e9BR1gy*-lPS9JpR;Np)m~Eo=6Pwjvpb%Ei zf)ZRcQJOrxW*#=}st|LiOeadN@1b8(YIDKd0Tnc-%&M_RY;&6rEJHa$eNQ?DBxPng z8zI%;;=s7>o@>?oM;?L9&%Qrc6a~=GPel&}Q%gz!SC`XrI1tedVi2s-9aNgYgEwNc z{|&mKNo_vw+^rk-tH!-G`9^IVzcAO^MV?wmd&@TVp;$}frr%zX$}jS7wb6n zSd1!6m`yYNIhNK485(*ij+`6#7!EPeqoQR4w)+6BN{9S2yjzIm4i;S1k}W|0ncOAQ zkf;GAL-3ZI!Eq*)F1w|886W_Y``R+R`+DD#IClU|I<(v3 z?`YU_a~`Gj%?uA7_p{Jj9c(!(H+XLJg!R&&!n(_!9Eb?Nr`o!^Zl%REgU&N7dWjTm z3#s(_cdKF<2c#({5~an`B}awyl*gw#m-bD}b`7nY_e+9o(wQ;F zKe;K{Obc}Rlh}4B8jNT@*%7zQN z0Ka;eW-AVhkn?AClneiUfp?PwiC4~NlfsG4w2x29T!y44<`fL%XE^JGYnp`{dHphI zzg^2;?ijImcjvA68b9Os@#NdBgZ6=olC7z!#?yhCvhAnlh6WWbsU(we&>>st7oYSU@^M`S)3Jyywmvt7Ed-+9}MeaDvW@%E6# z6;vg12JD6X9KN&4gwGq-eAkj>kE1ttCi ztx~%3{;RLev<5%>#wHMbjCCu~43d(7+}DJ_1e#ExsxmL{nAMZx$tF*Ei&hMsmY?z- z&JU+rwDn>g>5jbKh3I|ahlMAgIwnIFP#5t`FA}NvJ zJI0{O0aV$jCrS-!03 z$u66nc@g2aQ_FY?UeB|Q`$J9QZs(aaNectny`~G9>qFwQ?ZuqmFC??ojE(jnxg(Qv z@r}XKLcys-rMbG8wWmYi~;`KQDl8gQd&~t-<0U^{95nE%X9yERMa{%M_=P_s; zT-sNIi)86QszI3F<9-o0Q%j6@W0T5vQ_nf}{!tR|%on-*vuR2Fx5MFP1qG)5S9S%p z@p3lDYg@J0IKp=so3Z;W(Vs!p#L|j%cFU5k(~&sx%-XDa4MJH4p^QJD$EMI3PZ9zf zULMt&uLqe2&fV1=u*2KnJ=X^=o_V;gEQAj#oIJbGv&M&d|`H;}qpXigO z5SD3VDfZ_ajVyV#lfTJtr$CW8m|~uek))ZgSd`i?dhx~5L@zVr{w&EgcrZrAXpM30 zy`EILg|ExG6;ds4wLURW6QDv@pa;~WLaMNkK013j4k_xY`3A6`Q2QygD6Wq^P=}49 zPGc4=`iGz1i9Ee+W1;+%s~~q)6MN<2R>NJlUoR^2YUS@Kbx4SR5&67QgWfmxKFY(u z-X}H~dXQ%M9;eHU9Qtt@_gkOl`kNNjiD)9EA=|Pj)OV0&BiEz5xmB4msgNz}Z!>u5 zdk%H<$nG4pei~o!t@*f@+x9;gz!bHW-g9b2KsQ`4DO@J*HHaz$e<{N8Wvvn#bdTeev54B8$U;0jSU z31K%XQROWrWCfHqQutK-wH0Ny`Y6^Cn-&8-L-ZI3*KNL)Cd1(bN6OlnICZA8L^%fq z04rhK>d0hmk8xTu0P&qZ@!z6VEr!V^KN!1+_JZ z;ecJ?e!MJcTE(t~GXMM_B5ImmYD9MQq9KtCaiyDmrj_Daz(^lJz-cstwG1C{!`}f4AND)Q9V9e1c3wZk8Iq$Bd zgDTe;7AdgPPIvx6fEU)v>X6p}CmC;`L^EI5vwu1-$;CW}KGzU&$`QhC@cKu({>9 ziVQlw>`!&9y=B<$8osPJwCncC@6np!q)hX*aiL}fobAeh%Zq5Rz%Sg>ZGMG;EL0Oi z(Lhr+c~2zt*VoVpFP-fY67@@ZRQ0MZhND9a{r19eG0jPiro#MxIiIItw}%F>^Quw=bZ~cLUOca*Lyf ze8sGSfFAW7^v8KOr==u6KXu+AVRv&q|KK7+SXEFd&+5Y>^1ZJ5t<}N)m2^>5eC+)- zQB|64EHHr;zqEPAd!I3l(He|@n&@sGFFi$V(@bJM=oUlrWlS0CUy`CStqG@{talj- zs0?-g{O|lUGA!?@F2bvjC!Z5SYZDMW^tg{7~rUrT*{*b5#BI{ z)O|cCq?;-hjpG>T? z21|`Z*My``1f)B`Xkg-sBw(?Y7x-WXApoJ|OmkBHPV`l_qP_rz!f7=}W>L2`+=<^q z-8Bh_}PEX{f;<%2%HeB%kp^gl%UJX+p_zB$ttU6xE+pI?Do9y^|Tvvp9K4ST4q?B73@z=4qG(LZc z93OpmjI|j{tDkeh}hZs~R==sN}L0>9uHgZDMh{uNe;E$9UxOgfm z2gvkE`D)~3>bl5xo93bx5bOUAfZI!~gRup}$v*zU&q-md4IT$gzk}^1kuTsSKt%?| z(#j0I-2&_3Rv$xoMwnuMXziUH`*q@SGCW34NIP+!*$>{i!fXOjAHa4lM!s(~k&FT= z5c@fL(KNzqbVwjX)Wfu!A45`verw^#V48g zX>CE;Nl?S#Vk_H%eBWRQs!97hi;lEXU(db#z{pMmV@h`9d1FF@88f2?$5;fNi53M= z#>WldGrc&zO|nFXgt)*(H?Lpy3w;{ax_X`s^?B3Y`ZJJm6Ngjb%e*Mv?TX%QuobB%P6=~7QTyq+`qQi$4hucwr2;_CHcWEVd?n+oP?gV z4f0*2>xmysY~I6kBBPpk&VnGeEbCi&b*pM^b(4EKHt&dZDz%@Vg5nu>9x(vcT`EAM z&tuesKNyjv_c(B6i*p*ky;UvrsR|47Ydv7rFq^EodzTSx8@x1U@A3$X+&y6}aR#FB z+!B{{(`py!>O2#eNUYc`!nM9XMAq`SPgbm>4urG3>e4k+O&+((gt;xzyGBaax_*S- z67#!#ALzZyl)(v6iA;6m)2a}l2*zc3D1V9BLql*GJ@@Rr8mf7+1Wj76SihszFVser zS?uRg;(aB7#_oFSCS!lk&5w#LpDF{Q)1`LWO3UM`GX@(1KPJ;0td1Il49}?#NhX~G&2mn~8#RJuWuS?3! z<|#J1Ri-dksOS5)1iQv1ei(oVQ6d50fbAJP={UaT!qQZC4NP{ZHn{-JsQl?i=1#-^s3W@qU( zW(qbjglUOn$3u{f!UsDS#@*)h({3ethJGs6Y%UXXMndK3uS4Go=e359=X7=6Zm!9= z-FcTrz~UNbv#KQTZ4`IrToV-rm5+t!`DfVBRgU3H9`9@m}NVzi#shd1p!D zE_T1CV>pe`lt5FLK?$+Vk1~kLg9RTu&!cXko_z* ze+m*Dw`yF95-Oy3u0w+HszcLU%pKw~0Ya1_27M{a(%zjCyc6qqU#zmmq=`A#|OdnKN`mTLYb>31B&4+JeH*6$luP4LFIwW`o%+oh`G$7oOG1XuW9eX&cj7(ZR z54}DYx2kki#HVe}gNchbNJfCrztdRqkG3mIJ*$&(ZRJw$o0n2JEvqFDiK;009r`SK zP9K92OOHu#y42JyJA8dG7a}l%CmUKYIFyKm@jyFNB#O_3Dp)U(i|EwkK-$b)!^X?f zcU){z1A=cPGaQZTbtmP!RR8R4;86F#(u64HIW^aE*OeJO^0LVv$#80Il9ucg(L8H5 zy>p7}o^-&)!JY^_Y1K>agG9%B+Y7^+S#!co@)f~tOE+#evNuZ!!^VM*eVlX0RtPVn9NbBj z&$hXWCTE;g70Id&aqN}Mgm<{@4}NvHcvZI3zDzaG+to7;iahfhn5&fHv;3HY1$G{P z8@)?J(d#t4eJYAoCuj-7v6=V7{@~f3p{d)m2J)*d(!=z9s>rrjN`g_c@HydgbcOM0 zZ+yyfBRf*&kCmUX_ujTyvd(pmWY;eWs%6`h1p(CHoSK!j&+N|&zct9oi;h%y6|QQP z?W_;*EOK0IS#vk14Xt5Myad1o0pKXghXk^AV;UDycy=V#f`|MHsocv3K?iCai;ULW z4WVJb`kS08FuC4o(t49QR(9#w?Av+0uEp3lFqYdLb#8qoc8_ioybsynbAcgh)8zd2 zgjuO#2T}mF8B1%KW7C*hEbV2h&U@m#%wVsRPZ!#I-7iY_NiTziLjdB5JkYJoJo#^Y zL){q0-rX(kjhBtjo^I^V2@kt)MQF2Yj24sO=ie^UpZE=;XY0J zovc)iDiXyV5*soRwR!VAFsWD54cNZj~&lozZ9 z7zr9kSLpPev7>oP)S7PVZ}PdKip`S}tWiXlA6n|*o7bqjJk)BY-=OSLrBT1davJao zm?w}`grGf;dU)8X2ryl?SRdt{(%FbjRnnPh2!597K#1Ej2C%g4$+itX_II|&b~vX8 zF!rWxTHbreB=483oEtyp;ac5zE}fjS%(0ZBv~_C2PH?YnM8sv4g<4-NZar{#T;33M zE+qgJEQ6<2M|Oo<&QQ&vL>6r>f(Dm73U?}6_i z{NrTC7@U-cPt%YDG6Z3C0edEqU{0kEjn-yQ6g`8oPY+@Xz1UD7J#;_4<8K3C{B525 z#w{;+u7z%}<;fWoCJFC!NbAupq2dB|b@~aHeCTYsefnnB)Al3p&MO{;tUT>w z^|+PpEHaoKyDlOxWWreA$eT`e(I|llZIvglr}0vV*@Rv2^ti_UOPZ+D8QX8+E&{wv zUu;+jjS_q#5%xKDPyto~2M5QKUTP(L>nRbQo-t=>>PjWTH%|i@#NYZ%SJ`kV^&I{OTV>!h-bT zu?qPt1~3hpnpZ=fu}VA#^Mds6wkD6xH*^{YKMhyzt=~rnkM988>W`&6ifQwcP z;(waNvjI4cd~!UY&QWcSflvDS%YPid{pI>w7#K8OXyOJq z`0KQ4_<~DP=;C-BX`aAwDLWEn)R~ZtmuCnxhfl>a_H|CRYO12L3}l(DE&V37W?wox zQmpJt_IHro=y>d1(_Jl%tK>;e7+q=zo#JZJ5Eb+;%WSB1Ley`!<1%Hu+}|U)SO_Hr z&Dqf#?l>v>UYKq&>3xA->0jHAVu)3m1aBZK7?`@BTu)M2NfoI-$S`adCh(NA4dXj& z0)ku6lMykcpQ*zERWx?0iO0t^F8OTRW$2Gv;ph@EN*~ju0?%NE8DgHQE`~XAu3}Ww ziO)a`vIz}JJ35RV2vIKB@DT@15CBi=skJqHFFyXO*$FSRYTel`e7*;BotXrq@PxFW zdZfzph~L1)|HW3{Ak=~t)C0`kuNCoCDhj@xtjXv@$ANpE$vrCp`{KlGc%J-shtfpR zX|(g!J~@2|B@1A1ASZrW-3RTAEg8H;FRyB>uo@m7b~~1U{tC<2)g$m&6;tzN z1~W4>U#I3ybOn{U+Lw76OX%45lFSHR=6HU;6iefkJCU^2@gV`^@ujB&nLzH6h)M@( zKjmRVUUz|Me?S<$^iACiUZt*=**xt)_TzwvnY}Zw$9h@WN~OKA)J{Q?Z8F0oe1nUa zo*2lCnMQaQ!#|qstW(VX*5t-?+W$-T{WQzhq=w8RT_!k3!o`Kc{dS7Qp3`4?3SOW3 zRI1-OcR0fHK(MV;c%@&qQL*RHkyY~#Sq(-uC7Gdqf*qkn;381ntf>qLPKk;f0t&jc zTuN*s0Nk35;0h`-*w;XL=*#I@_v>kqXxOFw(JU_^%OGCR$tn^z;(yQ({K@tjmi~<2 zGKjufuEKdsO?&LrkfJS|3|>g&O>G@X-RFI7XKN|7P7D+BzVNb{ykn)5F05g2y-n-2 z>QYM&7q61Oex2X%yn_|Qmhv!_j!dmWHIjD1rQI%AY99!BOQ1zZvdP1yrX8y;k`YS5 zi_i-l*!XQB##-If?Y9H`Gu8(Phegcxsw|xV!{N~evspWai~H9Vtnc=|yAYFT>Q`m* zfConBHf|O;sxa6$Pk|c5Cx=UG~G9@8O@MI?W|)8{vl3R6i9LP5<{!(qngA_>Z*!X!;r z3003z5}_#;Ez;mq1V#KOPdnZPElDkqC6g5hs~Z2HL~(>0o#aeV{s5IPnusN z)60-3BJgh8Fd&;rDxT#ED;x@U@omgE_Zwd9O+sjRgjx${zc`o^Y8zI%diR%!$a|MW zDWz|y_p_GxK!Yf|zT*3TX0-dHMolWB4_Ya%p%$&dfKZn|=1>}W*G3PJTAGNQAuf_8 zc$uxRI?*Iyw0QZ`)bMalKwmz$*1ZJD(4r%I84S0!G;l&^$8W|O!E1O0PlJc=4ZS~7 zCLg=puupy=!}aLLh(j6PZU54Eg|9-QvOKf+kxRj6X`yP(Vh93p277Dt>*YVFd(ul@ zR2@n*ImXhJJO^>v-hO0D_e7uBxO_Z5(43U=2qZC74~-t6SLH;N^XOj8II9K>KU^Ma z2-So4iQccD>kr-Q9Dd_w`t-Fdj}6iDO*5$?B-)@`R^lt3r)8m@PlvvrMwdEb9u9Mi zqzwZ~&Z+?9J-Hp;;x-3+*Y4E$x+1Ce*YiKkn3_+T#u`bw0q+6nfiMd6D#3J~v#cnHuz0RYEk#KVW4SK3Vn&>@tw> znz&$RF{5WfmWy*jQCaP>fW~k%!U8))$I6C=-WCr|26=zUmwnpCH%Vl z5ZgBYfF}MPsT32^Fb}@}O2mjU{*8Zp~WMCJ=1xW$kyIyQ*pExvS%UGLjJY)D5>|u#h zBaqV6Au$sf&UfJ^=puORKTm!uqM{LUe$+6kL=4ZjkJp=514qmisT=JeD@>ZrNDy6s zn+c*U#?zFLD!KMWs7>*$u!)`Z@A!vd8x%7Q@o37?a!6D#l!2?+LuY^7gf%LRxyy(i zbzf3V2(pr4T@By=em`QHM|}SEdy}K-iX#SxaxTd9gnOmQ%q-1Fr_V5p&?0lo%AOU~ zU#jr3Wl+>w+E*FoI(%2Us*!%#23Bzkbxa-TL~Fqr>pffWqc# zQr(02JBgUkiYV-Ef2)u<`ycWEq)3QzUe7+yKgj-G;_Q0m&Pcmw%6q@nLuHc|otl7wgv9O(5gAt zN;!6!(cZ9Vy~U!!w-Z&I{I`!M-!>e2KiNMPHg>>t@#nNpm{pd9Y?fuGJeY3&p3dRZ zsrFTie=!%mSmp5=o^wNbN>HH`l<;WQaE9Umps?Uq0HXO)Y5-PJxwu7|S@nv!>)i5q zvcO`C4R;l=&wx383TL{6kppE>vb<$&d+n~`iCT%XV^yZW4qUCWz3Y(h90EE$Kppxh z24Yxr8L$lQ89)m*SkaYsWZoAm>6{WU=j^O_xaI+zUo-s~chiR!KzB$(a*}vU`MWnA zr+KGBD5RX#qGRzKb(c)Giy0@SY}IdXUV9g^B6TYMc3?&7_E^mwD^dg0=PmCJ{;*^2 zsxG#*^R|CqrR*-^AKB9qwB=qK?;q`sdv1z~h5+U9;h|JLH^9;V+kt#R5X~rbr@#@_ z!$LG-}zr!3ktF}r8- z_0X8=g3z3xH8y!&5w|D_Zam#Qk@V<$rhLUa5{5j$fOC#)U_R}JLGntif0yGFWmsUR zN@!?Ualzt=ds%r1@jN!?#l5n_UzRq#1J*E5_mq;}tsuZL4*OIfdt(tsDj}UsM#e7f z%eJ{)&vcmd*L51LA=%c$DdbU%3Ia86iUX8vxXNZF@`*iLy1yjOQskr-khOX_Iir?g z?ITwvA=&-qsJ1~3emIITs76moyap#&JV(q;MkW;TFSDk&P?2OGETXk}V$KfJ2MZP$ zV2#?UWs)2+d}4sOBLs8Ju7p!bi!y4&AI*l&wt`S7a|2mplq;) z=9wU`=5h(05&SbkKb{h>H9j@Zv{DVwTDh1L_r+zpIs|ut3~a$*Gg#1P`LNJzq>+G6 zxNWjz5JeWY5M!tu_+vUQ79uPXlhaFe{BbDX2msQDLM_P&Mm(x&;*GhAj8zevh&2#~ z7@QGg0?F&w&d2mvt%fk)nr7&hp9?88EHE?NhGtymY~OYX)f>(_rYWb7v7BuOmy7x@ zFn00<3pY9C31~|l*Gztyj1D-kWxT=3mc5cFY@MJKPtPo1|NHvt*q3`FBLjJAcaKDi zs3QQUYDW$5^@z??6n-bf|Gue&t?z@@OswtYST{=UAvT?R5_JgK8IQ+F46l?r`wM-| zWsRH_KFb_&j25(PKs&P>q;z9H^>yA=h0qOL1I{rtOKb2%@uE1q#s2DSJBfL`Ojfb| zv$LXoLq)}nLdE+}2L=6ERHX`a#?~Pw5N_A-1!0nGav>wEINJjIscZit zEFP4PTUlgtO`JXcnaNGv?SPI?<P@d0Y+sP3crXIntucm9F9=ou z*tFCkV!%G8?A-oAllCv;kB+28rXKQH`67k0i`O%^Lb$ouV?nX)`5*abQlw}x;yhQL@PEwS}$1i0n^}%r^Pz^Aj%_k&r89RH{IDYmMD=1ce}ej()v7PP-pg5g!9|_@=ut zLU_b>W2y)AamdR>jBHrB;kem`Fcbbe4}A@Aog^MP0EHv2k{G~)@|mmk4oAPpq>2WM zQNVk|WH44JBF)r_AUoL?PZ0B0L2{Dqf?FZo`!mQiqEeMHiqRc8>znC6N0y(~UOfDE^S$dcFZgW{?irCUZIY-y6Vwr_ z7D}Wuqm|BdH;>t<=We)N1mDO;7rr1akeLwgjGvDSHx-a4`f@n&nQDN>4l(^}Y7r7B zFh2dCjDhAE#G=&rXd!m?kj7BgavA+JwR0Hk`oxR z*`(z3QmNQi0pJf~pfGN6(=^|JO7Dr11-XM0uY=jPn<{g!${a7u|7j>M>+`z5Yn4_T za-J0)Ln~M4^S>tNohr!08rV;h+3%KE@z_gscw@_#H_OJZV8fm{i2G=McxIq+I^sX& z;bPdNTz79j2!k@%r#1uud2{i9{W`kybAL-^qc;?sALPF66CItS9ZE#_f#_hqkI_rM zL(=PBP!DZQep~SkjI(*BxIJWiZbof>4%QO60*JPFfqw|~do9H8uAY|`aC2HyvBVo6 zj)8740-ngI2#NBRNc4f(x<4i^m_?R)mERu?vp6O^YD-gk0 z)h#mUmv96{T?@dEcv+Ln0LtNE#;^Xc>QE&d+)AXnl>V_klMl1Tq4n5adDwSPV~EHn z!|}Jq7)2y9KTJ(x36aV8;$19VEAw>PwqACDem&T!csLMp4nC^!QYRA$8MEO_VunI{ zmjbso^eCX-8D-R9b*bO8HvjaGD9?1|B~*8aXxZCgw?FkDW_F@Qmii%Lzt@qGZAbg6 zcD3yv8!@iWV)B}gwa!l%9EzNCcG@`I|OTgQBMu4*4`-xO9c@h0z}+reKp zk4(8&$REg0`j&o7VWmEl`!hDCSn@#}`p7>>rDoA>#~2ub;cnO`L(zTRQFc!!`cwV5 z@>4~^r~cOT8o-EX2Ql@2&{X6$P&>YBDqJ~sb60^gUsyDBkuMgaCPB|ZN&xIr?j8QO zkp|VfTpP~w6o1QJEQ7m#17}nl$XcwL7QQc{C%yo_pvpG~j$FxGLqtJ;D=I3IhG{3} zCqMt~!~zW3#f-*KJ((xOeTezEcjO5|cLYy*Lt`qdmu=PR7KSJyY$LNI=sNGIBLG+mOgc!Z?d} z1?C~zD6IKHBd#0e7RHrE8SWJj=K-|id0KXL2@FV<#;FLPoO74L! zi5sgqCa%}17+$xdAtGn&8GO?>PZ#Ol7}1N1G*EUcMctov#fa9fa&S1wn{30LEFUPp#v!sm+UKo7S$RmzYY0Q7Gfp65ntxPdE$c8uW>j{u0!D0Sy8Mlhwm zI~ZiiWVyXaZ30Y5jdJSI-!$4E-1r=39}4C8$uNEYa5me{b9_`;K0NlQlEps~%HOA> zpA~VbvySCC!shUssN1m;khL(YD-E+kUD@3;*D&jmVdB46YK{G9hR}$wgJWPdzZw(1 z%;Z%rCRm}05`wdiIIa3KY8<+qA#Su`#ZH$n_7E#0RCp-NAs2>J zft*tb(;3YoVz>kx6Y2w#thohjp(@B3ESX*HYJI)ZF#Nj6=>b82Xo9;`@001sr4*>O z5hW2tYHa>oOWJI)YJ)jR%TM7l5cV4ME~8hnkAmkAy8Zr?RzIek5Kj#4U9fdZ8Ghl( z8sb7ow$k8(r}VFpa)CQYG^@3cSnxt2XT|gkDha7d%<$|fLG6T_fWL4AyRzk>>b{;@ zc!gr#%u@;{hOnVQtku|C_@VNFQaL%gLU+7Gze{W4*o4uI(Wwu&a%qjT3)#&e_bje8 zlseqXx)Tq!^M2A;|rL*c8$350TALr4XwU3twW0smdrTUbNV+RDMs&}qDadQ z;F1L?2+Ke*SZCKrS*KWzuW-WG!vTX}5lmJ(Dt&NkQGhs8EAKM*7CQr@18)_l7W-@& zq`=_e7LBOanG(xT37PdROctW80zSUD^g_lr8IE5x1|dAG6)(Cg8~t4QS7piEITqgz zu+?peha_xRK9qaz;4zj_*bubIhq064O*&dtGT`&f5^P`;X{`BOaV`K!$^q9Or+OhP z_Fv(rbxx!zr{HyTh?KFtpgv&~KqdFdAdjhb$E1{|H4FFMd_Wr=-WfJN^<5UJ)hox12Y|PZ%C@R@S;+j5FL{~eixSOc#zi>3{O?*#}wT?Jkj4a z)o+IdJ7q`jWbArfHaR}ND?vy6`9c;=NBw)FWTS+0^BcK*M6Oi+V)qFaC5>>`CK{AC z57EBcBy-NA8$-v0FTo7mlcU~To|(#p3h<1C;r{0USyffTAhZ+MDrNvZIh5k|x7X{K zqXmV>_B}ETyM5KyZ*qKeDyMtjpSnhCxqY%{c2&Fj++{<>BWx>9pbG}yNH6%B!B&x& z9;1u-(Lar0O*Lt4F_E4jC4Z|b!ByuGrKpyJO|t5-pny=(=Mh0kIM(#Iy`@-S8%Hsh zEo;rvf3xVKz0r$gjG!*sy8@kKoZafNW*>Hd2?qS~_)N|KrY!68QCA>Nt(TgUnKt4p z)}S0`m@*+&;{uiA{PQ;KbqHty_(DRWKTd=cx^^tGDE0&qX?-lilTNKx(+Fh8lxdN93Ob9F=h$rYW-*AvI0 zU%$H6Hagp0{8#D7q|&#tYu(4TEuPC~vs)Hr*lLKj1 za1Y?#>ynwH!ZW?0nYfk;Z(bks&$ns`YJ9)O+JJojd5Gz2q)Uw*4ITbT*Q!bf;DuVS zc)`A+p{n+AWteYCbYW3MMb*w@4mU?e-<}a`QWqGsGtZ1rsc_FQSvmK$J2{2;IH1SC z>I|R)o3n=#99p1hgV#YBg>11=LVVbWni)((NyY~M#igPc7=FaONI41sWbA28Q{Efj z&k3)RiUNML395db4M9;-b6H9Ou5j-a+gmx?dM7tML8i_mV_pmuRiPD8*&ZM=Ar`S> z7XT&Xyh7qlEXD;OZRiY5YzGEw2k}9oo>e{Fy@zfVYK22eVF6vZT}41_@7_3$Pj zRO`Bbt{F%?&WJ$gRKz_RIW42<3yuCU`UICst;z6ZaC$lY?fsJ;L@u%YNLK(9RgZ3; zG|KV5wmEg#Xv)6^(Eq+>K8lZE;5%sow-5e7sDTXd=1%H<$f7?cDl^u{QY`*G+L^zF z8T)m(#D5w_>zn5%+c?d z`Wc3SPVW4pC8_ta7TmbkH#vCC`i)5W@({Q%M5$39pv8boGuC1<7w%GjiwJ^Q4~dL% znifgBc#mX>4kSwz6Hgtcz!SC!HMe0uL3o!$z^Q(!CqQ^3XB>60wRB0l$C046o%{SI zkM*y6(-4txEU9w;BvaUl=iT9_vS>dcRt)9j3lb=X*#MV2kgm(OBn4SH&4S;`8g-GuWes+vr;Eo zsMJ4Jn_4@-qcC!jVLRuQXdOel=E|CB`m@=+djEN$30ULyDOE2_2EUMBuK;Zb&-1)$ zS^%~qaIOdS{qu9i(WbtThWTtBp%?7AXBzz*q>8FmANB03BtuMT1FW%|^DWLkkMf18 z?$s$EDh{Y%{t*zcuV=@>SCk@!Gmw--(7G5iC8odI&d_l0)jhUJxT;319bd=d-5eUx zm(>_ZViInw))x}vgc+9!EA72r<>g=15&Qwa5_tjf*0R*Pef{0vPTF;jo!x&Qrs+M2 z)m$h0*^A?p|J{_dpwjMb<&QROn@?HY!-vT&#a3Q+RO-F4%Q=pA6$H z>=sQw{0p!Blf+MQO@l|Ff|6vR&;9a!S{IYKRPxIw_2lF}b7ek1Ctn<~FWO;Boe_ zTjp&mj|kWE-u&qHm7Rvzm<<&+-sp+G%hPqerd-~mT(L$n!)L?=1^peBK7oXpQh>3G z9b|iq)gJEfIX1uQ=%t3wXUE>_m-~5H0Pb6iQS4~sC%E=^Q?${{8CSk#N)kyZ+J;iQ z4qlE>I>#dSGTGYGetFL@zD03XcL_7dLhY~CNmg41KTXB#5ynYIy2+fQ&}-_Y#1nnGtDUGtHcDU z*SP_KkN!a{6WFCMb>h8xE^E=z1)90||1b`ifiDx!1vf}!@Pq?90>pXp#Iy@+Z-foo z!E~?bD)Kfr<&o~8loBfS9B~wS`tazkrfYBN!#sk!U+*73IX?1vvSO^~oz5aBhSNi> zK$`}mMeAefZ(;1oOdK;-(_zMXvSQr@v)y}{ZP-DFSONYTbc&iaDH50R$B{uCED9u) z6qtbE8)ByRNXgX)>M8-h0|G7(V}JcZ7Ya6s;Qj93`}9s+Jb)M^QH;*?h>M9mYl&neGL#jF1i7*QbUE^Q31t zpZ^_g#QFr>X2HxIb`=|u<`18&8Xax-8S5Ks%Sy^}o8`b`!==h!ZQ4&rgyh2lbNTykri`DEI%T$l513HQhJaIfH;GKR= zLzSOJhck9gq5SP{x!*lMrk2 z$wDoT`GB`tH9jxSOq7)3`{>`Qc*Y-1GAU zL68V3hY}ztTtfS6o-2Fg536$#=K~&}>SWsj6X7@23#0rVlWO*kt`8 z^+tR9)@%1Zm&bK2SunryVZ-bVZQ*vCj9#*BMY#_jR^Ed69>S0-Ccu>DqbY-r+v#lb z9j9Eq5iI?>?6M0aZ+Ko78K2o^@n>v?o~SY?2`uK46(E?BQMM}v2D_yTQQDk1Uk&2s zKMw{qhp`$na5u)<#yaHd(%a_ALm7P_R^8a}XrA?$p8H*Xcz|@eB!mN&etl+Q^7E2S6`vne zzDON;T+h)L4(69d_;V`5{Kh|58ova>D)xt)AhValGe^27(RcG@d+~7TTTm&`f^mhU z^4fiTwYj|x@gHQG1Veq2*K3mu3-!HP>E0?P;7RLrVw|}L1#_^OvKvdLKK{4ZZ{sv& zere9Le-@*3UvyklqMzYtRjtOo^}HN7duv4h|$x z_Aa`2xt^I&XEz}vz^{f0mHMz@cqw>ygPHt=E!%%L|{+Tfg zp%EA(DWj-uPM&a0>ix;dlIq2;kjX75YtMxyTYtfTnO{}NgERXI(&b*BqYvb$ zZ4pz$od`CMc?j)14J(<|7-1l6?yU1MD3~2fw^Pg0wT(?q+!j~MGcW}WV&b1ft+(@BiJqtdeh>k9Riqgl=ElNBkI-o5OR z@%DzQqnroJsH9$wEGdP$yZ*S@f!$Iu%+Kop7YHRBQn6spRV-M2kGKGvgH061@OVDF z*0vpy8dWQfIbtjaT?N^8LP~XmMwq#h7LFt)Cfvjs#?$Oh?W{(SA%g-{2ZuE!?mbi~ zD^Zqtx$5;>r}!Lm$>aLA(Cf`fNqac{b$olxm3j_RtTBmY{If2KL9jP_MkJcTU{>t> z8vOr%Vk*`XhayTlPyT)*8{9)=_%IH{~W4zR{D!Oz0 zSl6Al)N!Kf(9dwWLA>e>T@p#bpz51Zfv}$=)&V}^nI1U5&GYw``|OL-+nKeu|Ei<< z5{zRXf4|)u2xg*T#E+K?|Bg{A-^vDuUq-)+dEKJEcKGkZhI~<$XtFzULMKvZK5b+p zOG#RC6qq;X1mQ@YFY}vsdyUrTBwQpE5U?sne@JIh`J~WcCTFc$py=xVy5XBc zQT5kQD_QC#QYUqXm$)`WP|Sjn>q4AfpBu~Ub=+mI^~G2aTNk`9M+$>+)~#D`@c=?J zx4F6bDOX~Kha}d>aFYf4!ca*{(OYm6i4lP-OxpJTAp7e90^J@`hUno7!}JWN=pyj3F~yN4kfE`k05{t-+{&!UQuo=^T>oczQCQ+rsM)@H`ey(rA0wANK* zZSqr2i9adt%8tfSvQoIy@CCmNu=r2_vQm3=9sBrmRXD*{-ixs_fE8z+({jR6l>&hj zu>|j<*2mR14T)D?FI=njuadQppd`!*2Z{t}8-%e|R0XdOl^qFDewt8b_`T5DbU!%j z4cj(wn!o1Sw1>H$J}<92c<1o@ed8l+(&1taK@CHUf{-DaR!3rx>KO~>s7gd=5NqgQ ze%L#y6HZ{P4GY;Omr)^1_~1PG!rs#DMp#><+hC9!rAL|#rpNdFr546B$L~PFP-z8ybi^RQw!XU zVG1E?7L)P;CmS)Dr)N}uf1jsp==^5xnN6j}%M|Ic?01+&aP&^hpN)EIIvp{Cn|>pV zTlDx<@>*7FxD<;oh!t%O0zIzWDT3@K8rG^tPk;nj;5p%CVVlUzwAWH2b3(^?GJv3j z|7nh@=Fxx9!+b=C1#SRT@TM z(=s;W*Z^Qa^%C5L8_+euSq4-re1#VoVY$lCjgrlN-m zhS!%g{oOezyIDMmMiLVE%2a3<1l!&FHYvY7_pK1t8qx#n@6f^GenY8Id%<5-$%>KD zotFBf{Ze5LQ!9r<7blCVI@(UveqI)R#^_$s7<*ZW)id@oo43*<^k%HmPN3-nf;Gad zkV}*LbR^AuE-N=R`Qvz^ zUQH89TrCoOF{s+E34lQ8<#x@rW)rp@+mmf8*y&WV3{(B{R_HDrViUb3rjRm$iOInADpi(DHHG%hMD(LOKxm2ub(SXnmt?sux0i937fHoLO6 zfV)+d{}LbQGh~|d_S(o~wU(rU1Mr9`O-2u16VVy$o1ph(GOPhhNwo?%ByOC@OM4em|pQD#q{5kz>l2kpp%$oGaO$dFg)~@Siia5xcGj zCxUl2#0-A=JR0wG7Pr(tj)VYi3Z_W+2D<^nE_=M=`EKv?bWm@l;qrg7KH#*OiE?zW2(x*kEY-NGaXDL z2;GF83UOVZ)brGLwlvnM+anPCQzqiS+Y5f%-n)|3HUxe?@GGwfCjI7DEiMF^3w-ew z4*{zH!a}Az2wWWf{?->K%RYbIfXddXbq;$@E2Jh`jVs_cF_mBUAj~aIi$RG{(c;8p zt|wau$;Xf$Q#ao&A*Q5c+J^v#*GK7q^G|!zo*U&DYJ#*quNMv(4BKh`#@{pAJAv0eId4jkK6jk_41I8j;_wy z{Y@P@7z>~8`RQ=B(PH?rD0efG@= zuRO?;myQ^X)3k0^})uWcTw|# znpsZsuz_zuPW+`01yx?VuW3y3jiP4VJ|r3%MGL zm0Gz$^CAMc=jw&rFu$J8+JuZw<>5(XXHjM6OTKT+r_PtVvUKK9sTY4d`=o~-{o1Ljh1e%hQ(+#9s$Z1ve82I2g*U?=PwY8fiI(&#a3t{}dsPq-VfTQ@LT*9}p}>rO8_lgg{e`VP{WPonb>xQv5gcIBT!r~5 z9;2WXkg~{JV&#$Q-*D2wnQg0~u_|ekS9_(`>s|Lf+P;KBXm>32H9<~<*`WURtGL1` z_y^WZjo*4d|H5~=hh+5~tMz9B);MhT>)zW5r+>$Zu+&$4>i&?kcC787MaD*DLE*{v zc4fug-sg8gGpm~AmVWT#-+V#Nz1(9`C%>Vwo667kh62h?6H{AENGan+Qvjo=8`*k3 zcr-OM&4Y0Zo(?zYIGnnN zS%3|T$8r8@>Sou1PjMB24oER{DqQI}QLZGp73`7gJa0tbCgmZ(8H%KzMVH&}^A6pk1%LwJ-&N@9Yf#v*|TY=YkF zVRc)Eqb0&BU^%!|ttuOKn|jW^`ZUyUT_flsL7bWMG2ecJ;p#c2F(!$#`&&w9n4-Ys zA3+va#_*nn3!4zB?*qBe_`ze{_2Rbzx#v`peI1{6z(94no)lzlEtqQgV|0q_*pFEc z=wL0SVn}mu0r)oo!n+qc>}0!Bda1Vt7hU4Lq}+f|1>sLMh-z2tuz8I2!aYAF!xhc) z=+DPOszy^j!>6hA^@CoJVtmip@DJL2`s5BkTJTG19uaeHWOEV>VpfhV@jwx5k@BnB zQcO{0&`7t;S0{NjmLMe%0YGjw7fC=316KQVScKv)$RG;yE&p;A*o=u?@*Ae(2Wa^A z%uP?;B<#v*&u%^0-}0pJU59Qky+Ev8|FTQ8%gy}lXFX4NkZyNyHGq#lj6ebETx4Hj zP{_3bARyskBhyfYYcuf=w#s`6ygqN0c!rf6`Vm6;;*=rKAX6<~_tOvm_e><SaD-Z1O9iG9Ofs_6MF4N(j`T?{jZKWVxgP6ZJGJa!_tfXONoG%VBJDrh#T~(w z=}7-ZPOvUJa}Q|Z_C9I;6ei|Au*{?sR!tQCe(EWn{QqB3Rw_9(qK zUdQ*RU@*Kayr*HdRr|()W1oqQqV?nXW@5(E#YTpXeXs?%isWLPwp&VXKp13V#exA6wSWm|hlTeLxD#QryH*QIrxHC_Ltr{(bJ58CZy^gvV=@W_g35F5t-uQ*ykPI; zn-5Ibr#Pe5M*OiSjlgPiRSnE%C&o$awVZ+KpWW9f`;BA9W#R&7v}g=oK#~dfde!WWk4?VssIt1JZ>ypJ>Neg z>FpZ@sl-s3z1uaobpJ!%w6G}l(A}?eV21Lcc=E3D^UYoPsgU6(!(gpnq-H1crsl1- zlpzo?yfsawTeM>}d!#cj(+j?8+>>ae^FB&K$r(}V^_$Y0l;RARhRhQEew|$9jb}IB z#70dX&W*g&eJpU|XuGJr(@yl^apH(wQpHHKtk;z7Obp1-QrKeh03rvA*THalCHuSf z%D+fMAqK2Do$UAP9F2w}DnqHbJvKlYjXnR9Z)Z^A~1yG#e@sMR3Hal9Tv*Ps( z1==Mi4n_{UZYa!XA3HPkFxV$pyf3a9M6o)ODVf+Br1=lab~WBuKJH>An8N9g$$@k$sd4%k(v8RLdu@xhwJgp(Km+ zCo0UEn=$Lfear>=7eV^CM?z=mZgMSLP$;je>h4oyhvgVt+|c{^!rKedHrS(P=aU9!k7J1kicKP91TSom8@2%B8A`ZL&U$L$usHKj0=DaBF=XR6< zWF{AoK5U)gqS&{;B4$c4HEiZtzWCGVrjy#b5hWEhty`8#w}fsHN52%;KYTth6G#t) z4+u`fI#T*#d;%j0YLpbxteK%vLvaN<&?V51P#$1}tLj^+`*;i}Lt>{_LpFpMF&FU< zlnOLA#*Ab^4+;0AGRRS1h;pIKs=+3~o_==rY^H+MckUgn!?x7DofSVLO;kTsp@96DfzExGy1ANSXUW)QW|PL|N3>E*cA5R_cO*sA$Q&G9|U)>sW&Eth+}>sL;2 z&swnFM@Q$Tr-?icj(;8;EqYi~w?m+5^NTTHfg=Ex%06hN7o)vNRC`jWHY3ws`N7dxqv$PSEVJ8JH-Bw05|kWbi?eW zOb3kwQP+n{=_Bt$IxNEyC^=FQqe65iz|9W2 z0iD3vGw|ZtsgJMnSzrh-==^CZ2#WNl@nKB05l+`!#xhI@PN!1}YZM^7xnu?-L3RhX z!$O94#(Iv8C>ThPJB=xyqhxV&bKo59%A+Ow;M!u?_&$miXPz~G+Tx^{W0SHzj9U?D zGa-lo%7(JelzxMKSP}+}ih^`dI5#+Ju}EWRDpa#bhOT7B1(2lewRRIzrGJKyMB;TB z|B|oEj{<5u4?MqWs8iMFG4x;(Vn6@O<-fcQIx*h@^B4}+vswR?91uiQMril0#++`c zBT$~8kLrh38PbcenWEW$@oaBU_w)kJ8fMi{USCothX;)#w?>qgMR+p$d_R;IjZEIo z+D9l7F9Yg4d+GEDSd*FaB+C&mfXt}TxqwKEFR3v|9x-u$2RmDTZ+K6Obc?)<-E*Gl z>Gp8fMg06i+I7!sM7BG+d_o>J8j&`%$3i{`>HGfS2l96z~Tu@5OASP>7H5p@^gJU~lN_Byd77~2P@N*H2t(^+xo<%0PUUJnO-b6)Ne z#(2xiBNg(S&u$eR+Zj;FnWO7QW%u^7^^LDYptr?*0A~)>`{Ld!)VwuVNJj{x(9gL4 zu^8O(crOF^!dtr5R~xuL=RGQUf!*|TgOH=woX1+0SIwYQ3&AE&vl?p@j`;hH`5h)oL&SX&6A%jrSj_fIxGeBjgBl}OA9#BYk zk_*mcU(~xdklMJk7ii0v7$$qh42`_oMbB^N8i0LX{8wVr$ZwOP^5>8TzOkuDy8jiV z2ec+Uv3{}gJcSB{P~CMSj2Ynk6_Q#!PU_TnclA~$BX>{ZOWzaUY`FktXVzzeF9GGi zmN!Ik9-gScCQDyik#$FylV95DlP(TXge;rNDTbL>eu|YmA+u)Rz37k(#r_*(MoBcd zm0C3Y=nT!2*$ng|3ZvOKKyr9^2gtMA+2Qi%C~aEWu=A|smGSOsHGc~H%HEkZnIAp% zNKuNyr9@U2;0lyE9dJ2)$ip7SLcMa`pq7UnW)=>c0wSAkG#;qeJ9N$Edwksi9?^wn zgK^xfoLWMdM?_F#)4|a&}8&oxd7YyCOr*d6eHj?jfre>vP1?#{L5@E;i2#va>0QAI@khN(2=h$?_gD$|p0ze~QyxrVoFx_JRNR$|veB?59I_5^6vFy}zkh7quIE~$_ejHID3 z?vG7Zh1)mJiq6$|kQMVC-B#X_>#c~$F%^XmTaCaMVJi27-sTGW;Y-ntbe?ePQ%ZB_#N6+%!C`$C| zNb`6|24f2};N#ZmXQRaa5nh8Y+}k4Zz0Vw+XfOzkTqMk;AazfmeCfcMQjW%oEMXr1 zV1;X;Mjh=l|4VHo+k3LT8IanTwUizLW2@4Yg`M-<6g=lmr(Pqhe)-drC2riN8?%?D zUVgcVl!X~CsM$jFjsWUyVDbP6t&%BSO>Df{)s zzr4&Pj00JU9d8wHta%dyx32kmd3ns8-J4dN1z9NpUdZ}Lj^0Jq>B~S292S1v5TKVbEeL#oPzCpl+ZO9P z-zXI6^3uhWuUTu#!V!6r{V<~$YqmU>vwteG5q4b&wL2_2?Yc5|cIUs~FhgIVag)td zgOgyWGHlfgFW8#XoWhkLZ3Eb^;ANAj%W6kQZ~E zE8*3krItEj%z(KcQvyFyO6q=<7It=B*uH6dLPWlzb82zizmGN_XfAXyk?$-&d+$!? zw9*?(O{Dg@X7rYNbE0Lf;asobs+@wiBMw5Z4;?Jq>N*Dc4jL%Lu^{Vhwbp)Jc!KLC z*8!I<-9xay4GIrK%aE77C0auuk0;ky>o$FIp<9KCqP!!DN)vj4oiBSQORTeB4*T^N zTf=ylyvsJ~9kL0w8ukhcy^o&(^vW(g2qKXLzcAobRE0a8%Vr+lD6XBT1>O|AwW)AVo&KjEeR;w}C z#2uCeuG{f77hff1kuAW4qa9zj!!iE~!GQfaZKHx4sNndfMoRYFMz0w?eQEx1wPNvLqOSMwZ z^Djoa^ITIL=n%?dEX~Jk9~;x6;bKRea2z1SBk~0@RF;DEUWZ-*H-w<^6bV{&WQ>pf z%_pX9ci*9=^1kXwOuTa~6#CU4K(@#55S0ZsStx>5ca>)nbE>N$jk{w(=vCoi`od)| zw|OoL=`qRJm|yg)^s@Ws9$)#4&g`?n;`v~p@`q?Cy@}A^=@scsE7zMFSY$kFG>KJ% z<#6Ge64Ykgl)9+7p+Mp@I_!ZVmK#Jyh<4ox5!p+8P-9!$WK=xu*03w>EXV)SL@zvf zz4E)64yDUE)jF+_*Y3^W`_JkK&E4c?ljNBnuDDlJC@e2V%Zz9&Bkd86H}WJDK5=BG zPH$vG$HC`E=W55d1mNQ=?)pci42D{!1kB3JC+ZDIU)Jeqmioa9-&oBfvuMkh%}q_e z*Da@wzcFw#f2~orH|enVh~j~Q;S|%26?x^4;^ohSxjo&X0tV+U41C_v`p*3A_G(xI z?t+8C39r`qZDoRM^3k!2@o*54ve~Z))PeiLrr=Uo+Tkg8u`9~S^6^kvB* zse3FVyy+Eg>v7EjMb2@+aA$<+Ww{=6J&R`XT5Gg_`P0SAJ;`)8xx8POE?;)q6|Pf> z_Aj=2Kkn^nPLcuq-rI`NlsmhOpd3JLWQwmKcLt3WMJ$L;Qrgxk+2pW|*h6U57+SQU z2Hsqc#1FqTz9^o7G05_3f7-72!;+3t%tXb2#<Sp>r&MUJDhu2i*9(tf3wCI<=?klXGCvvK#P(oG1vdTUH(w%#)FpOGFjU@G}#slHNy3YWI z=>->NVKTNHP_(9Nfk}L(Y%n_F@}=*!9veP!v>CsLbSfCZf~hkRmvRP8rqW#on@fjh zh==QtPMd0A1e76CyQMZG6!qk_FC=oc7DdB`)PTA36fJ4{ysQ#uLiDtyWtBsOU82ORnJSAeqMb|ZCi6qr%6IVE=DpM2OZRd z&4IRH8&n*z$3*9;83eEC3tvkd7e4MEYqOjy7<<~S{($HPf?>Uj;c9&Vw3tROPCVhn zD7MzNhMS&DzkF6?GG0-!sb`z5h-={Om8%c49ic*s$i(+`=8NyStL#_+W}#uGm)bMf zJ!&Lxuusk9Sv!Q0p_|BH!a}z>@LhZWj4!FW#$HG@HPqHf{h-6ddO8O6l8GrNlVfL@ zyjx=a%X_vB7+VbS3#epIYzg+h?{KVHCUyAooFw7y`nas=TebdA_7;W|+8kLTzn+!2 zl_`MOA2y?>%2|oay|4!B2dM+u$qq*)G}6hg%@~5dGA2w5%#ftUAZarldvO-AR(tf? zCL}C7=Uxw^uVwcUs==}KIF#%GrCv$!!WVaez6XFvg$7{kW+_#qrg`hx1@)0uX@}b$ z#WyaCN?*j}7R)}oVX?a`GqF^>5Y$Lo$_#2|Uk5-#ApOje3%g@y?na&Sq9?-N(DglP zXZJ!Y)d)&%rFkGVPhkzz6f=ewZ{A;Yv^*MMu~202TnPB1E;u#hg8GAi_zS_7GYf^e zAs4Jqrfkg{v-Qtoe{L0CD>Cs6U3opXbXddA=h>N#eWGlMdsI0jVr>@zJZLeiuNz(rG4oqALk=7_&5IU_2*TGUtnh!u)XYd`Am6_Mo{$v!&sH zd_31}iOZ6rVH3~U!yI9nNYt>e(blytr=`-Py;QEAcPQEGmRLBIyFfp47;8|?V3^0g z!Cq=XBi6{I3b`=HYZ|SIwV}0NcLd=@|u}&3Pj1bJ~@=R5O%0!mJXk3P9|0nfxYGmvl7|?A;JVq0|{a-a>)KYSnusGnz`MY&jSmOqA zK$pBvvK(|no-s<>M;r1TOpke9NL-Ys8$NEIjpPldVP0puO;>$+O)pTmY zQd<515<{VSYAnMa`G8tkxVXld2|4#_i4Argpp~m@NpATm9be3UcxyqFaI-qIv2C%# zsq(Y?&$=-WyV(^>#lZrT_@{Peb6pe#*xfK9znxXV8{Q^Qq{6}r88e#&@Wo~2M9@?w zXf7xL+@G^oyZu?Q;dGmUlP5?oy5Ve0Yq2%anFX3Z7hpxA{l=Gqtb>vM;m^7{haP@7 z6SS~K_@vjaI0rK{q0Nqnxwm`fZ9MDQVcoWH+@Y7%oMI#Mr&3C1vws7YWtqBVrXdP` zffpq!d18YtRW`>>L+M6yUdv_fH&<8p!g76=4R-wqr67?;b?sT9+vtc`2(3oS2a)bj zE9aUGVZzAj=9^}i#c|>a_P>ydrlE(f$Ss-c_zv4VL+b;|im|iRSN)^c%>SgO%fMsj zyYreePdS^^mKtS#FcJ>kym4IG;k~#}*eNLQphJDm&W~YeQ`lA=zf*G|;#!noHXQ|f zrSE;Q#jCBHiUGg{@(n7_mJ>k!ZfAa|RbnJx4Q+RLR*qOtaqzZ)Y?6q;9vZW45sb?40HwW%e=W&40Tf$E^C>}f}KNXFQJ%#49*Qe)(^8VrW!&P z=VW+`7M4pr?v#!hdzt)URN$H4wJfLAvm!FcL0UkZ9#zRV!~MJH#+^Q=6gs#X0TG~wK9BvN~(6{9PavYxtQ@YZEv>G zxE9c{?n3*Q==hU>2E}`;%{C^GJxFPA_AA6EHf6@gY^XP7`UB|)6}`SG(BW$tyC}X+ zRSsEA$2%Z(EA}`BpgaP028;>)GA;weTZL@!eK-fOIHynVip>e6Z6I?YAYuc}taSZ$ zK!IvyRqBFEU2Y&)isyt0V^&x5^_3Jhy+4H!$3C&^4Sl# zhC7pl#c3WJ*b?VG7a)o$XAfh61#+D`%2@OQ{Vk<0V5oGR9gt|9?GFS???`V2w}>m> z*g8{~ezwBmMb!Nl$q$A7^2o@rh|>=YL_>qa9d{H|Y9-tD!(@0oGom%ZtH5xFSocb{ z7kyyZOGouG^wB@VyvGB{d`ky_N z7L~X(+}{9Oc$kS~0{(C}#$H50Y*Y(hr1Wu{GcF6|*G8{xSO3si>qZ6hgM&pmXEhQm zvQJg;mi?Ja3%uu*m+mN zu|gVvf7?a=K2%6HQY_1osxOD7nGBf6yu~#OEv*vsOPxeee4GWwy?)y(04IF zu-1#-7?oW;e-Zx)sbQFc7lz*+jM{zvXHmvRV>K(swl~{K#rykZj)Paijq4nyM`+-6 z{S)Crh}T35j2vLhOkMMfpOe$~C%(_lACsblMSX)#RmQVXDP|1dWRO&TDqH?d#bC#V zGdDkBdRiY9f;i@4iJqm*I!|bIHv8$aez}{Mw}g`|6*>-xuhDgaIQu1}UXF2PwbcCGOcy7eEb6RTz-V(kmgKC?|NKDCJ) zZ(KilFtF7dNU7BsW`=OJLn^nM$8NbmarjW8Q@D~{6z2vtZ&lj&!Kvru7ASmFR2kYk zdj6cf>4YzaFo+5e&~ip&#G~Uqu+k!e5(^&Z>O8c(e?2f*lP0RDXuYlo>ogX2ooNjY z4fc7n@`oBuj{94|Z1EGDgO3t96`mc6V9)OCQ}=JleMCXr3zZRPT3B#7u*1yYD_ps+?2AvsNZa#5ke$aNX{wF6%O}M@y)!9`?Gu)r^^tj}+9TH@#VDYaLg1ja%$|WD7HJhS&TW zh+4pJR%2FApNk7)&+s;?B{k>FOyl*jxA6LAk4i2wWh+xXxwtWa*sm9mlS(enMyWe% zeY_rwYFV*l2hvkB4an7TL9mo5dG~27p~Wr+oGR zb4luIn`r00Z0g>R>om`}_(Yd!caHjvbog$XrFR6iEYa!XXHhi*%7rI|MzA)gIdNnu zF&|IaV3K8sW* zdj`i5yF^e>VAybnC*?ZzIqkUjIwq+)?(ji&AL9dD@i#EQWi^+W)76|PJ)3KR>fcGLG~GAH)BNn4 z+)cjwygbdWWbg*}>uUqEV7uTNVsDOv*@@xu0_GB4R+?(vULY&~Hf-sDwc2AvwHlOE zG~y6{fKDI+c)~xCB`SMBH$eQ7m6Zu^^gjB4}RAPaz4 zj?DsxlHg19Gl)n{0{qhn|MC%9>ek(aq?*u5ScPxs7e2U?1T3}@2x&v1Vp$*8eZ3iVuA z7aHiW{36SfO$r>__19)gnGQ28C}XWHN0T{1NBHdI)Y^s=EIOt+R17r~G5CcUl8HwUup~8R~>^~UwQz}Oz#0E9?z9(ijX=%ZW53NGA z(*q1bHOm+31ev?c|8hlQ;QR1Z)(UBQVCyvvx9nJ>KWN(-hnA`j6x}sOdkaM;?UVL! z4l~ip^p8Z|ayArX05jp|iqRYE*WD>KWc@I^NT&`(#(HEn3>Cj3Z^K0wY}HdP294m@ zs7h>mT@;l>VU2RG5$X1lK{MOVJSFoqW=R>4quvdvmfHG>+iv;gpDeSfs%h`&i;UdY z`RQSQE1YY{PtL_CNy@|ZtYNU}O^`kbO7BE;2n!12L@Z;Rg<6E~t0~<=Xfjx+ge(D` zc!>?kR!~F0qvrpy^eu2PrtkZ|Zw3=#UMd}?%)yd~QYz)pOjF}fi4JlI6{$!fMWkpiJ*f_zn&I&$`UV13XG!eI9#r=NyyXUvYOmc1ybl%$a!Mduw;c{p}S32ci zXK#?N3uYn5@@iypy5{I3#|^ngAKqQK_O0I6tf%i$2xL`|uP6Y+kXsLL z5SGO{1VS{0nN-1fOJ6_kUGPa_Fbedr@(0!I%a2+4*;YmMLwEe09i7{!)04jL_ISSO zedzO}NugsmZ`|x;uk*a4lO2PY02RK;G@-PC>&MBA(BVqnN$2;f+1WkN7tV6qaY`!X z`ise2DM2T3GW-{n1#o#9$B^^fZO7O~pSjOm+f?H=<~tq5A$>}zg6T%7J};7ir> zXlA?aUfaD<|J;lf&iD3eiHtGT2qRCVZ(_P)x}DMVL&i}8e-j9l+cB>wK(Tha^sCDy zdlMv(Z6tS>g1^IrzmPZJm5EYjB1ORM_ugcY9hFyp0#1+0OTi2tpuKoQ-@qn>*)1O9ArwvwXH>8(2=x{RIYZEEAm*kNMCAp4+yM23h!y zxSD0GlNPmDAGFtcCW+(K`H5H$UV@^__9n0w5;n?10P#aQRvaofo^CTYjTNP_{}eTE zO3H21BwJ05W0*)Fvnd1`A3zR+46epv0qCnZuY?eMXnG@u;3iA3*=0R{?ndc_9nshG zeh5hK?0Xz%HF)Q}-Vd$3Q{mC7lWjdD;u!4>WOpOvlW;`0v)Lm;A@vEpIF_BW_p@UA zHsBvd88wD40fxcHcKb5Z4riok*o}}8Bf`9GCZ$Oxu!Gn^*oL^UQtk4vVV{V|y&=ZG zf+~8YJ-X`M(%u7K#te1W>3YN^?Awg`lO_Gq|+`YzJ#LP^+bH%*3-O?Zd#eyTpBoD2{6*D1dEt zMaVSuzkByqOTpc$`y*w~PZr7#DTmH!<>=7{w(_m{+%2*D9I~`})nsK)x2*FXdcuu& zoZ-Fn>;0_J8)4DF6R#&`(fjrz_i`pM1kz{}T#P6T4@uSmr)uULZ=ioNmKwmm+e>{_ zQd;T{stYr=9`U*HRsMFj>_ASwEHBn;=yup!Wq0L5U6|ku-j$$B4YxJPuN}F6Gzn8O z>FhtalE;Zz;h&O@iAfdsur3&%sC5zI7;Xz4QzJ0=Am7#DJ`oNCBUcPNCh%v$y@X`w z?DGnGj#ih@IrY8Us7F!h957ulP|8(0XGPV`+@-R7Tgp*eT|zj@2A%Xr9~%RUDUIkf7R|`8RmpGOx6_J z?T#o=-hEy=uS*^Mo%y?f{jrjY_EGD|pKlz=}d)e%35lYeS&!M(pIW zAQyT!2ExwHbT}+H${*cnmyH0Nb%N||`yqUT!Rmz=Im`paccG9W)E8FMFsxxyja4eJ zd$Zc*Q0lCw-wO`pMD}h~*7V-^A_y@{J)XpXtGNAHwAf?Zk!4_ZYK~0AMHs<0{)lCO zM=g=ua)K2$+MSfU>$*4H8A4O=4;(l4p^(Obi=uv3#ewX=6Xlq;eNP4+6_u%>uHnJd zS0^(sWX=qGJ?b&X>f*KoV*RBXVz`nr$`&@2NB!BSwuHF^v>7MZ!x$IVrSx@B4F>^{ z<^y2;9xG{2f|m$^mFmxrD~?9`y-rFa<>Y@!-mdl`ipEY(4x7RTfHz-=R(b-`_=G9Z zrBo7;sz%mor<#i4=*shjk^fZnlPg6@C#g9oA5T>a1@}ugQS$3-C#)Zvv+L?Gsv$6% zMsMIy&UK*2mIY2ib+eT|ADdhBNDv{78s~7u!d9Co9pBH;War^j0}IKl-Z9Hhimn7n zR-i9JQzePEV7uHefU&qO$TO^R)Yo)2gxBO35+HJ%)??SF{MbOxT@rGmrpEE4N2XSV zL>gwsrUfofcGuWvMG`wcy-2EB=PWpd+5|%!VjoR+4I6t#@ry1*ffZ&vhX4?;uo%!* zC79ZK($NBbu@AzkGn;P?4Jm{^wL_o=muho{b@gJt}0pC8@>l zRzOX5SvOgh|1QGIT0a^iW)=6O?S$&(z3z^(prd}>p}*cAdVbR7K;eO^qW51L?)kIp z1h&Z+rIa3f@8UPLRnql;SPDWi&5R)4xw2mM?YsP&`AX%0HJoMo=3_}$#sp&yofL@L z5YPh!Koak2$)nqxMFVaX>1{B0dr!${(Be^@$zC02@XyY?>)>89ODpodGHlqR-EEfJ zQ>C&)s=WJk@ZFf+_@|yAM;E@aHfbiCQ=l< zB5|+>!pMpilPn2ik|bnIBusS>lcVagAMbTL&S|v#i%Bud)*bn=!kp53HK6=e&)quF zIcfZPr}Oal70OOh4kq}v0y=NyAuMF2AixrMNx)Olq3Ah|^tM)o8HX-wGdN<>Lo_LD z;#PJ(i+QnyLzRj0-O8F-*B;5=_C2gJ881p3tQsCPzy4&P6uUq1dy($O!I81Z^6w8S zXW4E-<-u74g05)tj477!NX6rl8t6&#b+OFEos{0x-Jj}$DIOJK28ji>ii{B~lWX37 zfA@3bah9!rK6*+J9DoyrJ*GIwbBa5QCi97Mbvj!z-16RcReh-UI&?sC)C@-l)MUzG zx1nKMSF;C~gkk=l{JZYMX5q_Ic;CiCo!UB6*Ki#x@hV4K-}sF0zo#%J0O>h8iykn0 z&oOIb`w#a^bq$bziMWF!KF}1gK!u#04W}R^^R+~s|jX4lO-4-;-l9Hlnzr&_?3NfQ7x$Awu@DM zSa%i4VKl#A-r104D;00aP?|DcS1Y2T2e|&`Utbo}C?gT(NeO zW&txH?6Bb2|L)qhHR{|6S#L+_=+vLLWM}6J?9YDI4=N>jJuSXk1;FkVOchg`V0(pG zc)}vb{Zxa}JC+tXVcD3cUWA6|e`D3OFm)fLm9}rBI+{quA~zxXM1>XMUQ*_u8UE!?`^w3f?ayjP0uCXUi?p$R_-sB~mD`arQbXlYS+;yA{ z1eKXia}`puYITP~igAbo)+sfRPFNtu;=LhWqyjI?4lrt|kzD*4~LU7hhz>*hjhe6|Nck z>HX98ART?N@u=n*^~bW#RcyV7CQVslbvfEoz%p&(&T-gj>LU z_>9wdb7t`OWl0{NsK&;pvZ9{(X1ax^!cUJ4oFr-ciNsY~oRQgSMWF)WEPb&(SW`6F zDRSRTHq;A?hYZ>3s~G$yUJY(KgJ1S$Rd+=M!|eFtm>hh*-wp zHqxm(Em;h)tz#{~v_2doIFXF8>h~nR6dSKgB2mA=8(bSw;K#wyo&0{U@zORcf!R#$ zV}H#t@GCU@oRpcpdW5mp*xD=7x@hhWRl40CZ;rtdfv_TudtKwuTF>t?b<4!n7`+AW zI{ROJcDTq-)Y=9(Y5~iNK`<#R{Bzj?pHr-w`Ih#;wc4M~ppTs{h zHZJoB5a^pHf0VFZexklVR1Nq;fWZnZ)L!81nXzE+CaJHj~$fM5(r_bS$AA{90Q%8(U<3F;j19g1;6|KFF zbV;Vc>rb}lSK1c;by(-(7XEULKmWs)oB^hdOrFKpW*pu2Maw*xHZdWDp%j4+Ol(A& z{g+9CEFk)Eh54CQ$T^}HLobP2IOrOvB{){!eo3evH7VAYknG6Ewg2p|c855JJY;u*rCxEkVAUL)(rc{lwK%3ckUfn`prIZuc5+U(o*DA znX#$fx+Hc$>9)&^V+F)Y$}#7p?qC<6<~b~!Uy)by;H4M6$BZ|Xf_PNZUq9wbn%>>P zqzMRF&YV?dM#o!~Z$!PVZB9M;d1&@FWBTQ{uK zm|srViu{6sZY3Ry28yh`y8h`MUu1GAsJ*8lw{Z)F7?)0X2 z&I*E+?DSwW{^_X6z}>qQs<4cE*pa)G@%X)%F8={Qh*pena?^(v zz@l*7LRH0Sq$gqC1}A+^%ydcc_JOrQ=T|3v{e1fIpDn~72k8gG)&Up)&?Pk(R>ke) zSW1d!tZ+12q0CCke-o|~OzGS*G-25JLqtYQZKk=ZA5EQt5%mHM_rsAKU4}ln6pRslTnbuR>Dh75O*u z^+gbqp6T)>=i@E3SBv?q+W&0;F0C%MPi9k0g!;cjU=NUCTeKku7H=x-jYKA1Y=}glkNqND~pfB{w z;1%aLmff#fueWW=oYD9{!CG#i?E8hLECfrju)i@Rkm-(DTyjrNl;!)VUJ`_O(`Cp# zRA?JjXwJiQSyS*(TYKdA&gA!=mm<=hKDqh+jeqh!CdcYcu@QoY25)OzSACa2%N;UqsuL?00P|*$ZRQaIZ<{IRPY=7q-)K8Y+hVS&MJ}hsKu*e z-5Fa?^?n$tnOqw?v)ZifI-5|*Jj}SPox#kVY5h`(LdZB~*~d&cZQIeUJ3Jyh@OBMX za`oaip5zm3OvgqVHBeUL1c50Am2D(R@Wy$A?SX3`D{ca%`hy!_bA3VksBf#%|3>83 zcWWCBjt`j;BwinuE>ST$Hf1MK5_qaEAixxAQDV`ThY0O{gq=$l^ zdZ-ho9ANM61YhYM2CPu&{NF{`NMZ+IfD*N?)-#^Q|5a=3FGdZ5B}Isvkd%YBa&(1) zv*-kx$-x~7a%0`;f6d=l0x8~mSR*?T!}zS5+fwUVq7|Y8u=ZBfq?vbqS{R} zOxl= zd*OFxjEjUfT~(~(pECpclU(t%YHCzq9y_meX1>j5{TemCt_B2#q#mz-Jru@f)kaVC z@Yy#r_~}4Im~zJ(k&Ize92X^KVA@r=Gax;8H-OeYE?q7#t)3c+C)2B4o>vxlBFUlg zl6~8IdG@XRH4=T>`t#T;y=o^WPwH?=hd|~m)c2ei*?PDj(4&yEHmwCB4?qoY?x6ggF;z1*SpM|` zU8>z4T3#7Gcem1(_clM+Pj|t}NwrH3i{`3H=g(itiDn*lH2v-9$}214+6s~bnGCyM zFL4hDn5SfII3X$?#~%I|r_WZ*bw_co)h~^I6(SUbFh&;N{iI(t&iy$s!g|y8w>bd* zagGP_jW0=ws=vA=fWu)Gbp~`qyn&rO^cV&j?!j0~w&#|p%?yKpveA?| ze4{DC8QCdQnK2#;ZgP`aZ*kK;Y17MWwz{PW&8?z7IhprT*2GxJIMT>w-fVtd!Kc)Z z=uYMEF8y)9@J|@KFE+_6WUGp`xV1A`U|(r?0W+h~FYDH5c9d<*Jm$YXc=DUScRp@z z6-1nWTAuzE^EEnt#Or!~SLjL#4JvqqR6#M(GJz$Biwk^_nd7>#yIF zHJ$m988dak%0s+H`a;>3&Vzpx_-BRdjw#!ZS1P5gNuwT;Yqg_a8g5b!wbx5;PV(fb zTT5bQ1XB{bSyQVI3-x1~8hMOWE2bL1nl*XzA8RhgvW3$wP6}?~{mx8#DH+qWY;*W{ zk|(a&$GdFGx04zrkEA*21ke1y`Na*KbH$4JtF~A(*~~>u7AH3OVLNmEp6&#Kxr}v8 zZmd6a#yE+yQa?WP(>$)2d-iZ7b;(7_$kW@#t+3)e$hY1RrOZ5zgheY1(FV`URJH5sw z$NrjY`BB-qL^ga-s;;fp^I-cFTPXVRDVk8N#M(}(-9V37**1+oOGjJbzt;PiX&-*nU_24%({qh}XWpjE zlUK#Er?M(uv0h7eBtJQ=b3OfqHRPh&&4yh$?flcvQ7&h?&e$zDuk#3Vo0Oi}gRpaN zuDad5)G|9m@UHkVHSe9}hxM5z)WfAIlj@zkY9u9=hW-iwWH?ks++5b?EIMe}9^79i zK?Tj@lT8P`?+EuNyxULj-l@mEmaaRp_{SrSOOE&?XAQ{x|C!3XjqiV2X<__&X7B@M z?fKW+_m}2gxj&&Yo(W4l!~2rZYdSJmi3Ybo2MKbv4rmTvl!Om!p?e9Hl|k zxLNjarOrKkyX_*zgO`F3;Mp|QNyVZwHvN!jaDF53ngy7YPHC)zg^n0mko`mc!lwRO zZiBX-$a07@Y7^v65LL*qx6<8YGM;lu0DL1&p>+R-S-ex1Lj$)y8Mbw^ZN0zv31@}w zUq@d`hQgLVnm(VwVC#uFoSLbcNX(~f?u(%_&rY7X`DZyJ4J6c`>&#!KZ2$SeZ~W@% zG$MjUAnOe-(u>Sx({=PKHef6=v2X$;WbsV-7RAx2d(w4H#K@<3GvYE5xWNfsduB9q zPnMJ{k*RPvS|4N1a;hck3Hr#UZMmpV8DkO+Fe?hI=?t%?jfpR|JXbjltq=+F zBIE+yVwcx5orfLdWC1|;1AlnsigbX|5A=b=GI52L*Iq}e3yka0<&)>vmMfJl1uY{? z`wLXk<@a^vB8<8JBl|aqN@SsJ14uZqIG33*gVZ{(he4R+or? zXDnMU!jhu%bdfhm@H7_9r!t`s%wP%LASHn&JD5#!hweNK{QOYCSsVT}KS%!0G3mT9 zo+aFvljK6se5piMsUux9bZeij+5O#w)d%MJa9fn9Qry}_n)1=8HlFv*~x!g zUiKv{*?+_r#08*G5Zm5X7wG)t1ks=ean9!Sv@v2q(07XL;k}=t7rv*znT)}3# zq-pW9n28*U0A2U68iY6PK8m0>g*+d46;OG|JDQx~zNsb9FdD!hpo3CUtzByq#S9g4 z)&%VVv*pCSKh4iRGF+gEC-oTh+@rj*V7qqjSLx?1IaXlG#HL7J&*Ez{S!D0V(u5<% zU#pb$!BnP)@w2N@RBP+d(|@Y&Dt-j98>`|4_=2AumS9@~J_k7&^*2G!E+&$WCT+&R ziZ_b)h1-=ctnaz(a9UPo?X+~@lcvyZ+Yc&Jskv+~88nXk_!mj0nfUUjIA(9W)L6Vl zZ_oF2M`8_*#40}uPPg>M@fxSEPJ^}w!M4GDF*rQza$Lfjo!V9sd(3G?_vt{tGr=G3 zJj(z2ba($6$WtbqaW%co*TKrBY)Q*DHTl1fWA!&G~M>a@v|-=+Zoa-PltBOHtJkYZDjZ8RoA%6lkZ+u>Y*( zf@%+|{Zowj>Xk#7X%d`h)c+2dlvl1ysm=%B=KA&$1#%>0evRyTXk_5EfiWn6$A696 z^*eZ&4HLe!RAUV-_z9R0V-}srq%Cen`Wk1ic`{mdKelo1XzE_GnRDWHO6SS+Z703D zB5R^du2t1eyV(jcvKePUo4+|hJ>+CZsh|rPcO*6w2eVzP0jZ$-#_a52%-M{GjyBV0 zzb*`r0PZ8HGMOcT($l||+Fkx>GiGc1oSAZR?$uy#&cpVZq5l=lh^am=isF9Su%zI8 zaWGom%Zsx_=4hs&mzlecC4?*w5^m^NAy)9zk6?bUV9AjeBWHfhJT>31!a>%}o_gI* z;ruD+z2aeGzZfUatIajs8>Q36ux`47Tmq_9^nw#Yd$AXQ#1jQpO12Z49`9oA2RAXS z#&=_6mAX2+0#qs@BYV{o5R2tGQ{m1w^RpN)nHId8h($E-2dx)eA||;io(d{y*bR|s zR`NhGr~u3&%ij^(qvo#pb)BAo`@{F-_ge~zaye^vaauVnH#-sc+mS|(^;53|DSJQZ zfC!g5OQ|)p3U0+f5*Sjn>0IR9XxC8GUhDHAy=9gxK{_bu=U3|4 zMbqd92}CQ;JKgNNMBXod+)xs05Ngo-*F0raQJ+Eih-KG@BIUhE<&EQl5Jg*=p;>6M zL>#C)G=B9v8&fhTmmEzR`TqWPgTayQQZ`Zp71~m8(sV{Ua~@mi)ZT1^>lHWySfJ@H zr?|S_AT%Fh5_~q|l09|j;nc*2KnLq@_BX@7uG=2@#rZaM>9FLD7d!Qb!OAJx^8%vO z|Ne=wvrwjnMB)-9Zl@#)I8K)d5K1kjtZa#V$B*HMCGWk>Z7SXgmOSeg(ZjleCl3XG z@oMw^ys9hiI7c=YdmM2eRUse?Fg&f564yH3eIH|`K0LJUrr-170&OH(JlZa7WhO@swYA}lFRC6F5; zY6J!vAda93jU|mgMe`R;*HS1otI#R>N~(4W?`5H3^UBFDU~A-KUMdK(#9_Y(vaxcM z>e^z$?krAX`|Uiq3pn;gY~|)*p(xfcMGy8;JIwgc%a&#;&pqaFIy(K{Wx((m+edih z(js>K-?3`TZQpC&AD!2ByN27>*4K(lw7;0}PRzL^YsGQzz_Ef&fnj{;&kXn5{gG|` z^|E)ejeU;-@~)@fxPBqBX4*R==QHq~w=N5wlOu-f<%1Za+B#ifw$B4p?#IvE6Y}XZ4ts?G_8fR@CrB^J{3yc^ke*D7} z%g+!x{d_w6A-rt?J$!oVtMBs}80Ewc2Dcu*e`4g359STig_=L7cQh8gG`Kc`<5wwYE4mLhad_e3!fd9a~j%Tq6&#`zax zA)qYj2a8I>>2qpQz5s=p-^6RU^EG3amsM9_WcT}4Y3iU7GPCW|OK$8Q>s727m^mgH zgLrmmh*Ok`x}+}HZB66Iq9uoM2c0Wc`GPBmLeh`&aGgTv7et^JDO?(<;X%3z)M^G> zo5+=7K@u4Z8Y^j^2WQ%?xh18;@-z<|HQqvm3V`-#U@ZAm8qhw}TEzF>x9_s1WHs#g9-O31Zq+yMb<`h10n-98e|9{&RqJk8Foy+vhp)=YfHo42o zcgcTB^VDgwB0TJE$Pm0W)fd{E()Su$nP?${6&Y&Rt2N#n^LX-UsJG1M z&{&%!USVYYCB9YpuwFqhlv}lMN3pL1@yTB&St@vVuLeo9fZsweoE=}f1_A?3rOvNs zGB(c(_#Y;yknrV|`AJ!#g(yt`W`GJLqP0w(>8f!MBG{NTg1iEMxJK6fe(>wlcE@YO z4xm)`f8fvj`OdM?&IY{F-&>aN#bbnfB1R$sP~cd%L53#?wft|?3AV01I6a>ZLWcET zofkOMPF!vDzpxAo$?P)KEC=Cf0N#rn=@TZIc#1msjyqEeiy7ox!eB>-6AHGZjms&fW)l%QFczWo zg5^odmkA>kGsImCv97OW2+!&>qI7ud%e7pPB*>PB>KuTc6WI5dd2o1bo>(+|iV z6#)Lrz{|GxzY>Kmyd_j;G);7elPS0Xq? z);meLCVq>zyf(}D#`Yxo&V92)-0#`wGC*4#Kd^YB!9y(6b?sM_Mr3>^e-MgEB|OC_ z`h2zuljYQ-G8dA-+z(6J+O6M@M}CyNyLBNWG>_ziCXEmQH^C1G) ziPvb1mm>9M5Ig$RH%lOloYoI=DNZ-lf(-E+1Pp}gV!JDf3rA&b<} z<8J%^?yQEjxK%b$=!4Kjyvxw<&ChqrM)3p90;t%LBFLhn?4qQh#w6pJYfzhjTa)tc znc2;Nv;SvDClU)tIiYwykpbY?2Mrx<9S=H>83O*9u?=2Y%*ScDn1m@7=3=qH@o79%mk2s3pqm|&BW|I(@mIw(xW4oDWycr7#*);o?8{u_cmK9gT zeoUSQg|k_AB4Xf%bNyq;#u!7!Yy1=1P4?~i`PVPM9~}vVaV8eH__ z4-SUi`k;&eAE>jDl6h;;mG`-H&pKB=uW%r+Nh=ZtmXH-yaCa%jDy?lRo+|sslqT63 z!FFw-h9p-*@FxjVv;#;XifE*iq6CHR{*C41I4Ycslg8JzDdZ z{>sR?*Q;(w?k;yc3DO(dbc~o=GPk|PYrhL3zh-PgNgqhWSN1|E%qW0oT|J@T7l`lrYFg5B77;( z>`{~JCj8(wq|UKYFl;{!IdDRp3i0$zPn0_pX7FfBtMWqNJ`Dm3+B~$D|4TSXPE8*8 z-4JJ?kDv|$AU?55(7eM^nmA&2iOD~hrmC_OMc0<;Qrt6=aUiL~^smF=D2;>W2%Mm^ zh%||fuv!0ae#^94Ntc%lSmVNAi+ci<{Gzgpi4OJ}X=5;;0KSF#I!eb&g8t0$TP-Ti z>RXmaoe~cE;zLZ3Z9rgtj86cx31j@Sjzm{?E!b9mCYc8=)V($Mymk0^_ei>!5xBB(nG6>XJNOkA5)UQ>cY)S zWH|qruQ{Zs2>}UYpK1+q=WbXg7P&U$!>VmZQZqMx&~ta^u!yTLlTC@DAbziGR1OLG z_rH#ZDLW?4rU?`cdz3dr!rKF_lYfbu$htU2?!!a1T8>ugXb&R|V{2fjiWBQ#!Z>g0 z_qVwSLxF~B)=O(r9w9tQFwlJ>GbTMC@bJ?OPsetc$mOST>)i`xlqW@YDTkCrk32g& z>jd_ckpNSL%XUDjyJ#v?rtCkb7QH}3dl`k!YeDsa^ zz%7nKp;s4i?S&9hDGcrw932O&Fb|cuJOo)XvXtiibKWEz7Mv`3_q}E*&J{wJC-|T* znHxfsKqkv}2l|enYyZ*ya0?-`O!50S<%8rX_5}HgNeE714$<4)ns&U5!?7$Met-2) z;GL^&PVC8P)XvT!=#U zbB2!8i43efBMS#i35LBn$%id_G8~H?jQ4GO31&(l5?P1VlSIxM04`L&!2iR*1gax% zhZ@V&z|?4g+`I_M=g+}9h9;LjT{P`q^>cYN=xsuL1Z2^bpn1{b6?Dd5$-HTh+Qe!6118r>PtymvnIZKVoAb&q*+2S2 z@qPSML)HE3E7~Mg%Alv?Ywv&W^@vb@m1U=6035W9l30YPjbN_Y*;No0P}!(HVt%1N6T97x!fu=eweEKiCE+={S!Wl zCX#rIkw9ESnYX!ge*2;JyX}rJ@Ir>*m&e)%RKTLZsbcsm>IKw_>x-UZ8!sq;eVn9% z#a~voKLf7XXgpl(XHTMUFb(eUhV`v8~ z43afKK)7oU>PocN8Obbu8Y}Vj^C=+SqZIP}FPM@0Pv~!)C<`p5hV?a*`78w+;k0A3 z-_eM>ywr_{R$Cs?ki?u;y`(iUK?L_8(i1QjYsH{o!}oalcoQ~#KJp;UNcpy@iYyYb z%s2jEUB@~rwbS3aKxc{U)8DZN$T{H+ycdgrWS(t^473)thR%%j7oHPdGnB||84v=o z3Ja*Ms%%q!5At;ED2qN_RlL( zwfr9|I{PL=WGteSvceQ+DgyT$MAhO)Cbtk7-USjZ+HKP3J5b6cwT(TsxG`Wo)V#K% zaY(XxG%_qv+39%g^mwG(xLW{XASSE!^;*_p&ZdUGZ6|#vtB%3e#3znZckAUFSwz$4 zh+VEkxkzy1SMjIAxwVm+Sv%1`i6KWtkY$3eISJ|D@R7p>*D^QSB%?iO*v-*YFWZMc zSgI2MO)6o_b?aSEK6ES7PKH{I-hWV)t5{=(B2K|kaEt|~!rzxm7b{=6(TBMFFNeR< zJk5-zOBBj6W&YvE47UBeOMoSCOyXTg6NWqxOc^_=A;ekc~k zfX_JK_%%Ow_c7)7ShPj2bGVMv@0NWSdEW40aLGyO2lJ&%djki`x0VgiEAB30yJf1T z`YBc=X6d8Zx$Dbyh-2{7I6f)D<1Zy6wOHPtflZ*ipgOT*EigF`Bie>)ttJbQMX&_0IgD*^08+82{k%+{E!eMJ zc4*HT+Mj#kU!rji;q%o$YZ)gvfx`Eh@7!X9FN zq>hY=0!N)vPe!jp=!)t(`=bpE;_6jYwJ>xdq8)|*L>ry`-u&k$%gT4SOurF1esW{C za&)9SsQdm~i@HPUfr&-+ot@ocM6Z%<62k19C^+y*g&HD56|XnKl8w=omH2B?ph@D? zU?;>u8jSOd|A2{vcw%2lD&qM@-tRu>DTj9y|B_!+lotO#2z)1IrSps&>}MY+7DV<| zM(%b~*Idl6bdHDhu>yn|)Rs#*&*J%9dQ$6sHh;R9p2Jh|Dl?Ll6c=g5s~Ovabv6gU zDID~0|H&=$u|N|J1r9dVB_9j+K6NzN(Hl_JOuuB|pb^~swShbFm^)ztgr+-}s zb>n_L`?J>m|B~d2q{~=n$%NnrgbYEC6-6T|=gj$tywwC%VguX)?7&AoN~3?osE`90 zB=Sa*pZ*_MkGQr_ncHAxVL#mR7o)!*j&J0mSW~Ne``gOQ6Pldne(P1NxEPN18)sdh zfD~j`+(=4C9t+7-#Mn2;d-z1E7Ud|`1KtovAZ7c|HTF;QmJhYgI27WBKbgd(( z9CW7+BJoblfnbx~qO$ai z`#9f+p1Tb=;KF9#F9G)g0=Ff3uHNQ++)RJE{zQ1R4Evr@*&Qh_j8ndMtEtGj&spMa zWLX>&Be|nl$DVfPn%{!e2a>8VwlI=+BY19vTrJ;rd`*EeC~e$fy{J~7!9G#uB|?Wq zMBDt}H~WtwI@_DdG{Huotjv>rt(~yI*42=`P<5~?&}&8eK56^0(VPvlrFvUOE*F(| z`;T{aUGBV9XZJ#2Juq__uf8_MZK+yTYV;KMDG)o^dZ*~L{*V{IIIJb&u#Jb8iP9R< zU9{auJYPS9gA*4iWW%5Tm)PH0hs8KTXJ8d#x090}+V#*Jr^{-PDN(yzdc2;n`?F zl|TQfCf|P+=U?B&vZLm}Hi7LyI}gnpk2?k-?!Ky3L*3p+CoAt+h2}M$+TOjj>ihR$ zUS2|7o`|NaL7U?ZD+8#_PSiCJM3B5q+i8YR90+kfoOjq9Xd-qoUugM0T%+aN>gIAH zL2>#lJ}x5?mEzzgeBX<0_FsHR^7QBe!$N-rG6rBt+-E3e(^!eMF-BF78x5mUym1; z1@+5a=2eBfTbr=_jb{!OOi_T4IRCp7T(hXPqReROZN`K43_eq^g`&_m1f|%C#088N z0d`EJ?!6=Q1rQt;5emaw@iSYR@NLqqCmm&hrqyt3PW4SA{@T#Z{|)_t#|-W%U(%(x zkNFtP#uE{ppgoezfavETl-`P(AaQN?ho0>lF0_?o6(+xwyx(xYEo?63w-a7vd&ImH zp*L`O+$%EJR7N>D_oVycF`7<@tE{y9)7;Az6%}$Ph_e2-qd#}Qv7K#br!0d$Wzbbg`Ui|y0+7t>O_3vRgSe}7SP_3gr(h{*BXNz-d%!SqM< zL&Q08(1L9WWDe(&n1NO?Qy@5<%-RaMKg`t7rHYAzi`q=-V6NHaik(0jr9!%a!A#Iv z?M+V&CVRHb0qBr_CkK42mK&RRogHy4uX{CpdM;#?N0>JZ?&yqpHyEBhB;4rq>{;){ zoba2P;7x3X?&~yF@r;69V`|{8^H&pqOu)CP1_mqwYZ}uy6DK9fGBBn^@(8RZ9j$M9LS;L2m{c88rHeG6oGC%M!Y65ejm*aqRU=?4ro$b63)GOqWnu7 zj%pJvG2NN1u8J+Gt|}w38q=*dXCbX1cKeSpk&wg7vr<#{G3QL#4QV-W>2XD9m5Axx zctC&{*9pimgOK#;pWY&MSXF;2Nxm!~^yeq$4IR^2wltcxj=2xq9Xm8o{y{PDJh1X@+ukGG>@(#x z+-sfH8du}vLQ|%>QOmP7P1?D!;wP*AnZT9IowLK z*0Q!;_w#?rm&@Ut#< z9Gx~l((hWdeWtd{A=ZN{nM(-y{UA}G)J{;CXl*0g9n~{XaUCv&944c`;hf*i>bcKy z58iA76g$hockCd6%k9;d|AVMm8hlEzHL&IChknvz@54b%N-hkS5j73OZFDg_aBO_k zLbn5EfP5@I))hWYpb;5dK$sn!s7g_>tot5s@f ztOqI*g`VBQz}w*+&Z&!c=s8|Ru}kN%yN*I z&M^o(Fr$47uEKtH##=k18*04;e1>3giu9ME(ZHg+eM4D8vZlhua)m3QV-%Hjp*TqVreWKzO^A9|-d`A9(IHu=M%6 zTMsIF8n5|h_w10A!Tn+10rkth{&Akky!L0II+!;0*nBt&P&x^?V%$TH0j9Rt^enQ9 zHB?p?$F20hpPIGt2P?0nJ5&^RAZ^o8dkHy5N>b6()6AoJBj;qn1kU$iyh*gcCu=q> zP%8|2f)D=y4W*&u+Ewh?^UEy5OK5oqW`A;vr<80{87$e#m^R#$B92Xqp zT~KN2Uv9y;vwr^Wihv-C3zupRR=o>ybnIj0=Lb2u1|Dok&nqKsNi_RRwSdXu-tWPq zu(MmrXg4UAxej?&U9&NP^*0_|ZmsGXd5ES>eVCooMsK0*h?S9FibG zCA0yDc>NL^-quU(v##oJ|DT)8i(-slEGj#5+pTnVMo%9r`?G5K4%NKGUA1mbE6R-M z@plb1#K~pUJjUJwsS=~k9j&)Gj~sGs4-K{6TR7Si5%9b!DBry!(avRuc`}-HxHngY zcCF;e1kzt3USOhNqST<9&^A|32at*7|3N%I1aM1YOdxZ8eeE*c0drUVH9dEam9>|( zm32Kodh$@`j%$%!U4iD$L!YO;v3~x@t1Fq8YFEZFv$M0F#4m}R5xd!S>$He$-F*&w zWki!ofa7+lh_;lTcawU)e!-deP47B$!sT9e%SYtC56dKbLOK!_!O4WkVKDnvL+caH6K(g-&H`{XpL=s9qQx%K zxa}**0U~9k%!Bwo*7knzU$-Er%?@bdmh^bdby{t9&LRyh4s8sy*u?$!4?-a|ZeEOA zU$AU}M)CS7yUv)TRkLisO|a+AF{Al-&Gni$?YDI-J1-|K2v~H|wyL1v&Yl7gYgal? zC0B9<*##rciqi51EAHP6=Ow^ik#P?Wd%!dRBwFcRUKd)L|6n~kIP!b73S`~tKL=wT zc#csG<4@niJkg$uKiBw%vXaygfuVTj1x4{^_NMBl+F~)6-as03nD#Q4E>T#DgLNq8 z2S0aqN?pQgc_11FMwXJRX2}&XH~qG`i*3cuzt6W^@3)}nwtwfyW#in%4pxDQ(L`Sj z2mK_ki1Zm#&t@+&COr=q$$~)NB}uyWioXHxoOR;P&S={yU;kMvr`_y<#Q)aiTN$!C z+uPG_&NaEMdOIxKo0=C|UzIIBwcSr(ZZu#yAQ8_oSe}}C@Ul({nk;b@a?2mnj;XVx zUvE7|+Y-F0$)@(G_r>6Li;wP+a*-+ebv>In(I|Dd@~uw2IqP>E$kvd*Eh^OwcoY`y zlzQvO1Dg&Fm>aF0UXjR>4y(Zq(nGcBi`ONR!f^^DtvvevyJ|d*|A-79lq9PnKQ_Dp8eJ7D*01WVvxnnWoxoD^2u>an ziJj$sMjvIh5W1!n|Jo6Z7)>ck>oiq$G0FJ70X-+^wSC$5(I(o#@p)&r@31cRgs)k< z=c@V(kPX<7;hlE6|8(BfIjVKrHP5|cv<95p{V^^N?;K3x=0skyypV94QvV}S7|k$S zF+t?a_BM{v3NCs1k&@KGmSxiaiHv`5Fh$=5QPbuO>*L8)4$Hszo~eHMhXg!NI^*{f z7>2WnyX9?ylZD~_SiaGsa~9oR?4PP~S^eRDgV0ByOaHcq3`V$TBHY;a`LSR8SAmhZLcbn5njO`JKkok0#tah;lz{rbB&* zq|L|lv;kA5Ir?Ioye?o^6@*#~2}|HfFXQqpuYPEvLgoH%W&TD(7)coV>Cr|f*)-1( zxn?>sB!2!@g`V1Hj6yq&oF2JeG{bBOl0$N=TS87_6>=Yo_>w}-J9Jv3`9wT0*w#ED zwC^QPtJ!`*vo92xFK&retNk7 zTYp3M4?p_f-OzS4JZ)dEw&bqy`5K~f)fGUKzw{&jZOavfW9 z;~l3vo?I0&^rU(JY~T55+~80;(#eJ(E8h`g5mQmtGCMF0*v|r8Rj9XlyliPMkY~&N z-<@BOaoqJ84v7cz#4d&QjMmEO@gYTbD?Q@9ZZ*K^d*5ORbi9m$D*uJWJv1+rj40r` zyfK%W#=T304(WFq_%0U{n%+h6p^`TY`-@1KF4^Ou%Pqw5SN`08g+H6C08eX2L$YmR z*_Q$b|8iCNfvgkpPEBvko}^pIdGqDB&V{+BUh6Sy_1j{tqoP2klq`}fCLKeKGZ^s{%jO%9E&2o#p zEoqHQG#Yv!Ry=5GElDyj4=N?XM(D_bkYE#KT+Le71spb^AMa$7*n=-(N@YpGVvG^u z6T`*K*bAr!d3Y51SpU*JAlIWkphBCV3!$}vePvSY$JGvSUPFF67Ln;;{$ezRLp1cgHX-k>l~w$ zi%)5E8I5Y6NL8cg#!$f&-s4=J-{v^~!Y1$*&1@&#*MafI?6mk&rdjhLp8`kA!%sI} zb4Y62cq}Bp^}Z~d5pV0tPrj82F%MNpY(z{42f)^c&#u#U-+UNdt9^&bWPTFqJLfQNx|A~GZ8}p>TR^cg55`e%Ua7?+bR>C%h%839`f~GG__8^Nd~}1>WxI1 zD!e2}pZ#rGt))Uc(*d;tGH$|0^h$ZQzvRjj)tl?&=9k(g^e@UDloXDZqMj(#%R64T zYniUY=%DI?^v)|k2EHv1WDT(!qU&@VDWU)Ep$x~iK*s^I&J}J~+wQi17%-Eszg0Ue z=uqnY=B(lO`P8q1n+H^V6q5xwsYD zx`OSLW`nfvY{#iztuc4iTXs*T^d^D(|Izd=@KEOc`}ps%v+Yf)xeGZrW~!A=EXmTr zjB%)ta_Arln;a50Q94-DU~;TBPoi2Phfz`vwMiC(wxxAQWrVQnaaLQ=Ce8o)OyB?O z*=P6FwlVJe^LZbx_w~LmOhs0T?K55aDXhRKvp-sQ`AXaLppaPCn`e0Sr2%av3_ z2?ovioD}UK=5M`FWG1t0lSUiSz+R)?M7@g-mhLTfNes+z^f66dslXXdg#{{#9X-{m zLG;fnw-&Tu_d7kx#R_>R`&Arr1ad24C z3$o*plK@x0y#x(MBUCh)%t$;db~WUt*KUFcXs|Qrc$Z4MF5(Ann({U2_{AUH$lRa( zggRzn<5Q*5ob)+K-q-qlBXd^y#ay^z$PbHN=y0wv#blA$@cD!Mz3H?tdZGKhHc_d` zW?{gUuM-@nhNS*!PkU@y9`;cn5aR1YYU7)d-)vxEjZe&q7cl11S6NUfH-eG1#7p;& z`ZYwWoDFvAm9#eJ6U&v-9qwdNZBQF~`mJWxEW-(hA$ZQWy>~E57$4Vmm$)V)h8(vPZ zKFmpegGD8K((S6=k3TMAU!mXnr`{gbhJf16slf(S3D}B9 zZLvi(>-c&het05DFAPR~-qKhfv~=&N)T`4XU3mb^YOg;8HzxfI{+tzJPygyLxyrB_ z2x{+L-?eKm{v7-^uxUJK_IZhEc&4M%pwHMEDml&Co_7J(xfsLUp!Rswi<4L0&aF5y zQI__jO4x#Jy&a{&C`Ld7LMZ}Q%?WphisOna%Tvd4E_U4#2eST^`Q*ctB51+YhxqP zaZ2}l*&1LE0Opr5yShdVw}8oolr<{x*=pb5Uy$Uyd-ta8H&fq}p$ugc&MU$wl>w3a}-Xw~Kjmsue6+X`wBzCJU+|RNul? z$@xo}wjOmQ$0T0byOmM%LmYNs#qy8kod!b#&08v6%eEdl^vA%bI-B{m4loDumj?K_ z&V4d;KW~n+RYlo;y8~W~1WVEIs-n8rh*CIGSkvHYAH_NQLU`aD6%nuP8ayy4?71=M zolb9<@n%?miQzFeUdI^kDVfvR3BJn;Dd=v~A z(5hGPL+Ojisg6gCamOU2$+2sJUF|dXuz`|jtZ@y7PiV}fYcs_^d(r>=lsdL#|26>G zp~sXAEAQ@+l>ZW5em+3^{@MZbmyNz?AA=P|fS&O`s1!);F6arHJ9+J9S(J^?iTmj6 zH5gT`D6(n3#_GkkWE){N;P3(kMz2^=qElF*`u8aDBl3j;=7Zpn{{}5BsK4}}{P4&vl6~ z{rb-4>)g2fu-2mU;Ti7AS(AP5+Np$6om8(_SE<JzT67k> z&VuGD)8^=%ID;D8EFO8PI8#>?7-n4Dz64R3V!o%lf1uYI)ALF`M(fj(R4*nTJ7ZDd z*yt+@+TOW3BEw;Q$JO(D%dEZTpkM^#HDCL?JW$3$F_589Q7Oin2@GC9Z0?c)45J1J zu`elS=O6&a8c2Ae{cMG`)Ru~cTzaZ58>3PrFymvFbKk0|RHkJ>#<0*iGW@JF)*8t` zlFw(ABcv~5pgl6N2y#7Q%WO+pGtX|fos)Y-xj|bQ51nAM7XamDI)~R`oekqm0Hvm} zbq->N%Qwoct1sJ_`oTJs&_a^2$#0AG#{x;PLy6*5-5@RC5GBXp7J)$0cK2ju(rs~b zSZrnHcuVCC7C&r%;%o042kEftTvt15>5_b&eh4~`3%#>{IKe->l`z&X2{AKt^D|+I z{C;ZmePu~>d=P($Knoce!@le9juXb%Bcj-I`=S}%t7;gBlt4|xQz!MXdI&zQAwUvv zg@L>n3HXtX;q%v~xvb`0oGr1fHJBCT{2{rmqH6MSwpWtqM}u`5+i2_>z_JNi9Pz*L z2e~S*AZk?v=T0aZ16o2)h!z|Wh+y_{mkzz(=N2qxx+R+*mN#u8EaTrX2PNA6nTzJU z{kwKTYwF(vb>Bv=~AWka<-mKTHf^*9!Uk#q3T{P~90v391PRuuSW@%F=Q_csqKjH=gV& zkmR<8I=v0(40UgM7wVbCHTO2q61}*`kD8sEW$!zaaI(AeP;XcF-Ax%E<9xv)AWsEY zw;tp8a@fm}XWI;>wUXoG?`^%u*6$%SseF;Bni3VXYuj=7)oHCpxjsf3bzK81dVH5C zu7HJrv?IkH9^NpGH9T*W?rS>U(bX1ltjs@8vopASyt{7|rwn>wetnoHW}Yt=%{&gX z-L9_V9FWcIYfEVLbm@2D*y;J%NVnW~ZPg5}7}dX-mTh=}ET`dccl+SyM*Gq2t$dTm zwAE(W{^U#RsBaEk42BDSUvf$G0KL$$+%)Ha#K2u;?z?LO3i7gOFqx_F*4*^GNdJbz z0U2*L6>iRtoTCg{rbF0fr+7PdLHt%t!y&3x)uT7V))2=kX~2kVTL>YG4&k;EO9BFP z!&U=&g5E|#m#-+Mua3fU1)ye_4-bH%VTc~zN_+b@dgxZpf?air6hCZ6lx!v{g)rs| z@C5~5qbfuxZ2J@HX51jO&I}(#5@(rqm{6NQJFXcNM3X1`;!Ec0p<2W2gQN%W5=b4f zPWP*Qh@#*m2vON#l!lfA6$f6kH%_>p1)+oDi@{*bkIQ?GCnQt^Id}2=r9WP<^{+21H!ts1cgrCt=pH}J%QNG-&hpLTa;Y6=(0R~} z!h92^9Q3T|!q5n@vTIoH?Va}5&5~Wtk*IhLLYaTJ5QX^xWH9jfk5wADF!_6+E)w`f zx=O357u&)TA4PRkVc!M@$nBT>p{WGYY9Ga3nx5Iq(7h1Q>FK(+z~W}&ksHC%k$`Mk z*zX{U=W+DIopY#ezhp0le?~R_-<0zdi^t&JucN$~ddlDxp*3RHs9_wbgAKkFu-h%c zY8~vme?3v}t^5RIfq4)`nLHW+^D%L2YmqoL2RfMVd={F=bDWyX9NDSf z;FPkyX(T==47Ds zJ2kR$r;U8qls0}_W?E1Z$Ovs63=EV;;PtoUUP`Q|`u`Z59Tb zoptM}XC@!+30*Io(-~Zyol>NZ6<>sWpwH>@gCdW9&O|A{nT8-V>nw|V2_PYfO8nY)J;zQ+dsuompKB;?j(< zp8=+(vprTDrL{+n%iNp9AKx5^IHYR9a5?VqWcl1hMMV|4vXQ(8^+6k2H{L4FcaxH4!Ncg*4yxBuk9P12+Vt$Kg z1%1OG&~2XqE>99?X{aA|&L?M(5=1R)Je)jm%f5}O0L{@@f8bnzuWI-@4 zS-@Cr<$2vR*Qav$YHRNMnO~VF+fs6BB~F`Ey(I9ifG!>dU)NWq7$^R}|p z2F6Nt+XZA9_Hk{8o9i4n98bDt|67?Fvup6U!5lO9rm4&Blb2$;=H0pFs-5-T{iUnJ z%^l%GL-prX#4#IPUBT(~2Px_8QM-G7_83c{BGK>1!NYm{a{6(2qH*9*O22x{wGvWA z40;dN+e64-2EWhcW;N}%WM$zsmh8j{0r;cKV81C9C;|&ShS>G1{bscLHqQ&_gj?r!ItD&4F#eSHSLOzRv0&kT#V z_}j)MUq%b?`$Q=(@40|k zzI#$w`hZ?kt_+ZqFwLdTz^=jBiDA%ZHfRP8%=d>ZFzMLw&QZ?ufRVbq!g8gahEGhh zsLFF(pmx7L%jprfkNu*Ly;`6TnyP?tPKZV106SwpR?K2(=b%83G0L|;2s0V~l1Q?s z4lJ6=XEs4knBp$abm~Ob z>*u#;=FQ9;?cD0=I5Wq*$6tJN;IC{lK{iz>=z213_o?8g-9fuVHLj!!X?gJ5_Xr+| zOFdoQ9Qbi|N?Bpk0CbCk$ z3UG2J=>2ouRKMQkh88j@(=G*fOir~XG(g*hx0nZFI4>%a@LtqWR6?q^2a`9DTR6v( z8^gU(RUQObBcM3RI99|gi-&6kubw~uqku6!ktqkV6wPo2m<0O($CYMn0Kj7AGX3Oz zN!FuwBuG;j7vWswI2(rmt^*7^F~!(Ju9FJ>O*%Wpw&9n`8Rc( zYE4fsBTS~Y2+SI4$EMgbufp|c+ShAFj?D%_c``4G>hafp`16z~AC`@F9`5I9o307Q? z?bimf1ko!7UR;0WqQG-55x`8sfEUBp%Gg@K#u$*Ju*7$StiYks?i_5d z#Eh%#78d;-hAyH{L?+N`y1rJ3<}Qel^eTCjTwyk-pKK$MAx}|>;qmS$Hj?wuGG(?<-9|h?0`otM8J{oDSZ% zHZ27T249&EKw;j5hlHaElU1dJMN7>lU@_N;IuzY7`A*oW?XEFOd%;s&1|5%Pc!!Y3 z2uO%0cYeU5;4<0OS~UjM#3#{&c7`gAl71M6m))OVU{LRc$j;Q3~RAC5Pv7r zu$hCU#4oH?uEJ^sEa8{DSW0zE$eudFEp`VDlSYkogZK2ojiW7P_Z}CIbMLGyKldC> z*y=g6rp-w-oX_{n$+w+(XEkpu$LmUk)HRT*yasD?{s=@ zV!fBYhiRi)kSJZ!9RFBn)$K+7zq24{DWA6|LA!Kj6ObU2{^HY*Ezk z)vKu1Ubsw`1Xjt!AEV&38H;tsZ$QOnvn{rQyg&*cj4aq}ijd+LMj$uw*f`V429t#>tiqx=9KjoFX>Tw73ft_6Z-5aS***1;en_VF*W@xstI zCu|%>wE4#)e%y>T9(Jz+okb8g#!9OH*Ps5}1u~OpcvO-pFw#e>D`1|}CFjHj4JhY@ z9tE2l;Mp2vZ;C)Ucu%D9;E^gndRDaVl9mTtMoXfk*_!)JNp&X6@=|7-O-mxvssNuj z*K4WIg^8&}ns9v5T;`nAr(Rpmbo!Lq$5yul<_vRcz(kqxzahNItIuA1VHGSd&VsK! zfs1gIaZ6&te%SZ8A10Y48khO(BV@&4zt=9)XaqF%F=BI$SqV8qXg5RY@T=)`M97eBqDiOdFVee3CZ$8b|uB-|$C$ zdu{2MtmpZ07pr;bn_hE~LRl!k_7#PF-R?>_bHXswDE8ffn%R_a>K4^H(P$s!_pf+J==?B@-J(!ZyP zpoO|BXB%X!H)=xzL+#4sFQ?L_;u!bRHI6ISSNI3^NOuHc?crgYQCd?kBS_nh&TVGj zhJdmJOP)bAlsJY%*_!8Ya_PE^@u&4_>$iLU+u-9;#arX@p*g{-v_GZlAI_%;dLa~h zw$oFZ%bG>NwXoB|aB;YHVi?^KJgrWIN~}M8@C6GJfdjV&G8T8@lnsIN;i#aq1t$VM zDz5%(^6cS#fn&75I99@nmh(^viOAY(rxFeyYKd5N(X$P?&lI(GL2$Mq_>ta$eUqdBCW5YPh%oRdlY^$#?7Sf`a0-74hBOwYiCcV6-nsgH+4Y;vV=pS5i+N#?I+Fxgi<7F_cP zytoO@b00Hyznv?)CCfTgNXw=tyFUmxjaju7L0t}6p>(k1;{_-Am?&A3-@?Q=(Dj95~x>Hgx>+$B&QHk0sV0BJar*-N9ludM$a~ zGk{7Qju=Vi0I?*zg{=HtalCp1jEjPndeAMxTyzTP@(8HCa=0+pr@8IfXw=O3%({B- z5>4aDiHM2ACqGyITh>w9`OZxA*Q1@25zGG2&eK2qYXeoZBIV@6-}NP=mrz3CuTM^p zYRoQ>esK2WG>M~nS5RA1E5#i<9H)X@@U(FDT%>F96N4|%@oEz4HHSsCqyEECJBxGL z99?hB^G*e6zqDok{ezjjH^zL%4x9ZdX0Y}GLmsCeUztTZE@r$MPe0$VH&gUMpns3` z=YK%efML2&ok!b}Gd7EyXG_30qzc4_ZG$zw?OqgL#`airOoh7O%crwtSQ0=D46HxM z0~Sc7;vkR7^sa&DdT~HXjuP@lX{f#k+NF4!2=+N5PaxeaiH({YpoWLtXZVp8_}@?6&K?qB@>O>jO2%sVYH%+vJZd2RkWXlU#R zx-^vbN!n&K@HS8^oeo{328*V+e(PlJOSbv+(Ug?Ww?KAk+v@sZi)^C8Fx6Ny_r9;8 zZ3qws)Wg`-q^$K6QNw`p(CrsbSD6a1rGmTm7JkzjnRaA_`|ZZ!+!Ak0U}` z7eQ|N;O>(*r9HCgyDz2>hDJoZ^k@jBA-IU`>u3e7#b>_$M_y6{^#FoxV>-vptjKg^az`8r9qzI_d!TYWM+fw@|C5L_@HtegsUFr<&jq3W(e)v$xBIw_%opSVp^_;E?8YcyG7_-(;!__ z(}0;D&!j2a9_lC4YHljWd2qHbUun(Y-kTYNv9MX6#ZFPu{Nm=-R-Xl&qKURs>w2E7 z>-KS0O}l`c+48H)Qcu&Lb)TMeTwV&er66OAG-F!r^Dhnc3mvCDnW90Dmn>ehNL1Q4 z{y5=bf5q|G&T19?42!>PZSdp4CNnJPYq$<#$c;mPsq}oo*=y%)7wt?ceE(351?Ph#;{K-=L+Gl|0&Kf$Q!A(irfW@hp`i!IW;1#4-MTNYDj31?7vTHe+25sa?e%~l+mC_L zw8n@||Di(vv>iPwLhE~?d_PaSSM2FN+kS*cBm>w(wwIX8(l#-4!h4qMCrdD|cF`j- z4c`<8h~!sRe9b+k|hurd#fqWs6UvvD3E98QL*7@H3{q0BG+o@-(h|C^Z zHvIhoEZr%(04r{oMieZ?7aQ$sKUf!^)>fj^@u0r=ZRGy`Kx5na4h51R_ks32-*q^9 z9hLGAb!j9gx4EyZdB)W(Uu4$br`GL+aB}S0jQ#2f+5J;Ka;{#&kLN^Og!nnpB!SoD?EB%MTRtEg+;*4VK>%E=*gG>CREnT;U ze@*TxikX^$iH$>4N1W{a=e{wYy_|dT2t@1^OHQ8qQ$~-sEJ4Mlt`~zUKxJiu!x2yS z=aH9p$o$jZeK@sOzN8p3ohY4d%8vRRbga^Nc2mxIv-<(!hlLV;@CbQP;Qm>XghUlc zSbSGXB&*?wXDLd&zV^EKDDC=6j4S@d24^GZB-VcL(Y0FNvC;Ze-t8s)2<%hfAgHr5 ziTiSJF%}02tF$BYwbfkE(A9y^li3!j6$z%X7APamo~r|)TMsO9mst0-cX*_nj z@=D23E}3hP-w@y*Y(!%DR4G=S{F0nT1$p)atQsPq;PjVahZE;TK0VW~#@(eCw|Q-W zd`;7L8mk@&M>C}_=uEN$la&}vtg(TA7tl`~wtz#zsafgA`A*%^-H_$joex30ZO z0=)DOlp!#a+g_|z!1=i%HK=IjE*{j&iAKIGlB?QfhxD{SGBF?!I zA@kT+WS;VrZLS-8I%y7-L_1w;7CFfmINbzi_Yk!3SW`VHwbeNIF#aV_mI+i z4N=Sg8^?7v&6>O`z9~(6j>6&rlWnmY3oep_5Ig$b>ViekyoF}290Kb<>V6xQa!Q| z_XvLXrLzT22?Pe+0Ga13ZnPozA?eDVHHiH;@;Eya473u2ddMt~EkP|KHIvm3uCq@+ z?6keDb~ILE#S9X~lI3|`oi=W_@e3PdP|k0@1g|4!T}}wAc_sR!@5GN#UR_Qvx;FR} zS%wVgpB(^0-V{O3zNR={d&$~M^(vy){2A# zS4Xq{q(kft$VKrw3RDb^j-Gw@vW3qyfCA)tVA+ zz(xTO5LI;Y&yi>SGs&_&!3~T0fh)Lv2;~UBILwEXM z?E~pc>Bk#VX-|aA;do_GNx(bVvHl2|Y^JxaC(APaY(h-u4-FHed|S;3W`DmUCmFN* zby2dZq}{hp-H$>y>j&wbw5044#(_kbOzUlAKssarg7$ivrn(yItSo%)+5fI@r6?bG zkN4_(32pEC-Mjm#r!Nen^$!%N7Za?6HY$??*EY!<2R2}@MSj#jV3RmLv`1aIN^(XVQ6GhDB&gECaK z0&v?`0y-`tu%I+3P&V;2gdZi~$ih3HO+W&!!u013x7+-MA-{aPV?Qu5JO{bsu%l%0 zUP8QijW{;I(K0TsLDgp)!d3M`en&`0UvUT8=*n3&@|@_kkc3?d($y2WchIl|g1rH!YGL zR(+nTYV@OZAN2TV?9T8UDkyt?>X)j#k5>2Y^NStJd2`tf;U7}kz1zBWxX1Bm9kK_M z^7-NYQ+M5d$xRP<0Zz&wF+jk>$9xwHg1!)~jj@^F3>B0fa>kF0>5ER9&3mJa3DfNR z9w%?f#9nkW^1r&HStxVdF#ThsEK<1WP;9hn4xhjN%9raeVEBV>59qo@f-NfB2pz}o ztx_1af6p70!`>*0DQ2L6xk`<-IF!xwZ$PFnl3(fJF@Fw6t%&);Uq`NXiL8#Dbv@e8EXNAEe zr;Yg!G_L7QHH>XL4SFi%Ek&;atqJ8SHoV)Hee@q0>gn;9O?gxvF)e-Ct?F>y^uo$K z*^qSVR^U`&<$K;U4v)iIIR^-M0+E7I{fS&HRZ9U@IqjFa@ED$^LU(1LFm|p=^?o<% zgB0{nBKEeB1dqwu^N*{}yagImR7cLes$tR$(84cayBV2GL=q28Gj<5|z7{GDCgfa; zlj-z?hF`s{y*nW8x}Semu8{A6ZP;ptK4xw5EY1jJBr%=A^b=5rPY(Zz=?`FJ3^kIn zHA(^K{!GAwqWV%YYrN8dO)zv^x$QZj^Add=O+M$d9^_g5YBlj>r9(Er^H=de5W0jH zPWH$=j5U%Rh_g(4PSDq?Ov2X5zLZ$+&HS0aY?cdN8&WTHckyxoqJ}X+5hm$_Das{@ zB59C?z`g+j1$_cvRk0MQzv)JI(C&dXZ5=yyZ;6_a5#y&3|048TKEbDCj;q+Km&uQE z=Dqhz|Ht55>F?y&@d0L2g?iD|xK4;E@+?g7FE)#EOFyp;HATL`PluLb(F6wG+n1Ml*hUDGLuVQ|`h87<( zGJS|3nRuGOIZyztBr6+SGKI_A2iO{ig-qM={V>h7d0(O#e6wpr78M}%HFwsiG}gLv ztE9H9YGP_Cs)3&8F=u`jO9W(mZ^MW8&!<;JeW(z%z2{AgJ#Wp}J*j#mrLDrK;9kGHcL{<&mJ1K<+I#%VnuT06N zBC)}@$GW-#kXtf7G_4X}8ob$n>2QK={@@bUZ?NEvk}8rSzllf5x4s>*@B=?=HI@8} zRO&x6bKKL@sQzJTgU7A+L#v0PdV9ovqdy(OBOo{A(GWlvJnQaIC?4f%aOavYWcEW5 z!v-7FN+Q4E%k0bSVLcjW+S@c%Lx{C3GVb=$-i&^L6WH{gVcYLsR{g} zHQ^i}+_i1LdmIwY{(dEFIX_?ueTa6CD0(HaeN}J&Gy9>SS19DY!p=N3%7C+hOTH)!jq1|CP z_g!P8guQVlO7!7gHQlDn$48T}W4!e)e7EwO;{r~9vX7NZ~2FPCa?hEEHaAHPz_ZW(v!5@G+eV;&hDAy3%2qi!Js4#RAxd>=r^g@@{qCt?~ z`MXtnK9`A4cJ)#B)h_$bWQmy*ZOtNOy&euFf$2+8_wF=v6H*sd;%#C=28Z-TrcwbWuPKs(cx|U zGufVoh-o!%pakgoA#-fgyXmTucHuhRIsXrnq=DDyslBP}3;WpSu$m;(T`v`EC7INq z9YToUF;;n!SYw{O8)#Qw39yk;lp!ds;aA|-t?F)cKUaJ!YC3YDbxK-^OcV8iyXsE` zS=Y@jJvCHjdRt(}Xrh2yCtY;%O`tcevk^X)dzqs54pAewdLkbLzR8R76ZPi$#G*;h zj!b*LX1V&912!Yyf~B~0L!*raw8=(p-CR`}_z&|`=ZDZd1{EJRK5c(?stb~m5s`T` zNJF3u;iPf^+$Ar4aw$=|_WE_US`b``Gvo{uc_j$_6I4Mj1>?AT80+(J#_)g8UPt!d)se8QcXE!)kswq9 z@x??UkWK<7qYj}ggIXYnFq#;*;_E&x>3K95Nz>dVH8Zzm8M2Qvc~d$gQ8Q7df?F{z zqu>G`RzpS#zV->yKKSfNId9RfV7(2`MUM-L4P>UlFd~qS>4kc-Cb}3Qz(&*)bW1ie z0`mavP}*M>d8(r9qtKQ&W>&FWJ)%y?X0PhQ^l1O_v<4AM7=orP0#{$(#yE1|t$$edCl7W0eS|O#b7~v0 zm;7GhZ32d3jvV*`@x%siUc8Wo?~JuMgE}wtuM#hsEU2yc%VQ1@>Ari-eQUTXArRTd zpVjvTU}vKP!8eSk%YBqU)AoO9thG+_KkCs4tw=+f;Z;FnT^YL`)U4f|;dm*f(z89_ z7kV??cE-l~ERJ%Q^e2x|Nk`lEkC-Of7czno6Ajz6rM1Wb1HfuTcm_bJ?;5?EgR5U@>^HxPOzOQt+A$^;`XN~k4 zLOMgZ2N#pwd_b42K4NsIC=X$-H}ybl?VR!#BH?AoRL2r6Jf?LBLK)5>fY4Xfs7b(x zXeniG+I*a0`)2H~LH@P|@;S(%Ky)S}V0iv@6XFilLb0<_`ATeUi+iQ3^QS&ffA0Gf zS@GU=;{6Pdlg}Gp{o+^SZ*a~9hHph8gr>tH4296IbR3mnVfLq{$*p&i6$Sg(zM&LVed1i-Q6lYoC=(U;Z)9iGNZlVS>Oi04tGkDF33{MZcC-6(l!h z`yV742q@J`gY8-rkZu5VK{^t_mz(`)=MUE@t~yVDK6X9+%VRg&p}WQNf~;CP2Ll!P z)(a5)zZ#4ik0p2kHm!2~Ja)J7M@~hMyU}EDS8CAoUDKO~rlxW`7s}BUzh)Hu3A$zm2y+-3&fUYix22yUyoKE zm18TY#qAd-WV`DYo6r0`FEo^nh@=C`ul^E|m#4`QL-JO#XSdpRyZtWowT@BfA08-4 zF4#XW_;`qDFa@V$ABjX%H_4yW>EF;GBj(@*axvY|vVoO-GmenPDA58&Y~lRoO=>;D zC?qM>8iH*4A!M%Uov)m~vHOLmH)RSBaI&z{ucc&1PU!ipQUU>2$Cc>JS=_UijiQ(q=1)k_J|i175n zOW=FhlI#W(Q(wGnhOweUuIoH){?Qz>Tv6}UX-Smq$GKBcrez)-Zue!=Sf9*YShKI->=7*d+*crQs&`YUm)>{F)ey;nksYl zcb&IoTkS-}^z`S?7vpARok3GkYSjJEN5uy;85G~edYRRSxCyWMzlFx2C1FDa111;Y z<+90w=RHG#t?$~~j{sQpeXAYVa7*@4Jd8;~Y{cq;R>Vj1p&D>)fs#9aY znF9~Z{GHy=+Bvk!=}gP>gRm09Ji{~#kh@*|{CELp0wa@idsvBH*o{JfcLvcyPX7dG zX7fh=B5ie%E7a-~g2M%jUIk{Tc+<_IjXlr9n8p0C_g43slT1de#`_)3`t%g^yco+` zv}*UG7^{K*8NsfQEM6a1{;n9#QC632SOX$-q1hC@4VqWT{kJ)Y_i<7@KOB^rT|i(eep+9PE|GULt)o`~a;Hd3H8@ET zI0fi+$-73u27U@}zEN7*X`F=+%V-5EL|?i$);xMgjZkoG?_~7bg-ff%ufT zvZg?Sh2Ey3A%pvo7Ay;cGaY@}JjK+D`{D@aU9^q4PqfpJO}-HhH-KM6Lxf2MqcMEjn5lkP?ji3s>u1LOn;L3O=04 zqYu26`&x{TH%0^moh&$7Ul?%LYfsPA%;&192l2fX!7wHOGv3N}kxti0#rQ8%Xuz|k za;wIT{db&t)^4Hd)gkfO{$Vjd@YlAnOs2v~jJfbX7i_UD(y`--UPyy(ZM1?3Za}OSby+A>P=t$VfE>I1|U|S34l(ZU%8`g6EeKc4uZi+(S!6^jMq=kP16d}W3 zADd`;|62zY3nq87j*ZCde>Fdqul#2OqqbPxku>O?Y!PSd{y1}TN?hc#b}XjyiM|gE zc0)w3g_QJra#Gdi+y?%DIUsm4$jx9CtQDfsPhLzYTb%8{$&m#)I#d5vI`b~B%_~T$ zowxV0^yJ6D(%ZM*@9j#}n(5eaygV*TVsS6zv36G1Ivyv_Lpw~g{VsrUQIh|h4Q%$B zxVaorlIxs|voSEH$Mf!tG1W5zEv>?d$@8*So{5e$GWVr5 zUX{ujr)z9&zFFwuKj3S;tVIV8P@}h7!>QJ{WwtFdVX@hx!Q^NHtDwgUI(cFR+dSnU z&l0D!)EED%g&b1}{PGC-pWI4_b5MNi8UqtHhuUMU7pZ$?DxzyDtLXl2`qoKl?$xZh z97p+JhwT5Xz&iojOgmw%xrU+Gl#LxEIXB=~X^zPu6C3003@YgM?b2%OFphUZ(+D9K zy}EZ?Mt{ndsbSN#4R->9}5&G{-mWYg9YLNP>8Ot?JNbO-61i+89RaCw*Y(6=TPo<_0-w8wW?68@|W3Mm- z4~v9VL&q&Vof>6?z)@2zU^q|<(0yD?D1n;$@Sh-?Qm4)STByxN{Low|1$gtZXMD(!wUjW(2TIdRqf}QsNa>IlvrS&)-E-X zZ$q$l64aM5Xxx}?0YmYeEk#Caqt7tW4pOhykrn|VBbnb=<01WJ){LJF)8>J9FQqdj zCrP0E{Iq-WVG#90gSseQ(TTkdn{=a0z3_|2s-*3K5hGhEOZavm3V7@=`)|A3#wjf6ncpv; zsHmE%`aHece|&uU-i!NI-hE?~=%97oIoqFeuFt)ZToqAYZ^CA;_-+GJZz0pNczm4f zBTW3EQ&nj){<*01^Zh{oSMkw65eJ{|eHqob!#~aDW0|LOplOC~=!=wxgE5!Uhua7b z`~64>LuqJ9n_|w%e*DVeR~;P}F8vR6xjVozJ{rE%mv?Bhu5~4Uu&!l5aF{%LOso#a zfy)u>j2a2$Db&}1b`7AB0{s^kXx(hQNS4h&GzxLBpK?&t5#u~A4glnskp*M7g-D?9 z&Wz`(9DczC$R@JhXF$`+-z^1=2jDjwXt3?;Okv;tQcCr-Lyz~O0MV>*>KejkI&5JL#Jb@n8j(l#|gW*ui>KNI2AMl8FZ1{CBW6+~PO_{wcy%p*Hl5-A zP*%C|ogi;pR;aR=j~50bc;uXGV0{JPC+;&#zEt|6kIKrlO2Q>j8B8YeOncWmWW`sb zul?4;ztkQAJC92&_FM9gJuwh)M(IUoA3MDd7jn$xfFUhGa_{AdZ~a=i0eonOOd(KBVS>@oU2M4~AAcN97A z2#<_R{M{TA`9nK9=@0=e^@rfTJ>mb&Ie z3G{mn!Olw}Ls$iMk#Flq?vmCZA(Neu8sj8RnWf_em1;a`cfhLnK{2hVMzjew5<0!n zW?@Q6s`q@#@4tHfSw6YH%=xaUPdhM3KwvuWHNl-cEo zTkrc;rz4>1dxC8ErHD z*}kSEG^*b@&}DjT-N}leQ-8z*s*G_M24l>PjzdI~f5xXmt}Z!f*e|Y$g`EMZN{!ON zW8e?cPLKW-VzUV}Z#i~`0cEx7|BIgc`bv)Y+=C-K4l8w)r?z?aBy~;i2L>Hj7!`a- z!)g7fdjyTO18x2f#>p=}tq2)=!KKDb9w%5i?1M16WeiA}+415S&#twR;voWaME@8nsI1&z8_J4T@&*|f*cCc?lx6JQ zMySr?8S@QeagF4F0WStJ4-D=rIpVwj*HOeDl>FEZ=+{W>^0hEcdi32oZ$T-c;C? z$yFYQI5%m>Ol%=w##PZ5?l z`m`)*mS=AVrtZ7W@Y34XOz$>&Y1rRcxV25}m>u_EXP_FJGycd>cm$TZ%iXqYN3Zd2 zb@>YB@&x_AeOvci`2us#T_BG$v3tGL_oLXLUvcleWKXY8Jy`E!FEva2Dyp4rVzya`kWCjzDRQ6aI;w{3Xr;xCksAb!!72~{eblF(*|+j znttbJ#g?i%-2=T;PsPFx(~AJ3R93DkYzM=y%BvpS@RH)xJGZbO&;c=%Yt+Cp(a z(B8{y_Io`0ql9`{kb9|A)d6bjEmqf1vuQQ{Fn9%lhm>2$@_g7*J85k2F?qrc+oP<7 zh7najeEwZLO(TepDW1B9Y4(j|h&OU!Afu~s~ z)sBy6pN`yPdSg(Khq0HtL2H7eIh7n!-#dq=S{7NfAn06MVfTN7?-iC#;>TeP)*4BD zX^Gdx7vqhA`v;!Z-_iOe(&lfYHV8uH2Cck*N2AxIt@Ld2(BkHMqJ%@6c{(b3bjbM4 z*^XT%D-(B?Yq-^2_=%rxJ@-$RXq8#uk5{C@BDe5R$X4N1p^5}uii>d^@$KQUq2JBHqGT`h0PtM>tQ>ikajGGA%YC&?OoY4da(ZHSOBroot1_{VPo^5W@7^X(oG%uEmqPzBRt9rXqCSV&0^`7!qdMwEKCeix0k;xa+A4iA_`-ac7Z4-ber2Q?1l=0ufP4u zf5IF~0wMF6Zx-uf*vaJSvxjc0{T_hK%2mxLL}ZTT5$>|JH;xAhZS6!fFaf9vSkD!* zWBF*fI>eo7SF%EddL9+wMH6|20qM?)yL^({ubSm$l{c4a`t97LMA>SctrfCO{ueIv zXT*p5e8Uu2v;Yjn!(%qvG;qt;A(lyY zP(iWzkgbVwLE;rolAa&b{{dcVJmAx>jFT;A$OSx{1CZN zxxiV5UQ4TqP0I#Ue`rF`rfjaJM`3Y&=SJa0o3}`EAQYe!MWu7o*}+&-uxvE{(Bq1T zIk7Y9mz<{Z!rrK5tlE}o-5REKdyaw~2#JJ@XSAd>EZt^idrq5cnaj_cH7m958>!c% zB`$8t4oE6Q(PNB5g1t)i39P#@9Ai%7R%7WQRLf42lK7bX-jcrN-_jpv=gxO*a}G%Q zWUSt1d4fY*n>) zf!ZFchtj6dAXCUQcw9Spl%k&yFL$A{Xdm_gl|N8U))>|lt`{gzLO+FmfD7)cD%-te<-*p-{^&>8=F?=f7I|pH{g=ezamPj(vJ6$ni#o+!`3|Y6KM1~CjhrY!a zs>Ys(iebv%z92iz5vChW+2O&fbJJ}&st>(gOFLnNA}*;o5O>$VTzcqA&g4~T;HH7L zAQ-^sv?V|$n+=ohQuWQr=EAN+r*kIm^21g=cQC(~kVGYEdE}Ljm5v1lTsq@$eRJDp z&4A#8m6?r^B;M*CGD_QY?v-V%?qP>5|D(%$)66DMjjU~BPSjKCg?Opc5`}`owM$~5^ z=`BB9+AP{{E{;5Pex6rO(bd9{{ks}8k7T9?v~S!b4!@F@7w#-_(2+ADlOTWlFOCs+ zRuI{5(Yp|WH+UF>-I&z6T~4BZ&7lN^ffJf4=srWiun$*X)qcqXqgg-u#r-H8ub~zH z0JMfkk11LU0EyDzgAWfI4F~Ne_bW*2j}kJD)k+w}MUD0GBOrEt4S-axum)l^D5{Tw z&PdRGjGh+b>~X1B%7#^q29d-lXZ857A3!*9K}h4F1z33+gU80$JHNQc=h-zPKp5O>28s;ZmIk}TA2n)B zPBVDPFK@0)jd90<{%snp1O6J9^EDywI%5kKm);IPU#h)W8ae#4Q2}Hs*0^pvJb#Y* z(cN}^osnycM1I;?Z61qtE~q*E#yd*@L3Cj%O#aYjF|&^i6lhudTo>}#P_-V*^)a!T zb}%{338_&@)$5&g_UY(z`e0j$U!SR**oeUqp#flmL4d>s3{z5}T8VPp=BFgBaahj_ zv%WvKdxO5|$|R>d1we_tnN}E!ufhf$YW!TL8=}ZiA=ibK@HbQeak`oY|Oe;@yU?Q9K6^C{<3%yf`SL_<_-#xN984k@Xygqoy8>9nT7gh2

    @C`Cs?+{9fPhtKDal%;$68@5A-J-q)3y$~u&7 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∋0V{&z%1bY_5cN63H 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

    f{Xt<1ByZg_$AF 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

    *d6dzlcRgTbST?ZKYVdCKwZIR-J<_dM(eVR?+>? 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:aU2vK40k_k3;&3}6W!%v=^W-d? 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%0DtiD=ODV)&M)7>_vFNW`3GCBAx2Z{*Nj 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