runpod/runpod-python
π | Python library for Runpod API and serverless worker SDK.
β¨ Features
- add agent source tracking to user-agent header ([#508](https://github.com/runpod/runpod-python/issues/508)) ([92239c8](https://github.com/runpod/runpod-python/commit/92239c817a64dada82b578e3447c1b4015afef9a))
- add per-job stop capability to serverless worker ([#510](https://github.com/runpod/runpod-python/issues/510)) ([21c4786](https://github.com/runpod/runpod-python/commit/21c4786847bd2e5fd2ca6d15f85737203a3044a1))
- detect all coding agents in user-agent, not just Claude Code ([#519](https://github.com/runpod/runpod-python/issues/519)) ([d14c67c](https://github.com/runpod/runpod-python/commit/d14c67c4e82963e61396b58a11dfd7046abbdde0))
- support Python 3.10-3.14, drop EOL 3.8/3.9 ([#512](https://github.com/runpod/runpod-python/issues/512)) ([8e9d94e](https://github.com/runpod/runpod-python/commit/8e9d94e69105859c159e70fa9ae6bbf094297a2e))
π Bug Fixes
- deps: bump cryptography floor to >=48.0.1 for OpenSSL fix ([#516](https://github.com/runpod/runpod-python/issues/516)) ([18c6841](https://github.com/runpod/runpod-python/commit/18c6841f77388e9f48f0b82d14e32bc6a0e26f7c)), closes [#511](https://github.com/runpod/runpod-python/issues/511)
π Bug Fixes
- fix config credential updates preserving profiles ([#474](https://github.com/runpod/runpod-python/issues/474)) ([7272cd7](https://github.com/runpod/runpod-python/commit/7272cd770fe243a95f3b42bbf1083a014a079835))
- poll for jobs while tasks are running ([#473](https://github.com/runpod/runpod-python/issues/473)) ([13e25e7](https://github.com/runpod/runpod-python/commit/13e25e7c1b2beb0878b51fea2dc7a38c5d20b704))
π Documentation
- serverless: document missing fitness-check env vars ([#497](https://github.com/runpod/runpod-python/issues/497)) ([a786a89](https://github.com/runpod/runpod-python/commit/a786a892747160447ccc189402d3e866d60cf4b5))
β¨ Features
- fitness: comprehensive system fitness checks for worker startup validation ([#472](https://github.com/runpod/runpod-python/issues/472)) ([781ed27](https://github.com/runpod/runpod-python/commit/781ed27cd0ad4c778e6ed1f19c2cf48569a023ab))
π Bug Fixes
- e2e: increase workerMax from 1 to 3 for provisioned endpoints ([#490](https://github.com/runpod/runpod-python/issues/490)) ([93dbe40](https://github.com/runpod/runpod-python/commit/93dbe405e920b3b9a7779196b6d22f241c305efd))
- test: update flashBootType assertion to match enum value ([#491](https://github.com/runpod/runpod-python/issues/491)) ([16a9b41](https://github.com/runpod/runpod-python/commit/16a9b41627601b8a886dbd8605a2353fae4f8c4f))
π Bug Fixes
- config: handle corrupted config.toml in credential functions ([#481](https://github.com/runpod/runpod-python/issues/481)) ([9894894](https://github.com/runpod/runpod-python/commit/9894894ee2022e7db0777c9dd24c23208e52f90c))
- use flashBootType instead of appending -fb ([#484](https://github.com/runpod/runpod-python/issues/484)) ([7938936](https://github.com/runpod/runpod-python/commit/7938936158c351d6e00caebbf4242e085f7565ae))
π Bug Fixes
- prevent PyPI local version rejection ([#468](https://github.com/runpod/runpod-python/issues/468)) ([c3cd473](https://github.com/runpod/runpod-python/commit/c3cd4730f6faf93fe2b454f1c18c884b3d41afb9))
β¨ Features
- add manual workflow dispatch for PyPI publishing ([05b2d72](https://github.com/runpod/runpod-python/commit/05b2d720f725390cddbf1aebfcbbe1c5385827e7))
π Bug Fixes
- pypi package verification ([95015dc](https://github.com/runpod/runpod-python/commit/95015dcdcfefaeec1f52c7f39e5c15d3ddcdfab1))
- PyPI publishing issues ([6992b10](https://github.com/runpod/runpod-python/commit/6992b102977924dc00bd847681ab94f559942576))
β‘ Performance Improvements
- serverless: lazy-load boto3, fastapi, and pydantic to reduce cold start time ([#466](https://github.com/runpod/runpod-python/issues/466)) ([cc05a5b](https://github.com/runpod/runpod-python/commit/cc05a5bec7a81fd809b3a40c73e47f4316de1de4))
π Bug Fixes
- allowedCudaVersions is treated as float without the quotes ([#431](https://github.com/runpod/runpod-python/issues/431)) ([b2bf0ce](https://github.com/runpod/runpod-python/commit/b2bf0ce68c38d5a6ade1365634aa83266d882ece))
- No module named 'fcntl' ([#434](https://github.com/runpod/runpod-python/issues/434)) ([88d2e4a](https://github.com/runpod/runpod-python/commit/88d2e4a2edc366ead08039691e43f1ebeeae843b))
- proper public exports by __all__ ([#437](https://github.com/runpod/runpod-python/issues/437)) ([0a52c70](https://github.com/runpod/runpod-python/commit/0a52c70868685ee633ebfef160ab5d914dc79369))
π What's Changed
- fix: multiprocess broke local development by @deanq in https://github.com/runpod/runpod-python/pull/430
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.11...1.7.12
π What's Changed
- Update README.md - Runpod name by @lukepiette in https://github.com/runpod/runpod-python/pull/424
- build(deps): bump stefanzweifel/git-auto-commit-action from 5 to 6 by @dependabot in https://github.com/runpod/runpod-python/pull/423
- fix: ping fails when a process is blocking GIL by @deanq in https://github.com/runpod/runpod-python/pull/425
- fix: keep `allowed_cuda_versions` as string by @deanq in https://github.com/runpod/runpod-python/pull/421
- feat: Adding a sync function to runpod-python sdk to help copying workspace between pods by @justinwlin in https://github.com/runpod/runpod-python/pull/426
β¨ New Contributors
- @lukepiette made their first contribution in https://github.com/runpod/runpod-python/pull/424
- @justinwlin made their first contribution in https://github.com/runpod/runpod-python/pull/426
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.10...1.7.11
π What's Changed
- fix: allowed_cuda_versions was incorrectly typed as string by @deanq in https://github.com/runpod/runpod-python/pull/418
- fix: parse Content-Disposition properly, closes #414 by @felixmosh in https://github.com/runpod/runpod-python/pull/416
- build(deps): update cryptography requirement from <45.0.0 to <46.0.0 by @dependabot in https://github.com/runpod/runpod-python/pull/417
β¨ New Contributors
- @felixmosh made their first contribution in https://github.com/runpod/runpod-python/pull/416
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.9...1.7.10
π What's Changed
- Retire sls-core by @deanq in https://github.com/runpod/runpod-python/pull/406
- fix: better exception handling. by @Yhlong00 in https://github.com/runpod/runpod-python/pull/398
- Add CPU Pod Creation Support in Python SDK by @AdonaiVera in https://github.com/runpod/runpod-python/pull/403
β¨ New Contributors
- @AdonaiVera made their first contribution in https://github.com/runpod/runpod-python/pull/403
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.8...1.7.9
π What's Changed
- Fix: handle uncaught exception only for Serverless workers by @deanq in https://github.com/runpod/runpod-python/pull/388
- fix: change log to debug by @Yhlong00 in https://github.com/runpod/runpod-python/pull/389
- Add allowed CUDA versions parameter to endpoint creation by @nielsrolf in https://github.com/runpod/runpod-python/pull/375
- Update: GQL uses API Key in Authorization Header by @deanq in https://github.com/runpod/runpod-python/pull/394
- Update async job streaming stop condition and test cases by @zealotjin in https://github.com/runpod/runpod-python/pull/404
- fix: skip type check for default values in validation by @nerdylive123 in https://github.com/runpod/runpod-python/pull/401
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.7...1.7.8
π What's Changed
- Update cryptography requirement from <44.0.0 to <45.0.0 by @dependabot in https://github.com/runpod/runpod-python/pull/380
- Feature/E-2131 Utility function for resolving model-cache paths from Huggingface repositories by @gabewillen in https://github.com/runpod/runpod-python/pull/377
- fix: streamed errors were previously swallowed by @deanq in https://github.com/runpod/runpod-python/pull/384
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.6...1.7.7
π What's Changed
- Fix: JobScaler issues that cause request failures by @deanq in https://github.com/runpod/runpod-python/pull/383
- Fixes issue #373 for required input validation by @gabewillen in https://github.com/runpod/runpod-python/pull/379
β¨ New Contributors
- @gabewillen made their first contribution in https://github.com/runpod/runpod-python/pull/379
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.5...1.7.6
π What's Changed
- Fix: failed requests due to race conditions in the job queue vs job progress by @deanq in https://github.com/runpod/runpod-python/pull/376
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.4...1.7.5
π What's Changed
- fix: long-running jobs crash with SIGTERM by @deanq in https://github.com/runpod/runpod-python/pull/370
- Bump pylint from 3.2.5 to 3.3.1 by @dependabot in https://github.com/runpod/runpod-python/pull/361
- minimum network speed parameters for create_pod by @dxqbYD in https://github.com/runpod/runpod-python/pull/360
β¨ New Contributors
- @dxqbYD made their first contribution in https://github.com/runpod/runpod-python/pull/360
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.3...1.7.4
π What's Changed
- Refactored rp_job.get_job to work well under pause and unpause conditions. More debug lines too.
- Refactored rp_scale.JobScaler to handle shutdowns where it cleans up hanging tasks and connections gracefully. Better debug lines.
- Fixed rp_scale.JobScaler from unnecessary long asyncio.sleeps made before considering the blocking get_job calls.
- Improved worker_state's JobProgress and JobsQueue to timestamp when jobs are added or removed.
- Incorporated the lines of code in worker.run_worker into rp_scale.JobScaler where it belongs and simplified to job_scaler.start()
- Fixed non-error logged as errors in tracer
- Updated unit tests mandating these changes* Blocking job take call means 5-sec debounce no longer needed by @deanq in https://github.com/runpod/runpod-python/pull/366
- Debounce at HTTP 429 response by @deanq in https://github.com/runpod/runpod-python/pull/367
- + 1 more
π¦ SDK 1.7.2 Advisory: Delay Issue on First Message
- 1.7.2: A delay issue affects the first message sent to the endpoint, with users experiencing lower traffic being impacted more.
π What's Changed
- Corrected job_take_url by @deanq in https://github.com/runpod/runpod-python/pull/359
- Update cryptography requirement from <43.0.0 to <44.0.0 by @dependabot in https://github.com/runpod/runpod-python/pull/353
- fix: pings were missing requestIds since the last big refactor by @deanq in https://github.com/runpod/runpod-python/pull/362
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.1...1.7.2
π¦ SDK 1.7.1 Advisory: Health Check Failures on Long Jobs
- 1.7.1: Jobs running longer than 60 seconds may cause the health check to fail, leading to retries and job timeouts.
π What's Changed
- Feat: use 'black' to unify formatting by @ef0xa in https://github.com/runpod/runpod-python/pull/348
- Fix: get rid of pylint by @ef0xa in https://github.com/runpod/runpod-python/pull/351
- Make core envvars backwards compatible by @galen-runpod in https://github.com/runpod/runpod-python/pull/354
- Use less strict numbers for coverage. by @galen-runpod in https://github.com/runpod/runpod-python/pull/357
- Add wrappers for UpdateRegistryAuth and UpdateRegistryAuth. by @pconstr in https://github.com/runpod/runpod-python/pull/355
- Batch Concurrency by @deanq in https://github.com/runpod/runpod-python/pull/358
β¨ New Contributors
- @ef0xa made their first contribution in https://github.com/runpod/runpod-python/pull/346
- @galen-runpod made their first contribution in https://github.com/runpod/runpod-python/pull/354
- @pconstr made their first contribution in https://github.com/runpod/runpod-python/pull/355
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.0...1.7.1
π What's Changed
- Allow newer aiohttp versions by @fastjames in https://github.com/runpod/runpod-python/pull/323
- Observability: implement tracing for http requests by @deanq in https://github.com/runpod/runpod-python/pull/329
- Deprecated JobScaler.concurrency_modifier by @deanq in https://github.com/runpod/runpod-python/pull/331
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.6.2...1.7.0
π¦ SDK 1.6.2 Advisory: Network issues under high rate of requests
- 1.6.2: Endpoints with high throughputs or concurrency modifiers can experience HTTP/502 from Cloudflare causing bottlenecks and delays on job queues.
π Fixed
- Reorder FastAPI endpoints for clarity.
- Truncate long logs to avoid overloading the server.
π What's Changed
- Fastai clarity by @justinmerrell in https://github.com/runpod/runpod-python/pull/298
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.6.1...1.6.2
β¨ Added
- User-Agent for better analytics tracking.
- Expose the ability to create container auth.
- Emulate webhooks for local testing when using the `rp_serve_api` flag.
π Changed
- Updated aiohttp from 3.9.2 to 3.9.3
- [BREAKING] rename `registry_auth` to `registry_auth_id` for clarity.
- Added additional details to the FastAPI page.
π What's Changed
- User agent tracking by @justinmerrell in https://github.com/runpod/runpod-python/pull/290
- build(deps): bump aiohttp[speedups] from 3.9.2 to 3.9.3 by @dependabot in https://github.com/runpod/runpod-python/pull/292
- feat: added runpod command to create container registry auth and rena⦠by @yamanahlawat in https://github.com/runpod/runpod-python/pull/294
- 280 enable webhooks for local testing of serverless workers by @justinmerrell in https://github.com/runpod/runpod-python/pull/295
- 1.6.1 cleanup by @justinmerrell in https://github.com/runpod/runpod-python/pull/296
β¨ New Contributors
- @yamanahlawat made their first contribution in https://github.com/runpod/runpod-python/pull/294
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.6.0...1.6.1
π Fixed
- Rust Serverless Core Passing all tests.
- GitHub Action and Python package updates
- Changelog date typo
π What's Changed
- update branch by @justinmerrell in https://github.com/runpod/runpod-python/pull/279
- Fixes date typo in changelog by @AllysonRosenthal in https://github.com/runpod/runpod-python/pull/286
- build(deps): bump peter-evans/repository-dispatch from 2 to 3 by @dependabot in https://github.com/runpod/runpod-python/pull/285
- build(deps): bump aiohttp[speedups] from 3.9.1 to 3.9.2 by @dependabot in https://github.com/runpod/runpod-python/pull/287
- update branch by @justinmerrell in https://github.com/runpod/runpod-python/pull/288
- fix: add missing sls core tests by @justinmerrell in https://github.com/runpod/runpod-python/pull/274
β¨ New Contributors
- @AllysonRosenthal made their first contribution in https://github.com/runpod/runpod-python/pull/286
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.3...1.6.0
β¨ Added
- Expose cuda selection when creating a pod.
- Expose `flashboot` when creating a new endpoint.
- Expose bucket name for rp_upload.
- Exposed `containerRegistryAuthId` for template creation.
π Fixed
- ReadMe typo *start_pod* -> *resume_pod*
π What's Changed
- Refresh worker datarace by @justinmerrell in https://github.com/runpod/runpod-python/pull/273
- 275 cant set bucket name in rp uploadupload image by @justinmerrell in https://github.com/runpod/runpod-python/pull/276
- fix: readme typo by @justinmerrell in https://github.com/runpod/runpod-python/pull/277
- 209 support container registry auth in create template by @justinmerrell in https://github.com/runpod/runpod-python/pull/278
- feat: add flash boot enable to endpoints by @justinmerrell in https://github.com/runpod/runpod-python/pull/281
- feat: add the ability to create pod with selected cuda by @justinmerrell in https://github.com/runpod/runpod-python/pull/282
- 1.5.3 changelog by @justinmerrell in https://github.com/runpod/runpod-python/pull/284
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.2...1.5.3
π Fixed
- Edge case when using RunPod Serverless Core that returns `None` for function output.
- Missing Job ID for logging.
- The concurrency modifier was not adhering to the maximum concurrency.
- Improved in-progress job tracking and counting.
β¨ Added
- Expanded RunPod Serverless Core testing.
π What's Changed
- Concurrency fix by @justinmerrell in https://github.com/runpod/runpod-python/pull/270
- Core fix by @justinmerrell in https://github.com/runpod/runpod-python/pull/271
- Update CHANGELOG.md by @justinmerrell in https://github.com/runpod/runpod-python/pull/272
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.1...1.5.2
π Fixed
- Prevent stream from hanging on the final output.
- Allow `GET` method for `stream` test endpoint.
- Updated async runner for endpoint API calls.
π Changed
- Updated sls-core to `0.0.2`
π What's Changed
- Is stream url param by @justinmerrell in https://github.com/runpod/runpod-python/pull/262
- Update async runner by @justinmerrell in https://github.com/runpod/runpod-python/pull/263
- fix: added GET to stream method for fastAPI by @justinmerrell in https://github.com/runpod/runpod-python/pull/264
- feat: updated change log and sls-core by @justinmerrell in https://github.com/runpod/runpod-python/pull/265
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.0...1.5.1
π What's Changed
- feat: update base and venv by @justinmerrell in https://github.com/runpod/runpod-python/pull/256
- Renames Queries file name and fixes typos by @rachfop in https://github.com/runpod/runpod-python/pull/257
- Rust core integration by @justinmerrell in https://github.com/runpod/runpod-python/pull/259
β¨ New Contributors
- @rachfop made their first contribution in https://github.com/runpod/runpod-python/pull/257
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.4.2...1.5.0
π Fixed
- Added defaults for optional parameters in `rp_fastapi` to be compatible with pydantic.
π What's Changed
- Fix pydantic by @justinmerrell in https://github.com/runpod/runpod-python/pull/255
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.4.1...1.4.2
β¨ Added
- Local test API server includes simulated endpoints that mimic the behavior of `run`, `runsync`, `stream`, and `status`.
- Internal job tracker can be used to track job inputs.
π What's Changed
- Bump actions/setup-python from 4 to 5 by @dependabot in https://github.com/runpod/runpod-python/pull/251
- Update colorama requirement from <0.4.5,>=0.2.5 to >=0.2.5,<0.4.7 by @dependabot in https://github.com/runpod/runpod-python/pull/252
- Local streaming by @justinmerrell in https://github.com/runpod/runpod-python/pull/253
- build(deps): bump github/codeql-action from 2 to 3 by @dependabot in https://github.com/runpod/runpod-python/pull/254
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.4.0...1.4.1
π Changed
- [BREAKING] concurrency is now handled by `concurrency_modifier` which is a user provided function that takes in the current concurrency and returns the new concurrency. This allows for more complex concurrency logic to be implemented by the user.
- Updated the `colorama` requirement version to `>= 0.2.5, < 0.4.5`
β¨ Added
- Streaming support for calling endpoints.
π What's Changed
- Updating branch by @justinmerrell in https://github.com/runpod/runpod-python/pull/223
- update branch by @justinmerrell in https://github.com/runpod/runpod-python/pull/224
- update branch by @justinmerrell in https://github.com/runpod/runpod-python/pull/229
- updating branch by @justinmerrell in https://github.com/runpod/runpod-python/pull/243
- Sdk updates by @justinmerrell in https://github.com/runpod/runpod-python/pull/244
- update branch by @justinmerrell in https://github.com/runpod/runpod-python/pull/245
- Concurrency optimization by @justinmerrell in https://github.com/runpod/runpod-python/pull/246
- Fix the case when `user['pubKey']` is `None` by @Michaelvll in https://github.com/runpod/runpod-python/pull/241
- + 2 more
β¨ New Contributors
- @Michaelvll made their first contribution in https://github.com/runpod/runpod-python/pull/241
- Full Changelog: https://github.com/runpod/runpod-python/compare/1.3.7...1.4.0
