Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-slack-sdk for openSUSE:Factory checked in at 2023-01-14 00:03:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-slack-sdk (Old) and /work/SRC/openSUSE:Factory/.python-slack-sdk.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-slack-sdk" Sat Jan 14 00:03:38 2023 rev:6 rq:1058292 version:3.19.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-slack-sdk/python-slack-sdk.changes 2022-12-03 10:04:11.995428136 +0100 +++ /work/SRC/openSUSE:Factory/.python-slack-sdk.new.32243/python-slack-sdk.changes 2023-01-14 00:04:25.378132113 +0100 @@ -1,0 +2,5 @@ +Fri Jan 6 17:50:46 UTC 2023 - Yogalakshmi Arunachalam <yarunacha...@suse.com> + +- Change log is upto date with the version. + +------------------------------------------------------------------- Old: ---- slack-sdk-3.19.3.tar.gz New: ---- slack-sdk-3.19.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-slack-sdk.spec ++++++ --- /var/tmp/diff_new_pack.NKZlqV/_old 2023-01-14 00:04:25.994135700 +0100 +++ /var/tmp/diff_new_pack.NKZlqV/_new 2023-01-14 00:04:25.998135723 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-slack-sdk # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python3-%{**}} Name: python-slack-sdk -Version: 3.19.3 +Version: 3.19.5 Release: 0 Summary: Python SDKs for the Slack API License: MIT ++++++ slack-sdk-3.19.3.tar.gz -> slack-sdk-3.19.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/.github/workflows/ci-build.yml new/python-slack-sdk-3.19.5/.github/workflows/ci-build.yml --- old/python-slack-sdk-3.19.3/.github/workflows/ci-build.yml 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/.github/workflows/ci-build.yml 2022-12-02 03:26:05.000000000 +0100 @@ -8,7 +8,8 @@ jobs: build: - runs-on: ubuntu-latest + # Avoiding -latest due to https://github.com/actions/setup-python/issues/162 + runs-on: ubuntu-20.04 timeout-minutes: 10 strategy: matrix: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/.github/workflows/pytype.yml new/python-slack-sdk-3.19.5/.github/workflows/pytype.yml --- old/python-slack-sdk-3.19.3/.github/workflows/pytype.yml 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/.github/workflows/pytype.yml 2022-12-02 03:26:05.000000000 +0100 @@ -24,7 +24,7 @@ pip install -e ".[testing]" pip install -e ".[optional]" # As pytype can change its behavior in newer versions, we manually upgrade it - pip install "pytype==2022.10.26" + pip install "pytype==2022.11.10" - name: Run pytype run: | pytype slack_sdk/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/audit_logs/v1/logs.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/audit_logs/v1/logs.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/audit_logs/v1/logs.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/audit_logs/v1/logs.html 2022-12-02 03:26:05.000000000 +0100 @@ -191,6 +191,19 @@ self.unknown_fields = kwargs +class SharedWith: + channel_id: Optional[str] + + def __init__( + self, + *, + channel_id: Optional[str] = None, + **kwargs, + ) -> None: + self.channel_id = channel_id + self.unknown_fields = kwargs + + class Details: name: Optional[str] new_value: Optional[Union[str, List[str], Dict[str, Any]]] @@ -262,6 +275,11 @@ enable_at_here: Optional[FeatureEnablement] enable_at_channel: Optional[FeatureEnablement] can_huddle: Optional[FeatureEnablement] + url_private: Optional[str] + shared_with: Optional[SharedWith] + initiated_by: Optional[str] + source_team: Optional[str] + destination_team: Optional[str] def __init__( self, @@ -335,6 +353,11 @@ enable_at_here: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, enable_at_channel: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, can_huddle: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, + url_private: Optional[str] = None, + shared_with: Optional[Union[Dict[str, Any], SharedWith]] = None, + initiated_by: Optional[str] = None, + source_team: Optional[str] = None, + destination_team: Optional[str] = None, **kwargs, ) -> None: self.name = name @@ -433,6 +456,13 @@ if can_huddle is None or isinstance(can_huddle, FeatureEnablement) else FeatureEnablement(**can_huddle) ) + self.url_private = url_private + self.shared_with = ( + shared_with if shared_with is None or isinstance(shared_with, SharedWith) else SharedWith(**shared_with) + ) + self.initiated_by = initiated_by + self.source_team = source_team + self.destination_team = destination_team class Channel: @@ -967,7 +997,7 @@ </dd> <dt id="slack_sdk.audit_logs.v1.logs.Details"><code class="flex name class"> <span>class <span class="ident">Details</span></span> -<span>(</span><span>*, name: Optional[str] = None, new_value: Union[str, List[str], Dict[str, Any], ForwardRef(None)] = None, previous_value: Union[str, List[str], Dict[str, Any], ForwardRef(None)] = None, expires_on: Optional[int] = None, mobile_only: Optional[bool] = None, web_only: Optional[bool] = None, non_sso_only: Optional[bool] = None, type: Optional[str] = None, is_workflow: Optional[bool] = None, inviter: Union[<a title="slack_sdk.audit_logs.v1.logs.User" href="#slack_sdk.audit_logs.v1.logs.User">User</a>, Dict[str, Any], ForwardRef(None)] = None, kicker: Union[<a title="slack_sdk.audit_logs.v1.logs.User" href="#slack_sdk.audit_logs.v1.logs.User">User</a>, Dict[str, Any], ForwardRef(None)] = None, shared_to: Optional[str] = None, reason: Optional[str] = None, origin_team: Optional[str] = None, target_team: Optional[str] = None, is_internal_integration: Optional[bool] = None, cleared_resolution: Optional[str] =  None, app_owner_id: Optional[str] = None, bot_scopes: Optional[List[str]] = None, new_scopes: Optional[List[str]] = None, previous_scopes: Optional[List[str]] = None, granular_bot_token: Optional[bool] = None, scopes: Optional[List[str]] = None, scopes_bot: Optional[List[str]] = None, resolution: Optional[str] = None, app_previously_resolved: Optional[bool] = None, admin_app_id: Optional[str] = None, bot_id: Optional[str] = None, installer_user_id: Optional[str] = None, approver_id: Optional[str] = None, approval_type: Optional[str] = None, app_previously_approved: Optional[bool] = None, old_scopes: Optional[List[str]] = None, channels: Optional[List[str]] = None, permissions: Optional[List[Dict[str, Any]]] = None, new_version_id: Optional[str] = None, trigger: Optional[str] = None, export_type: Optional[str] = None, export_start_ts: Optional[str] = None, export_end_ts: Optional[str] = None, barrier_id: Optiona l[str] = None, primary_usergroup_id: Optional[str] = None, barriered_from_usergroup_ids: Optional[List[str]] = None, restricted_subjects: Optional[List[str]] = None, duration: Optional[int] = None, desktop_app_browser_quit: Optional[bool] = None, invite_id: Optional[str] = None, external_organization_id: Optional[str] = None, external_organization_name: Optional[str] = None, external_user_id: Optional[str] = None, external_user_email: Optional[str] = None, channel_id: Optional[str] = None, added_team_id: Optional[str] = None, is_token_rotation_enabled_app: Optional[bool] = None, old_retention_policy: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.RetentionPolicy" href="#slack_sdk.audit_logs.v1.logs.RetentionPolicy">RetentionPolicy</a>, ForwardRef(None)] = None, new_retention_policy: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.RetentionPolicy" href="#slack_sdk.audit_logs.v1.logs.RetentionPolicy">Retentio nPolicy</a>, ForwardRef(None)] = None, who_can_post: Union[Dict[str, List[str]], <a title="slack_sdk.audit_logs.v1.logs.ConversationPref" href="#slack_sdk.audit_logs.v1.logs.ConversationPref">ConversationPref</a>, ForwardRef(None)] = None, can_thread: Union[Dict[str, List[str]], <a title="slack_sdk.audit_logs.v1.logs.ConversationPref" href="#slack_sdk.audit_logs.v1.logs.ConversationPref">ConversationPref</a>, ForwardRef(None)] = None, is_external_limited: Optional[bool] = None, exporting_team_id: Optional[int] = None, session_search_start: Optional[int] = None, deprecation_search_end: Optional[int] = None, is_error: Optional[bool] = None, creator: Optional[str] = None, team: Optional[str] = None, app_id: Optional[str] = None, enable_at_here: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.FeatureEnablement" href="#slack_sdk.audit_logs.v1.logs.FeatureEnablement">FeatureEnablement</a>, ForwardRef(None)] = None, enable_at_channe l: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.FeatureEnablement" href="#slack_sdk.audit_logs.v1.logs.FeatureEnablement">FeatureEnablement</a>, ForwardRef(None)] = None, can_huddle: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.FeatureEnablement" href="#slack_sdk.audit_logs.v1.logs.FeatureEnablement">FeatureEnablement</a>, ForwardRef(None)] = None, **kwargs)</span> +<span>(</span><span>*, name: Optional[str] = None, new_value: Union[str, List[str], Dict[str, Any], ForwardRef(None)] = None, previous_value: Union[str, List[str], Dict[str, Any], ForwardRef(None)] = None, expires_on: Optional[int] = None, mobile_only: Optional[bool] = None, web_only: Optional[bool] = None, non_sso_only: Optional[bool] = None, type: Optional[str] = None, is_workflow: Optional[bool] = None, inviter: Union[<a title="slack_sdk.audit_logs.v1.logs.User" href="#slack_sdk.audit_logs.v1.logs.User">User</a>, Dict[str, Any], ForwardRef(None)] = None, kicker: Union[<a title="slack_sdk.audit_logs.v1.logs.User" href="#slack_sdk.audit_logs.v1.logs.User">User</a>, Dict[str, Any], ForwardRef(None)] = None, shared_to: Optional[str] = None, reason: Optional[str] = None, origin_team: Optional[str] = None, target_team: Optional[str] = None, is_internal_integration: Optional[bool] = None, cleared_resolution: Optional[str] =  None, app_owner_id: Optional[str] = None, bot_scopes: Optional[List[str]] = None, new_scopes: Optional[List[str]] = None, previous_scopes: Optional[List[str]] = None, granular_bot_token: Optional[bool] = None, scopes: Optional[List[str]] = None, scopes_bot: Optional[List[str]] = None, resolution: Optional[str] = None, app_previously_resolved: Optional[bool] = None, admin_app_id: Optional[str] = None, bot_id: Optional[str] = None, installer_user_id: Optional[str] = None, approver_id: Optional[str] = None, approval_type: Optional[str] = None, app_previously_approved: Optional[bool] = None, old_scopes: Optional[List[str]] = None, channels: Optional[List[str]] = None, permissions: Optional[List[Dict[str, Any]]] = None, new_version_id: Optional[str] = None, trigger: Optional[str] = None, export_type: Optional[str] = None, export_start_ts: Optional[str] = None, export_end_ts: Optional[str] = None, barrier_id: Optiona l[str] = None, primary_usergroup_id: Optional[str] = None, barriered_from_usergroup_ids: Optional[List[str]] = None, restricted_subjects: Optional[List[str]] = None, duration: Optional[int] = None, desktop_app_browser_quit: Optional[bool] = None, invite_id: Optional[str] = None, external_organization_id: Optional[str] = None, external_organization_name: Optional[str] = None, external_user_id: Optional[str] = None, external_user_email: Optional[str] = None, channel_id: Optional[str] = None, added_team_id: Optional[str] = None, is_token_rotation_enabled_app: Optional[bool] = None, old_retention_policy: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.RetentionPolicy" href="#slack_sdk.audit_logs.v1.logs.RetentionPolicy">RetentionPolicy</a>, ForwardRef(None)] = None, new_retention_policy: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.RetentionPolicy" href="#slack_sdk.audit_logs.v1.logs.RetentionPolicy">Retentio nPolicy</a>, ForwardRef(None)] = None, who_can_post: Union[Dict[str, List[str]], <a title="slack_sdk.audit_logs.v1.logs.ConversationPref" href="#slack_sdk.audit_logs.v1.logs.ConversationPref">ConversationPref</a>, ForwardRef(None)] = None, can_thread: Union[Dict[str, List[str]], <a title="slack_sdk.audit_logs.v1.logs.ConversationPref" href="#slack_sdk.audit_logs.v1.logs.ConversationPref">ConversationPref</a>, ForwardRef(None)] = None, is_external_limited: Optional[bool] = None, exporting_team_id: Optional[int] = None, session_search_start: Optional[int] = None, deprecation_search_end: Optional[int] = None, is_error: Optional[bool] = None, creator: Optional[str] = None, team: Optional[str] = None, app_id: Optional[str] = None, enable_at_here: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.FeatureEnablement" href="#slack_sdk.audit_logs.v1.logs.FeatureEnablement">FeatureEnablement</a>, ForwardRef(None)] = None, enable_at_channe l: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.FeatureEnablement" href="#slack_sdk.audit_logs.v1.logs.FeatureEnablement">FeatureEnablement</a>, ForwardRef(None)] = None, can_huddle: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.FeatureEnablement" href="#slack_sdk.audit_logs.v1.logs.FeatureEnablement">FeatureEnablement</a>, ForwardRef(None)] = None, url_private: Optional[str] = None, shared_with: Union[Dict[str, Any], <a title="slack_sdk.audit_logs.v1.logs.SharedWith" href="#slack_sdk.audit_logs.v1.logs.SharedWith">SharedWith</a>, ForwardRef(None)] = None, initiated_by: Optional[str] = None, source_team: Optional[str] = None, destination_team: Optional[str] = None, **kwargs)</span> </code></dt> <dd> <div class="desc"></div> @@ -1046,6 +1076,11 @@ enable_at_here: Optional[FeatureEnablement] enable_at_channel: Optional[FeatureEnablement] can_huddle: Optional[FeatureEnablement] + url_private: Optional[str] + shared_with: Optional[SharedWith] + initiated_by: Optional[str] + source_team: Optional[str] + destination_team: Optional[str] def __init__( self, @@ -1119,6 +1154,11 @@ enable_at_here: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, enable_at_channel: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, can_huddle: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, + url_private: Optional[str] = None, + shared_with: Optional[Union[Dict[str, Any], SharedWith]] = None, + initiated_by: Optional[str] = None, + source_team: Optional[str] = None, + destination_team: Optional[str] = None, **kwargs, ) -> None: self.name = name @@ -1216,7 +1256,14 @@ can_huddle if can_huddle is None or isinstance(can_huddle, FeatureEnablement) else FeatureEnablement(**can_huddle) - )</code></pre> + ) + self.url_private = url_private + self.shared_with = ( + shared_with if shared_with is None or isinstance(shared_with, SharedWith) else SharedWith(**shared_with) + ) + self.initiated_by = initiated_by + self.source_team = source_team + self.destination_team = destination_team</code></pre> </details> <h3>Class variables</h3> <dl> @@ -1300,6 +1347,10 @@ <dd> <div class="desc"></div> </dd> +<dt id="slack_sdk.audit_logs.v1.logs.Details.destination_team"><code class="name">var <span class="ident">destination_team</span> : Optional[str]</code></dt> +<dd> +<div class="desc"></div> +</dd> <dt id="slack_sdk.audit_logs.v1.logs.Details.duration"><code class="name">var <span class="ident">duration</span> : Optional[int]</code></dt> <dd> <div class="desc"></div> @@ -1352,6 +1403,10 @@ <dd> <div class="desc"></div> </dd> +<dt id="slack_sdk.audit_logs.v1.logs.Details.initiated_by"><code class="name">var <span class="ident">initiated_by</span> : Optional[str]</code></dt> +<dd> +<div class="desc"></div> +</dd> <dt id="slack_sdk.audit_logs.v1.logs.Details.installer_user_id"><code class="name">var <span class="ident">installer_user_id</span> : Optional[str]</code></dt> <dd> <div class="desc"></div> @@ -1472,6 +1527,14 @@ <dd> <div class="desc"></div> </dd> +<dt id="slack_sdk.audit_logs.v1.logs.Details.shared_with"><code class="name">var <span class="ident">shared_with</span> : Optional[<a title="slack_sdk.audit_logs.v1.logs.SharedWith" href="#slack_sdk.audit_logs.v1.logs.SharedWith">SharedWith</a>]</code></dt> +<dd> +<div class="desc"></div> +</dd> +<dt id="slack_sdk.audit_logs.v1.logs.Details.source_team"><code class="name">var <span class="ident">source_team</span> : Optional[str]</code></dt> +<dd> +<div class="desc"></div> +</dd> <dt id="slack_sdk.audit_logs.v1.logs.Details.target_team"><code class="name">var <span class="ident">target_team</span> : Optional[str]</code></dt> <dd> <div class="desc"></div> @@ -1492,6 +1555,10 @@ <dd> <div class="desc"></div> </dd> +<dt id="slack_sdk.audit_logs.v1.logs.Details.url_private"><code class="name">var <span class="ident">url_private</span> : Optional[str]</code></dt> +<dd> +<div class="desc"></div> +</dd> <dt id="slack_sdk.audit_logs.v1.logs.Details.web_only"><code class="name">var <span class="ident">web_only</span> : Optional[bool]</code></dt> <dd> <div class="desc"></div> @@ -2019,6 +2086,36 @@ </dd> </dl> </dd> +<dt id="slack_sdk.audit_logs.v1.logs.SharedWith"><code class="flex name class"> +<span>class <span class="ident">SharedWith</span></span> +<span>(</span><span>*, channel_id: Optional[str] = None, **kwargs)</span> +</code></dt> +<dd> +<div class="desc"></div> +<details class="source"> +<summary> +<span>Expand source code</span> +</summary> +<pre><code class="python">class SharedWith: + channel_id: Optional[str] + + def __init__( + self, + *, + channel_id: Optional[str] = None, + **kwargs, + ) -> None: + self.channel_id = channel_id + self.unknown_fields = kwargs</code></pre> +</details> +<h3>Class variables</h3> +<dl> +<dt id="slack_sdk.audit_logs.v1.logs.SharedWith.channel_id"><code class="name">var <span class="ident">channel_id</span> : Optional[str]</code></dt> +<dd> +<div class="desc"></div> +</dd> +</dl> +</dd> <dt id="slack_sdk.audit_logs.v1.logs.User"><code class="flex name class"> <span>class <span class="ident">User</span></span> <span>(</span><span>*, id: Optional[str] = None, name: Optional[str] = None, email: Optional[str] = None, team: Optional[str] = None, **kwargs)</span> @@ -2256,6 +2353,7 @@ <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.creator" href="#slack_sdk.audit_logs.v1.logs.Details.creator">creator</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.deprecation_search_end" href="#slack_sdk.audit_logs.v1.logs.Details.deprecation_search_end">deprecation_search_end</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.desktop_app_browser_quit" href="#slack_sdk.audit_logs.v1.logs.Details.desktop_app_browser_quit">desktop_app_browser_quit</a></code></li> +<li><code><a title="slack_sdk.audit_logs.v1.logs.Details.destination_team" href="#slack_sdk.audit_logs.v1.logs.Details.destination_team">destination_team</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.duration" href="#slack_sdk.audit_logs.v1.logs.Details.duration">duration</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.enable_at_channel" href="#slack_sdk.audit_logs.v1.logs.Details.enable_at_channel">enable_at_channel</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.enable_at_here" href="#slack_sdk.audit_logs.v1.logs.Details.enable_at_here">enable_at_here</a></code></li> @@ -2269,6 +2367,7 @@ <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.external_user_email" href="#slack_sdk.audit_logs.v1.logs.Details.external_user_email">external_user_email</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.external_user_id" href="#slack_sdk.audit_logs.v1.logs.Details.external_user_id">external_user_id</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.granular_bot_token" href="#slack_sdk.audit_logs.v1.logs.Details.granular_bot_token">granular_bot_token</a></code></li> +<li><code><a title="slack_sdk.audit_logs.v1.logs.Details.initiated_by" href="#slack_sdk.audit_logs.v1.logs.Details.initiated_by">initiated_by</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.installer_user_id" href="#slack_sdk.audit_logs.v1.logs.Details.installer_user_id">installer_user_id</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.invite_id" href="#slack_sdk.audit_logs.v1.logs.Details.invite_id">invite_id</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.inviter" href="#slack_sdk.audit_logs.v1.logs.Details.inviter">inviter</a></code></li> @@ -2299,11 +2398,14 @@ <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.scopes_bot" href="#slack_sdk.audit_logs.v1.logs.Details.scopes_bot">scopes_bot</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.session_search_start" href="#slack_sdk.audit_logs.v1.logs.Details.session_search_start">session_search_start</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.shared_to" href="#slack_sdk.audit_logs.v1.logs.Details.shared_to">shared_to</a></code></li> +<li><code><a title="slack_sdk.audit_logs.v1.logs.Details.shared_with" href="#slack_sdk.audit_logs.v1.logs.Details.shared_with">shared_with</a></code></li> +<li><code><a title="slack_sdk.audit_logs.v1.logs.Details.source_team" href="#slack_sdk.audit_logs.v1.logs.Details.source_team">source_team</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.target_team" href="#slack_sdk.audit_logs.v1.logs.Details.target_team">target_team</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.team" href="#slack_sdk.audit_logs.v1.logs.Details.team">team</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.trigger" href="#slack_sdk.audit_logs.v1.logs.Details.trigger">trigger</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.type" href="#slack_sdk.audit_logs.v1.logs.Details.type">type</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.unknown_fields" href="#slack_sdk.audit_logs.v1.logs.Details.unknown_fields">unknown_fields</a></code></li> +<li><code><a title="slack_sdk.audit_logs.v1.logs.Details.url_private" href="#slack_sdk.audit_logs.v1.logs.Details.url_private">url_private</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.web_only" href="#slack_sdk.audit_logs.v1.logs.Details.web_only">web_only</a></code></li> <li><code><a title="slack_sdk.audit_logs.v1.logs.Details.who_can_post" href="#slack_sdk.audit_logs.v1.logs.Details.who_can_post">who_can_post</a></code></li> </ul> @@ -2400,6 +2502,12 @@ </ul> </li> <li> +<h4><code><a title="slack_sdk.audit_logs.v1.logs.SharedWith" href="#slack_sdk.audit_logs.v1.logs.SharedWith">SharedWith</a></code></h4> +<ul class=""> +<li><code><a title="slack_sdk.audit_logs.v1.logs.SharedWith.channel_id" href="#slack_sdk.audit_logs.v1.logs.SharedWith.channel_id">channel_id</a></code></li> +</ul> +</li> +<li> <h4><code><a title="slack_sdk.audit_logs.v1.logs.User" href="#slack_sdk.audit_logs.v1.logs.User">User</a></code></h4> <ul class=""> <li><code><a title="slack_sdk.audit_logs.v1.logs.User.email" href="#slack_sdk.audit_logs.v1.logs.User.email">email</a></code></li> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/index.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/index.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/index.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/index.html 2022-12-02 03:26:05.000000000 +0100 @@ -2360,7 +2360,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2383,6 +2383,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) @@ -8162,7 +8163,7 @@ </details> </dd> <dt id="slack_sdk.WebClient.chat_unfurl"><code class="name flex"> -<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Dict[str, Dict], user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.slack_response.SlackResponse" href="web/slack_response.html#slack_sdk.web.slack_response.SlackResponse">SlackResponse</a></span> +<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Optional[Dict[str, Dict]] = None, user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.slack_response.SlackResponse" href="web/slack_response.html#slack_sdk.web.slack_response.SlackResponse">SlackResponse</a></span> </code></dt> <dd> <div class="desc"><p>Provide custom unfurl behavior for user-posted URLs. @@ -8178,7 +8179,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -8201,6 +8202,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs)</code></pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/socket_mode/aiohttp/index.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/socket_mode/aiohttp/index.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/socket_mode/aiohttp/index.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/socket_mode/aiohttp/index.html 2022-12-02 03:26:05.000000000 +0100 @@ -387,6 +387,7 @@ autoping=False, heartbeat=self.ping_interval, proxy=self.proxy, + ssl=self.web_client.ssl, ) session_id: str = await self.session_id() self.auto_reconnect_enabled = self.default_auto_reconnect_enabled @@ -842,6 +843,7 @@ autoping=False, heartbeat=self.ping_interval, proxy=self.proxy, + ssl=self.web_client.ssl, ) session_id: str = await self.session_id() self.auto_reconnect_enabled = self.default_auto_reconnect_enabled @@ -1091,6 +1093,7 @@ autoping=False, heartbeat=self.ping_interval, proxy=self.proxy, + ssl=self.web_client.ssl, ) session_id: str = await self.session_id() self.auto_reconnect_enabled = self.default_auto_reconnect_enabled diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/version.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/version.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/version.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/version.html 2022-12-02 03:26:05.000000000 +0100 @@ -28,7 +28,7 @@ <span>Expand source code</span> </summary> <pre><code class="python">"""Check the latest version at https://pypi.org/project/slack-sdk/""" -__version__ = "3.19.3"</code></pre> +__version__ = "3.19.5"</code></pre> </details> </section> <section> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/async_client.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/async_client.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/async_client.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/async_client.html 2022-12-02 03:26:05.000000000 +0100 @@ -2160,7 +2160,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2183,6 +2183,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return await self.api_call("chat.unfurl", json=kwargs) @@ -6800,7 +6801,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -6823,6 +6824,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return await self.api_call("chat.unfurl", json=kwargs) @@ -12602,7 +12604,7 @@ </details> </dd> <dt id="slack_sdk.web.async_client.AsyncWebClient.chat_unfurl"><code class="name flex"> -<span>async def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Dict[str, Dict], user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.async_slack_response.AsyncSlackResponse" href="async_slack_response.html#slack_sdk.web.async_slack_response.AsyncSlackResponse">AsyncSlackResponse</a></span> +<span>async def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Optional[Dict[str, Dict]] = None, user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.async_slack_response.AsyncSlackResponse" href="async_slack_response.html#slack_sdk.web.async_slack_response.AsyncSlackResponse">AsyncSlackResponse</a></span> </code></dt> <dd> <div class="desc"><p>Provide custom unfurl behavior for user-posted URLs. @@ -12618,7 +12620,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -12641,6 +12643,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return await self.api_call("chat.unfurl", json=kwargs)</code></pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/async_slack_response.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/async_slack_response.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/async_slack_response.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/async_slack_response.html 2022-12-02 03:26:05.000000000 +0100 @@ -174,7 +174,8 @@ params = self.req_args.get("params", {}) if params is None: params = {} - params.update({"cursor": self.data["response_metadata"]["next_cursor"]}) + next_cursor = self.data.get("response_metadata", {}).get("next_cursor") or self.data.get("next_cursor") + params.update({"cursor": next_cursor}) self.req_args.update({"params": params}) response = await self._client._request( # skipcq: PYL-W0212 @@ -423,7 +424,8 @@ params = self.req_args.get("params", {}) if params is None: params = {} - params.update({"cursor": self.data["response_metadata"]["next_cursor"]}) + next_cursor = self.data.get("response_metadata", {}).get("next_cursor") or self.data.get("next_cursor") + params.update({"cursor": next_cursor}) self.req_args.update({"params": params}) response = await self._client._request( # skipcq: PYL-W0212 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/client.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/client.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/client.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/client.html 2022-12-02 03:26:05.000000000 +0100 @@ -2151,7 +2151,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2174,6 +2174,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) @@ -6791,7 +6792,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -6814,6 +6815,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) @@ -12593,7 +12595,7 @@ </details> </dd> <dt id="slack_sdk.web.client.WebClient.chat_unfurl"><code class="name flex"> -<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Dict[str, Dict], user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.slack_response.SlackResponse" href="slack_response.html#slack_sdk.web.slack_response.SlackResponse">SlackResponse</a></span> +<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Optional[Dict[str, Dict]] = None, user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.slack_response.SlackResponse" href="slack_response.html#slack_sdk.web.slack_response.SlackResponse">SlackResponse</a></span> </code></dt> <dd> <div class="desc"><p>Provide custom unfurl behavior for user-posted URLs. @@ -12609,7 +12611,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -12632,6 +12634,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs)</code></pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/index.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/index.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/index.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/index.html 2022-12-02 03:26:05.000000000 +0100 @@ -2571,7 +2571,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2594,6 +2594,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) @@ -8373,7 +8374,7 @@ </details> </dd> <dt id="slack_sdk.web.WebClient.chat_unfurl"><code class="name flex"> -<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Dict[str, Dict], user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.slack_response.SlackResponse" href="slack_response.html#slack_sdk.web.slack_response.SlackResponse">SlackResponse</a></span> +<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Optional[Dict[str, Dict]] = None, user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> <a title="slack_sdk.web.slack_response.SlackResponse" href="slack_response.html#slack_sdk.web.slack_response.SlackResponse">SlackResponse</a></span> </code></dt> <dd> <div class="desc"><p>Provide custom unfurl behavior for user-posted URLs. @@ -8389,7 +8390,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -8412,6 +8413,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs)</code></pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/internal_utils.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/internal_utils.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/internal_utils.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/internal_utils.html 2022-12-02 03:26:05.000000000 +0100 @@ -222,10 +222,11 @@ return obj.to_dict() return obj - blocks = kwargs.get("blocks", None) - if blocks is not None and isinstance(blocks, Sequence) and (not isinstance(blocks, str)): - dict_blocks = [to_dict(b) for b in blocks] - kwargs.update({"blocks": dict_blocks}) + for blocks_name in ["blocks", "user_auth_blocks"]: + blocks = kwargs.get(blocks_name, None) + if blocks is not None and isinstance(blocks, Sequence) and (not isinstance(blocks, str)): + dict_blocks = [to_dict(b) for b in blocks] + kwargs.update({blocks_name: dict_blocks}) attachments = kwargs.get("attachments", None) if attachments is not None and isinstance(attachments, Sequence) and (not isinstance(attachments, str)): @@ -282,14 +283,24 @@ if skip_deprecation: return - # At this point, at a minimum, text argument is missing. Warn the user about this. - message = ( + # if text argument is missing, Warn the user about this. + # However, do not warn if a fallback field exists for all attachments, since this can be substituted. + missing_text_message = ( f"The top-level `text` argument is missing in the request payload for a {endpoint} call - " f"It's a best practice to always provide a `text` argument when posting a message. " f"The `text` argument is used in places where content cannot be rendered such as: " "system push notifications, assistive technology such as screen readers, etc." ) - warnings.warn(message, UserWarning) + + # https://api.slack.com/reference/messaging/attachments + # Check if the fallback field exists for all the attachments + # Not all attachments have a fallback property; warn about this too! + missing_fallback_message = ( + f"Additionally, the attachment-level `fallback` argument is missing in the request payload for a {endpoint} call" + " - To avoid this warning, it is recommended to always provide a top-level `text` argument when posting a" + " message. Alternatively you can provide an attachment-level `fallback` argument, though this is now considered" + " a legacy field (see https://api.slack.com/reference/messaging/attachments#legacy_fields for more details)." + ) # Additionally, specifically for attachments, there is a legacy field available at the attachment level called `fallback` # Even with a missing text, one can provide a `fallback` per attachment. @@ -297,23 +308,14 @@ attachments = kwargs.get("attachments") # Note that this method does not verify attachments # if the value is already serialized as a single str value. - if ( - attachments is not None - and isinstance(attachments, list) - and not all( + if attachments is not None and isinstance(attachments, list): + if not all( [isinstance(attachment, dict) and len(attachment.get("fallback", "").strip()) > 0 for attachment in attachments] - ) - ): - # https://api.slack.com/reference/messaging/attachments - # Check if the fallback field exists for all the attachments - # Not all attachments have a fallback property; warn about this too! - message = ( - f"Additionally, the attachment-level `fallback` argument is missing in the request payload for a {endpoint} call" - f" - To avoid this warning, it is recommended to always provide a top-level `text` argument when posting a" - f" message. Alternatively you can provide an attachment-level `fallback` argument, though this is now considered" - f" a legacy field (see https://api.slack.com/reference/messaging/attachments#legacy_fields for more details)." - ) - warnings.warn(message, UserWarning) + ): + warnings.warn(missing_text_message, UserWarning) + warnings.warn(missing_fallback_message, UserWarning) + else: + warnings.warn(missing_text_message, UserWarning) def _build_unexpected_body_error_message(body: str) -> str: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/legacy_client.html new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/legacy_client.html --- old/python-slack-sdk-3.19.3/docs/api-docs/slack_sdk/web/legacy_client.html 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/docs/api-docs/slack_sdk/web/legacy_client.html 2022-12-02 03:26:05.000000000 +0100 @@ -2161,7 +2161,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2184,6 +2184,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) @@ -6801,7 +6802,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -6824,6 +6825,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) @@ -12603,7 +12605,7 @@ </details> </dd> <dt id="slack_sdk.web.legacy_client.LegacyWebClient.chat_unfurl"><code class="name flex"> -<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Dict[str, Dict], user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> Union[_asyncio.Future, <a title="slack_sdk.web.legacy_slack_response.LegacySlackResponse" href="legacy_slack_response.html#slack_sdk.web.legacy_slack_response.LegacySlackResponse">LegacySlackResponse</a>]</span> +<span>def <span class="ident">chat_unfurl</span></span>(<span>self, *, channel: Optional[str] = None, ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, unfurls: Optional[Dict[str, Dict]] = None, user_auth_blocks: Union[str, Sequence[Union[Dict, <a title="slack_sdk.models.blocks.blocks.Block" href="../models/blocks/blocks.html#slack_sdk.models.blocks.blocks.Block">Block</a>]], ForwardRef(None)] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, user_auth_url: Optional[str] = None, **kwargs) â> Union[_asyncio.Future, <a title="slack_sdk.web.legacy_slack_response.LegacySlackResponse" href="legacy_slack_response.html#slack_sdk.web.legacy_slack_response.LegacySlackResponse">LegacySlackResponse</a>]</span> </code></dt> <dd> <div class="desc"><p>Provide custom unfurl behavior for user-posted URLs. @@ -12619,7 +12621,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -12642,6 +12644,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs)</code></pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/integration_tests/web/test_issue_1305.py new/python-slack-sdk-3.19.5/integration_tests/web/test_issue_1305.py --- old/python-slack-sdk-3.19.3/integration_tests/web/test_issue_1305.py 1970-01-01 01:00:00.000000000 +0100 +++ new/python-slack-sdk-3.19.5/integration_tests/web/test_issue_1305.py 2022-12-02 03:26:05.000000000 +0100 @@ -0,0 +1,49 @@ +import asyncio +import os +import time +import unittest + +from integration_tests.env_variable_names import SLACK_SDK_TEST_GRID_ORG_ADMIN_USER_TOKEN +from integration_tests.helpers import async_test +from slack_sdk.web import WebClient +from slack_sdk.web.async_client import AsyncWebClient + + +class TestWebClient(unittest.TestCase): + """Runs integration tests with real Slack API + + https://github.com/slackapi/python-slack-sdk/issues/1305 + """ + + def setUp(self): + self.org_admin_token = os.environ[SLACK_SDK_TEST_GRID_ORG_ADMIN_USER_TOKEN] + self.sync_client: WebClient = WebClient(token=self.org_admin_token) + self.async_client: AsyncWebClient = AsyncWebClient(token=self.org_admin_token) + + def tearDown(self): + pass + + def test_sync(self): + client = self.sync_client + count = 0 + + for page in client.admin_conversations_search(limit=1): + count += len(page["conversations"]) + if count > 1: + break + time.sleep(1) + + self.assertGreater(count, 0) + + @async_test + async def test_async(self): + client = self.async_client + count = 0 + + async for page in await client.admin_conversations_search(limit=1): + count += len(page["conversations"]) + if count > 1: + break + await asyncio.sleep(1) + + self.assertGreater(count, 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/audit_logs/v1/logs.py new/python-slack-sdk-3.19.5/slack_sdk/audit_logs/v1/logs.py --- old/python-slack-sdk-3.19.3/slack_sdk/audit_logs/v1/logs.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/audit_logs/v1/logs.py 2022-12-02 03:26:05.000000000 +0100 @@ -163,6 +163,19 @@ self.unknown_fields = kwargs +class SharedWith: + channel_id: Optional[str] + + def __init__( + self, + *, + channel_id: Optional[str] = None, + **kwargs, + ) -> None: + self.channel_id = channel_id + self.unknown_fields = kwargs + + class Details: name: Optional[str] new_value: Optional[Union[str, List[str], Dict[str, Any]]] @@ -234,6 +247,11 @@ enable_at_here: Optional[FeatureEnablement] enable_at_channel: Optional[FeatureEnablement] can_huddle: Optional[FeatureEnablement] + url_private: Optional[str] + shared_with: Optional[SharedWith] + initiated_by: Optional[str] + source_team: Optional[str] + destination_team: Optional[str] def __init__( self, @@ -307,6 +325,11 @@ enable_at_here: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, enable_at_channel: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, can_huddle: Optional[Union[Dict[str, Any], FeatureEnablement]] = None, + url_private: Optional[str] = None, + shared_with: Optional[Union[Dict[str, Any], SharedWith]] = None, + initiated_by: Optional[str] = None, + source_team: Optional[str] = None, + destination_team: Optional[str] = None, **kwargs, ) -> None: self.name = name @@ -405,6 +428,13 @@ if can_huddle is None or isinstance(can_huddle, FeatureEnablement) else FeatureEnablement(**can_huddle) ) + self.url_private = url_private + self.shared_with = ( + shared_with if shared_with is None or isinstance(shared_with, SharedWith) else SharedWith(**shared_with) + ) + self.initiated_by = initiated_by + self.source_team = source_team + self.destination_team = destination_team class Channel: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/socket_mode/aiohttp/__init__.py new/python-slack-sdk-3.19.5/slack_sdk/socket_mode/aiohttp/__init__.py --- old/python-slack-sdk-3.19.3/slack_sdk/socket_mode/aiohttp/__init__.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/socket_mode/aiohttp/__init__.py 2022-12-02 03:26:05.000000000 +0100 @@ -353,6 +353,7 @@ autoping=False, heartbeat=self.ping_interval, proxy=self.proxy, + ssl=self.web_client.ssl, ) session_id: str = await self.session_id() self.auto_reconnect_enabled = self.default_auto_reconnect_enabled diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/version.py new/python-slack-sdk-3.19.5/slack_sdk/version.py --- old/python-slack-sdk-3.19.3/slack_sdk/version.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/version.py 2022-12-02 03:26:05.000000000 +0100 @@ -1,2 +1,2 @@ """Check the latest version at https://pypi.org/project/slack-sdk/""" -__version__ = "3.19.3" +__version__ = "3.19.5" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/web/async_client.py new/python-slack-sdk-3.19.5/slack_sdk/web/async_client.py --- old/python-slack-sdk-3.19.3/slack_sdk/web/async_client.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/web/async_client.py 2022-12-02 03:26:05.000000000 +0100 @@ -2131,7 +2131,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2154,6 +2154,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return await self.api_call("chat.unfurl", json=kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/web/async_slack_response.py new/python-slack-sdk-3.19.5/slack_sdk/web/async_slack_response.py --- old/python-slack-sdk-3.19.3/slack_sdk/web/async_slack_response.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/web/async_slack_response.py 2022-12-02 03:26:05.000000000 +0100 @@ -145,7 +145,8 @@ params = self.req_args.get("params", {}) if params is None: params = {} - params.update({"cursor": self.data["response_metadata"]["next_cursor"]}) + next_cursor = self.data.get("response_metadata", {}).get("next_cursor") or self.data.get("next_cursor") + params.update({"cursor": next_cursor}) self.req_args.update({"params": params}) response = await self._client._request( # skipcq: PYL-W0212 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/web/client.py new/python-slack-sdk-3.19.5/slack_sdk/web/client.py --- old/python-slack-sdk-3.19.3/slack_sdk/web/client.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/web/client.py 2022-12-02 03:26:05.000000000 +0100 @@ -2122,7 +2122,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2145,6 +2145,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/web/internal_utils.py new/python-slack-sdk-3.19.5/slack_sdk/web/internal_utils.py --- old/python-slack-sdk-3.19.3/slack_sdk/web/internal_utils.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/web/internal_utils.py 2022-12-02 03:26:05.000000000 +0100 @@ -194,10 +194,11 @@ return obj.to_dict() return obj - blocks = kwargs.get("blocks", None) - if blocks is not None and isinstance(blocks, Sequence) and (not isinstance(blocks, str)): - dict_blocks = [to_dict(b) for b in blocks] - kwargs.update({"blocks": dict_blocks}) + for blocks_name in ["blocks", "user_auth_blocks"]: + blocks = kwargs.get(blocks_name, None) + if blocks is not None and isinstance(blocks, Sequence) and (not isinstance(blocks, str)): + dict_blocks = [to_dict(b) for b in blocks] + kwargs.update({blocks_name: dict_blocks}) attachments = kwargs.get("attachments", None) if attachments is not None and isinstance(attachments, Sequence) and (not isinstance(attachments, str)): @@ -254,14 +255,24 @@ if skip_deprecation: return - # At this point, at a minimum, text argument is missing. Warn the user about this. - message = ( + # if text argument is missing, Warn the user about this. + # However, do not warn if a fallback field exists for all attachments, since this can be substituted. + missing_text_message = ( f"The top-level `text` argument is missing in the request payload for a {endpoint} call - " f"It's a best practice to always provide a `text` argument when posting a message. " f"The `text` argument is used in places where content cannot be rendered such as: " "system push notifications, assistive technology such as screen readers, etc." ) - warnings.warn(message, UserWarning) + + # https://api.slack.com/reference/messaging/attachments + # Check if the fallback field exists for all the attachments + # Not all attachments have a fallback property; warn about this too! + missing_fallback_message = ( + f"Additionally, the attachment-level `fallback` argument is missing in the request payload for a {endpoint} call" + " - To avoid this warning, it is recommended to always provide a top-level `text` argument when posting a" + " message. Alternatively you can provide an attachment-level `fallback` argument, though this is now considered" + " a legacy field (see https://api.slack.com/reference/messaging/attachments#legacy_fields for more details)." + ) # Additionally, specifically for attachments, there is a legacy field available at the attachment level called `fallback` # Even with a missing text, one can provide a `fallback` per attachment. @@ -269,23 +280,14 @@ attachments = kwargs.get("attachments") # Note that this method does not verify attachments # if the value is already serialized as a single str value. - if ( - attachments is not None - and isinstance(attachments, list) - and not all( + if attachments is not None and isinstance(attachments, list): + if not all( [isinstance(attachment, dict) and len(attachment.get("fallback", "").strip()) > 0 for attachment in attachments] - ) - ): - # https://api.slack.com/reference/messaging/attachments - # Check if the fallback field exists for all the attachments - # Not all attachments have a fallback property; warn about this too! - message = ( - f"Additionally, the attachment-level `fallback` argument is missing in the request payload for a {endpoint} call" - f" - To avoid this warning, it is recommended to always provide a top-level `text` argument when posting a" - f" message. Alternatively you can provide an attachment-level `fallback` argument, though this is now considered" - f" a legacy field (see https://api.slack.com/reference/messaging/attachments#legacy_fields for more details)." - ) - warnings.warn(message, UserWarning) + ): + warnings.warn(missing_text_message, UserWarning) + warnings.warn(missing_fallback_message, UserWarning) + else: + warnings.warn(missing_text_message, UserWarning) def _build_unexpected_body_error_message(body: str) -> str: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/slack_sdk/web/legacy_client.py new/python-slack-sdk-3.19.5/slack_sdk/web/legacy_client.py --- old/python-slack-sdk-3.19.3/slack_sdk/web/legacy_client.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/slack_sdk/web/legacy_client.py 2022-12-02 03:26:05.000000000 +0100 @@ -2133,7 +2133,7 @@ ts: Optional[str] = None, source: Optional[str] = None, unfurl_id: Optional[str] = None, - unfurls: Dict[str, Dict], + unfurls: Optional[Dict[str, Dict]] = None, # or user_auth_* user_auth_blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None, user_auth_message: Optional[str] = None, user_auth_required: Optional[bool] = None, @@ -2156,6 +2156,7 @@ "user_auth_url": user_auth_url, } ) + _parse_web_class_objects(kwargs) # for user_auth_blocks kwargs = _remove_none_values(kwargs) # NOTE: intentionally using json over params for API methods using blocks/attachments return self.api_call("chat.unfurl", json=kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/tests/slack_sdk/web/test_internal_utils.py new/python-slack-sdk-3.19.5/tests/slack_sdk/web/test_internal_utils.py --- old/python-slack-sdk-3.19.3/tests/slack_sdk/web/test_internal_utils.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/tests/slack_sdk/web/test_internal_utils.py 2022-12-02 03:26:05.000000000 +0100 @@ -5,7 +5,7 @@ import pytest from slack_sdk.models.attachments import Attachment -from slack_sdk.models.blocks import Block +from slack_sdk.models.blocks import Block, DividerBlock from slack_sdk.web.internal_utils import _build_unexpected_body_error_message, _parse_web_class_objects @@ -62,3 +62,13 @@ _parse_web_class_objects(kwargs) assert isinstance(kwargs["attachments"], str) assert input == kwargs["attachments"] + + def test_can_parse_user_auth_blocks(self): + kwargs = { + "channel": "C12345", + "ts": "1111.2222", + "unfurls": {}, + "user_auth_blocks": [DividerBlock(), DividerBlock()], + } + _parse_web_class_objects(kwargs) + assert isinstance(kwargs["user_auth_blocks"][0], dict) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/tests/slack_sdk/web/test_web_client.py new/python-slack-sdk-3.19.5/tests/slack_sdk/web/test_web_client.py --- old/python-slack-sdk-3.19.3/tests/slack_sdk/web/test_web_client.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/tests/slack_sdk/web/test_web_client.py 2022-12-02 03:26:05.000000000 +0100 @@ -5,6 +5,7 @@ import slack_sdk.errors as err from slack_sdk import WebClient +from slack_sdk.models.blocks import DividerBlock from slack_sdk.models.metadata import Metadata from tests.slack_sdk.web.mock_web_api_server import ( setup_mock_web_api_server, @@ -218,3 +219,13 @@ ), ) self.assertIsNone(scheduled.get("error")) + + def test_user_auth_blocks(self): + client = self.client + new_message = client.chat_unfurl( + channel="C12345", + ts="1111.2222", + unfurls={}, + user_auth_blocks=[DividerBlock(), DividerBlock()], + ) + self.assertIsNone(new_message.get("error")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-slack-sdk-3.19.3/tests/slack_sdk_async/web/test_async_web_client.py new/python-slack-sdk-3.19.5/tests/slack_sdk_async/web/test_async_web_client.py --- old/python-slack-sdk-3.19.3/tests/slack_sdk_async/web/test_async_web_client.py 2022-11-08 05:32:09.000000000 +0100 +++ new/python-slack-sdk-3.19.5/tests/slack_sdk_async/web/test_async_web_client.py 2022-12-02 03:26:05.000000000 +0100 @@ -1,9 +1,8 @@ import re import unittest -import aiohttp - import slack_sdk.errors as err +from slack_sdk.models.blocks import DividerBlock from slack_sdk.web.async_client import AsyncWebClient from tests.slack_sdk_async.helpers import async_test from tests.slack_sdk.web.mock_web_api_server import ( @@ -153,3 +152,15 @@ client = AsyncWebClient(base_url="http://localhost:8888", team_id="T_DEFAULT") resp = await client.users_list(token="xoxb-users_list_pagination") self.assertIsNone(resp["error"]) + + @async_test + async def test_user_auth_blocks(self): + self.client.token = "xoxb-api_test" + client = self.client + new_message = await client.chat_unfurl( + channel="C12345", + ts="1111.2222", + unfurls={}, + user_auth_blocks=[DividerBlock(), DividerBlock()], + ) + self.assertIsNone(new_message.get("error"))