From 74f3183fe5e154b7861bcef654fb135d74863b2b Mon Sep 17 00:00:00 2001 From: Tracy Boehrer Date: Tue, 17 Oct 2023 08:57:11 -0500 Subject: [PATCH 01/15] Removed deprecation notice --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 709d2d737..4b7d3ff4f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,5 @@ # ![Bot Framework SDK v4 Python](./doc/media/FrameWorkPython.png) -**The Bot Framework Python SDK is being retired with final long-term support ending in November 2023, after which this repository will be archived. There will be no further feature development, with only critical security and bug fixes within this repository being undertaken. Existing bots built with this SDK will continue to function. For all new bot development we recommend that you adopt [Power Virtual Agents](https://powervirtualagents.microsoft.com/en-us/blog/the-future-of-bot-building/) or use the [Bot Framework C#](https://github.com/microsoft/botbuilder-dotnet) or [Bot Framework JavaScript](https://github.com/microsoft/botbuilder-js) SDKs.** -### [What's new with Bot Framework](https://docs.microsoft.com/en-us/azure/bot-service/what-is-new?view=azure-bot-service-4.0) - This repository contains code for the Python version of the [Microsoft Bot Framework SDK](https://github.com/Microsoft/botframework-sdk), which is part of the Microsoft Bot Framework - a comprehensive framework for building enterprise-grade conversational AI experiences. This SDK enables developers to model conversation and build sophisticated bot applications using Python. SDKs for [JavaScript](https://github.com/Microsoft/botbuilder-js), [.NET](https://github.com/Microsoft/botbuilder-dotnet) and [Java (preview)](https://github.com/Microsoft/botbuilder-java) are also available. From ab92acc437138bd5a3f7c8b2b972544400e80712 Mon Sep 17 00:00:00 2001 From: tracyboehrer Date: Thu, 2 Nov 2023 12:13:52 -0500 Subject: [PATCH 02/15] Exporting ConfigurationBotFrameworkAuthentication (#2034) * Exporting ConfigurationBotFrameworkAuthentication * ConfigurationBotFrameworkAuthentication export black correction --------- Co-authored-by: Tracy Boehrer --- .../botbuilder/integration/aiohttp/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/__init__.py b/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/__init__.py index 8f06af6df..afefa5646 100644 --- a/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/__init__.py +++ b/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/__init__.py @@ -13,6 +13,9 @@ from .configuration_service_client_credential_factory import ( ConfigurationServiceClientCredentialFactory, ) +from .configuration_bot_framework_authentication import ( + ConfigurationBotFrameworkAuthentication, +) __all__ = [ "aiohttp_channel_service_routes", @@ -21,4 +24,5 @@ "BotFrameworkHttpAdapter", "CloudAdapter", "ConfigurationServiceClientCredentialFactory", + "ConfigurationBotFrameworkAuthentication", ] From 8e714268cd288ef646873291f6dcc4e265ab95eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20Su=C3=A1rez?= Date: Thu, 2 Nov 2023 10:32:23 -0700 Subject: [PATCH 03/15] updated teams info for cloud adapter (#1776) * updated teams info for cloud adapter * black corrections --------- Co-authored-by: tracyboehrer Co-authored-by: Tracy Boehrer --- .../botbuilder/core/adapters/test_adapter.py | 2 +- .../botbuilder/core/bot_adapter.py | 50 +++++++++- .../botbuilder/core/bot_framework_adapter.py | 6 +- .../botbuilder/core/cloud_adapter_base.py | 92 +++++++++++++++++++ .../botbuilder/core/teams/teams_info.py | 59 +++++++++++- .../botbuilder-core/tests/simple_adapter.py | 2 +- ...simple_adapter_with_create_conversation.py | 2 +- 7 files changed, 202 insertions(+), 11 deletions(-) diff --git a/libraries/botbuilder-core/botbuilder/core/adapters/test_adapter.py b/libraries/botbuilder-core/botbuilder/core/adapters/test_adapter.py index 18c0e2962..56f122344 100644 --- a/libraries/botbuilder-core/botbuilder/core/adapters/test_adapter.py +++ b/libraries/botbuilder-core/botbuilder/core/adapters/test_adapter.py @@ -217,7 +217,7 @@ async def continue_conversation( reference, callback, bot_id, claims_identity, audience ) - async def create_conversation( + async def create_conversation( # pylint: disable=arguments-differ self, channel_id: str, callback: Callable # pylint: disable=unused-argument ): self.activity_buffer.clear() diff --git a/libraries/botbuilder-core/botbuilder/core/bot_adapter.py b/libraries/botbuilder-core/botbuilder/core/bot_adapter.py index cb073bc51..5ab04eafb 100644 --- a/libraries/botbuilder-core/botbuilder/core/bot_adapter.py +++ b/libraries/botbuilder-core/botbuilder/core/bot_adapter.py @@ -3,8 +3,13 @@ from abc import ABC, abstractmethod from typing import List, Callable, Awaitable -from botbuilder.schema import Activity, ConversationReference, ResourceResponse -from botframework.connector.auth import ClaimsIdentity +from botbuilder.schema import ( + Activity, + ConversationReference, + ConversationParameters, + ResourceResponse, +) +from botframework.connector.auth import AppCredentials, ClaimsIdentity from . import conversation_reference_extension from .bot_assert import BotAssert @@ -108,6 +113,47 @@ async def continue_conversation( ) return await self.run_pipeline(context, callback) + async def create_conversation( + self, + reference: ConversationReference, + logic: Callable[[TurnContext], Awaitable] = None, + conversation_parameters: ConversationParameters = None, + channel_id: str = None, + service_url: str = None, + credentials: AppCredentials = None, + ): + """ + Starts a new conversation with a user. Used to direct message to a member of a group. + + :param reference: The conversation reference that contains the tenant + :type reference: :class:`botbuilder.schema.ConversationReference` + :param logic: The logic to use for the creation of the conversation + :type logic: :class:`typing.Callable` + :param conversation_parameters: The information to use to create the conversation + :type conversation_parameters: + :param channel_id: The ID for the channel. + :type channel_id: :class:`typing.str` + :param service_url: The channel's service URL endpoint. + :type service_url: :class:`typing.str` + :param credentials: The application credentials for the bot. + :type credentials: :class:`botframework.connector.auth.AppCredentials` + + :raises: It raises a generic exception error. + + :return: A task representing the work queued to execute. + + .. remarks:: + To start a conversation, your bot must know its account information and the user's + account information on that channel. + Most channels only support initiating a direct message (non-group) conversation. + The adapter attempts to create a new conversation on the channel, and + then sends a conversation update activity through its middleware pipeline + to the the callback method. + If the conversation is established with the specified users, the ID of the activity + will contain the ID of the new conversation. + """ + raise Exception("Not Implemented") + async def run_pipeline( self, context: TurnContext, callback: Callable[[TurnContext], Awaitable] = None ): diff --git a/libraries/botbuilder-core/botbuilder/core/bot_framework_adapter.py b/libraries/botbuilder-core/botbuilder/core/bot_framework_adapter.py index 15e23e8f0..41ce8ff72 100644 --- a/libraries/botbuilder-core/botbuilder/core/bot_framework_adapter.py +++ b/libraries/botbuilder-core/botbuilder/core/bot_framework_adapter.py @@ -363,7 +363,11 @@ async def create_conversation( ) # Mix in the tenant ID if specified. This is required for MS Teams. - if reference.conversation and reference.conversation.tenant_id: + if ( + reference + and reference.conversation + and reference.conversation.tenant_id + ): # Putting tenant_id in channel_data is a temporary while we wait for the Teams API to be updated if parameters.channel_data is None: parameters.channel_data = {} diff --git a/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py b/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py index 6b1301f1e..56976ac94 100644 --- a/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py +++ b/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py @@ -6,13 +6,18 @@ from copy import Error from http import HTTPStatus from typing import Awaitable, Callable, List, Union +from uuid import uuid4 from botbuilder.core.invoke_response import InvokeResponse from botbuilder.schema import ( Activity, + ActivityEventNames, ActivityTypes, + ConversationAccount, ConversationReference, + ConversationResourceResponse, + ConversationParameters, DeliveryModes, ExpectedReplies, ResourceResponse, @@ -175,6 +180,71 @@ async def continue_conversation_with_claims( claims_identity, get_continuation_activity(reference), audience, logic ) + async def create_conversation( # pylint: disable=arguments-differ + self, + bot_app_id: ConversationReference, + callback: Callable[[TurnContext], Awaitable] = None, + conversation_parameters: ConversationParameters = None, + channel_id: str = None, + service_url: str = None, + audience: str = None, + ): + if not service_url: + raise TypeError( + "CloudAdapter.create_conversation(): service_url is required." + ) + if not conversation_parameters: + raise TypeError( + "CloudAdapter.create_conversation(): conversation_parameters is required." + ) + if not callback: + raise TypeError("CloudAdapter.create_conversation(): callback is required.") + + # Create a ClaimsIdentity, to create the connector and for adding to the turn context. + claims_identity = self.create_claims_identity(bot_app_id) + claims_identity.claims[AuthenticationConstants.SERVICE_URL_CLAIM] = service_url + + # create the connectror factory + connector_factory = self.bot_framework_authentication.create_connector_factory( + claims_identity + ) + + # Create the connector client to use for outbound requests. + connector_client = await connector_factory.create(service_url, audience) + + # Make the actual create conversation call using the connector. + create_conversation_result = ( + await connector_client.conversations.create_conversation( + conversation_parameters + ) + ) + + # Create the create activity to communicate the results to the application. + create_activity = self._create_create_activity( + create_conversation_result, channel_id, service_url, conversation_parameters + ) + + # Create a UserTokenClient instance for the application to use. (For example, in the OAuthPrompt.) + user_token_client = ( + await self.bot_framework_authentication.create_user_token_client( + claims_identity + ) + ) + + # Create a turn context and run the pipeline. + context = self._create_turn_context( + create_activity, + claims_identity, + None, + connector_client, + user_token_client, + callback, + connector_factory, + ) + + # Run the pipeline + await self.run_pipeline(context, callback) + async def process_proactive( self, claims_identity: ClaimsIdentity, @@ -301,6 +371,28 @@ def create_claims_identity(self, bot_app_id: str = "") -> ClaimsIdentity: True, ) + def _create_create_activity( + self, + create_conversation_result: ConversationResourceResponse, + channel_id: str, + service_url: str, + conversation_parameters: ConversationParameters, + ) -> Activity: + # Create a conversation update activity to represent the result. + activity = Activity.create_event_activity() + activity.name = ActivityEventNames.create_conversation + activity.channel_id = channel_id + activity.service_url = service_url + activity.id = create_conversation_result.activity_id or str(uuid4()) + activity.conversation = ConversationAccount( + id=create_conversation_result.id, + tenant_id=conversation_parameters.tenant_id, + ) + activity.channel_data = conversation_parameters.channel_data + activity.recipient = conversation_parameters.bot + + return activity + def _create_turn_context( self, activity: Activity, diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py index 2cd9ee0c7..3226cb053 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py @@ -3,14 +3,15 @@ from typing import List, Tuple +from botframework.connector import Channels from botframework.connector.aio import ConnectorClient -from botframework.connector.teams.teams_connector_client import TeamsConnectorClient -from botbuilder.schema import ConversationParameters, ConversationReference +from botframework.connector.teams import TeamsConnectorClient from botbuilder.core.teams.teams_activity_extensions import ( teams_get_meeting_info, teams_get_channel_data, ) -from botbuilder.core.turn_context import Activity, TurnContext +from botbuilder.core import CloudAdapterBase, BotFrameworkAdapter, TurnContext +from botbuilder.schema import Activity, ConversationParameters, ConversationReference from botbuilder.schema.teams import ( ChannelInfo, MeetingInfo, @@ -25,15 +26,61 @@ class TeamsInfo: @staticmethod async def send_message_to_teams_channel( - turn_context: TurnContext, activity: Activity, teams_channel_id: str + turn_context: TurnContext, + activity: Activity, + teams_channel_id: str, + *, + bot_app_id: str = None, ) -> Tuple[ConversationReference, str]: if not turn_context: raise ValueError("The turn_context cannot be None") + if not turn_context.activity: + raise ValueError("The activity inside turn context cannot be None") if not activity: raise ValueError("The activity cannot be None") if not teams_channel_id: raise ValueError("The teams_channel_id cannot be None or empty") + if not bot_app_id: + return await TeamsInfo._legacy_send_message_to_teams_channel( + turn_context, activity, teams_channel_id + ) + + conversation_reference: ConversationReference = None + new_activity_id = "" + service_url = turn_context.activity.service_url + conversation_parameters = ConversationParameters( + is_group=True, + channel_data=TeamsChannelData(channel=ChannelInfo(id=teams_channel_id)), + activity=activity, + ) + + async def aux_callback( + new_turn_context, + ): + nonlocal new_activity_id + nonlocal conversation_reference + new_activity_id = new_turn_context.activity.id + conversation_reference = TurnContext.get_conversation_reference( + new_turn_context.activity + ) + + adapter: CloudAdapterBase = turn_context.adapter + await adapter.create_conversation( + bot_app_id, + aux_callback, + conversation_parameters, + Channels.ms_teams, + service_url, + None, + ) + + return (conversation_reference, new_activity_id) + + @staticmethod + async def _legacy_send_message_to_teams_channel( + turn_context: TurnContext, activity: Activity, teams_channel_id: str + ) -> Tuple[ConversationReference, str]: old_ref = TurnContext.get_conversation_reference(turn_context.activity) conversation_parameters = ConversationParameters( is_group=True, @@ -41,7 +88,9 @@ async def send_message_to_teams_channel( activity=activity, ) - result = await turn_context.adapter.create_conversation( + # if this version of the method is called the adapter probably wont be CloudAdapter + adapter: BotFrameworkAdapter = turn_context.adapter + result = await adapter.create_conversation( old_ref, TeamsInfo._create_conversation_callback, conversation_parameters ) return (result[0], result[1]) diff --git a/libraries/botbuilder-core/tests/simple_adapter.py b/libraries/botbuilder-core/tests/simple_adapter.py index b8dd3c404..ae68dc323 100644 --- a/libraries/botbuilder-core/tests/simple_adapter.py +++ b/libraries/botbuilder-core/tests/simple_adapter.py @@ -59,7 +59,7 @@ async def send_activities( return responses - async def create_conversation( + async def create_conversation( # pylint: disable=arguments-differ self, reference: ConversationReference, logic: Callable[[TurnContext], Awaitable] = None, diff --git a/libraries/botbuilder-core/tests/teams/simple_adapter_with_create_conversation.py b/libraries/botbuilder-core/tests/teams/simple_adapter_with_create_conversation.py index 477aa3b28..d1801d978 100644 --- a/libraries/botbuilder-core/tests/teams/simple_adapter_with_create_conversation.py +++ b/libraries/botbuilder-core/tests/teams/simple_adapter_with_create_conversation.py @@ -58,7 +58,7 @@ async def send_activities( return responses - async def create_conversation( + async def create_conversation( # pylint: disable=arguments-differ self, reference: ConversationReference, logic: Callable[[TurnContext], Awaitable] = None, From b019a10bdd537eafe674b926a087c8e3a3761463 Mon Sep 17 00:00:00 2001 From: Kostya <53430368+kostyaplis@users.noreply.github.com> Date: Thu, 9 Nov 2023 20:23:11 +0800 Subject: [PATCH 04/15] fix: cloudAdapter.update_conversation() add app_id parameter (#2037) Co-authored-by: Konstantin Plis --- .../botbuilder-core/botbuilder/core/cloud_adapter_base.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py b/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py index 56976ac94..c5eda9589 100644 --- a/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py +++ b/libraries/botbuilder-core/botbuilder/core/cloud_adapter_base.py @@ -150,6 +150,7 @@ async def continue_conversation( # pylint: disable=arguments-differ self, reference: ConversationReference, callback: Callable, + bot_app_id: str, ): """ Sends a proactive message to a conversation. @@ -161,9 +162,12 @@ async def continue_conversation( # pylint: disable=arguments-differ :type reference: :class:`botbuilder.schema.ConversationReference` :param callback: The method to call for the resulting bot turn. :type callback: :class:`typing.Callable` + :param bot_app_id: The application Id of the bot. This is the appId returned by the Azure portal registration, + and is generally found in the `MicrosoftAppId` parameter in `config.py`. + :type bot_app_id: :class:`typing.str` """ return await self.process_proactive( - self.create_claims_identity(), + self.create_claims_identity(bot_app_id), get_continuation_activity(reference), None, callback, @@ -182,7 +186,7 @@ async def continue_conversation_with_claims( async def create_conversation( # pylint: disable=arguments-differ self, - bot_app_id: ConversationReference, + bot_app_id: str, callback: Callable[[TurnContext], Awaitable] = None, conversation_parameters: ConversationParameters = None, channel_id: str = None, From 0026cf37342a3ba666b6daaa19a85d4db176e968 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 20:03:21 -0600 Subject: [PATCH 05/15] Bump aiohttp from 3.8.5 to 3.8.6 in /libraries/botbuilder-adapters-slack (#2039) Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.5 to 3.8.6. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.8.5...v3.8.6) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- libraries/botbuilder-adapters-slack/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-adapters-slack/requirements.txt b/libraries/botbuilder-adapters-slack/requirements.txt index 4b93ca95a..4e707ec41 100644 --- a/libraries/botbuilder-adapters-slack/requirements.txt +++ b/libraries/botbuilder-adapters-slack/requirements.txt @@ -1,4 +1,4 @@ -aiohttp==3.8.5 +aiohttp==3.8.6 pyslack botbuilder-core==4.15.0 slackclient From b4fb389766d77c8756fddaf8200f3eedf34585c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 20:11:49 -0600 Subject: [PATCH 06/15] Bump aiohttp in /libraries/botbuilder-integration-aiohttp (#2038) Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.5 to 3.8.6. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.8.5...v3.8.6) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: tracyboehrer --- libraries/botbuilder-integration-aiohttp/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-integration-aiohttp/requirements.txt b/libraries/botbuilder-integration-aiohttp/requirements.txt index 3e2517b24..8fa79efe2 100644 --- a/libraries/botbuilder-integration-aiohttp/requirements.txt +++ b/libraries/botbuilder-integration-aiohttp/requirements.txt @@ -1,4 +1,4 @@ msrest==0.6.* botframework-connector==4.15.0 botbuilder-schema==4.15.0 -aiohttp==3.8.5 +aiohttp==3.8.6 From 02ed1faec9a9d207d9ae8239ed8bf988bef19267 Mon Sep 17 00:00:00 2001 From: Tracy Boehrer Date: Wed, 22 Nov 2023 10:48:57 -0600 Subject: [PATCH 07/15] Cross-site alert in test code --- libraries/botbuilder-applicationinsights/django_tests/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-applicationinsights/django_tests/views.py b/libraries/botbuilder-applicationinsights/django_tests/views.py index 181ca847c..c91c0bbb5 100644 --- a/libraries/botbuilder-applicationinsights/django_tests/views.py +++ b/libraries/botbuilder-applicationinsights/django_tests/views.py @@ -52,7 +52,7 @@ def getid(request, id): @api_view(["POST"]) def returncode(request, id): - return HttpResponse("Status code set to %s" % id, status=int(id)) + return HttpResponse("returncode", status=int(id)) @api_view(["POST"]) From 0c385b99dbe85d458b4e3d40a14d43506f93283b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 09:31:57 -0600 Subject: [PATCH 08/15] Bump aiohttp in /libraries/botbuilder-integration-aiohttp (#2041) Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.6 to 3.9.0. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.8.6...v3.9.0) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- libraries/botbuilder-integration-aiohttp/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-integration-aiohttp/requirements.txt b/libraries/botbuilder-integration-aiohttp/requirements.txt index 8fa79efe2..2a614a9a6 100644 --- a/libraries/botbuilder-integration-aiohttp/requirements.txt +++ b/libraries/botbuilder-integration-aiohttp/requirements.txt @@ -1,4 +1,4 @@ msrest==0.6.* botframework-connector==4.15.0 botbuilder-schema==4.15.0 -aiohttp==3.8.6 +aiohttp==3.9.0 From 3b0465cc2a55da475a4c33aad9b53195b9bc245e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 09:39:46 -0600 Subject: [PATCH 09/15] Bump aiohttp from 3.8.6 to 3.9.0 in /libraries/botbuilder-adapters-slack (#2042) Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.6 to 3.9.0. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.8.6...v3.9.0) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: tracyboehrer --- libraries/botbuilder-adapters-slack/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-adapters-slack/requirements.txt b/libraries/botbuilder-adapters-slack/requirements.txt index 4e707ec41..d157c7b0e 100644 --- a/libraries/botbuilder-adapters-slack/requirements.txt +++ b/libraries/botbuilder-adapters-slack/requirements.txt @@ -1,4 +1,4 @@ -aiohttp==3.8.6 +aiohttp==3.9.0 pyslack botbuilder-core==4.15.0 slackclient From 62bdf0ff6f4285d0c0779779f59a1c80d1694be8 Mon Sep 17 00:00:00 2001 From: Tracy Boehrer Date: Wed, 29 Nov 2023 09:42:50 -0600 Subject: [PATCH 10/15] Pipeline updates --- pipelines/botbuilder-python-ci.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pipelines/botbuilder-python-ci.yml b/pipelines/botbuilder-python-ci.yml index 04a848e1f..802f49481 100644 --- a/pipelines/botbuilder-python-ci.yml +++ b/pipelines/botbuilder-python-ci.yml @@ -6,8 +6,8 @@ variables: COVERALLS_GIT_COMMIT: $(Build.SourceVersion) COVERALLS_SERVICE_JOB_ID: $(Build.BuildId) COVERALLS_SERVICE_NAME: python-ci - python.37: 3.7.x - python.38: 3.8.x + python.37: 3.7 + python.38: 3.8 # python.311: 3.11.x # PythonCoverallsToken: get this from Azure @@ -60,6 +60,12 @@ jobs: pip install black==22.3.0 displayName: 'Install dependencies' + - script: 'black --check libraries' + displayName: 'Check Black compliant' + + - script: 'pylint --rcfile=.pylintrc libraries' + displayName: Pylint + - script: | pip install pytest pip install pytest-cov @@ -80,12 +86,6 @@ jobs: testResultsFiles: '**/test-results.$(PYTHON_VERSION).xml' testRunTitle: 'Python $(PYTHON_VERSION)' - - script: 'black --check libraries' - displayName: 'Check Black compliant' - - - script: 'pylint --rcfile=.pylintrc libraries' - displayName: Pylint - - script: 'COVERALLS_REPO_TOKEN=$(PythonCoverallsToken) coveralls' displayName: 'Push test results to coveralls https://coveralls.io/github/microsoft/botbuilder-python' continueOnError: true From 5982105b5aa402e98520f916d86710d3c3c5e087 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 09:51:17 -0600 Subject: [PATCH 11/15] Bump cryptography from 41.0.4 to 41.0.6 in /libraries/botbuilder-dialogs (#2044) Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.4 to 41.0.6. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/41.0.4...41.0.6) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: tracyboehrer --- libraries/botbuilder-dialogs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-dialogs/requirements.txt b/libraries/botbuilder-dialogs/requirements.txt index 373827330..06e095448 100644 --- a/libraries/botbuilder-dialogs/requirements.txt +++ b/libraries/botbuilder-dialogs/requirements.txt @@ -4,5 +4,5 @@ botbuilder-schema==4.15.0 botbuilder-core==4.15.0 requests==2.31.0 PyJWT==2.4.0 -cryptography==41.0.4 +cryptography==41.0.6 aiounittest==1.3.0 From 84945805d8f140c3f41b9d9c2efa8059b8ebb3a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 10:09:30 -0600 Subject: [PATCH 12/15] Bump cryptography in /libraries/botframework-connector (#2045) Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.4 to 41.0.6. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/41.0.4...41.0.6) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: tracyboehrer --- libraries/botframework-connector/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botframework-connector/requirements.txt b/libraries/botframework-connector/requirements.txt index f90cd0860..91cf9bd18 100644 --- a/libraries/botframework-connector/requirements.txt +++ b/libraries/botframework-connector/requirements.txt @@ -2,5 +2,5 @@ msrest==0.6.* botbuilder-schema==4.15.0 requests==2.31.0 PyJWT==2.4.0 -cryptography==41.0.4 +cryptography==41.0.6 msal==1.* From 3de254694d05131d830c7e15a5bea6add55a6afa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 11:00:00 -0600 Subject: [PATCH 13/15] Bump cryptography from 41.0.4 to 41.0.6 in /libraries/botbuilder-core (#2046) Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.4 to 41.0.6. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/41.0.4...41.0.6) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: tracyboehrer --- libraries/botbuilder-core/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-core/requirements.txt b/libraries/botbuilder-core/requirements.txt index 00c320b22..0d293d6f9 100644 --- a/libraries/botbuilder-core/requirements.txt +++ b/libraries/botbuilder-core/requirements.txt @@ -4,5 +4,5 @@ botbuilder-schema==4.15.0 botframework-streaming==4.15.0 requests==2.31.0 PyJWT==2.4.0 -cryptography==41.0.4 +cryptography==41.0.6 aiounittest==1.3.0 \ No newline at end of file From c5c276de97168a0b68b439023b2b8cdfee23d520 Mon Sep 17 00:00:00 2001 From: tracyboehrer Date: Mon, 4 Dec 2023 19:50:18 -0600 Subject: [PATCH 14/15] msrest to 0.7.* (#2051) Co-authored-by: Tracy Boehrer --- libraries/botbuilder-ai/requirements.txt | 2 +- libraries/botbuilder-applicationinsights/requirements.txt | 2 +- libraries/botbuilder-core/requirements.txt | 2 +- libraries/botbuilder-dialogs/requirements.txt | 2 +- libraries/botbuilder-integration-aiohttp/requirements.txt | 2 +- libraries/botbuilder-schema/requirements.txt | 2 +- libraries/botbuilder-schema/setup.py | 2 +- libraries/botframework-connector/requirements.txt | 2 +- libraries/botframework-connector/setup.py | 2 +- libraries/botframework-streaming/requirements.txt | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libraries/botbuilder-ai/requirements.txt b/libraries/botbuilder-ai/requirements.txt index b1b9ce14a..221374746 100644 --- a/libraries/botbuilder-ai/requirements.txt +++ b/libraries/botbuilder-ai/requirements.txt @@ -1,4 +1,4 @@ -msrest==0.6.* +msrest== 0.7.* botbuilder-schema==4.15.0 botbuilder-core==4.15.0 requests==2.31.0 diff --git a/libraries/botbuilder-applicationinsights/requirements.txt b/libraries/botbuilder-applicationinsights/requirements.txt index 13d71acfd..7d22c3724 100644 --- a/libraries/botbuilder-applicationinsights/requirements.txt +++ b/libraries/botbuilder-applicationinsights/requirements.txt @@ -1,3 +1,3 @@ -msrest==0.6.* +msrest== 0.7.* botbuilder-core==4.15.0 aiounittest==1.3.0 \ No newline at end of file diff --git a/libraries/botbuilder-core/requirements.txt b/libraries/botbuilder-core/requirements.txt index 0d293d6f9..5a8a126bb 100644 --- a/libraries/botbuilder-core/requirements.txt +++ b/libraries/botbuilder-core/requirements.txt @@ -1,4 +1,4 @@ -msrest==0.6.* +msrest== 0.7.* botframework-connector==4.15.0 botbuilder-schema==4.15.0 botframework-streaming==4.15.0 diff --git a/libraries/botbuilder-dialogs/requirements.txt b/libraries/botbuilder-dialogs/requirements.txt index 06e095448..3d2fd9080 100644 --- a/libraries/botbuilder-dialogs/requirements.txt +++ b/libraries/botbuilder-dialogs/requirements.txt @@ -1,4 +1,4 @@ -msrest==0.6.* +msrest== 0.7.* botframework-connector==4.15.0 botbuilder-schema==4.15.0 botbuilder-core==4.15.0 diff --git a/libraries/botbuilder-integration-aiohttp/requirements.txt b/libraries/botbuilder-integration-aiohttp/requirements.txt index 2a614a9a6..558ae91d3 100644 --- a/libraries/botbuilder-integration-aiohttp/requirements.txt +++ b/libraries/botbuilder-integration-aiohttp/requirements.txt @@ -1,4 +1,4 @@ -msrest==0.6.* +msrest== 0.7.* botframework-connector==4.15.0 botbuilder-schema==4.15.0 aiohttp==3.9.0 diff --git a/libraries/botbuilder-schema/requirements.txt b/libraries/botbuilder-schema/requirements.txt index 908ffb023..c6b07eaec 100644 --- a/libraries/botbuilder-schema/requirements.txt +++ b/libraries/botbuilder-schema/requirements.txt @@ -1,2 +1,2 @@ aiounittest==1.3.0 -msrest==0.6.* \ No newline at end of file +msrest== 0.7.* \ No newline at end of file diff --git a/libraries/botbuilder-schema/setup.py b/libraries/botbuilder-schema/setup.py index 3f056bc72..ac285ff01 100644 --- a/libraries/botbuilder-schema/setup.py +++ b/libraries/botbuilder-schema/setup.py @@ -6,7 +6,7 @@ NAME = "botbuilder-schema" VERSION = os.environ["packageVersion"] if "packageVersion" in os.environ else "4.15.0" -REQUIRES = ["msrest==0.6.*", "urllib3<2.0.0"] +REQUIRES = ["msrest== 0.7.*", "urllib3<2.0.0"] root = os.path.abspath(os.path.dirname(__file__)) diff --git a/libraries/botframework-connector/requirements.txt b/libraries/botframework-connector/requirements.txt index 91cf9bd18..0b30023a1 100644 --- a/libraries/botframework-connector/requirements.txt +++ b/libraries/botframework-connector/requirements.txt @@ -1,4 +1,4 @@ -msrest==0.6.* +msrest==0.7.* botbuilder-schema==4.15.0 requests==2.31.0 PyJWT==2.4.0 diff --git a/libraries/botframework-connector/setup.py b/libraries/botframework-connector/setup.py index 15411c492..2e6c8fe64 100644 --- a/libraries/botframework-connector/setup.py +++ b/libraries/botframework-connector/setup.py @@ -7,7 +7,7 @@ NAME = "botframework-connector" VERSION = os.environ["packageVersion"] if "packageVersion" in os.environ else "4.15.0" REQUIRES = [ - "msrest==0.6.*", + "msrest==0.7.*", # "requests>=2.23.0,<2.26", "PyJWT>=2.4.0", "botbuilder-schema==4.15.0", diff --git a/libraries/botframework-streaming/requirements.txt b/libraries/botframework-streaming/requirements.txt index 004ce4c73..c806f7e77 100644 --- a/libraries/botframework-streaming/requirements.txt +++ b/libraries/botframework-streaming/requirements.txt @@ -1,3 +1,3 @@ -msrest==0.6.* +msrest==0.7.* botframework-connector>=4.15.0 botbuilder-schema>=4.15.0 \ No newline at end of file From e61d4b39ec5ddb59bcbe63588079e1cecc8e4766 Mon Sep 17 00:00:00 2001 From: tracyboehrer Date: Tue, 5 Dec 2023 08:23:47 -0600 Subject: [PATCH 15/15] Dialogs: regex version bump (#2050) Co-authored-by: Tracy Boehrer --- libraries/botbuilder-dialogs/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-dialogs/setup.py b/libraries/botbuilder-dialogs/setup.py index 6e97715a5..574f8bbe7 100644 --- a/libraries/botbuilder-dialogs/setup.py +++ b/libraries/botbuilder-dialogs/setup.py @@ -5,7 +5,7 @@ from setuptools import setup REQUIRES = [ - "regex<=2019.08.19", + "regex>=2022.1.18", "emoji==1.7.0", "recognizers-text-date-time>=1.0.2a1", "recognizers-text-number-with-unit>=1.0.2a1",