runpod


Namerunpod JSON
Version 1.7.7 PyPI version JSON
download
home_pagehttps://runpod.io
Summary🐍 | Python library for RunPod API and serverless worker SDK.
upload_time2024-12-10 21:50:41
maintainerNone
docs_urlNone
authorRunPod
requires_python>=3.8
licenseMIT License
keywords runpod ai gpu serverless sdk api python library
VCS
bugtrack_url
requirements aiohttp aiohttp-retry backoff boto3 click colorama cryptography fastapi paramiko prettytable py-cpuinfo inquirerpy requests tomli tomlkit tqdm-loggable urllib3 watchdog
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
<h1>RunPod | Python Library </h1>

[![PyPI Package](https://badge.fury.io/py/runpod.svg)](https://badge.fury.io/py/runpod)
&nbsp;
[![Downloads](https://static.pepy.tech/personalized-badge/runpod?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/runpod)

[![CI | End-to-End RunPod Python Tests](https://github.com/runpod/runpod-python/actions/workflows/CI-e2e.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-e2e.yml)

[![CI | Code Quality](https://github.com/runpod/runpod-python/actions/workflows/CI-pylint.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-pylint.yml)
&nbsp;
[![CI | Unit Tests](https://github.com/runpod/runpod-python/actions/workflows/CI-pytests.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-pytests.yml)
&nbsp;
[![CI | CodeQL](https://github.com/runpod/runpod-python/actions/workflows/CI-codeql.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-codeql.yml)

</div>

Welcome to the official Python library for RunPod API &amp; SDK.

## Table of Contents

- [Table of Contents](#table-of-contents)
- [💻 | Installation](#--installation)
- [⚡ | Serverless Worker (SDK)](#--serverless-worker-sdk)
  - [Quick Start](#quick-start)
  - [Local Test Worker](#local-test-worker)
- [📚 | API Language Library (GraphQL Wrapper)](#--api-language-library-graphql-wrapper)
  - [Endpoints](#endpoints)
  - [GPU Cloud (Pods)](#gpu-cloud-pods)
- [📁 | Directory](#--directory)
- [🤝 | Community and Contributing](#--community-and-contributing)

## 💻 | Installation

```bash
# Install the latest release version
pip install runpod

# or

# Install the latest development version (main branch)
pip install git+https://github.com/runpod/runpod-python.git
```

*Python 3.8 or higher is required to use the latest version of this package.*

## ⚡ | Serverless Worker (SDK)

This python package can also be used to create a serverless worker that can be deployed to RunPod as a custom endpoint API.

### Quick Start

Create a python script in your project that contains your model definition and the RunPod worker start code. Run this python code as your default container start command:

```python
# my_worker.py

import runpod

def is_even(job):

    job_input = job["input"]
    the_number = job_input["number"]

    if not isinstance(the_number, int):
        return {"error": "Silly human, you need to pass an integer."}

    if the_number % 2 == 0:
        return True

    return False

runpod.serverless.start({"handler": is_even})
```

Make sure that this file is ran when your container starts. This can be accomplished by calling it in the docker command when you set up a template at [runpod.io/console/serverless/user/templates](https://www.runpod.io/console/serverless/user/templates) or by setting it as the default command in your Dockerfile.

See our [blog post](https://www.runpod.io/blog/serverless-create-a-basic-api) for creating a basic Serverless API, or view the [details docs](https://docs.runpod.io/serverless-ai/custom-apis) for more information.

### Local Test Worker

You can also test your worker locally before deploying it to RunPod. This is useful for debugging and testing.

```bash
python my_worker.py --rp_serve_api
```

## 📚 | API Language Library (GraphQL Wrapper)

When interacting with the RunPod API you can use this library to make requests to the API.

```python
import runpod

runpod.api_key = "your_runpod_api_key_found_under_settings"
```

### Endpoints

You can interact with RunPod endpoints via a `run` or `run_sync` method.

```python
endpoint = runpod.Endpoint("ENDPOINT_ID")

run_request = endpoint.run(
    {"your_model_input_key": "your_model_input_value"}
)

# Check the status of the endpoint run request
print(run_request.status())

# Get the output of the endpoint run request, blocking until the endpoint run is complete.
print(run_request.output())
```

```python
endpoint = runpod.Endpoint("ENDPOINT_ID")

run_request = endpoint.run_sync(
    {"your_model_input_key": "your_model_input_value"}
)

# Returns the job results if completed within 90 seconds, otherwise, returns the job status.
print(run_request )
```

### GPU Cloud (Pods)

```python
import runpod

runpod.api_key = "your_runpod_api_key_found_under_settings"

# Get all my pods
pods = runpod.get_pods()

# Get a specific pod
pod = runpod.get_pod(pod.id)

# Create a pod
pod = runpod.create_pod("test", "runpod/stack", "NVIDIA GeForce RTX 3070")

# Stop the pod
runpod.stop_pod(pod.id)

# Resume the pod
runpod.resume_pod(pod.id)

# Terminate the pod
runpod.terminate_pod(pod.id)
```

## 📁 | Directory

```BASH
.
├── docs               # Documentation
├── examples           # Examples
├── runpod             # Package source code
│   ├── api_wrapper    # Language library - API (GraphQL)
│   ├── cli            # Command Line Interface Functions
│   ├── endpoint       # Language library - Endpoints
│   └── serverless     # SDK - Serverless Worker
└── tests              # Package tests
```

## 🤝 | Community and Contributing

We welcome both pull requests and issues on [GitHub](https://github.com/runpod/runpod-python). Bug fixes and new features are encouraged, but please read our [contributing guide](CONTRIBUTING.md) first.

<div align="center">

<a target="_blank" href="https://discord.gg/pJ3P2DbUUq">![Discord Banner 2](https://discordapp.com/api/guilds/912829806415085598/widget.png?style=banner2)</a>

</div>

            

Raw data

            {
    "_id": null,
    "home_page": "https://runpod.io",
    "name": "runpod",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "runpod, ai, gpu, serverless, SDK, API, python, library",
    "author": "RunPod",
    "author_email": "RunPod <engineer@runpod.io>, Justin Merrell <justin.merrell@runpod.io>",
    "download_url": "https://files.pythonhosted.org/packages/7a/52/f76a33feba67e6cd43479049e09208a56e03425ae7e7c84866e489d09ea9/runpod-1.7.7.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n<h1>RunPod | Python Library </h1>\n\n[![PyPI Package](https://badge.fury.io/py/runpod.svg)](https://badge.fury.io/py/runpod)\n&nbsp;\n[![Downloads](https://static.pepy.tech/personalized-badge/runpod?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/runpod)\n\n[![CI | End-to-End RunPod Python Tests](https://github.com/runpod/runpod-python/actions/workflows/CI-e2e.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-e2e.yml)\n\n[![CI | Code Quality](https://github.com/runpod/runpod-python/actions/workflows/CI-pylint.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-pylint.yml)\n&nbsp;\n[![CI | Unit Tests](https://github.com/runpod/runpod-python/actions/workflows/CI-pytests.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-pytests.yml)\n&nbsp;\n[![CI | CodeQL](https://github.com/runpod/runpod-python/actions/workflows/CI-codeql.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-codeql.yml)\n\n</div>\n\nWelcome to the official Python library for RunPod API &amp; SDK.\n\n## Table of Contents\n\n- [Table of Contents](#table-of-contents)\n- [\ud83d\udcbb | Installation](#--installation)\n- [\u26a1 | Serverless Worker (SDK)](#--serverless-worker-sdk)\n  - [Quick Start](#quick-start)\n  - [Local Test Worker](#local-test-worker)\n- [\ud83d\udcda | API Language Library (GraphQL Wrapper)](#--api-language-library-graphql-wrapper)\n  - [Endpoints](#endpoints)\n  - [GPU Cloud (Pods)](#gpu-cloud-pods)\n- [\ud83d\udcc1 | Directory](#--directory)\n- [\ud83e\udd1d | Community and Contributing](#--community-and-contributing)\n\n## \ud83d\udcbb | Installation\n\n```bash\n# Install the latest release version\npip install runpod\n\n# or\n\n# Install the latest development version (main branch)\npip install git+https://github.com/runpod/runpod-python.git\n```\n\n*Python 3.8 or higher is required to use the latest version of this package.*\n\n## \u26a1 | Serverless Worker (SDK)\n\nThis python package can also be used to create a serverless worker that can be deployed to RunPod as a custom endpoint API.\n\n### Quick Start\n\nCreate a python script in your project that contains your model definition and the RunPod worker start code. Run this python code as your default container start command:\n\n```python\n# my_worker.py\n\nimport runpod\n\ndef is_even(job):\n\n    job_input = job[\"input\"]\n    the_number = job_input[\"number\"]\n\n    if not isinstance(the_number, int):\n        return {\"error\": \"Silly human, you need to pass an integer.\"}\n\n    if the_number % 2 == 0:\n        return True\n\n    return False\n\nrunpod.serverless.start({\"handler\": is_even})\n```\n\nMake sure that this file is ran when your container starts. This can be accomplished by calling it in the docker command when you set up a template at [runpod.io/console/serverless/user/templates](https://www.runpod.io/console/serverless/user/templates) or by setting it as the default command in your Dockerfile.\n\nSee our [blog post](https://www.runpod.io/blog/serverless-create-a-basic-api) for creating a basic Serverless API, or view the [details docs](https://docs.runpod.io/serverless-ai/custom-apis) for more information.\n\n### Local Test Worker\n\nYou can also test your worker locally before deploying it to RunPod. This is useful for debugging and testing.\n\n```bash\npython my_worker.py --rp_serve_api\n```\n\n## \ud83d\udcda | API Language Library (GraphQL Wrapper)\n\nWhen interacting with the RunPod API you can use this library to make requests to the API.\n\n```python\nimport runpod\n\nrunpod.api_key = \"your_runpod_api_key_found_under_settings\"\n```\n\n### Endpoints\n\nYou can interact with RunPod endpoints via a `run` or `run_sync` method.\n\n```python\nendpoint = runpod.Endpoint(\"ENDPOINT_ID\")\n\nrun_request = endpoint.run(\n    {\"your_model_input_key\": \"your_model_input_value\"}\n)\n\n# Check the status of the endpoint run request\nprint(run_request.status())\n\n# Get the output of the endpoint run request, blocking until the endpoint run is complete.\nprint(run_request.output())\n```\n\n```python\nendpoint = runpod.Endpoint(\"ENDPOINT_ID\")\n\nrun_request = endpoint.run_sync(\n    {\"your_model_input_key\": \"your_model_input_value\"}\n)\n\n# Returns the job results if completed within 90 seconds, otherwise, returns the job status.\nprint(run_request )\n```\n\n### GPU Cloud (Pods)\n\n```python\nimport runpod\n\nrunpod.api_key = \"your_runpod_api_key_found_under_settings\"\n\n# Get all my pods\npods = runpod.get_pods()\n\n# Get a specific pod\npod = runpod.get_pod(pod.id)\n\n# Create a pod\npod = runpod.create_pod(\"test\", \"runpod/stack\", \"NVIDIA GeForce RTX 3070\")\n\n# Stop the pod\nrunpod.stop_pod(pod.id)\n\n# Resume the pod\nrunpod.resume_pod(pod.id)\n\n# Terminate the pod\nrunpod.terminate_pod(pod.id)\n```\n\n## \ud83d\udcc1 | Directory\n\n```BASH\n.\n\u251c\u2500\u2500 docs               # Documentation\n\u251c\u2500\u2500 examples           # Examples\n\u251c\u2500\u2500 runpod             # Package source code\n\u2502   \u251c\u2500\u2500 api_wrapper    # Language library - API (GraphQL)\n\u2502   \u251c\u2500\u2500 cli            # Command Line Interface Functions\n\u2502   \u251c\u2500\u2500 endpoint       # Language library - Endpoints\n\u2502   \u2514\u2500\u2500 serverless     # SDK - Serverless Worker\n\u2514\u2500\u2500 tests              # Package tests\n```\n\n## \ud83e\udd1d | Community and Contributing\n\nWe welcome both pull requests and issues on [GitHub](https://github.com/runpod/runpod-python). Bug fixes and new features are encouraged, but please read our [contributing guide](CONTRIBUTING.md) first.\n\n<div align=\"center\">\n\n<a target=\"_blank\" href=\"https://discord.gg/pJ3P2DbUUq\">![Discord Banner 2](https://discordapp.com/api/guilds/912829806415085598/widget.png?style=banner2)</a>\n\n</div>\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "\ud83d\udc0d | Python library for RunPod API and serverless worker SDK.",
    "version": "1.7.7",
    "project_urls": {
        "Bug Tracker": "https://github.com/runpod/runpod-python/issues",
        "Changelog": "https://github.com/runpod/runpod-python/blob/main/CHANGELOG.md",
        "Documentation": "https://docs.runpod.io",
        "Homepage": "https://runpod.io",
        "Repository": "https://github.com/runpod/runpod-python"
    },
    "split_keywords": [
        "runpod",
        " ai",
        " gpu",
        " serverless",
        " sdk",
        " api",
        " python",
        " library"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e076745eba1b9fccbaaf9ffa43c754e707c2098ddac1b8ab309a45c2d1c5b0a1",
                "md5": "8586825bc012f62f57f6efa3da2c044a",
                "sha256": "898a8e1ac99f840e6b2a07a90269501e8d4275773e823f6a58e97919e2820976"
            },
            "downloads": -1,
            "filename": "runpod-1.7.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8586825bc012f62f57f6efa3da2c044a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 3975162,
            "upload_time": "2024-12-10T21:50:39",
            "upload_time_iso_8601": "2024-12-10T21:50:39.651095Z",
            "url": "https://files.pythonhosted.org/packages/e0/76/745eba1b9fccbaaf9ffa43c754e707c2098ddac1b8ab309a45c2d1c5b0a1/runpod-1.7.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7a52f76a33feba67e6cd43479049e09208a56e03425ae7e7c84866e489d09ea9",
                "md5": "eb8b2e248044e847e9dd035385b5fbcd",
                "sha256": "edcf1426afc03e8560633c4956ad859810c89e543bf86114503ddd9c5be6916d"
            },
            "downloads": -1,
            "filename": "runpod-1.7.7.tar.gz",
            "has_sig": false,
            "md5_digest": "eb8b2e248044e847e9dd035385b5fbcd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 4080363,
            "upload_time": "2024-12-10T21:50:41",
            "upload_time_iso_8601": "2024-12-10T21:50:41.689269Z",
            "url": "https://files.pythonhosted.org/packages/7a/52/f76a33feba67e6cd43479049e09208a56e03425ae7e7c84866e489d09ea9/runpod-1.7.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-10 21:50:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "runpod",
    "github_project": "runpod-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": [
                [
                    ">=",
                    "3.9.3"
                ]
            ]
        },
        {
            "name": "aiohttp-retry",
            "specs": [
                [
                    ">=",
                    "2.8.3"
                ]
            ]
        },
        {
            "name": "backoff",
            "specs": [
                [
                    ">=",
                    "2.2.1"
                ]
            ]
        },
        {
            "name": "boto3",
            "specs": [
                [
                    ">=",
                    "1.26.165"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    ">=",
                    "8.1.7"
                ]
            ]
        },
        {
            "name": "colorama",
            "specs": [
                [
                    "<",
                    "0.4.7"
                ],
                [
                    ">=",
                    "0.2.5"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    "<",
                    "45.0.0"
                ]
            ]
        },
        {
            "name": "fastapi",
            "specs": [
                [
                    ">=",
                    "0.94.0"
                ]
            ]
        },
        {
            "name": "paramiko",
            "specs": [
                [
                    ">=",
                    "3.3.1"
                ]
            ]
        },
        {
            "name": "prettytable",
            "specs": [
                [
                    ">=",
                    "3.9.0"
                ]
            ]
        },
        {
            "name": "py-cpuinfo",
            "specs": [
                [
                    ">=",
                    "9.0.0"
                ]
            ]
        },
        {
            "name": "inquirerpy",
            "specs": [
                [
                    "==",
                    "0.3.4"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.31.0"
                ]
            ]
        },
        {
            "name": "tomli",
            "specs": [
                [
                    ">=",
                    "2.0.1"
                ]
            ]
        },
        {
            "name": "tomlkit",
            "specs": [
                [
                    ">=",
                    "0.12.2"
                ]
            ]
        },
        {
            "name": "tqdm-loggable",
            "specs": [
                [
                    ">=",
                    "0.1.4"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    ">=",
                    "1.26.6"
                ]
            ]
        },
        {
            "name": "watchdog",
            "specs": [
                [
                    ">=",
                    "3.0.0"
                ]
            ]
        }
    ],
    "lcname": "runpod"
}
        
Elapsed time: 0.37220s