Name | portia-sdk-python JSON |
Version |
0.4.10
JSON |
| download |
home_page | None |
Summary | Portia Labs Python SDK for building agentic workflows. |
upload_time | 2025-07-09 09:18:24 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.11 |
license | MIT License Copyright (c) 2025 Portia AI 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 |
llm
agentic
workflow
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/Logo_Portia_Line_White.png">
<source media="(prefers-color-scheme: light)" srcset="assets/Logo_Portia_Line_Black.png">
<img alt="Portia AI logo" src="assets/Logo_Portia_Line_Black.png" width="full">
</picture>
</p>
<p align="center">
<a href="https://www.producthunt.com/products/portia-ai?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_source=badge-portia-ai-2" target="_blank">
<img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=983741&theme=light&period=daily&t=1751531459759" alt="Portia AI - Secure AI agents with tools, auth, and smart control | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54"/>
</a>
</p>
<p align="center">
<a href="https://www.youtube.com/@PortiaAI">
<img src="https://img.shields.io/badge/YouTube-FF0000?logo=youtube&logoColor=white">
</a>
<a href="https://discord.gg/DvAJz9ffaR">
<img src="https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white">
</a>
<a href="https://x.com/RealPortiaAI">
<img src="https://img.shields.io/badge/ X -000000?logo=twitter&logoColor=white">
</a>
<a href="https://www.reddit.com/r/PortiaAI/">
<img src="https://img.shields.io/badge/Reddit-FF4500?logo=reddit&logoColor=white">
</a>
<a href="https://www.linkedin.com/company/portiaai">
<img src="https://img.shields.io/badge/LinkedIn-0A66C2?logo=linkedin&logoColor=white">
</a>
<br>
<a href="https://app.portialabs.ai">
<img src="https://img.shields.io/badge/Dashboard-059669">
</a>
<a href="https://docs.portialabs.ai">
<img src="https://img.shields.io/badge/Docs-38BDF8">
</a>
<a href="https://blog.portialabs.ai">
<img src="https://img.shields.io/badge/Blog-2D3748">
</a>
</p>
# Portia SDK Python
Portia AI is an open source developer framework for predictable, stateful, authenticated agentic workflows. We allow developers to have as much or as little oversight as they’d like over their multi-agent deployments and we are obsessively focused on production readiness.
Play around, break things and tell us how you're getting on in our <a href="https://discord.gg/DvAJz9ffaR" target="_blank">**Discord channel (↗)**</a>. Most importantly please be kind to your fellow humans (<a href="https://github.com/portiaAI/portia-sdk-python/blob/main/CODE_OF_CONDUCT.md" target="_blank" rel="noopener noreferrer">**Code of Conduct (↗)**</a>).
If you want to dive straight in with an example, dive into one of our examples in our **[Examples Repo (↗)](https://github.com/portiaAI/portia-agent-examples)**.
## Key features
**Iterate on agents’ reasoning and intervene in their execution**</br>
🧠 Create your multi-agent [`Plan`](https://docs.portialabs.ai/generate-plan) conversationally, or build them with our [`PlanBuilder`](https://docs.portialabs.ai/generate-plan#build-a-plan-manually).</br>
📝 Enrich a [`PlanRunState`](https://docs.portialabs.ai/run-plan) during execution to track progress.</br>
🚧 Define inputs and output structures for enhanced predictability.</br>
✋🏼 Add deterministic tasks through an [`ExecutionHook`](https://docs.portialabs.ai/execution-hooks). Use a [`clarification`](https://docs.portialabs.ai/understand-clarifications) for human:agent interactions.</br>
**Extensive tool support including MCP support**</br>
🔧 Connect [tool registries](https://docs.portialabs.ai/extend-run-tools) from any MCP server, local tools, Portia cloud tools or another AI tool provider (e.g. ACI.dev).</br>
🌐 Navigate the web and cope with captchas and logins using our [open source browser tool](https://docs.portialabs.ai/browser-tools).</br>
**Authentication for API and web agents**</br>
🔑 Handle user credentials seamlessly, for both API tools and browser sessions, with our `clarification` interface.</br>
**Production ready**</br>
👤 Attribute multi-agent runs and auth at an [`EndUser`](https://docs.portialabs.ai/manage-end-users) level.</br>
💾 Large inputs and outputs are automatically stored / retrieved in [Agent memory](https://docs.portialabs.ai/agent-memory) at runtime.</br>
🔗 Connect [any LLM](https://docs.portialabs.ai/manage-config#configure-llm-options) including local ones, and use your own Redis server for [caching](https://docs.portialabs.ai/manage-config#manage-caching).</br>
<p align="center"><strong>🌟 Star Portia AI to stay updated on new releases!</strong></p>
## Demo
To clickthrough at your own pace, please follow this [link](https://snappify.com/view/3d721d6c-c5ff-4e84-b770-83e93bd1a8f1)</br>

## Quickstart
### Installation in 3 quick steps
Ensure you have python 3.11 or higher installed using `python --version`. If you need to update your python version please visit their [docs](https://www.python.org/downloads/). Note that the example below uses OpenAI but we support other models as well. For instructions on linking other models, refer to our [docs](https://docs.portialabs.ai/manage-config).</br>
**Step 1:** Install the Portia Python SDK
```bash
pip install portia-sdk-python
```
**Step 2:** Ensure you have an LLM API key set up
```bash
export OPENAI_API_KEY='your-api-key-here'
```
**Step 3:** Validate your installation by submitting a simple maths prompt from the command line
```
portia-cli run "add 1 + 2"
```
**All set? Now let's explore some basic usage of the product 🚀**
### E2E example
You will need a Portia API key for this one because we use one of our cloud tools to schedule a calendar event and send an email.
<br>**🙏🏼 We have a free tier so you do not need to share payment details to get started 🙏🏼.**<br>
Head over to <a href="https://app.portialabs.ai" target="_blank">**app.portialabs.ai (↗)**</a> and get your Portia API key. You will then need to set it as the env variable `PORTIA_API_KEY`.<br/>
The example below introduces **some** of the config options available with Portia AI (check out our <a href="https://docs.portialabs.ai/manage-config" target="_blank">**docs (↗)**</a> for more):
- The `storage_class` is set using the `StorageClass.CLOUD` ENUM. So long as your `PORTIA_API_KEY` is set, runs and tool calls will be logged and appear automatically in your Portia dashboard at <a href="https://app.portialabs.ai" target="_blank">**app.portialabs.ai (↗)**</a>.
- The `default_log_level` is set using the `LogLevel.DEBUG` ENUM to `DEBUG` so you can get some insight into the sausage factory in your terminal, including plan generation, run states, tool calls and outputs at every step 😅
- The `llm_provider` and `xxx_api_key` (varies depending on model provider chosen) are used to choose the specific LLM provider. In the example below we're using GPT 4o, but you can use Anthropic, Gemini and others!
Finally we also introduce the concept of a `tool_registry`, which is a flexible grouping of tools.
```python
from dotenv import load_dotenv
from portia import Config, Portia, DefaultToolRegistry
from portia.cli import CLIExecutionHooks
load_dotenv(override=True)
recipient_email = input("Please enter the email address of the person you want to schedule a meeting with:\n")
task = f"""
Please help me accomplish the following tasks:
- Get my availability from Google Calendar tomorrow between 8:00 and 8:30
- If I am available, schedule a 30 minute meeting with {recipient_email} at a time that works for me with the title "Portia AI Demo" and a description of the meeting as "Test demo".
"""
config = Config.from_default()
portia = Portia(
config=config,
tools=DefaultToolRegistry(config=config),
execution_hooks=CLIExecutionHooks(),
)
plan = portia.run(task)
```
### Advanced examples on YouTube
Here is an example where we build a customer refund agent using Stripe's MCP server. It leverages execution hooks and clarifications to confirm human approval before moving money.</br>
[](https://youtu.be/DB-FDEM_7_Y?si=IqVq14eskvLIKmvv)
Here is another example where we use our open browser tool. It uses clarifications when it encounters a login page to allow a human to enter their credentials directly into the session and allow it to progress.</br>
[](https://youtu.be/hSq8Ww-hagg?si=8oQaXcTcAyrzEQty)
## Learn more
- Head over to our docs at <a href="https://docs.portialabs.ai" target="_blank">**docs.portialabs.ai (↗)**</a>.
- Join the conversation on our <a href="https://discord.gg/DvAJz9ffaR" target="_blank">**Discord channel (↗)**</a>.
- Watch us embarrass ourselves on our <a href="https://www.youtube.com/@PortiaAI" target="_blank">**YouTube channel (↗)**</a>.
- Follow us on <a href="https://www.producthunt.com/posts/portia-ai" target="_blank">**Product Hunt (↗)**</a>.
## Paid contributions & contribution guidelines
Head on over to our <a href="https://github.com/portiaAI/portia-sdk-python/blob/main/CONTRIBUTING.md" target="_blank">**contribution guide (↗)**</a> for details.
Portia offers a **PAID** contribution program by fixing issues on our 'Issues' list. You can read all about this in the <a href="https://github.com/portiaAI/portia-sdk-python/blob/main/CONTRIBUTING.md" target="_blank">**contribution guide (↗)**</a>.
# ⭐ Support
You can support our work best by leaving a star!

We love feedback and suggestions. Please join our <a href="https://discord.gg/DvAJz9ffaR" target="_blank">**Discord channel (↗)**</a> to chat with us.
Raw data
{
"_id": null,
"home_page": null,
"name": "portia-sdk-python",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "LLM, agentic, workflow",
"author": null,
"author_email": "Hello <hello@portialabs.ai>",
"download_url": "https://files.pythonhosted.org/packages/d3/6e/d2131764b2b9fbbb71b63f69c5ac44022c9e7ce23eb569b4af43349fbdef/portia_sdk_python-0.4.10.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <picture>\n <source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/Logo_Portia_Line_White.png\">\n <source media=\"(prefers-color-scheme: light)\" srcset=\"assets/Logo_Portia_Line_Black.png\">\n <img alt=\"Portia AI logo\" src=\"assets/Logo_Portia_Line_Black.png\" width=\"full\">\n </picture>\n</p>\n\n<p align=\"center\">\n <a href=\"https://www.producthunt.com/products/portia-ai?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_source=badge-portia-ai-2\" target=\"_blank\">\n <img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=983741&theme=light&period=daily&t=1751531459759\" alt=\"Portia AI - Secure AI agents with tools, auth, and smart control | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\"/>\n </a>\n</p>\n\n<p align=\"center\">\n <a href=\"https://www.youtube.com/@PortiaAI\">\n <img src=\"https://img.shields.io/badge/YouTube-FF0000?logo=youtube&logoColor=white\">\n </a>\n <a href=\"https://discord.gg/DvAJz9ffaR\">\n <img src=\"https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white\">\n </a>\n <a href=\"https://x.com/RealPortiaAI\">\n <img src=\"https://img.shields.io/badge/ X -000000?logo=twitter&logoColor=white\">\n </a>\n <a href=\"https://www.reddit.com/r/PortiaAI/\">\n <img src=\"https://img.shields.io/badge/Reddit-FF4500?logo=reddit&logoColor=white\">\n </a>\n <a href=\"https://www.linkedin.com/company/portiaai\">\n <img src=\"https://img.shields.io/badge/LinkedIn-0A66C2?logo=linkedin&logoColor=white\">\n </a>\n <br>\n <a href=\"https://app.portialabs.ai\">\n <img src=\"https://img.shields.io/badge/Dashboard-059669\">\n </a>\n <a href=\"https://docs.portialabs.ai\">\n <img src=\"https://img.shields.io/badge/Docs-38BDF8\">\n </a>\n <a href=\"https://blog.portialabs.ai\">\n <img src=\"https://img.shields.io/badge/Blog-2D3748\">\n </a>\n</p>\n\n\n# Portia SDK Python\n\nPortia AI is an open source developer framework for predictable, stateful, authenticated agentic workflows. We allow developers to have as much or as little oversight as they\u2019d like over their multi-agent deployments and we are obsessively focused on production readiness.\nPlay around, break things and tell us how you're getting on in our <a href=\"https://discord.gg/DvAJz9ffaR\" target=\"_blank\">**Discord channel (\u2197)**</a>. Most importantly please be kind to your fellow humans (<a href=\"https://github.com/portiaAI/portia-sdk-python/blob/main/CODE_OF_CONDUCT.md\" target=\"_blank\" rel=\"noopener noreferrer\">**Code of Conduct (\u2197)**</a>).\n\nIf you want to dive straight in with an example, dive into one of our examples in our **[Examples Repo (\u2197)](https://github.com/portiaAI/portia-agent-examples)**.\n\n## Key features\n\n**Iterate on agents\u2019 reasoning and intervene in their execution**</br>\n\ud83e\udde0 Create your multi-agent [`Plan`](https://docs.portialabs.ai/generate-plan) conversationally, or build them with our [`PlanBuilder`](https://docs.portialabs.ai/generate-plan#build-a-plan-manually).</br>\n\ud83d\udcdd Enrich a [`PlanRunState`](https://docs.portialabs.ai/run-plan) during execution to track progress.</br>\n\ud83d\udea7 Define inputs and output structures for enhanced predictability.</br>\n\u270b\ud83c\udffc Add deterministic tasks through an [`ExecutionHook`](https://docs.portialabs.ai/execution-hooks). Use a [`clarification`](https://docs.portialabs.ai/understand-clarifications) for human:agent interactions.</br>\n\n**Extensive tool support including MCP support**</br>\n\ud83d\udd27 Connect [tool registries](https://docs.portialabs.ai/extend-run-tools) from any MCP server, local tools, Portia cloud tools or another AI tool provider (e.g. ACI.dev).</br>\n\ud83c\udf10 Navigate the web and cope with captchas and logins using our [open source browser tool](https://docs.portialabs.ai/browser-tools).</br>\n\n**Authentication for API and web agents**</br>\n\ud83d\udd11 Handle user credentials seamlessly, for both API tools and browser sessions, with our `clarification` interface.</br>\n\n**Production ready**</br>\n\ud83d\udc64 Attribute multi-agent runs and auth at an [`EndUser`](https://docs.portialabs.ai/manage-end-users) level.</br>\n\ud83d\udcbe Large inputs and outputs are automatically stored / retrieved in [Agent memory](https://docs.portialabs.ai/agent-memory) at runtime.</br>\n\ud83d\udd17 Connect [any LLM](https://docs.portialabs.ai/manage-config#configure-llm-options) including local ones, and use your own Redis server for [caching](https://docs.portialabs.ai/manage-config#manage-caching).</br>\n\n<p align=\"center\"><strong>\ud83c\udf1f Star Portia AI to stay updated on new releases!</strong></p>\n\n## Demo\nTo clickthrough at your own pace, please follow this [link](https://snappify.com/view/3d721d6c-c5ff-4e84-b770-83e93bd1a8f1)</br>\n\n\n## Quickstart\n\n### Installation in 3 quick steps\n\nEnsure you have python 3.11 or higher installed using `python --version`. If you need to update your python version please visit their [docs](https://www.python.org/downloads/). Note that the example below uses OpenAI but we support other models as well. For instructions on linking other models, refer to our [docs](https://docs.portialabs.ai/manage-config).</br>\n\n**Step 1:** Install the Portia Python SDK\n```bash\npip install portia-sdk-python \n```\n\n**Step 2:** Ensure you have an LLM API key set up\n```bash\nexport OPENAI_API_KEY='your-api-key-here'\n```\n**Step 3:** Validate your installation by submitting a simple maths prompt from the command line\n```\nportia-cli run \"add 1 + 2\"\n```\n\n**All set? Now let's explore some basic usage of the product \ud83d\ude80**\n\n### E2E example\nYou will need a Portia API key for this one because we use one of our cloud tools to schedule a calendar event and send an email. \n<br>**\ud83d\ude4f\ud83c\udffc We have a free tier so you do not need to share payment details to get started \ud83d\ude4f\ud83c\udffc.**<br>\nHead over to <a href=\"https://app.portialabs.ai\" target=\"_blank\">**app.portialabs.ai (\u2197)**</a> and get your Portia API key. You will then need to set it as the env variable `PORTIA_API_KEY`.<br/>\n\nThe example below introduces **some** of the config options available with Portia AI (check out our <a href=\"https://docs.portialabs.ai/manage-config\" target=\"_blank\">**docs (\u2197)**</a> for more):\n- The `storage_class` is set using the `StorageClass.CLOUD` ENUM. So long as your `PORTIA_API_KEY` is set, runs and tool calls will be logged and appear automatically in your Portia dashboard at <a href=\"https://app.portialabs.ai\" target=\"_blank\">**app.portialabs.ai (\u2197)**</a>.\n- The `default_log_level` is set using the `LogLevel.DEBUG` ENUM to `DEBUG` so you can get some insight into the sausage factory in your terminal, including plan generation, run states, tool calls and outputs at every step \ud83d\ude05\n- The `llm_provider` and `xxx_api_key` (varies depending on model provider chosen) are used to choose the specific LLM provider. In the example below we're using GPT 4o, but you can use Anthropic, Gemini and others!\n\nFinally we also introduce the concept of a `tool_registry`, which is a flexible grouping of tools.\n\n```python\nfrom dotenv import load_dotenv\nfrom portia import Config, Portia, DefaultToolRegistry\nfrom portia.cli import CLIExecutionHooks\n\nload_dotenv(override=True)\n\nrecipient_email = input(\"Please enter the email address of the person you want to schedule a meeting with:\\n\")\ntask = f\"\"\"\nPlease help me accomplish the following tasks:\n- Get my availability from Google Calendar tomorrow between 8:00 and 8:30\n- If I am available, schedule a 30 minute meeting with {recipient_email} at a time that works for me with the title \"Portia AI Demo\" and a description of the meeting as \"Test demo\".\n\"\"\"\n\nconfig = Config.from_default()\nportia = Portia(\n config=config,\n tools=DefaultToolRegistry(config=config),\n execution_hooks=CLIExecutionHooks(),\n)\n\nplan = portia.run(task)\n```\n\n### Advanced examples on YouTube\nHere is an example where we build a customer refund agent using Stripe's MCP server. It leverages execution hooks and clarifications to confirm human approval before moving money.</br>\n[](https://youtu.be/DB-FDEM_7_Y?si=IqVq14eskvLIKmvv)\n\nHere is another example where we use our open browser tool. It uses clarifications when it encounters a login page to allow a human to enter their credentials directly into the session and allow it to progress.</br>\n[](https://youtu.be/hSq8Ww-hagg?si=8oQaXcTcAyrzEQty)\n\n## Learn more\n- Head over to our docs at <a href=\"https://docs.portialabs.ai\" target=\"_blank\">**docs.portialabs.ai (\u2197)**</a>.\n- Join the conversation on our <a href=\"https://discord.gg/DvAJz9ffaR\" target=\"_blank\">**Discord channel (\u2197)**</a>.\n- Watch us embarrass ourselves on our <a href=\"https://www.youtube.com/@PortiaAI\" target=\"_blank\">**YouTube channel (\u2197)**</a>.\n- Follow us on <a href=\"https://www.producthunt.com/posts/portia-ai\" target=\"_blank\">**Product Hunt (\u2197)**</a>.\n\n## Paid contributions & contribution guidelines\nHead on over to our <a href=\"https://github.com/portiaAI/portia-sdk-python/blob/main/CONTRIBUTING.md\" target=\"_blank\">**contribution guide (\u2197)**</a> for details.\n\nPortia offers a **PAID** contribution program by fixing issues on our 'Issues' list. You can read all about this in the <a href=\"https://github.com/portiaAI/portia-sdk-python/blob/main/CONTRIBUTING.md\" target=\"_blank\">**contribution guide (\u2197)**</a>.\n\n# \u2b50 Support\nYou can support our work best by leaving a star!\n\n\nWe love feedback and suggestions. Please join our <a href=\"https://discord.gg/DvAJz9ffaR\" target=\"_blank\">**Discord channel (\u2197)**</a> to chat with us.\n",
"bugtrack_url": null,
"license": "MIT License Copyright (c) 2025 Portia AI 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": "Portia Labs Python SDK for building agentic workflows.",
"version": "0.4.10",
"project_urls": {
"Documentation": "https://docs.portialabs.ai",
"Homepage": "https://www.portialabs.ai/",
"Repository": "https://github.com/portiaAI/portia-sdk-python"
},
"split_keywords": [
"llm",
" agentic",
" workflow"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b6c282ce0d1f291c248c246d1f8acc4fc5f954e8f01b7535e7c2804313438493",
"md5": "046efba78fbdd4eb87e430816eb12193",
"sha256": "649a0bf7dec52979592486fcb6bcd31ac5c7d4a0739ba863c521a7a103c8e441"
},
"downloads": -1,
"filename": "portia_sdk_python-0.4.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "046efba78fbdd4eb87e430816eb12193",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 157173,
"upload_time": "2025-07-09T09:18:23",
"upload_time_iso_8601": "2025-07-09T09:18:23.584959Z",
"url": "https://files.pythonhosted.org/packages/b6/c2/82ce0d1f291c248c246d1f8acc4fc5f954e8f01b7535e7c2804313438493/portia_sdk_python-0.4.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d36ed2131764b2b9fbbb71b63f69c5ac44022c9e7ce23eb569b4af43349fbdef",
"md5": "ce94fdcd5e76de4e70a690db2ddc4fc1",
"sha256": "cdfd4856b095f3f2852052106cf91cc5e3bdc01041a510753e7f28d50a435f79"
},
"downloads": -1,
"filename": "portia_sdk_python-0.4.10.tar.gz",
"has_sig": false,
"md5_digest": "ce94fdcd5e76de4e70a690db2ddc4fc1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 124257,
"upload_time": "2025-07-09T09:18:24",
"upload_time_iso_8601": "2025-07-09T09:18:24.868766Z",
"url": "https://files.pythonhosted.org/packages/d3/6e/d2131764b2b9fbbb71b63f69c5ac44022c9e7ce23eb569b4af43349fbdef/portia_sdk_python-0.4.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 09:18:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "portiaAI",
"github_project": "portia-sdk-python",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "portia-sdk-python"
}