Name | slack-message-blocks-simplified JSON |
Version |
0.0.5
JSON |
| download |
home_page | None |
Summary | A small package that is used to create blocks in Slack messaging app |
upload_time | 2024-08-27 21:54:01 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.12 |
license | Copyright (c) 2018 The Python Packaging Authority Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
keywords |
slack
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Slack Message Blocks Simplified Package
## Overview
**slack_message_blocks_simplified** is a Python package that simplifies the process of creating and sending rich, structured messages to Slack channels using blocks. The package provides various classes to help you build and manage these blocks and interact with Slack's API efficiently.
## Installation
```
pip install slack-message-blocks-simplified
```
### Prerequisites
- **Python Version**: Ensure you are using Python 3.12 or higher.
- **Dependencies**:
- `slack_sdk` (version 3.31.0)
- `dataclasses` (built-in for Python 3.7+)
- `typing` (for type hinting)
## Usage
### Importing the Package
```
from slack_message_blocks_simplified import DividerBlock, HeaderBlock, ContextBlock, SectionBlock, ImageBlock, RichTextBlock, SlackBlock, SlackClient
```
# Initialize the Slack client and Slack Block
```
slack_client = SlackClient(bot_token="xoxb-your-slack-token")
slack_message = SlackBlock(client=slack_client)
```
# Create a message
```
header = HeaderBlock(title="Welcome to the Channel!")
divider = DividerBlock()
section = SectionBlock()
section.change_value(type="mrkdwn", text="This is a *section* with some _rich text_.")
section.add_image(image_url="https://example.com/image.png", alt_text="Example Image")
```
# Upload file
```
slack_message.upload_file("C:/path/to/file.extension", "file.extension")
```
# Post the message to a channel
```
slack_message.add_blocks([header, divider, section])
slack_message.post_message_block(channel_id="C1234567890")
```
# Final code
```
from slack_message_blocks_simplified import DividerBlock, HeaderBlock, ContextBlock, SectionBlock, ImageBlock, RichTextBlock, SlackBlock, SlackClient
slack_client = SlackClient(bot_token="xoxb-your-slack-token")
slack_message = SlackBlock(client=slack_client)
header = HeaderBlock(title="Welcome to the Channel!")
divider = DividerBlock()
section = SectionBlock()
section.change_value(type="mrkdwn", text="This is a *section* with some _rich text_.")
section.add_image(type="image", image_url="https://example.com/image.png", alt_text="Example Image")
slack_message.upload_file("C:/path/to/file.extension", "file.extension")
slack_message.add_blocks([header, divider, section])
slack_message.post_message_block(channel_id="C1234567890")
```
# Classes and Methods
## 1. SlackClient
A client for interacting with Slack's API.
### Attributes:
- `bot_token`: The token used for authenticating the bot with Slack's API. To get this token you must have a [Slack app](https://api.slack.com/docs/apps) created and it requires the following OAuth Scopes:
`chat:write`, `files:write`
### Methods:
- `post_message_block(channel_id: str, blocks: Any | None, text: str = "")`:
**Description**: Posts a message with optional blocks to a specific Slack channel.
**Required Keys**:
- `channel_id`: The ID of the Slack channel where the message will be posted.
- `blocks`: A list of blocks (formatted sections) to include in the message. Can be `None`.
- `text`: The plain text content of the message.
- `upload(file: str | bytes | IOBase | None, filename: str | None)`:
**Description**: Uploads a file to Slack, optionally with a specified filename.
**Required Keys**:
- `file`: The file to upload. It can be a path to a file, bytes, or an IO stream.
- `filename`: The name to use for the file in Slack. If `None`, Slack determines the name automatically.
## 2. SlackBlock
Represents a message block to be sent via Slack.
### Attributes:
- `client`: An instance of `SlackClient`.
- `text`: Text content of the message.
- `blocks`: List of blocks to be included in the message.
- `files`: List of file URLs to be attached to the message.
### Methods:
- `add_blocks(blocks: list[BaseBlock])`:
**Description**: Adds multiple blocks to the Slack message.
**Required Keys**:
- `blocks`: A list of `BaseBlock` objects (e.g., `HeaderBlock`, `SectionBlock`) to be added to the message.
- `upload_file(file_path: str, filename: str | None = None)`:
**Description**: Uploads a file to Slack and stores its URL.
**Required Keys**:
- `file_path`: Path to the file that will be uploaded.
- `filename`: Optional. The name to use for the file in Slack. If `None`, Slack determines the name automatically.
- `add_message(new_text: str)`:
**Description**: Appends additional text to the existing message.
**Required Keys**:
- `new_text`: The text to append to the current message.
- `change_message(new_text: str)`:
**Description**: Replaces the existing message with new text.
**Required Keys**:
- `new_text`: The new text that will replace the current message content.
- `reset_message()`:
**Description**: Resets the message text to an empty string.
**Required Keys**: None
- `post_message_block(channel_id: str)`:
**Description**: Posts the message block to a specified Slack channel.
**Required Keys**:
- `channel_id`: The ID of the Slack channel where the message will be posted.
## 3. HeaderBlock
Represents a Slack header block.
### Attributes:
- `title`: Title of the header.
### Methods:
- `reset_value()`:
**Description**: Resets the title of the header block.
**Required Keys**: None
- `change_value(*args: list[Any], **kwargs: dict[str, Any])`:
**Description**: Changes the title of the header block.
**Required Keys**:
- `title`: The new title for the header block.
- `append(*args: list[Any], **kwargs: dict[str, Any])`:
**Description**: Appends text to the existing title.
**Required Keys**:
- `title`: The text to append to the existing title.
- `value() -> dict[str, Any]`:
**Description**: Retrieves the value of the header block.
**Required Keys**: None (Returns a dictionary with the header type and title)
## 4. DividerBlock
Represents a Slack divider block.
### Methods:
- `value() -> dict[str, Any]`:
**Description**: Retrieves the value of the divider block.
**Required Keys**: None (Returns a dictionary with the divider type)
## 5. SectionBlock
Represents a Slack section block.
### Attributes:
- `element`: Dictionary containing the section content.
- `accessory`: Dictionary containing the section accessory.
### Methods:
- `reset_value()`:
**Description**: Resets the section block to its default state.
**Required Keys**: None
- `change_value(*args: list[Any], **kwargs: dict[str, Any])`:
**Description**: Changes the content of the section block.
**Required Keys**:
- `type`: The type of the section block content (e.g., `plain_text`, `mrkdwn`).
- `text`: The text content of the section block.
- `add_image(*args: list[Any], **kwargs: dict[str, Any])`:
**Description**: Adds an image to the section block.
**Required Keys**:
- `type`: The type of the section block content (e.g., `image`).
- `image_url`: The URL of the image to be added.
- `alt_text`: The alternative text for the image.
- `value() -> dict[str, Any]`:
**Description**: Retrieves the value of the section block.
**Required Keys**: None (Returns a dictionary with section type and content)
## 6. ImageBlock
Represents a Slack image block.
### Attributes:
- `image_url`: URL of the image.
- `title`: Optional. Title of the image block.
- `alt_text`: Alternative text for the image.
- `is_markdown`: Indicates if the title is in Markdown format.
### Methods:
- `reset_value()`:
**Description**: Resets the image block to its default state.
**Required Keys**: None
- `change_value(*args: list[Any], **kwargs: dict[str, Any])`:
**Description**: Changes the properties of the image block.
**Required Keys**:
- `image_url`: The new URL of the image.
- `title`: The new title for the image block.
- `alt_text`: The new alternative text for the image.
- `is_markdown`: Boolean indicating if the title should be in Markdown format.
- `value() -> dict[str, Any]`:
**Description**: Retrieves the value of the image block.
**Required Keys**: None (Returns a dictionary with image block details)
## 7. ContextBlock
Represents a Slack context block.
### Attributes:
- `elements`: List of elements within the context block.
### Methods:
- `reset_value()`:
**Description**: Resets the elements of the context block.
**Required Keys**: None
- `append(*args: list[Any], **kwargs: dict[str, Any])`:
**Description**: Appends an element to the context block.
**Required Keys**:
- `type`: The type of the element (e.g., `image`, `plain_text`, `mrkdwn`).
- For `image` type:
- `image_url`: The URL of the image.
- `alt_text`: The alternative text for the image.
- For `plain_text` and `mrkdwn` types:
- `text`: The text content of the element.
- `value() -> dict[str, Any]`:
**Description**: Retrieves the value of the context block.
**Required Keys**: None (Returns a dictionary with context type and elements)
## 8. RichTextBlock
Represents a Slack rich text block.
### Attributes:
- `sections`: List of rich text sections.
### Methods:
- `reset_value()`:
**Description**: Resets the sections of the rich text block.
**Required Keys**: None
- `add_section(text_list: list[dict[str, Any]])`:
**Description**: Adds a new section to the rich text block.
**Required Keys**:
- `text_list`: A list of dictionaries, each representing a text element with keys like `type`, `text`, `bold`, `italic`, `strike`, etc.
- `add_list(list_style: str, text_list: list[list[dict[str, Any]]])`:
**Description**: Adds a list to the rich text block.
**Required Keys**:
- `list_style`: The style of the list (e.g., `bullet`, `ordered`).
- `text_list`: A list of lists, where each inner list represents items in the list with text elements.
- `value() -> dict[str, Any]`:
**Description**: Retrieves the value of the rich text block.
**Required Keys**: None (Returns a dictionary with rich text block details)
If you'd like to contribute to this project, please fork the repository and submit a pull request. All contributions are welcome!
## License
This project is licensed under the MIT License.
Raw data
{
"_id": null,
"home_page": null,
"name": "slack-message-blocks-simplified",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "Slack",
"author": null,
"author_email": "Serge Celestin Taveras <sergecelestint@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/90/ce/cd30cd8ce9973dfacc0619a523358eb431597ca54695785f997d35485213/slack_message_blocks_simplified-0.0.5.tar.gz",
"platform": null,
"description": "\n# Slack Message Blocks Simplified Package\n\n## Overview\n\n**slack_message_blocks_simplified** is a Python package that simplifies the process of creating and sending rich, structured messages to Slack channels using blocks. The package provides various classes to help you build and manage these blocks and interact with Slack's API efficiently.\n\n## Installation\n```\npip install slack-message-blocks-simplified\n```\n\n### Prerequisites\n\n- **Python Version**: Ensure you are using Python 3.12 or higher.\n- **Dependencies**:\n - `slack_sdk` (version 3.31.0)\n - `dataclasses` (built-in for Python 3.7+)\n - `typing` (for type hinting)\n\n\n## Usage\n\n### Importing the Package\n\n```\nfrom slack_message_blocks_simplified import DividerBlock, HeaderBlock, ContextBlock, SectionBlock, ImageBlock, RichTextBlock, SlackBlock, SlackClient\n```\n\n# Initialize the Slack client and Slack Block\n```\nslack_client = SlackClient(bot_token=\"xoxb-your-slack-token\")\nslack_message = SlackBlock(client=slack_client)\n```\n\n# Create a message\n```\nheader = HeaderBlock(title=\"Welcome to the Channel!\")\ndivider = DividerBlock()\nsection = SectionBlock()\nsection.change_value(type=\"mrkdwn\", text=\"This is a *section* with some _rich text_.\")\nsection.add_image(image_url=\"https://example.com/image.png\", alt_text=\"Example Image\")\n```\n\n# Upload file\n```\nslack_message.upload_file(\"C:/path/to/file.extension\", \"file.extension\")\n```\n\n# Post the message to a channel\n```\nslack_message.add_blocks([header, divider, section])\nslack_message.post_message_block(channel_id=\"C1234567890\")\n```\n\n# Final code\n```\nfrom slack_message_blocks_simplified import DividerBlock, HeaderBlock, ContextBlock, SectionBlock, ImageBlock, RichTextBlock, SlackBlock, SlackClient\n\nslack_client = SlackClient(bot_token=\"xoxb-your-slack-token\")\nslack_message = SlackBlock(client=slack_client)\n\nheader = HeaderBlock(title=\"Welcome to the Channel!\")\ndivider = DividerBlock()\nsection = SectionBlock()\nsection.change_value(type=\"mrkdwn\", text=\"This is a *section* with some _rich text_.\")\nsection.add_image(type=\"image\", image_url=\"https://example.com/image.png\", alt_text=\"Example Image\")\n\nslack_message.upload_file(\"C:/path/to/file.extension\", \"file.extension\")\n\nslack_message.add_blocks([header, divider, section])\nslack_message.post_message_block(channel_id=\"C1234567890\")\n```\n\n\n# Classes and Methods\n\n## 1. SlackClient\nA client for interacting with Slack's API.\n\n### Attributes:\n\n- `bot_token`: The token used for authenticating the bot with Slack's API. To get this token you must have a [Slack app](https://api.slack.com/docs/apps) created and it requires the following OAuth Scopes: \n`chat:write`, `files:write`\n\n### Methods:\n\n- `post_message_block(channel_id: str, blocks: Any | None, text: str = \"\")`:\n\n **Description**: Posts a message with optional blocks to a specific Slack channel. \n **Required Keys**: \n - `channel_id`: The ID of the Slack channel where the message will be posted. \n - `blocks`: A list of blocks (formatted sections) to include in the message. Can be `None`. \n - `text`: The plain text content of the message.\n\n- `upload(file: str | bytes | IOBase | None, filename: str | None)`:\n\n **Description**: Uploads a file to Slack, optionally with a specified filename. \n **Required Keys**: \n - `file`: The file to upload. It can be a path to a file, bytes, or an IO stream. \n - `filename`: The name to use for the file in Slack. If `None`, Slack determines the name automatically.\n\n## 2. SlackBlock\nRepresents a message block to be sent via Slack.\n\n### Attributes:\n\n- `client`: An instance of `SlackClient`.\n- `text`: Text content of the message.\n- `blocks`: List of blocks to be included in the message.\n- `files`: List of file URLs to be attached to the message.\n\n### Methods:\n\n- `add_blocks(blocks: list[BaseBlock])`:\n\n **Description**: Adds multiple blocks to the Slack message. \n **Required Keys**: \n - `blocks`: A list of `BaseBlock` objects (e.g., `HeaderBlock`, `SectionBlock`) to be added to the message.\n\n- `upload_file(file_path: str, filename: str | None = None)`:\n\n **Description**: Uploads a file to Slack and stores its URL. \n **Required Keys**: \n - `file_path`: Path to the file that will be uploaded. \n - `filename`: Optional. The name to use for the file in Slack. If `None`, Slack determines the name automatically.\n\n- `add_message(new_text: str)`:\n\n **Description**: Appends additional text to the existing message. \n **Required Keys**: \n - `new_text`: The text to append to the current message.\n\n- `change_message(new_text: str)`:\n\n **Description**: Replaces the existing message with new text. \n **Required Keys**: \n - `new_text`: The new text that will replace the current message content.\n\n- `reset_message()`:\n\n **Description**: Resets the message text to an empty string. \n **Required Keys**: None\n\n- `post_message_block(channel_id: str)`:\n\n **Description**: Posts the message block to a specified Slack channel. \n **Required Keys**: \n - `channel_id`: The ID of the Slack channel where the message will be posted.\n\n## 3. HeaderBlock\nRepresents a Slack header block.\n\n### Attributes:\n\n- `title`: Title of the header.\n\n### Methods:\n\n- `reset_value()`:\n\n **Description**: Resets the title of the header block. \n **Required Keys**: None\n\n- `change_value(*args: list[Any], **kwargs: dict[str, Any])`:\n\n **Description**: Changes the title of the header block. \n **Required Keys**: \n - `title`: The new title for the header block.\n\n- `append(*args: list[Any], **kwargs: dict[str, Any])`:\n\n **Description**: Appends text to the existing title. \n **Required Keys**: \n - `title`: The text to append to the existing title.\n\n- `value() -> dict[str, Any]`:\n\n **Description**: Retrieves the value of the header block. \n **Required Keys**: None (Returns a dictionary with the header type and title)\n\n## 4. DividerBlock\nRepresents a Slack divider block.\n\n### Methods:\n\n- `value() -> dict[str, Any]`:\n\n **Description**: Retrieves the value of the divider block. \n **Required Keys**: None (Returns a dictionary with the divider type)\n\n## 5. SectionBlock\nRepresents a Slack section block.\n\n### Attributes:\n\n- `element`: Dictionary containing the section content.\n- `accessory`: Dictionary containing the section accessory.\n\n### Methods:\n\n- `reset_value()`:\n\n **Description**: Resets the section block to its default state. \n **Required Keys**: None\n\n- `change_value(*args: list[Any], **kwargs: dict[str, Any])`:\n\n **Description**: Changes the content of the section block. \n **Required Keys**: \n - `type`: The type of the section block content (e.g., `plain_text`, `mrkdwn`). \n - `text`: The text content of the section block.\n\n- `add_image(*args: list[Any], **kwargs: dict[str, Any])`:\n\n **Description**: Adds an image to the section block. \n **Required Keys**: \n - `type`: The type of the section block content (e.g., `image`). \n - `image_url`: The URL of the image to be added. \n - `alt_text`: The alternative text for the image.\n\n- `value() -> dict[str, Any]`:\n\n **Description**: Retrieves the value of the section block. \n **Required Keys**: None (Returns a dictionary with section type and content)\n\n## 6. ImageBlock\nRepresents a Slack image block.\n\n### Attributes:\n\n- `image_url`: URL of the image.\n- `title`: Optional. Title of the image block.\n- `alt_text`: Alternative text for the image.\n- `is_markdown`: Indicates if the title is in Markdown format.\n\n### Methods:\n\n- `reset_value()`:\n\n **Description**: Resets the image block to its default state. \n **Required Keys**: None\n\n- `change_value(*args: list[Any], **kwargs: dict[str, Any])`:\n\n **Description**: Changes the properties of the image block. \n **Required Keys**: \n - `image_url`: The new URL of the image. \n - `title`: The new title for the image block. \n - `alt_text`: The new alternative text for the image. \n - `is_markdown`: Boolean indicating if the title should be in Markdown format.\n\n- `value() -> dict[str, Any]`:\n\n **Description**: Retrieves the value of the image block. \n **Required Keys**: None (Returns a dictionary with image block details)\n\n## 7. ContextBlock\nRepresents a Slack context block.\n\n### Attributes:\n\n- `elements`: List of elements within the context block.\n\n### Methods:\n\n- `reset_value()`:\n\n **Description**: Resets the elements of the context block. \n **Required Keys**: None\n\n- `append(*args: list[Any], **kwargs: dict[str, Any])`:\n\n **Description**: Appends an element to the context block. \n **Required Keys**: \n - `type`: The type of the element (e.g., `image`, `plain_text`, `mrkdwn`). \n - For `image` type: \n - `image_url`: The URL of the image. \n - `alt_text`: The alternative text for the image. \n - For `plain_text` and `mrkdwn` types: \n - `text`: The text content of the element.\n\n- `value() -> dict[str, Any]`:\n\n **Description**: Retrieves the value of the context block. \n **Required Keys**: None (Returns a dictionary with context type and elements)\n\n## 8. RichTextBlock\nRepresents a Slack rich text block.\n\n### Attributes:\n\n- `sections`: List of rich text sections.\n\n### Methods:\n\n- `reset_value()`:\n\n **Description**: Resets the sections of the rich text block. \n **Required Keys**: None\n\n- `add_section(text_list: list[dict[str, Any]])`:\n\n **Description**: Adds a new section to the rich text block. \n **Required Keys**: \n - `text_list`: A list of dictionaries, each representing a text element with keys like `type`, `text`, `bold`, `italic`, `strike`, etc.\n\n- `add_list(list_style: str, text_list: list[list[dict[str, Any]]])`:\n\n **Description**: Adds a list to the rich text block. \n **Required Keys**: \n - `list_style`: The style of the list (e.g., `bullet`, `ordered`). \n - `text_list`: A list of lists, where each inner list represents items in the list with text elements.\n\n- `value() -> dict[str, Any]`:\n\n **Description**: Retrieves the value of the rich text block. \n **Required Keys**: None (Returns a dictionary with rich text block details)\n\n\nIf you'd like to contribute to this project, please fork the repository and submit a pull request. All contributions are welcome!\n\n## License\n\nThis project is licensed under the MIT License.\n",
"bugtrack_url": null,
"license": "Copyright (c) 2018 The Python Packaging Authority Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"summary": "A small package that is used to create blocks in Slack messaging app",
"version": "0.0.5",
"project_urls": null,
"split_keywords": [
"slack"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2b53b6696e4e68d8619762ec601c4ceee017313c41746aee1bd88522bb16af5c",
"md5": "4b5b958c668c20e2f528b54325673546",
"sha256": "2e77c5809e01c89fa1d51eb34a733a472ff0e1cceba9f83a4f01a7819a7eb156"
},
"downloads": -1,
"filename": "slack_message_blocks_simplified-0.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4b5b958c668c20e2f528b54325673546",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 10018,
"upload_time": "2024-08-27T21:53:59",
"upload_time_iso_8601": "2024-08-27T21:53:59.487925Z",
"url": "https://files.pythonhosted.org/packages/2b/53/b6696e4e68d8619762ec601c4ceee017313c41746aee1bd88522bb16af5c/slack_message_blocks_simplified-0.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "90cecd30cd8ce9973dfacc0619a523358eb431597ca54695785f997d35485213",
"md5": "6ef385d35e48127909e003509231cea3",
"sha256": "e9a83d2e2ec03a123360e0b4abd7d95d50d2ceb48730afbb952c28981c64f1e3"
},
"downloads": -1,
"filename": "slack_message_blocks_simplified-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "6ef385d35e48127909e003509231cea3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 9318,
"upload_time": "2024-08-27T21:54:01",
"upload_time_iso_8601": "2024-08-27T21:54:01.212183Z",
"url": "https://files.pythonhosted.org/packages/90/ce/cd30cd8ce9973dfacc0619a523358eb431597ca54695785f997d35485213/slack_message_blocks_simplified-0.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-27 21:54:01",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "slack-message-blocks-simplified"
}