runloop-api-client 0.1.0a9__tar.gz → 0.1.0a11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. runloop_api_client-0.1.0a11/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/CHANGELOG.md +32 -0
  3. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/PKG-INFO +12 -12
  4. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/README.md +11 -11
  5. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/api.md +9 -3
  6. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/pyproject.toml +8 -6
  7. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/requirements-dev.lock +2 -2
  8. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_base_client.py +29 -42
  9. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_compat.py +12 -17
  10. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_files.py +4 -8
  11. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_response.py +9 -8
  12. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_types.py +3 -6
  13. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_proxy.py +1 -2
  14. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_reflection.py +1 -1
  15. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_utils.py +6 -12
  16. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_version.py +1 -1
  17. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/devboxes/devboxes.py +142 -9
  18. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/__init__.py +4 -0
  19. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_build_parameters.py +6 -0
  20. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_create_params.py +6 -0
  21. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_preview_params.py +6 -0
  22. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devbox_create_params.py +20 -4
  23. runloop_api_client-0.1.0a11/src/runloop_api_client/types/devbox_read_file_contents_params.py +12 -0
  24. runloop_api_client-0.1.0a11/src/runloop_api_client/types/devbox_read_file_contents_response.py +7 -0
  25. runloop_api_client-0.1.0a11/src/runloop_api_client/types/devbox_read_file_params.py +12 -0
  26. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devbox_view.py +2 -5
  27. runloop_api_client-0.1.0a11/src/runloop_api_client/types/devbox_write_file_params.py +15 -0
  28. runloop_api_client-0.1.0a11/src/runloop_api_client/types/resource_size.py +7 -0
  29. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/test_blueprints.py +4 -0
  30. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/test_devboxes.py +152 -18
  31. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_client.py +58 -10
  32. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_deepcopy.py +1 -2
  33. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_response.py +4 -8
  34. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_utils/test_typing.py +5 -10
  35. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/utils.py +7 -3
  36. runloop_api_client-0.1.0a9/.release-please-manifest.json +0 -3
  37. runloop_api_client-0.1.0a9/src/runloop_api_client/types/resource_size.py +0 -7
  38. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/.gitignore +0 -0
  39. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/CONTRIBUTING.md +0 -0
  40. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/LICENSE +0 -0
  41. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/SECURITY.md +0 -0
  42. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/bin/check-release-environment +0 -0
  43. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/bin/publish-pypi +0 -0
  44. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/examples/.keep +0 -0
  45. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/mypy.ini +0 -0
  46. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/noxfile.py +0 -0
  47. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/release-please-config.json +0 -0
  48. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/requirements.lock +0 -0
  49. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop/lib/.keep +0 -0
  50. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/__init__.py +0 -0
  51. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_client.py +0 -0
  52. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_constants.py +0 -0
  53. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_exceptions.py +0 -0
  54. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_models.py +0 -0
  55. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_qs.py +0 -0
  56. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_resource.py +0 -0
  57. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_streaming.py +0 -0
  58. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/__init__.py +0 -0
  59. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_logs.py +0 -0
  60. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_streams.py +0 -0
  61. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_sync.py +0 -0
  62. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_transform.py +0 -0
  63. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/_utils/_typing.py +0 -0
  64. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/lib/.keep +0 -0
  65. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/py.typed +0 -0
  66. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/__init__.py +0 -0
  67. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/blueprints.py +0 -0
  68. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  69. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  70. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/functions/__init__.py +0 -0
  71. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/functions/functions.py +0 -0
  72. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/functions/invocations.py +0 -0
  73. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/projects/__init__.py +0 -0
  74. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/projects/logs.py +0 -0
  75. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/resources/projects/projects.py +0 -0
  76. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  77. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  78. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  79. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  80. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  81. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/blueprint_view.py +0 -0
  82. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/code_mount_parameters.py +0 -0
  83. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/code_mount_parameters_param.py +0 -0
  84. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  85. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  86. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  87. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  88. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  89. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  90. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
  91. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
  92. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/function_list_view.py +0 -0
  93. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/functions/__init__.py +0 -0
  94. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -0
  95. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/functions/invocation_list_params.py +0 -0
  96. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/project_list_view.py +0 -0
  97. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/projects/__init__.py +0 -0
  98. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/shared/__init__.py +0 -0
  99. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py +0 -0
  100. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
  101. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/__init__.py +0 -0
  102. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/__init__.py +0 -0
  103. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/devboxes/__init__.py +0 -0
  104. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/devboxes/test_logs.py +0 -0
  105. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/functions/__init__.py +0 -0
  106. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/functions/test_invocations.py +0 -0
  107. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/projects/__init__.py +0 -0
  108. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/projects/test_logs.py +0 -0
  109. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/test_functions.py +0 -0
  110. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/api_resources/test_projects.py +0 -0
  111. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/conftest.py +0 -0
  112. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/sample_file.txt +0 -0
  113. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_extract_files.py +0 -0
  114. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_files.py +0 -0
  115. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_models.py +0 -0
  116. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_qs.py +0 -0
  117. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_required_args.py +0 -0
  118. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_streaming.py +0 -0
  119. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_transform.py +0 -0
  120. {runloop_api_client-0.1.0a9 → runloop_api_client-0.1.0a11}/tests/test_utils/test_proxy.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.11"
