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 <[email protected]>
+
+- 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"))