Module slack_sdk.models
Classes for constructing Slack-specific data structure
Expand source code
"""Classes for constructing Slack-specific data structure"""
import logging
from typing import Union, Dict, Any, Sequence, List
from .basic_objects import BaseObject # noqa
from .basic_objects import EnumValidator # noqa
from .basic_objects import JsonObject # noqa
from .basic_objects import JsonValidator # noqa
# NOTE: used only for legacy components - don't use this for Block Kit
def extract_json(
item_or_items: Union[JsonObject, Sequence[JsonObject]], *format_args
) -> Union[Dict[Any, Any], List[Dict[Any, Any]]]: # type: ignore
"""
Given a sequence (or single item), attempt to call the to_dict() method on each
item and return a plain list. If item is not the expected type, return it
unmodified, in case it's already a plain dict or some other user created class.
Args:
item_or_items: item(s) to go through
format_args: Any formatting specifiers to pass into the object's to_dict
method
"""
try:
return [ # type: ignore
elem.to_dict(*format_args) if isinstance(elem, JsonObject) else elem
for elem in item_or_items
]
except TypeError: # not iterable, so try returning it as a single item
return ( # type: ignore
item_or_items.to_dict(*format_args)
if isinstance(item_or_items, JsonObject)
else item_or_items
)
def show_unknown_key_warning(name: Union[str, object], others: dict):
if "type" in others:
others.pop("type")
if len(others) > 0:
keys = ", ".join(others.keys())
logger = logging.getLogger(__name__)
if isinstance(name, object):
name = name.__class__.__name__
logger.debug(
f"!!! {name}'s constructor args ({keys}) were ignored."
f"If they should be supported by this library, report this issue to the project :bow: "
f"https://github.com/slackapi/python-slack-sdk/issues"
)
Sub-modules
slack_sdk.models.attachments
slack_sdk.models.basic_objects
slack_sdk.models.blocks
-
Block Kit data model objects …
slack_sdk.models.dialoags
slack_sdk.models.dialogs
slack_sdk.models.messages
slack_sdk.models.views
Functions
def extract_json(item_or_items: Union[JsonObject, Sequence[JsonObject]], *format_args) ‑> Union[Dict[Any, Any], List[Dict[Any, Any]]]
-
Given a sequence (or single item), attempt to call the to_dict() method on each item and return a plain list. If item is not the expected type, return it unmodified, in case it's already a plain dict or some other user created class.
Args
item_or_items
- item(s) to go through
format_args
- Any formatting specifiers to pass into the object's to_dict method
Expand source code
def extract_json( item_or_items: Union[JsonObject, Sequence[JsonObject]], *format_args ) -> Union[Dict[Any, Any], List[Dict[Any, Any]]]: # type: ignore """ Given a sequence (or single item), attempt to call the to_dict() method on each item and return a plain list. If item is not the expected type, return it unmodified, in case it's already a plain dict or some other user created class. Args: item_or_items: item(s) to go through format_args: Any formatting specifiers to pass into the object's to_dict method """ try: return [ # type: ignore elem.to_dict(*format_args) if isinstance(elem, JsonObject) else elem for elem in item_or_items ] except TypeError: # not iterable, so try returning it as a single item return ( # type: ignore item_or_items.to_dict(*format_args) if isinstance(item_or_items, JsonObject) else item_or_items )
def show_unknown_key_warning(name: Union[str, object], others: dict)
-
Expand source code
def show_unknown_key_warning(name: Union[str, object], others: dict): if "type" in others: others.pop("type") if len(others) > 0: keys = ", ".join(others.keys()) logger = logging.getLogger(__name__) if isinstance(name, object): name = name.__class__.__name__ logger.debug( f"!!! {name}'s constructor args ({keys}) were ignored." f"If they should be supported by this library, report this issue to the project :bow: " f"https://github.com/slackapi/python-slack-sdk/issues" )