# Agent Data Shuttle (ADS) - Python SDK
#### Agent Data Shuttle (ADS) — _The framework that makes your AI agents autonomously react to external events._
> **ADS Python SDK** enables you to build ADS Publishers and Subscribers in Python, allowing your AI agents to react to external events in real time.
> It is interoperable with other ADS SDKs (NodeJS/TypeScript, n8n) and supports all publisher-subscriber combinations.
---
## Installation
```sh
pip install agentdatashuttle_adspy
```
---
## Table of Contents
- [Overview](#overview)
- [Features](#features)
- [Architecture](#architecture)
- [Prerequisites](#prerequisites)
- [Usage](#usage)
- [ADS Publisher](#1-ads-publisher)
- [ADS Subscriber](#2-ads-subscriber)
- [Notification Channels](#notification-channels)
- [Types](#types)
- [Logging](#logging)
- [Contributing](#contributing)
- [License](#license)
- [Contact](#contact)
---
## Overview
Agent Data Shuttle (ADS) is a framework for connecting event sources (publishers) and AI agents (subscribers) across platforms and languages.
This SDK lets you build Python publishers and subscribers that can interoperate with NodeJS/TypeScript SDKs and n8n.
- **Publishers** send events (e.g., file uploads, system alerts, support tickets, CRM events, payment processor events, etc.).
- **Subscribers** (AI agents or workflows) receive and react to those events to take appropriate actions.
All combinations are possible:
- Python Publisher → Python Subscriber
- Python Publisher → NodeJS Subscriber
- Python Publisher → n8n Subscriber
- NodeJS Publisher → Python Subscriber
- NodeJS Publisher → n8n Subscriber
- NodeJS Publisher → NodeJS Subscriber
- n8n Publisher → Python Subscriber
- n8n Publisher → NodeJS Subscriber
- n8n Publisher → n8n Subscriber
---
## Features
- **Event-Driven Architecture:** Publish and subscribe to events between systems and agents.
- **Publisher & Subscriber SDKs:** Build both event sources (publishers) and event consumers (subscribers) in Python.
- **n8n Integration:** Out-of-the-box support for n8n workflows as subscribers or publishers.
- **Notification Channels:** Send notifications via Email or Slack when agents process events.
> More channels coming soon.
- **Pluggable Connectors:** Connect an ADS Subscriber to multiple ADS Publishers via data connectors.
- **Prompt Generation:** Automatically generate contextual prompts for AI agents based on event payloads and agent capabilities.
- **Type Hints:** Strong typing for safer and more maintainable code.
---
## Architecture
- **ADS Publisher:** Sends events to subscribers via ADS Bridge.
- **ADS Bridge:** (see [ADS Bridge repository](https://github.com/agentdatashuttle/ads-bridge)) Broadcasts events to connected subscribers.
- **ADS Subscriber:** Receives ADS events and invokes AI agents or workflows.
- **Notification Channels:** Email/Slack notifications on event processing.
- **Interoperability:** Mix Python, NodeJS, and n8n publishers/subscribers.
> 
>
> 
---
## Prerequisites
### Prerequisites for ADS Publisher
- **Python 3.8+**
- **RabbitMQ** instance
> For event queueing and secure event publishing
- **ADS Bridge**
> For real-time event delivery via Socket.io
>
> You must run the ADS Bridge service which would be the point of connection for subscribers.
>
> More info at: [https://github.com/agentdatashuttle/ads-bridge](https://github.com/agentdatashuttle/ads-bridge)
- **Redis**
> For handling ADS event delivery to a large number of ADS Subscribers from ADS Bridge
### Prerequisites for ADS Subscriber
- **Python 3.8+**
- **Email/Slack credentials** (Optional)
> For using notification channels upon each autonomous agent invocation
- **AI Agent or LLM** (for integrating with an AI model and trigger agentic workflows)
---
## Usage
### 1. ADS Publisher
Publish events to ADS subscribers.
```python
import os
import time
from agentdatashuttle_adspy.core.client import ADSRabbitMQClientParams
from agentdatashuttle_adspy.core.publisher import ADSPublisher
from agentdatashuttle_adspy.models.models import ADSDataPayload
# Step 1: Create ADSRabbitMQClientParams
client_params = ADSRabbitMQClientParams(
host=os.getenv("RABBITMQ_HOST", "localhost"),
username=os.getenv("RABBITMQ_USERNAME", "ads_user"),
password=os.getenv("RABBITMQ_PASSWORD", "ads_password"),
port=int(os.getenv("RABBITMQ_PORT", 5672))
)
# Step 2: Create a ADSPublisher instance
# Example: ADSPublisher for Kubernetes Health monitoring system
publisher = ADSPublisher("KubernetesMonitoring", client_params)
# Step 3: Create a sample ADSDataPayload
payload = ADSDataPayload(
event_name="pod_killed",
event_description="Pod 'payment-service-233ch3' just got killed due to OOMKilled error",
event_data={
"pod": "payment-service-233ch3",
"recorded_memory_usage": "2042Mi",
"limits": "2000Mi"
}
)
time.sleep(2) # Simulate some delay before publishing
# Publish the payload
publisher.publish_event(payload)
print("Event published successfully.")
```
**Tip:** Customize the event payload to match your use case, and provide a detailed `event_description` and as much detail as required in the `event_data` dictionary for the subscriber AI Agent to take remediation actions with greater confidence and accuracy.
---
### 2. ADS Subscriber
Subscribe to events and invoke your AI agent.
```python
import os
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage
from langgraph.prebuilt import create_react_agent
# Import ADS Subscriber and add ADS Data Connectors
from agentdatashuttle_adspy.core.subscriber import ADSSubscriber
from agentdatashuttle_adspy.core.dataconnector import ADSDataConnector
from agentdatashuttle_adspy.core.client import ADSBridgeClientParams
from agentdatashuttle_adspy.models.models import ADSDataPayload
from agentdatashuttle_adspy.core.notifications import EmailNotificationChannel, SlackNotificationChannel
# Define the tools for the agent to use
agent_tools = [toolA, toolB, see_k8s_logs_tool]
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
agent = create_react_agent(llm, agent_tools, debug=True)
# Step 1: Define callback function for ADS Subscriber to invoke agent
def invoke_agent(prompt: str, payload: ADSDataPayload) -> str:
print("The ADS payload was:", payload)
# Filter specific events in/out as you desire
if payload.event_name == "container_up":
return "NO AGENT INVOCATION FOR THIS EVENT - CONTAINER UP"
# Invoke your agent with the context enriched prompt generated by Agent Data Shuttle
response = agent.invoke({"messages": [HumanMessage(prompt)]})
# Return final agent response - will be sent to all notification channels for later review
return response["messages"][-1].content
# Step 2: Define ADSBridgeClientParams and corresponding ADSDataConnector
ads_bridge_client_params = ADSBridgeClientParams(
connection_string="http://localhost:9999",
path_prefix="/ads_bridge",
ads_subscribers_pool_id="<a_random_uuid>" # Replace with your actual pool ID to group horizontally scaled replicas of ADS Subscribers - use https://agentdatashuttle.knowyours.co/pool-id-generator to make one if needed
)
data_connector_one = ADSDataConnector(
connector_name="K8sMonitoringConnector",
bridge_client_params=ads_bridge_client_params
)
# Step 3: Optionally, add notification channels
email_channel = EmailNotificationChannel(
"<agent_description>",
"<smtp_host>",
"<smtp_port>",
"<smtp_username>",
"<smtp_password>",
"from@example.com",
"to@example.com"
)
slack_channel = SlackNotificationChannel(
"<agent_description>",
"<slack_bot_token>",
"#<your-channel>"
)
# Step 4: Create the ADSSubscriber with the callback function, LLM, and Data Connectors.
# The ADSSubscriber will listen for events from all the data connectors and invoke the agent.
ads_subscriber = ADSSubscriber(
agent_callback_function=invoke_agent,
llm=llm,
agent_description="<agent_description>",
data_connectors=[data_connector_one],
notification_channels=[email_channel, slack_channel]
)
# Step 5: Start the ADSSubscriber to listen for events and invoke the agent.
ads_subscriber.start()
```
---
## Notification Channels
Send notifications via Email or Slack when events are processed:
```python
from agentdatashuttle_adspy.core.notifications import EmailNotificationChannel, SlackNotificationChannel
email_channel = EmailNotificationChannel(
"<agent_description>",
"<smtp_host>",
"<smtp_port>",
"<smtp_username>",
"<smtp_password>",
"from@example.com",
"to@example.com"
)
slack_channel = SlackNotificationChannel(
"<agent_description>",
"<slack_bot_token>",
"#<your-channel>"
)
```
Pass these channels to the `ADSSubscriber` to enable notifications.
---
## Types
All core types are defined in [`agentdatashuttle_adspy/models/models.py`](agentdatashuttle_adspy/models/models.py):
- [`ADSDataPayload`](agentdatashuttle_adspy/models/models.py)
- [`ADSClientParams`](agentdatashuttle_adspy/core/client.py)
- [`ADSBridgeClientParams`](agentdatashuttle_adspy/core/client.py)
---
## Logging
Logging level can be configured via the `LOG_LEVEL` environment variable with the following values:
| Level | Description |
| ----- | ----------------------------------------------- |
| error | Critical errors that may cause the app to crash |
| warn | Warnings about potentially harmful situations |
| info | General operational information |
| debug | Debug-level logs for development |
---
## Contributing
Contributions are welcome!
If you have ideas for improvements, bug fixes, or new features, please open a [GitHub Issue](https://github.com/agentdatashuttle/python-sdk/issues) to discuss or submit a Pull Request (PR).
**How to contribute:**
1. Fork this repository and create your branch from `main`.
2. Make your changes with clear commit messages.
3. Ensure your code passes tests.
4. Open a Pull Request describing your changes.
If you encounter any bugs or have feature requests, please [raise an issue](https://github.com/agentdatashuttle/python-sdk/issues) on GitHub.
Thank you for helping improve the Agent Data Shuttle initiative!
---
## License
This project is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
---
## Contact
For questions or support, please contact
[agentdatashuttle@knowyours.co](mailto:agentdatashuttle@knowyours.co) or [sudhay2001@gmail.com](mailto:sudhay2001@gmail.com)
For more information about Agent Data Shuttle - https://agentdatashuttle.knowyours.co
Raw data
{
"_id": null,
"home_page": null,
"name": "agentdatashuttle-adspy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Knowyours <agentdatashuttle@knowyours.co>",
"download_url": "https://files.pythonhosted.org/packages/e9/a4/30d0093f4bed20cc8b0c87452e532c884d66e9a8f321cda5e0201a59a071/agentdatashuttle_adspy-1.0.9.tar.gz",
"platform": null,
"description": "# Agent Data Shuttle (ADS) - Python SDK\n\n#### Agent Data Shuttle (ADS) \u2014 _The framework that makes your AI agents autonomously react to external events._\n\n> **ADS Python SDK** enables you to build ADS Publishers and Subscribers in Python, allowing your AI agents to react to external events in real time.\n\n> It is interoperable with other ADS SDKs (NodeJS/TypeScript, n8n) and supports all publisher-subscriber combinations.\n\n---\n\n## Installation\n\n```sh\npip install agentdatashuttle_adspy\n```\n\n---\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n- [Architecture](#architecture)\n- [Prerequisites](#prerequisites)\n- [Usage](#usage)\n - [ADS Publisher](#1-ads-publisher)\n - [ADS Subscriber](#2-ads-subscriber)\n- [Notification Channels](#notification-channels)\n- [Types](#types)\n- [Logging](#logging)\n- [Contributing](#contributing)\n- [License](#license)\n- [Contact](#contact)\n\n---\n\n## Overview\n\nAgent Data Shuttle (ADS) is a framework for connecting event sources (publishers) and AI agents (subscribers) across platforms and languages.\n\nThis SDK lets you build Python publishers and subscribers that can interoperate with NodeJS/TypeScript SDKs and n8n.\n\n- **Publishers** send events (e.g., file uploads, system alerts, support tickets, CRM events, payment processor events, etc.).\n- **Subscribers** (AI agents or workflows) receive and react to those events to take appropriate actions.\n\nAll combinations are possible:\n\n- Python Publisher \u2192 Python Subscriber\n- Python Publisher \u2192 NodeJS Subscriber\n- Python Publisher \u2192 n8n Subscriber\n- NodeJS Publisher \u2192 Python Subscriber\n- NodeJS Publisher \u2192 n8n Subscriber\n- NodeJS Publisher \u2192 NodeJS Subscriber\n- n8n Publisher \u2192 Python Subscriber\n- n8n Publisher \u2192 NodeJS Subscriber\n- n8n Publisher \u2192 n8n Subscriber\n\n---\n\n## Features\n\n- **Event-Driven Architecture:** Publish and subscribe to events between systems and agents.\n- **Publisher & Subscriber SDKs:** Build both event sources (publishers) and event consumers (subscribers) in Python.\n- **n8n Integration:** Out-of-the-box support for n8n workflows as subscribers or publishers.\n- **Notification Channels:** Send notifications via Email or Slack when agents process events.\n > More channels coming soon.\n- **Pluggable Connectors:** Connect an ADS Subscriber to multiple ADS Publishers via data connectors.\n- **Prompt Generation:** Automatically generate contextual prompts for AI agents based on event payloads and agent capabilities.\n- **Type Hints:** Strong typing for safer and more maintainable code.\n\n---\n\n## Architecture\n\n- **ADS Publisher:** Sends events to subscribers via ADS Bridge.\n- **ADS Bridge:** (see [ADS Bridge repository](https://github.com/agentdatashuttle/ads-bridge)) Broadcasts events to connected subscribers.\n- **ADS Subscriber:** Receives ADS events and invokes AI agents or workflows.\n- **Notification Channels:** Email/Slack notifications on event processing.\n- **Interoperability:** Mix Python, NodeJS, and n8n publishers/subscribers.\n\n> \n>\n> \n\n---\n\n## Prerequisites\n\n### Prerequisites for ADS Publisher\n\n- **Python 3.8+**\n\n- **RabbitMQ** instance\n\n > For event queueing and secure event publishing\n\n- **ADS Bridge**\n\n > For real-time event delivery via Socket.io\n >\n > You must run the ADS Bridge service which would be the point of connection for subscribers.\n >\n > More info at: [https://github.com/agentdatashuttle/ads-bridge](https://github.com/agentdatashuttle/ads-bridge)\n\n- **Redis**\n\n > For handling ADS event delivery to a large number of ADS Subscribers from ADS Bridge\n\n### Prerequisites for ADS Subscriber\n\n- **Python 3.8+**\n\n- **Email/Slack credentials** (Optional)\n\n > For using notification channels upon each autonomous agent invocation\n\n- **AI Agent or LLM** (for integrating with an AI model and trigger agentic workflows)\n\n---\n\n## Usage\n\n### 1. ADS Publisher\n\nPublish events to ADS subscribers.\n\n```python\nimport os\nimport time\nfrom agentdatashuttle_adspy.core.client import ADSRabbitMQClientParams\nfrom agentdatashuttle_adspy.core.publisher import ADSPublisher\nfrom agentdatashuttle_adspy.models.models import ADSDataPayload\n\n# Step 1: Create ADSRabbitMQClientParams\nclient_params = ADSRabbitMQClientParams(\n host=os.getenv(\"RABBITMQ_HOST\", \"localhost\"),\n username=os.getenv(\"RABBITMQ_USERNAME\", \"ads_user\"),\n password=os.getenv(\"RABBITMQ_PASSWORD\", \"ads_password\"),\n port=int(os.getenv(\"RABBITMQ_PORT\", 5672))\n )\n\n\n# Step 2: Create a ADSPublisher instance\n# Example: ADSPublisher for Kubernetes Health monitoring system\npublisher = ADSPublisher(\"KubernetesMonitoring\", client_params)\n\n# Step 3: Create a sample ADSDataPayload\npayload = ADSDataPayload(\n event_name=\"pod_killed\",\n event_description=\"Pod 'payment-service-233ch3' just got killed due to OOMKilled error\",\n event_data={\n \"pod\": \"payment-service-233ch3\",\n \"recorded_memory_usage\": \"2042Mi\",\n \"limits\": \"2000Mi\"\n }\n)\n\ntime.sleep(2) # Simulate some delay before publishing\n\n# Publish the payload\npublisher.publish_event(payload)\n\nprint(\"Event published successfully.\")\n```\n\n**Tip:** Customize the event payload to match your use case, and provide a detailed `event_description` and as much detail as required in the `event_data` dictionary for the subscriber AI Agent to take remediation actions with greater confidence and accuracy.\n\n---\n\n### 2. ADS Subscriber\n\nSubscribe to events and invoke your AI agent.\n\n```python\nimport os\nfrom langchain_google_genai import ChatGoogleGenerativeAI\nfrom langchain_core.messages import HumanMessage\nfrom langgraph.prebuilt import create_react_agent\n\n# Import ADS Subscriber and add ADS Data Connectors\nfrom agentdatashuttle_adspy.core.subscriber import ADSSubscriber\nfrom agentdatashuttle_adspy.core.dataconnector import ADSDataConnector\nfrom agentdatashuttle_adspy.core.client import ADSBridgeClientParams\nfrom agentdatashuttle_adspy.models.models import ADSDataPayload\nfrom agentdatashuttle_adspy.core.notifications import EmailNotificationChannel, SlackNotificationChannel\n\n# Define the tools for the agent to use\nagent_tools = [toolA, toolB, see_k8s_logs_tool]\nllm = ChatGoogleGenerativeAI(model=\"gemini-2.0-flash\")\n\nagent = create_react_agent(llm, agent_tools, debug=True)\n\n# Step 1: Define callback function for ADS Subscriber to invoke agent\ndef invoke_agent(prompt: str, payload: ADSDataPayload) -> str:\n print(\"The ADS payload was:\", payload)\n\n # Filter specific events in/out as you desire\n if payload.event_name == \"container_up\":\n return \"NO AGENT INVOCATION FOR THIS EVENT - CONTAINER UP\"\n\n # Invoke your agent with the context enriched prompt generated by Agent Data Shuttle\n response = agent.invoke({\"messages\": [HumanMessage(prompt)]})\n\n # Return final agent response - will be sent to all notification channels for later review\n return response[\"messages\"][-1].content\n\n# Step 2: Define ADSBridgeClientParams and corresponding ADSDataConnector\nads_bridge_client_params = ADSBridgeClientParams(\n connection_string=\"http://localhost:9999\",\n path_prefix=\"/ads_bridge\",\n ads_subscribers_pool_id=\"<a_random_uuid>\" # Replace with your actual pool ID to group horizontally scaled replicas of ADS Subscribers - use https://agentdatashuttle.knowyours.co/pool-id-generator to make one if needed\n)\n\ndata_connector_one = ADSDataConnector(\n connector_name=\"K8sMonitoringConnector\",\n bridge_client_params=ads_bridge_client_params\n)\n\n# Step 3: Optionally, add notification channels\nemail_channel = EmailNotificationChannel(\n \"<agent_description>\",\n \"<smtp_host>\",\n \"<smtp_port>\",\n \"<smtp_username>\",\n \"<smtp_password>\",\n \"from@example.com\",\n \"to@example.com\"\n)\n\nslack_channel = SlackNotificationChannel(\n \"<agent_description>\",\n \"<slack_bot_token>\",\n \"#<your-channel>\"\n)\n\n# Step 4: Create the ADSSubscriber with the callback function, LLM, and Data Connectors.\n# The ADSSubscriber will listen for events from all the data connectors and invoke the agent.\nads_subscriber = ADSSubscriber(\n agent_callback_function=invoke_agent,\n llm=llm,\n agent_description=\"<agent_description>\",\n data_connectors=[data_connector_one],\n notification_channels=[email_channel, slack_channel]\n)\n\n# Step 5: Start the ADSSubscriber to listen for events and invoke the agent.\nads_subscriber.start()\n```\n\n---\n\n## Notification Channels\n\nSend notifications via Email or Slack when events are processed:\n\n```python\nfrom agentdatashuttle_adspy.core.notifications import EmailNotificationChannel, SlackNotificationChannel\n\nemail_channel = EmailNotificationChannel(\n \"<agent_description>\",\n \"<smtp_host>\",\n \"<smtp_port>\",\n \"<smtp_username>\",\n \"<smtp_password>\",\n \"from@example.com\",\n \"to@example.com\"\n)\n\nslack_channel = SlackNotificationChannel(\n \"<agent_description>\",\n \"<slack_bot_token>\",\n \"#<your-channel>\"\n)\n```\n\nPass these channels to the `ADSSubscriber` to enable notifications.\n\n---\n\n## Types\n\nAll core types are defined in [`agentdatashuttle_adspy/models/models.py`](agentdatashuttle_adspy/models/models.py):\n\n- [`ADSDataPayload`](agentdatashuttle_adspy/models/models.py)\n- [`ADSClientParams`](agentdatashuttle_adspy/core/client.py)\n- [`ADSBridgeClientParams`](agentdatashuttle_adspy/core/client.py)\n\n---\n\n## Logging\n\nLogging level can be configured via the `LOG_LEVEL` environment variable with the following values:\n\n| Level | Description |\n| ----- | ----------------------------------------------- |\n| error | Critical errors that may cause the app to crash |\n| warn | Warnings about potentially harmful situations |\n| info | General operational information |\n| debug | Debug-level logs for development |\n\n---\n\n## Contributing\n\nContributions are welcome!\n\nIf you have ideas for improvements, bug fixes, or new features, please open a [GitHub Issue](https://github.com/agentdatashuttle/python-sdk/issues) to discuss or submit a Pull Request (PR).\n\n**How to contribute:**\n\n1. Fork this repository and create your branch from `main`.\n2. Make your changes with clear commit messages.\n3. Ensure your code passes tests.\n4. Open a Pull Request describing your changes.\n\nIf you encounter any bugs or have feature requests, please [raise an issue](https://github.com/agentdatashuttle/python-sdk/issues) on GitHub.\n\nThank you for helping improve the Agent Data Shuttle initiative!\n\n---\n\n## License\n\nThis project is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n\n---\n\n## Contact\n\nFor questions or support, please contact \n[agentdatashuttle@knowyours.co](mailto:agentdatashuttle@knowyours.co) or [sudhay2001@gmail.com](mailto:sudhay2001@gmail.com)\n\nFor more information about Agent Data Shuttle - https://agentdatashuttle.knowyours.co\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Agent Data Shuttle - Python SDK",
"version": "1.0.9",
"project_urls": {
"Homepage": "https://agentdatashuttle.knowyours.co",
"Issues": "https://github.com/agentdatashuttle/python-sdk/issues",
"Repository": "https://github.com/agentdatashuttle/python-sdk"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c9e4d23f16a2ba9d91191ff3010d47479bd4ddc02c54d14e443c92b03cb3dfa4",
"md5": "25843f59f2978d72592681ad03307914",
"sha256": "7ba96cfb67b1cbefade7327c61d488f342250da89dcd261381a95552e210372d"
},
"downloads": -1,
"filename": "agentdatashuttle_adspy-1.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "25843f59f2978d72592681ad03307914",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 22206,
"upload_time": "2025-07-22T12:48:37",
"upload_time_iso_8601": "2025-07-22T12:48:37.993702Z",
"url": "https://files.pythonhosted.org/packages/c9/e4/d23f16a2ba9d91191ff3010d47479bd4ddc02c54d14e443c92b03cb3dfa4/agentdatashuttle_adspy-1.0.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e9a430d0093f4bed20cc8b0c87452e532c884d66e9a8f321cda5e0201a59a071",
"md5": "646ed196fbf750d8be2d8c214eae52c3",
"sha256": "9e32f89d56f46e6a67c072e47e2e382346610f2e6d16ec00b0d998d504567324"
},
"downloads": -1,
"filename": "agentdatashuttle_adspy-1.0.9.tar.gz",
"has_sig": false,
"md5_digest": "646ed196fbf750d8be2d8c214eae52c3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 22667,
"upload_time": "2025-07-22T12:48:39",
"upload_time_iso_8601": "2025-07-22T12:48:39.532192Z",
"url": "https://files.pythonhosted.org/packages/e9/a4/30d0093f4bed20cc8b0c87452e532c884d66e9a8f321cda5e0201a59a071/agentdatashuttle_adspy-1.0.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-22 12:48:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "agentdatashuttle",
"github_project": "python-sdk",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "langchain",
"specs": []
},
{
"name": "langchain-core",
"specs": []
},
{
"name": "langchain-community",
"specs": []
},
{
"name": "langgraph",
"specs": []
},
{
"name": "langgraph-prebuilt",
"specs": []
},
{
"name": "python-dotenv",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "pydantic",
"specs": []
},
{
"name": "pika",
"specs": []
},
{
"name": "python-socketio",
"specs": []
},
{
"name": "markdown",
"specs": []
},
{
"name": "yagmail",
"specs": []
},
{
"name": "slackify-markdown",
"specs": []
},
{
"name": "slack-sdk",
"specs": []
}
],
"lcname": "agentdatashuttle-adspy"
}