3
+ }
@@ -1,5 +1,37 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.11 (2024-08-07)
4
+
5
+ Full Changelog: [v0.1.0-alpha.10...v0.1.0-alpha.11](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.10...v0.1.0-alpha.11)
6
+
7
+ ### Features
8
+
9
+ * **api:** OpenAPI spec update via Stainless API ([#66](https://github.com/runloopai/api-client-python/issues/66)) ([291eddb](https://github.com/runloopai/api-client-python/commit/291eddbf05d2e12d882f8d53baac9617149a1e34))
10
+ * **api:** OpenAPI spec update via Stainless API ([#68](https://github.com/runloopai/api-client-python/issues/68)) ([91913d6](https://github.com/runloopai/api-client-python/commit/91913d6fc7582204fbfa37bf780ea287c0940e97))
11
+ * **api:** OpenAPI spec update via Stainless API ([#69](https://github.com/runloopai/api-client-python/issues/69)) ([f82c51c](https://github.com/runloopai/api-client-python/commit/f82c51cc8d5a5b8588d0b8e98cae7bcbf06d4f09))
12
+ * **api:** OpenAPI spec update via Stainless API ([#70](https://github.com/runloopai/api-client-python/issues/70)) ([b0ffcf0](https://github.com/runloopai/api-client-python/commit/b0ffcf0031ac84240728907ee722ed3e21de3735))
13
+ * **api:** OpenAPI spec update via Stainless API ([#75](https://github.com/runloopai/api-client-python/issues/75)) ([213734e](https://github.com/runloopai/api-client-python/commit/213734e474bce92394eea0aea69132d95850f3c8))
14
+ * **api:** OpenAPI spec update via Stainless API ([#76](https://github.com/runloopai/api-client-python/issues/76)) ([d6370bc](https://github.com/runloopai/api-client-python/commit/d6370bce09d23275d632e1b265f6207a189fedc7))
15
+ * **api:** OpenAPI spec update via Stainless API ([#79](https://github.com/runloopai/api-client-python/issues/79)) ([23d4705](https://github.com/runloopai/api-client-python/commit/23d470542689d3d227ddff7c11464f6a1849003b))
16
+ * **client:** add `retry_count` to raw response class ([#73](https://github.com/runloopai/api-client-python/issues/73)) ([e17fb03](https://github.com/runloopai/api-client-python/commit/e17fb0352e692b04df6f67d98a67182a13cd95ee))
17
+
18
+
19
+ ### Chores
20
+
21
+ * **internal:** bump pyright ([#72](https://github.com/runloopai/api-client-python/issues/72)) ([3fcd1bf](https://github.com/runloopai/api-client-python/commit/3fcd1bf654826a81efea4f3b67fc85a124141d41))
22
+ * **internal:** bump ruff version ([#77](https://github.com/runloopai/api-client-python/issues/77)) ([240971d](https://github.com/runloopai/api-client-python/commit/240971d1eac9b67a3e85369b0617fc9821e048b3))
23
+ * **internal:** test updates ([#74](https://github.com/runloopai/api-client-python/issues/74)) ([cac724a](https://github.com/runloopai/api-client-python/commit/cac724a5db2acdecc40a9775dcde49b9f8f9a277))
24
+ * **internal:** update pydantic compat helper function ([#78](https://github.com/runloopai/api-client-python/issues/78)) ([3befea7](https://github.com/runloopai/api-client-python/commit/3befea7ec40892a6f6455d81eb87d8c4ab8a7629))
25
+ * **internal:** use `TypeAlias` marker for type assignments ([#71](https://github.com/runloopai/api-client-python/issues/71)) ([4de0849](https://github.com/runloopai/api-client-python/commit/4de08497452923cfa328aadfd6626286b3248d17))
26
+
27
+ ## 0.1.0-alpha.10 (2024-08-02)
28
+
29
+ Full Changelog: [v0.1.0-alpha.9...v0.1.0-alpha.10](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.9...v0.1.0-alpha.10)
30
+
31
+ ### Features
32
+
33
+ * **api:** update via SDK Studio ([#63](https://github.com/runloopai/api-client-python/issues/63)) ([d2aefd1](https://github.com/runloopai/api-client-python/commit/d2aefd19566d6a90121cfd6b4a188a538b496d98))
34
+
3
35
  ## 0.1.0-alpha.9 (2024-08-01)
4
36
 
5
37
  Full Changelog: [v0.1.0-alpha.8...v0.1.0-alpha.9](https://github.com/runloopai/api-client-python/compare/v0.1.0-alpha.8...v0.1.0-alpha.9)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.1.0a9
3
+ Version: 0.1.0a11
4
4
  Summary: The official Python library for the runloop API
5
5
  Project-URL: Homepage, https://github.com/runloopai/api-client-python
6
6
  Project-URL: Repository, https://github.com/runloopai/api-client-python
@@ -66,8 +66,8 @@ client = Runloop(
66
66
  bearer_token=os.environ.get("RUNLOOP_API_KEY"),
67
67
  )
68
68
 
69
- blueprint_view = client.blueprints.create()
70
- print(blueprint_view.id)
69
+ devbox_view = client.devboxes.create()
70
+ print(devbox_view.id)
71
71
  ```
72
72
 
73
73
  While you can provide a `bearer_token` keyword argument,
@@ -91,8 +91,8 @@ client = AsyncRunloop(
91
91
 
92
92
 
93
93
  async def main() -> None:
94
- blueprint_view = await client.blueprints.create()
95
- print(blueprint_view.id)
94
+ devbox_view = await client.devboxes.create()
95
+ print(devbox_view.id)
96
96
 
97
97
 
98
98
  asyncio.run(main())
@@ -125,7 +125,7 @@ from runloop_api_client import Runloop
125
125
  client = Runloop()
126
126
 
127
127
  try:
128
- client.blueprints.create()
128
+ client.devboxes.create()
129
129
  except runloop_api_client.APIConnectionError as e:
130
130
  print("The server could not be reached")
131
131
  print(e.__cause__) # an underlying Exception, likely raised within httpx.
@@ -168,7 +168,7 @@ client = Runloop(
168
168
  )
169
169
 
170
170
  # Or, configure per-request:
171
- client.with_options(max_retries=5).blueprints.create()
171
+ client.with_options(max_retries=5).devboxes.create()
172
172
  ```
173
173
 
174
174
  ### Timeouts
@@ -191,7 +191,7 @@ client = Runloop(
191
191
  )
192
192
 
193
193
  # Override per-request:
194
- client.with_options(timeout=5.0).blueprints.create()
194
+ client.with_options(timeout=5.0).devboxes.create()
195
195
  ```
196
196
 
197
197
  On timeout, an `APITimeoutError` is thrown.
@@ -230,11 +230,11 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
230
230
  from runloop_api_client import Runloop
231
231
 
232
232
  client = Runloop()
233
- response = client.blueprints.with_raw_response.create()
233
+ response = client.devboxes.with_raw_response.create()
234
234
  print(response.headers.get('X-My-Header'))
235
235
 
236
- blueprint = response.parse() # get the object that `blueprints.create()` would have returned
237
- print(blueprint.id)
236
+ devbox = response.parse() # get the object that `devboxes.create()` would have returned
237
+ print(devbox.id)
238
238
  ```
239
239
 
240
240
  These methods return an [`APIResponse`](https://github.com/runloopai/api-client-python/tree/main/src/runloop_api_client/_response.py) object.
@@ -248,7 +248,7 @@ The above interface eagerly reads the full response body when you make the reque
248
248
  To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
249
249
 
250
250
  ```python
251
- with client.blueprints.with_streaming_response.create() as response:
251
+ with client.devboxes.with_streaming_response.create() as response:
252
252
  print(response.headers.get("X-My-Header"))
253
253
 
254
254
  for line in response.iter_lines():
@@ -32,8 +32,8 @@ client = Runloop(
32
32
  bearer_token=os.environ.get("RUNLOOP_API_KEY"),
33
33
  )
34
34
 
35
- blueprint_view = client.blueprints.create()
36
- print(blueprint_view.id)
35
+ devbox_view = client.devboxes.create()
36
+ print(devbox_view.id)
37
37
  ```
38
38
 
39
39
  While you can provide a `bearer_token` keyword argument,
@@ -57,8 +57,8 @@ client = AsyncRunloop(
57
57
 
58
58
 
59
59
  async def main() -> None:
60
- blueprint_view = await client.blueprints.create()
61
- print(blueprint_view.id)
60
+ devbox_view = await client.devboxes.create()
61
+ print(devbox_view.id)
62
62
 
63
63
 
64
64
  asyncio.run(main())
@@ -91,7 +91,7 @@ from runloop_api_client import Runloop
91
91
  client = Runloop()
92
92
 
93
93
  try:
94
- client.blueprints.create()
94
+ client.devboxes.create()
95
95
  except runloop_api_client.APIConnectionError as e:
96
96
  print("The server could not be reached")
97
97
  print(e.__cause__) # an underlying Exception, likely raised within httpx.
@@ -134,7 +134,7 @@ client = Runloop(
134
134
  )
135
135
 
136
136
  # Or, configure per-request:
137
- client.with_options(max_retries=5).blueprints.create()
137
+ client.with_options(max_retries=5).devboxes.create()
138
138
  ```
139
139
 
140
140
  ### Timeouts
@@ -157,7 +157,7 @@ client = Runloop(
157
157
  )
158
158
 
159
159
  # Override per-request:
160
- client.with_options(timeout=5.0).blueprints.create()
160
+ client.with_options(timeout=5.0).devboxes.create()
161
161
  ```
162
162
 
163
163
  On timeout, an `APITimeoutError` is thrown.
@@ -196,11 +196,11 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
196
196
  from runloop_api_client import Runloop
197
197
 
198
198
  client = Runloop()
199
- response = client.blueprints.with_raw_response.create()
199
+ response = client.devboxes.with_raw_response.create()
200
200
  print(response.headers.get('X-My-Header'))
201
201
 
202
- blueprint = response.parse() # get the object that `blueprints.create()` would have returned
203
- print(blueprint.id)
202
+ devbox = response.parse() # get the object that `devboxes.create()` would have returned
203
+ print(devbox.id)
204
204
  ```
205
205
 
206
206
  These methods return an [`APIResponse`](https://github.com/runloopai/api-client-python/tree/main/src/runloop_api_client/_response.py) object.
@@ -214,7 +214,7 @@ The above interface eagerly reads the full response body when you make the reque
214
214
  To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
215
215
 
216
216
  ```python
217
- with client.blueprints.with_streaming_response.create() as response:
217
+ with client.devboxes.with_streaming_response.create() as response:
218
218
  print(response.headers.get("X-My-Header"))
219
219
 
220
220
  for line in response.iter_lines():
@@ -48,7 +48,12 @@ from runloop_api_client.types import CodeMountParameters
48
48
  Types:
49
49
 
50
50
  ```python
51
- from runloop_api_client.types import DevboxExecutionDetailView, DevboxListView, DevboxView
51
+ from runloop_api_client.types import (
52
+ DevboxExecutionDetailView,
53
+ DevboxListView,
54
+ DevboxView,
55
+ DevboxReadFileContentsResponse,
56
+ )
52
57
  ```
53
58
 
54
59
  Methods:
@@ -57,9 +62,10 @@ Methods:
57
62
  - <code title="get /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
58
63
  - <code title="get /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_list_view.py">DevboxListView</a></code>
59
64
  - <code title="post /v1/devboxes/{id}/execute_sync">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_sync</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_sync_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
60
- - <code title="post /v1/devboxes/{id}/read_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file</a>(id) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
65
+ - <code title="post /v1/devboxes/{id}/read_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
66
+ - <code title="post /v1/devboxes/{id}/read_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_contents_params.py">params</a>) -> str</code>
61
67
  - <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
62
- - <code title="post /v1/devboxes/{id}/write_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">write_file</a>(id) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
68
+ - <code title="post /v1/devboxes/{id}/write_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">write_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_write_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
63
69
 
64
70
  ## Logs
65
71
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.1.0-alpha.9"
3
+ version = "0.1.0-alpha.11"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -77,8 +77,8 @@ format = { chain = [
77
77
  "check:ruff",
78
78
  "typecheck",
79
79
  ]}
80
- "check:ruff" = "ruff ."
81
- "fix:ruff" = "ruff --fix ."
80
+ "check:ruff" = "ruff check ."
81
+ "fix:ruff" = "ruff check --fix ."
82
82
 
83
83
  typecheck = { chain = [
84
84
  "typecheck:pyright",
@@ -162,6 +162,11 @@ reportPrivateUsage = false
162
162
  line-length = 120
163
163
  output-format = "grouped"
164
164
  target-version = "py37"
165
+
166
+ [tool.ruff.format]
167
+ docstring-code-format = true
168
+
169
+ [tool.ruff.lint]
165
170
  select = [
166
171
  # isort
167
172
  "I",
@@ -192,9 +197,6 @@ unfixable = [
192
197
  ]
193
198
  ignore-init-module-imports = true
194
199
 
195
- [tool.ruff.format]
196
- docstring-code-format = true
197
-
198
200
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
199
201
  "functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
200
202
 
@@ -70,7 +70,7 @@ pydantic-core==2.18.2
70
70
  # via pydantic
71
71
  pygments==2.18.0
72
72
  # via rich
73
- pyright==1.1.364
73
+ pyright==1.1.374
74
74
  pytest==7.1.1
75
75
  # via pytest-asyncio
76
76
  pytest-asyncio==0.21.1
@@ -80,7 +80,7 @@ pytz==2023.3.post1
80
80
  # via dirty-equals
81
81
  respx==0.20.2
82
82
  rich==13.7.1
83
- ruff==0.1.9
83
+ ruff==0.5.6
84
84
  setuptools==68.2.2
85
85
  # via nodeenv
86
86
  six==1.16.0
@@ -124,16 +124,14 @@ class PageInfo:
124
124
  self,
125
125
  *,
126
126
  url: URL,
127
- ) -> None:
128
- ...
127
+ ) -> None: ...
129
128
 
130
129
  @overload
131
130
  def __init__(
132
131
  self,
133
132
  *,
134
133
  params: Query,
135
- ) -> None:
136
- ...
134
+ ) -> None: ...
137
135
 
138
136
  def __init__(
139
137
  self,
@@ -166,8 +164,7 @@ class BasePage(GenericModel, Generic[_T]):
166
164
  return False
167
165
  return self.next_page_info() is not None
168
166
 
169
- def next_page_info(self) -> Optional[PageInfo]:
170
- ...
167
+ def next_page_info(self) -> Optional[PageInfo]: ...
171
168
 
172
169
  def _get_page_items(self) -> Iterable[_T]: # type: ignore[empty-body]
173
170
  ...
@@ -903,8 +900,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
903
900
  *,
904
901
  stream: Literal[True],
905
902
  stream_cls: Type[_StreamT],
906
- ) -> _StreamT:
907
- ...
903
+ ) -> _StreamT: ...
908
904
 
909
905
  @overload
910
906
  def request(
@@ -914,8 +910,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
914
910
  remaining_retries: Optional[int] = None,
915
911
  *,
916
912
  stream: Literal[False] = False,
917
- ) -> ResponseT:
918
- ...
913
+ ) -> ResponseT: ...
919
914
 
920
915
  @overload
921
916
  def request(
@@ -926,8 +921,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
926
921
  *,
927
922
  stream: bool = False,
928
923
  stream_cls: Type[_StreamT] | None = None,
929
- ) -> ResponseT | _StreamT:
930
- ...
924
+ ) -> ResponseT | _StreamT: ...
931
925
 
932
926
  def request(
933
927
  self,
@@ -1049,6 +1043,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1049
1043
  response=response,
1050
1044
  stream=stream,
1051
1045
  stream_cls=stream_cls,
1046
+ retries_taken=options.get_max_retries(self.max_retries) - retries,
1052
1047
  )
1053
1048
 
1054
1049
  def _retry_request(
@@ -1090,6 +1085,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1090
1085
  response: httpx.Response,
1091
1086
  stream: bool,
1092
1087
  stream_cls: type[Stream[Any]] | type[AsyncStream[Any]] | None,
1088
+ retries_taken: int = 0,
1093
1089
  ) -> ResponseT:
1094
1090
  origin = get_origin(cast_to) or cast_to
1095
1091
 
@@ -1107,6 +1103,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1107
1103
  stream=stream,
1108
1104
  stream_cls=stream_cls,
1109
1105
  options=options,
1106
+ retries_taken=retries_taken,
1110
1107
  ),
1111
1108
  )
1112
1109
 
@@ -1120,6 +1117,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1120
1117
  stream=stream,
1121
1118
  stream_cls=stream_cls,
1122
1119
  options=options,
1120
+ retries_taken=retries_taken,
1123
1121
  )
1124
1122
  if bool(response.request.headers.get(RAW_RESPONSE_HEADER)):
1125
1123
  return cast(ResponseT, api_response)
@@ -1152,8 +1150,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1152
1150
  cast_to: Type[ResponseT],
1153
1151
  options: RequestOptions = {},
1154
1152
  stream: Literal[False] = False,
1155
- ) -> ResponseT:
1156
- ...
1153
+ ) -> ResponseT: ...
1157
1154
 
1158
1155
  @overload
1159
1156
  def get(
@@ -1164,8 +1161,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1164
1161
  options: RequestOptions = {},
1165
1162
  stream: Literal[True],
1166
1163
  stream_cls: type[_StreamT],
1167
- ) -> _StreamT:
1168
- ...
1164
+ ) -> _StreamT: ...
1169
1165
 
1170
1166
  @overload
1171
1167
  def get(
@@ -1176,8 +1172,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1176
1172
  options: RequestOptions = {},
1177
1173
  stream: bool,
1178
1174
  stream_cls: type[_StreamT] | None = None,
1179
- ) -> ResponseT | _StreamT:
1180
- ...
1175
+ ) -> ResponseT | _StreamT: ...
1181
1176
 
1182
1177
  def get(
1183
1178
  self,
@@ -1203,8 +1198,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1203
1198
  options: RequestOptions = {},
1204
1199
  files: RequestFiles | None = None,
1205
1200
  stream: Literal[False] = False,
1206
- ) -> ResponseT:
1207
- ...
1201
+ ) -> ResponseT: ...
1208
1202
 
1209
1203
  @overload
1210
1204
  def post(
@@ -1217,8 +1211,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1217
1211
  files: RequestFiles | None = None,
1218
1212
  stream: Literal[True],
1219
1213
  stream_cls: type[_StreamT],
1220
- ) -> _StreamT:
1221
- ...
1214
+ ) -> _StreamT: ...
1222
1215
 
1223
1216
  @overload
1224
1217
  def post(
@@ -1231,8 +1224,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
1231
1224
  files: RequestFiles | None = None,
1232
1225
  stream: bool,
1233
1226
  stream_cls: type[_StreamT] | None = None,
1234
- ) -> ResponseT | _StreamT:
1235
- ...
1227
+ ) -> ResponseT | _StreamT: ...
1236
1228
 
1237
1229
  def post(
1238
1230
  self,
@@ -1465,8 +1457,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1465
1457
  *,
1466
1458
  stream: Literal[False] = False,
1467
1459
  remaining_retries: Optional[int] = None,
1468
- ) -> ResponseT:
1469
- ...
1460
+ ) -> ResponseT: ...
1470
1461
 
1471
1462
  @overload
1472
1463
  async def request(
@@ -1477,8 +1468,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1477
1468
  stream: Literal[True],
1478
1469
  stream_cls: type[_AsyncStreamT],
1479
1470
  remaining_retries: Optional[int] = None,
1480
- ) -> _AsyncStreamT:
1481
- ...
1471
+ ) -> _AsyncStreamT: ...
1482
1472
 
1483
1473
  @overload
1484
1474
  async def request(
@@ -1489,8 +1479,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1489
1479
  stream: bool,
1490
1480
  stream_cls: type[_AsyncStreamT] | None = None,
1491
1481
  remaining_retries: Optional[int] = None,
1492
- ) -> ResponseT | _AsyncStreamT:
1493
- ...
1482
+ ) -> ResponseT | _AsyncStreamT: ...
1494
1483
 
1495
1484
  async def request(
1496
1485
  self,
@@ -1610,6 +1599,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1610
1599
  response=response,
1611
1600
  stream=stream,
1612
1601
  stream_cls=stream_cls,
1602
+ retries_taken=options.get_max_retries(self.max_retries) - retries,
1613
1603
  )
1614
1604
 
1615
1605
  async def _retry_request(
@@ -1649,6 +1639,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1649
1639
  response: httpx.Response,
1650
1640
  stream: bool,
1651
1641
  stream_cls: type[Stream[Any]] | type[AsyncStream[Any]] | None,
1642
+ retries_taken: int = 0,
1652
1643
  ) -> ResponseT:
1653
1644
  origin = get_origin(cast_to) or cast_to
1654
1645
 
@@ -1666,6 +1657,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1666
1657
  stream=stream,
1667
1658
  stream_cls=stream_cls,
1668
1659
  options=options,
1660
+ retries_taken=retries_taken,
1669
1661
  ),
1670
1662
  )
1671
1663
 
@@ -1679,6 +1671,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1679
1671
  stream=stream,
1680
1672
  stream_cls=stream_cls,
1681
1673
  options=options,
1674
+ retries_taken=retries_taken,
1682
1675
  )
1683
1676
  if bool(response.request.headers.get(RAW_RESPONSE_HEADER)):
1684
1677
  return cast(ResponseT, api_response)
@@ -1701,8 +1694,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1701
1694
  cast_to: Type[ResponseT],
1702
1695
  options: RequestOptions = {},
1703
1696
  stream: Literal[False] = False,
1704
- ) -> ResponseT:
1705
- ...
1697
+ ) -> ResponseT: ...
1706
1698
 
1707
1699
  @overload
1708
1700
  async def get(
@@ -1713,8 +1705,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1713
1705
  options: RequestOptions = {},
1714
1706
  stream: Literal[True],
1715
1707
  stream_cls: type[_AsyncStreamT],
1716
- ) -> _AsyncStreamT:
1717
- ...
1708
+ ) -> _AsyncStreamT: ...
1718
1709
 
1719
1710
  @overload
1720
1711
  async def get(
@@ -1725,8 +1716,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1725
1716
  options: RequestOptions = {},
1726
1717
  stream: bool,
1727
1718
  stream_cls: type[_AsyncStreamT] | None = None,
1728
- ) -> ResponseT | _AsyncStreamT:
1729
- ...
1719
+ ) -> ResponseT | _AsyncStreamT: ...
1730
1720
 
1731
1721
  async def get(
1732
1722
  self,
@@ -1750,8 +1740,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1750
1740
  files: RequestFiles | None = None,
1751
1741
  options: RequestOptions = {},
1752
1742
  stream: Literal[False] = False,
1753
- ) -> ResponseT:
1754
- ...
1743
+ ) -> ResponseT: ...
1755
1744
 
1756
1745
  @overload
1757
1746
  async def post(
@@ -1764,8 +1753,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1764
1753
  options: RequestOptions = {},
1765
1754
  stream: Literal[True],
1766
1755
  stream_cls: type[_AsyncStreamT],
1767
- ) -> _AsyncStreamT:
1768
- ...
1756
+ ) -> _AsyncStreamT: ...
1769
1757
 
1770
1758
  @overload
1771
1759
  async def post(
@@ -1778,8 +1766,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1778
1766
  options: RequestOptions = {},
1779
1767
  stream: bool,
1780
1768
  stream_cls: type[_AsyncStreamT] | None = None,
1781
- ) -> ResponseT | _AsyncStreamT:
1782
- ...
1769
+ ) -> ResponseT | _AsyncStreamT: ...
1783
1770
 
1784
1771
  async def post(
1785
1772
  self,
@@ -7,7 +7,7 @@ from typing_extensions import Self
7
7
  import pydantic
8
8
  from pydantic.fields import FieldInfo
9
9
 
10
- from ._types import StrBytesIntFloat
10
+ from ._types import IncEx, StrBytesIntFloat
11
11
 
12
12
  _T = TypeVar("_T")
13
13
  _ModelT = TypeVar("_ModelT", bound=pydantic.BaseModel)
@@ -133,17 +133,20 @@ def model_json(model: pydantic.BaseModel, *, indent: int | None = None) -> str:
133
133
  def model_dump(
134
134
  model: pydantic.BaseModel,
135
135
  *,
136
+ exclude: IncEx = None,
136
137
  exclude_unset: bool = False,
137
138
  exclude_defaults: bool = False,
138
139
  ) -> dict[str, Any]:
139
140
  if PYDANTIC_V2:
140
141
  return model.model_dump(
142
+ exclude=exclude,
141
143
  exclude_unset=exclude_unset,
142
144
  exclude_defaults=exclude_defaults,
143
145
  )
144
146
  return cast(
145
147
  "dict[str, Any]",
146
148
  model.dict( # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
149
+ exclude=exclude,
147
150
  exclude_unset=exclude_unset,
148
151
  exclude_defaults=exclude_defaults,
149
152
  ),
@@ -159,22 +162,19 @@ def model_parse(model: type[_ModelT], data: Any) -> _ModelT:
159
162
  # generic models
160
163
  if TYPE_CHECKING:
161
164
 
162
- class GenericModel(pydantic.BaseModel):
163
- ...
165
+ class GenericModel(pydantic.BaseModel): ...
164
166
 
165
167
  else:
166
168
  if PYDANTIC_V2:
167
169
  # there no longer needs to be a distinction in v2 but
168
170
  # we still have to create our own subclass to avoid
169
171
  # inconsistent MRO ordering errors
170
- class GenericModel(pydantic.BaseModel):
171
- ...
172
+ class GenericModel(pydantic.BaseModel): ...
172
173
 
173
174
  else:
174
175
  import pydantic.generics
175
176
 
176
- class GenericModel(pydantic.generics.GenericModel, pydantic.BaseModel):
177
- ...
177
+ class GenericModel(pydantic.generics.GenericModel, pydantic.BaseModel): ...
178
178
 
179
179
 
180
180
  # cached properties
@@ -193,26 +193,21 @@ if TYPE_CHECKING:
193
193
  func: Callable[[Any], _T]
194
194
  attrname: str | None
195
195
 
196
- def __init__(self, func: Callable[[Any], _T]) -> None:
197
- ...
196
+ def __init__(self, func: Callable[[Any], _T]) -> None: ...
198
197
 
199
198
  @overload
200
- def __get__(self, instance: None, owner: type[Any] | None = None) -> Self:
201
- ...
199
+ def __get__(self, instance: None, owner: type[Any] | None = None) -> Self: ...
202
200
 
203
201
  @overload
204
- def __get__(self, instance: object, owner: type[Any] | None = None) -> _T:
205
- ...
202
+ def __get__(self, instance: object, owner: type[Any] | None = None) -> _T: ...
206
203
 
207
204
  def __get__(self, instance: object, owner: type[Any] | None = None) -> _T | Self:
208
205
  raise NotImplementedError()
209
206
 
210
- def __set_name__(self, owner: type[Any], name: str) -> None:
211
- ...
207
+ def __set_name__(self, owner: type[Any], name: str) -> None: ...
212
208
 
213
209
  # __set__ is not defined at runtime, but @cached_property is designed to be settable
214
- def __set__(self, instance: object, value: _T) -> None:
215
- ...
210
+ def __set__(self, instance: object, value: _T) -> None: ...
216
211
  else:
217
212
  try:
218
213
  from functools import cached_property as cached_property
@@ -39,13 +39,11 @@ def assert_is_file_content(obj: object, *, key: str | None = None) -> None:
39
39
 
40
40
 
41
41
  @overload
42
- def to_httpx_files(files: None) -> None:
43
- ...
42
+ def to_httpx_files(files: None) -> None: ...
44
43
 
45
44
 
46
45
  @overload
47
- def to_httpx_files(files: RequestFiles) -> HttpxRequestFiles:
48
- ...
46
+ def to_httpx_files(files: RequestFiles) -> HttpxRequestFiles: ...
49
47
 
50
48
 
51
49
  def to_httpx_files(files: RequestFiles | None) -> HttpxRequestFiles | None:
@@ -83,13 +81,11 @@ def _read_file_content(file: FileContent) -> HttpxFileContent:
83
81
 
84
82
 
85
83
  @overload
86
- async def async_to_httpx_files(files: None) -> None:
87
- ...
84
+ async def async_to_httpx_files(files: None) -> None: ...
88
85
 
89
86
 
90
87
  @overload
91
- async def async_to_httpx_files(files: RequestFiles) -> HttpxRequestFiles:
92
- ...
88
+ async def async_to_httpx_files(files: RequestFiles) -> HttpxRequestFiles: ...
93
89
 
94
90
 
95
91
  async def async_to_httpx_files(files: RequestFiles | None) -> HttpxRequestFiles | None: