Skip to content

Commit c091881

Browse files
committed
format, update
1 parent b610b2d commit c091881

File tree

3 files changed

+81
-87
lines changed

3 files changed

+81
-87
lines changed

integration_tests/web/test_message_metadata.py

Lines changed: 74 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,29 @@
66

77
from integration_tests.env_variable_names import SLACK_SDK_TEST_BOT_TOKEN
88
from slack_sdk.models.metadata import (
9-
Metadata, EventAndEntityMetadata, EntityMetadata, ExternalRef,
10-
EntityPayload, EntityAttributes, EntityTitle, TaskEntityFields, EntityStringField,
11-
EntityTitle, EntityAttributes, EntityFullSizePreview,
12-
TaskEntityFields, EntityTypedField, EntityStringField, EntityTimestampField,
13-
EntityEditSupport, EntityEditTextConfig, EntityCustomField, EntityUserIDField,
14-
EntityIconField, ExternalRef as CustomExternalRef, EntityArrayItemField
9+
Metadata,
10+
EventAndEntityMetadata,
11+
EntityMetadata,
12+
ExternalRef,
13+
EntityPayload,
14+
EntityAttributes,
15+
EntityTitle,
16+
TaskEntityFields,
17+
EntityStringField,
18+
EntityTitle,
19+
EntityAttributes,
20+
EntityFullSizePreview,
21+
TaskEntityFields,
22+
EntityTypedField,
23+
EntityStringField,
24+
EntityTimestampField,
25+
EntityEditSupport,
26+
EntityEditTextConfig,
27+
EntityCustomField,
28+
EntityUserIDField,
29+
EntityIconField,
30+
ExternalRef as CustomExternalRef,
31+
EntityArrayItemField,
1532
)
1633
from slack_sdk.web import WebClient
1734

@@ -139,118 +156,92 @@ def test_publishing_entity_metadata(self):
139156
new_message = client.chat_postMessage(
140157
channel="C014KLZN9M0",
141158
text="Message with entity metadata",
142-
metadata={"entities": [{
143-
"entity_type": "slack#/entities/task",
144-
"url": "https://abc.com/123",
145-
"external_ref": {"id": "123"},
146-
"entity_payload": {
147-
"attributes": {
148-
"title": {"text": "My task"},
149-
"product_name": "We reference only"
150-
},
151-
"fields": {
152-
"due_date": {
153-
"value": "2026-06-06",
154-
"type": "slack#/types/date",
155-
"edit": {"enabled": True}
156-
},
157-
"created_by": {
158-
"type": "slack#/types/user",
159-
"user": {"user_id": "U014KLZE350"}
159+
metadata={
160+
"entities": [
161+
{
162+
"entity_type": "slack#/entities/task",
163+
"url": "https://abc.com/123",
164+
"external_ref": {"id": "123"},
165+
"entity_payload": {
166+
"attributes": {"title": {"text": "My task"}, "product_name": "We reference only"},
167+
"fields": {
168+
"due_date": {"value": "2026-06-06", "type": "slack#/types/date", "edit": {"enabled": True}},
169+
"created_by": {"type": "slack#/types/user", "user": {"user_id": "U014KLZE350"}},
170+
"date_created": {"value": 1760629278},
171+
},
172+
"custom_fields": [
173+
{
174+
"label": "img",
175+
"key": "img",
176+
"type": "slack#/types/image",
177+
"image_url": "https://s3-media2.fl.yelpcdn.com/bphoto/korel-1YjNtFtJlMTaC26A/o.jpg",
178+
}
179+
],
160180
},
161-
"date_created": {"value": 1760629278}
162-
},
163-
"custom_fields": [
164-
{
165-
"label": "img",
166-
"key": "img",
167-
"type": "slack#/types/image",
168-
"image_url": "https://s3-media2.fl.yelpcdn.com/bphoto/korel-1YjNtFtJlMTaC26A/o.jpg"
169-
}
170-
]
171-
}
172-
}]}
181+
}
182+
]
183+
},
173184
)
174-
185+
175186
self.assertIsNone(new_message.get("error"))
176187
self.assertIsNone(new_message.get("warning"))
177188

178189
def test_publishing_entity_metadata_using_models(self):
179-
190+
180191
# Build the metadata
181-
192+
182193
title = EntityTitle(text="My title")
183194
full_size_preview = EntityFullSizePreview(
184195
is_supported=True,
185196
preview_url="https://s3-media3.fl.yelpcdn.com/bphoto/c7ed05m9lC2EmA3Aruue7A/o.jpg",
186-
mime_type="image/jpeg"
187-
)
188-
attributes = EntityAttributes(
189-
title=title,
190-
product_name="My Product",
191-
full_size_preview=full_size_preview
197+
mime_type="image/jpeg",
192198
)
199+
attributes = EntityAttributes(title=title, product_name="My Product", full_size_preview=full_size_preview)
193200
description = EntityStringField(
194201
value="Description of the task.",
195202
long=True,
196-
edit=EntityEditSupport(
197-
enabled=True,
198-
text=EntityEditTextConfig(
199-
min_length=5,
200-
max_length=100
201-
)
202-
)
203-
)
204-
due_date = EntityTypedField(
205-
value="2026-06-06",
206-
type="slack#/types/date",
207-
edit=EntityEditSupport(enabled=True)
203+
edit=EntityEditSupport(enabled=True, text=EntityEditTextConfig(min_length=5, max_length=100)),
208204
)
205+
due_date = EntityTypedField(value="2026-06-06", type="slack#/types/date", edit=EntityEditSupport(enabled=True))
209206
created_by = EntityTypedField(
210207
type="slack#/types/user",
211208
user=EntityUserIDField(user_id="USLACKBOT"),
212209
)
213-
date_created = EntityTimestampField(
214-
value=1762450663,
215-
type="slack#/types/timestamp"
216-
)
217-
date_updated = EntityTimestampField(
218-
value=1762450663,
219-
type="slack#/types/timestamp"
220-
)
210+
date_created = EntityTimestampField(value=1762450663, type="slack#/types/timestamp")
211+
date_updated = EntityTimestampField(value=1762450663, type="slack#/types/timestamp")
221212
fields = TaskEntityFields(
222213
description=description,
223214
due_date=due_date,
224215
created_by=created_by,
225216
date_created=date_created,
226-
date_updated=date_updated
217+
date_updated=date_updated,
227218
)
228219
custom_fields = []
229-
custom_fields.append(EntityCustomField(
230-
label="My Image",
231-
key="my-image",
232-
type="slack#/types/image",
233-
image_url="https://s3-media3.fl.yelpcdn.com/bphoto/c7ed05m9lC2EmA3Aruue7A/o.jpg"
234-
))
235-
entity = EntityPayload(
236-
attributes=attributes,
237-
fields=fields,
238-
custom_fields=custom_fields
220+
custom_fields.append(
221+
EntityCustomField(
222+
label="My Image",
223+
key="my-image",
224+
type="slack#/types/image",
225+
image_url="https://s3-media3.fl.yelpcdn.com/bphoto/c7ed05m9lC2EmA3Aruue7A/o.jpg",
226+
)
239227
)
228+
entity = EntityPayload(attributes=attributes, fields=fields, custom_fields=custom_fields)
240229

241230
client: WebClient = WebClient(token=self.bot_token)
242231
new_message = client.chat_postMessage(
243-
channel="C014KLZN9M0",
232+
channel="#random",
244233
text="Message with entity metadata",
245234
metadata=EventAndEntityMetadata(
246235
entities=[
247236
EntityMetadata(
248-
entity_type="slack#/entities/task",
249-
external_ref=ExternalRef(id="abc123"),
250-
url="https://myappdomain.com",
251-
entity_payload=entity,
252-
)]),
237+
entity_type="slack#/entities/task",
238+
external_ref=ExternalRef(id="abc123"),
239+
url="https://myappdomain.com",
240+
entity_payload=entity,
241+
)
242+
]
243+
),
253244
)
254-
245+
255246
self.assertIsNone(new_message.get("error"))
256247
self.assertIsNone(new_message.get("warning"))

slack_sdk/models/metadata/__init__.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from typing import Dict, Any, Union, Optional, List
2-
from slack_sdk.models.basic_objects import JsonObject, EnumValidator, EMPTY_ALLOWED_TYPE_AND_PROPERTY_LIST
2+
from slack_sdk.models.basic_objects import JsonObject, EnumValidator
33

44

55
class Metadata(JsonObject):
@@ -30,7 +30,10 @@ def __repr__(self):
3030
return self.__str__()
3131

3232

33-
## Work object entity metadata
33+
#
34+
# Work object entity metadata
35+
# https://docs.slack.dev/messaging/work-objects/
36+
#
3437

3538

3639
"""Entity types"""
@@ -380,7 +383,7 @@ def __init__(
380383
text: str,
381384
url: Optional[str] = None,
382385
email: Optional[str] = None,
383-
icon: Optional[Union[Dict[str, Any], "EntityIconField"]] = None,
386+
icon: Optional[Union[Dict[str, Any], EntityIconField]] = None,
384387
**kwargs,
385388
):
386389
self.text = text
@@ -1170,6 +1173,7 @@ class EventAndEntityMetadata(JsonObject):
11701173
"""Message metadata with entities
11711174
11721175
https://docs.slack.dev/messaging/message-metadata/
1176+
https://docs.slack.dev/messaging/work-objects/
11731177
"""
11741178

11751179
attributes = {"event_type", "event_payload", "entities"}

slack_sdk/web/base_client.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,6 @@ def _perform_urllib_http_request(self, *, url: str, args: Dict[str, Dict[str, An
348348
Returns:
349349
dict {status: int, headers: Headers, body: str}
350350
"""
351-
352351
headers = args["headers"]
353352
body: Optional[Union[bytes, str]] = None
354353
if args["json"]:

0 commit comments

Comments
 (0)