runloop-api-client 0.28.0__tar.gz → 0.30.0__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.
- runloop_api_client-0.30.0/.release-please-manifest.json +3 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/CHANGELOG.md +42 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/PKG-INFO +5 -6
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/README.md +4 -5
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/api.md +22 -14
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/pyproject.toml +2 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_base_client.py +10 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_models.py +1 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_transform.py +47 -2
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_typing.py +2 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +32 -21
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/blueprints.py +92 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/devboxes.py +4 -4
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/scenarios.py +45 -25
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/scorers.py +4 -4
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/__init__.py +9 -4
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_create_params.py +3 -0
- runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_create_response.py +26 -0
- runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_list_public_response.py +26 -0
- runloop_api_client-0.28.0/src/runloop_api_client/types/benchmark_view.py → runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_list_response.py +6 -3
- runloop_api_client-0.30.0/src/runloop_api_client/types/benchmark_retrieve_response.py +26 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_run_view.py +18 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_view.py +3 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +1 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_create_params.py +3 -0
- runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_create_response.py +40 -0
- runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_list_public_response.py +40 -0
- runloop_api_client-0.28.0/src/runloop_api_client/types/scenario_view.py → runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_list_response.py +5 -2
- runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_retrieve_response.py +40 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_run_view.py +1 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_update_params.py +3 -0
- runloop_api_client-0.30.0/src/runloop_api_client/types/scenario_update_response.py +40 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +1 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +1 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_function.py +8 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_function_param.py +8 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/launch_parameters.py +3 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +3 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/scenarios/test_scorers.py +2 -2
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/test_benchmarks.py +42 -31
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/test_blueprints.py +80 -4
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/test_devboxes.py +8 -8
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/test_scenarios.py +65 -43
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_client.py +1 -1
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_transform.py +20 -1
- runloop_api_client-0.28.0/.release-please-manifest.json +0 -3
- runloop_api_client-0.28.0/src/runloop_api_client/types/benchmark_list_view.py +0 -19
- runloop_api_client-0.28.0/src/runloop_api_client/types/scenario_list_view.py +0 -19
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/.gitignore +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/CONTRIBUTING.md +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/LICENSE +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/SECURITY.md +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/bin/check-release-environment +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/bin/publish-pypi +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/examples/.keep +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/mypy.ini +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/noxfile.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/release-please-config.json +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/requirements-dev.lock +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/requirements.lock +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_client.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_compat.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_constants.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_streaming.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_utils.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/lib/polling.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/lib/polling_async.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/pagination.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/repositories.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/input_context.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/input_context_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_version_details.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/repository_version_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/benchmarks/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_computers.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_executions.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/scenarios/__init__.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/scenarios/test_runs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/api_resources/test_repositories.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/conftest.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/sample_file.txt +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_extract_files.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_files.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_models.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_qs.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_required_args.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_response.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_streaming.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/tests/utils.py +0 -0
- {runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/uv.lock +0 -0
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.30.0 (2025-04-16)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.29.0...v0.30.0](https://github.com/runloopai/api-client-python/compare/v0.29.0...v0.30.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([380287d](https://github.com/runloopai/api-client-python/commit/380287d31238c9cc1cf99a3c394f03141be6174d))
|
|
10
|
+
* **api:** api update ([e9857e8](https://github.com/runloopai/api-client-python/commit/e9857e86999295ef3a8507f69c61ea6ee2861908))
|
|
11
|
+
* **api:** api update ([#586](https://github.com/runloopai/api-client-python/issues/586)) ([eb6d1ba](https://github.com/runloopai/api-client-python/commit/eb6d1ba0b6420f256c8b40dbae75f8a51854d32d))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **client:** correctly reuse idempotency key ([a6ba920](https://github.com/runloopai/api-client-python/commit/a6ba9201bf5012822ba97fdfdc48e96668a2d22e))
|
|
17
|
+
* **perf:** optimize some hot paths ([edf120c](https://github.com/runloopai/api-client-python/commit/edf120c4cfc3d0104c3735c6882787a039b21bce))
|
|
18
|
+
* **perf:** skip traversing types for NotGiven values ([bcb8823](https://github.com/runloopai/api-client-python/commit/bcb8823c114d7171745010f41442932657fc0b76))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Chores
|
|
22
|
+
|
|
23
|
+
* fix typos ([#582](https://github.com/runloopai/api-client-python/issues/582)) ([66d248c](https://github.com/runloopai/api-client-python/commit/66d248cf691f776d04df6aeb3273734bbf914a3b))
|
|
24
|
+
* **internal:** expand CI branch coverage ([0b68591](https://github.com/runloopai/api-client-python/commit/0b68591b8977c6863d75a464045a958809cca096))
|
|
25
|
+
* **internal:** reduce CI branch coverage ([58821a3](https://github.com/runloopai/api-client-python/commit/58821a3fc73f47ed0601a8fdbeaad79778765719))
|
|
26
|
+
* **internal:** remove trailing character ([#584](https://github.com/runloopai/api-client-python/issues/584)) ([65bacb7](https://github.com/runloopai/api-client-python/commit/65bacb71b584b8b1a3f998efb2d28102ffa98d74))
|
|
27
|
+
* **internal:** slight transform perf improvement ([#587](https://github.com/runloopai/api-client-python/issues/587)) ([ec630c4](https://github.com/runloopai/api-client-python/commit/ec630c44eefc52b89ce69277c9040fc93dd9241f))
|
|
28
|
+
* **internal:** update pyright settings ([487213d](https://github.com/runloopai/api-client-python/commit/487213dcc570b7d538fbff04b0a942cdbc6e97c6))
|
|
29
|
+
* slight wording improvement in README ([#588](https://github.com/runloopai/api-client-python/issues/588)) ([2eb6437](https://github.com/runloopai/api-client-python/commit/2eb643793ea4ce03000b5b4eae6f39843a74543b))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Documentation
|
|
33
|
+
|
|
34
|
+
* swap examples used in readme ([#585](https://github.com/runloopai/api-client-python/issues/585)) ([adf9a26](https://github.com/runloopai/api-client-python/commit/adf9a26a3890b7bd5899d191927ed97a9402c864))
|
|
35
|
+
|
|
36
|
+
## 0.29.0 (2025-03-25)
|
|
37
|
+
|
|
38
|
+
Full Changelog: [v0.28.0...v0.29.0](https://github.com/runloopai/api-client-python/compare/v0.28.0...v0.29.0)
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
* **api:** api update ([#578](https://github.com/runloopai/api-client-python/issues/578)) ([73a814f](https://github.com/runloopai/api-client-python/commit/73a814fa135eb768ca5d6f7e73c9720d32c5be93))
|
|
43
|
+
* **api:** api update ([#580](https://github.com/runloopai/api-client-python/issues/580)) ([c8389b1](https://github.com/runloopai/api-client-python/commit/c8389b1d1c521226ccca8665c79c1b1a5349e457))
|
|
44
|
+
|
|
3
45
|
## 0.28.0 (2025-03-21)
|
|
4
46
|
|
|
5
47
|
Full Changelog: [v0.27.0...v0.28.0](https://github.com/runloopai/api-client-python/compare/v0.27.0...v0.28.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: runloop_api_client
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.30.0
|
|
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
|
|
@@ -176,8 +176,7 @@ from runloop_api_client import Runloop
|
|
|
176
176
|
|
|
177
177
|
client = Runloop()
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
name="name",
|
|
179
|
+
devbox_view = client.devboxes.create(
|
|
181
180
|
launch_parameters={
|
|
182
181
|
"after_idle": {
|
|
183
182
|
"idle_time_seconds": 0,
|
|
@@ -188,15 +187,15 @@ blueprint_view = client.blueprints.create(
|
|
|
188
187
|
"custom_gb_memory": 0,
|
|
189
188
|
"keep_alive_time_seconds": 0,
|
|
190
189
|
"launch_commands": ["string"],
|
|
191
|
-
"resource_size_request": "
|
|
190
|
+
"resource_size_request": "X_SMALL",
|
|
192
191
|
},
|
|
193
192
|
)
|
|
194
|
-
print(
|
|
193
|
+
print(devbox_view.launch_parameters)
|
|
195
194
|
```
|
|
196
195
|
|
|
197
196
|
## File uploads
|
|
198
197
|
|
|
199
|
-
Request parameters that correspond to file uploads can be passed as `bytes`, a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
198
|
+
Request parameters that correspond to file uploads can be passed as `bytes`, or a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
200
199
|
|
|
201
200
|
```python
|
|
202
201
|
from pathlib import Path
|
|
@@ -145,8 +145,7 @@ from runloop_api_client import Runloop
|
|
|
145
145
|
|
|
146
146
|
client = Runloop()
|
|
147
147
|
|
|
148
|
-
|
|
149
|
-
name="name",
|
|
148
|
+
devbox_view = client.devboxes.create(
|
|
150
149
|
launch_parameters={
|
|
151
150
|
"after_idle": {
|
|
152
151
|
"idle_time_seconds": 0,
|
|
@@ -157,15 +156,15 @@ blueprint_view = client.blueprints.create(
|
|
|
157
156
|
"custom_gb_memory": 0,
|
|
158
157
|
"keep_alive_time_seconds": 0,
|
|
159
158
|
"launch_commands": ["string"],
|
|
160
|
-
"resource_size_request": "
|
|
159
|
+
"resource_size_request": "X_SMALL",
|
|
161
160
|
},
|
|
162
161
|
)
|
|
163
|
-
print(
|
|
162
|
+
print(devbox_view.launch_parameters)
|
|
164
163
|
```
|
|
165
164
|
|
|
166
165
|
## File uploads
|
|
167
166
|
|
|
168
|
-
Request parameters that correspond to file uploads can be passed as `bytes`, a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
167
|
+
Request parameters that correspond to file uploads can be passed as `bytes`, or a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
169
168
|
|
|
170
169
|
```python
|
|
171
170
|
from pathlib import Path
|
|
@@ -11,20 +11,22 @@ Types:
|
|
|
11
11
|
```python
|
|
12
12
|
from runloop_api_client.types import (
|
|
13
13
|
BenchmarkCreateParameters,
|
|
14
|
-
BenchmarkListView,
|
|
15
14
|
BenchmarkRunListView,
|
|
16
15
|
BenchmarkRunView,
|
|
17
|
-
BenchmarkView,
|
|
18
16
|
StartBenchmarkRunParameters,
|
|
17
|
+
BenchmarkCreateResponse,
|
|
18
|
+
BenchmarkRetrieveResponse,
|
|
19
|
+
BenchmarkListResponse,
|
|
20
|
+
BenchmarkListPublicResponse,
|
|
19
21
|
)
|
|
20
22
|
```
|
|
21
23
|
|
|
22
24
|
Methods:
|
|
23
25
|
|
|
24
|
-
- <code title="post /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">create</a>(\*\*<a href="src/runloop_api_client/types/benchmark_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
25
|
-
- <code title="get /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/
|
|
26
|
-
- <code title="get /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
27
|
-
- <code title="get /v1/benchmarks/list_public">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
26
|
+
- <code title="post /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">create</a>(\*\*<a href="src/runloop_api_client/types/benchmark_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_create_response.py">BenchmarkCreateResponse</a></code>
|
|
27
|
+
- <code title="get /v1/benchmarks/{id}">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/benchmark_retrieve_response.py">BenchmarkRetrieveResponse</a></code>
|
|
28
|
+
- <code title="get /v1/benchmarks">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_list_response.py">SyncBenchmarksCursorIDPage[BenchmarkListResponse]</a></code>
|
|
29
|
+
- <code title="get /v1/benchmarks/list_public">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/benchmark_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_list_public_response.py">SyncBenchmarksCursorIDPage[BenchmarkListPublicResponse]</a></code>
|
|
28
30
|
- <code title="post /v1/benchmarks/start_run">client.benchmarks.<a href="./src/runloop_api_client/resources/benchmarks/benchmarks.py">start_run</a>(\*\*<a href="src/runloop_api_client/types/benchmark_start_run_params.py">params</a>) -> <a href="./src/runloop_api_client/types/benchmark_run_view.py">BenchmarkRunView</a></code>
|
|
29
31
|
|
|
30
32
|
## Runs
|
|
@@ -47,6 +49,7 @@ from runloop_api_client.types import (
|
|
|
47
49
|
BlueprintListView,
|
|
48
50
|
BlueprintPreviewView,
|
|
49
51
|
BlueprintView,
|
|
52
|
+
BlueprintDeleteResponse,
|
|
50
53
|
)
|
|
51
54
|
```
|
|
52
55
|
|
|
@@ -55,6 +58,7 @@ Methods:
|
|
|
55
58
|
- <code title="post /v1/blueprints">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">create</a>(\*\*<a href="src/runloop_api_client/types/blueprint_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_view.py">BlueprintView</a></code>
|
|
56
59
|
- <code title="get /v1/blueprints/{id}">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_view.py">BlueprintView</a></code>
|
|
57
60
|
- <code title="get /v1/blueprints">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">list</a>(\*\*<a href="src/runloop_api_client/types/blueprint_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_view.py">SyncBlueprintsCursorIDPage[BlueprintView]</a></code>
|
|
61
|
+
- <code title="post /v1/blueprints/{id}/delete">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">delete</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_delete_response.py">object</a></code>
|
|
58
62
|
- <code title="get /v1/blueprints/{id}/logs">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">logs</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_build_logs_list_view.py">BlueprintBuildLogsListView</a></code>
|
|
59
63
|
- <code title="post /v1/blueprints/preview">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">preview</a>(\*\*<a href="src/runloop_api_client/types/blueprint_preview_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_preview_view.py">BlueprintPreviewView</a></code>
|
|
60
64
|
|
|
@@ -75,6 +79,7 @@ from runloop_api_client.types import (
|
|
|
75
79
|
DevboxDeleteDiskSnapshotResponse,
|
|
76
80
|
DevboxKeepAliveResponse,
|
|
77
81
|
DevboxReadFileContentsResponse,
|
|
82
|
+
DevboxRemoveTunnelResponse,
|
|
78
83
|
DevboxUploadFileResponse,
|
|
79
84
|
)
|
|
80
85
|
```
|
|
@@ -94,7 +99,7 @@ Methods:
|
|
|
94
99
|
- <code title="post /v1/devboxes/{id}/keep_alive">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">keep_alive</a>(id) -> <a href="./src/runloop_api_client/types/devbox_keep_alive_response.py">object</a></code>
|
|
95
100
|
- <code title="get /v1/devboxes/disk_snapshots">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list_disk_snapshots</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_disk_snapshots_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">SyncDiskSnapshotsCursorIDPage[DevboxSnapshotView]</a></code>
|
|
96
101
|
- <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>
|
|
97
|
-
- <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_remove_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
102
|
+
- <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_remove_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_remove_tunnel_response.py">object</a></code>
|
|
98
103
|
- <code title="post /v1/devboxes/{id}/resume">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">resume</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
|
|
99
104
|
- <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>
|
|
100
105
|
- <code title="post /v1/devboxes/{id}/snapshot_disk">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
|
|
@@ -262,25 +267,28 @@ from runloop_api_client.types import (
|
|
|
262
267
|
InputContext,
|
|
263
268
|
ScenarioCreateParameters,
|
|
264
269
|
ScenarioEnvironment,
|
|
265
|
-
ScenarioListView,
|
|
266
270
|
ScenarioRunListView,
|
|
267
271
|
ScenarioRunView,
|
|
268
|
-
ScenarioView,
|
|
269
272
|
ScoringContract,
|
|
270
273
|
ScoringContractResultView,
|
|
271
274
|
ScoringFunction,
|
|
272
275
|
ScoringFunctionResultView,
|
|
273
276
|
StartScenarioRunParameters,
|
|
277
|
+
ScenarioCreateResponse,
|
|
278
|
+
ScenarioRetrieveResponse,
|
|
279
|
+
ScenarioUpdateResponse,
|
|
280
|
+
ScenarioListResponse,
|
|
281
|
+
ScenarioListPublicResponse,
|
|
274
282
|
)
|
|
275
283
|
```
|
|
276
284
|
|
|
277
285
|
Methods:
|
|
278
286
|
|
|
279
|
-
- <code title="post /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">create</a>(\*\*<a href="src/runloop_api_client/types/scenario_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
280
|
-
- <code title="get /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/
|
|
281
|
-
- <code title="post /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/scenario_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
282
|
-
- <code title="get /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
283
|
-
- <code title="get /v1/scenarios/list_public">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/
|
|
287
|
+
- <code title="post /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">create</a>(\*\*<a href="src/runloop_api_client/types/scenario_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_create_response.py">ScenarioCreateResponse</a></code>
|
|
288
|
+
- <code title="get /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/scenario_retrieve_response.py">ScenarioRetrieveResponse</a></code>
|
|
289
|
+
- <code title="post /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/scenario_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_update_response.py">ScenarioUpdateResponse</a></code>
|
|
290
|
+
- <code title="get /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_list_response.py">SyncScenariosCursorIDPage[ScenarioListResponse]</a></code>
|
|
291
|
+
- <code title="get /v1/scenarios/list_public">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_list_public_response.py">SyncScenariosCursorIDPage[ScenarioListPublicResponse]</a></code>
|
|
284
292
|
- <code title="post /v1/scenarios/start_run">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">start_run</a>(\*\*<a href="src/runloop_api_client/types/scenario_start_run_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
|
|
285
293
|
|
|
286
294
|
## Runs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "runloop_api_client"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.30.0"
|
|
4
4
|
description = "The official Python library for the runloop API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "MIT"
|
|
@@ -147,6 +147,7 @@ exclude = [
|
|
|
147
147
|
]
|
|
148
148
|
|
|
149
149
|
reportImplicitOverride = true
|
|
150
|
+
reportOverlappingOverload = false
|
|
150
151
|
|
|
151
152
|
reportImportCycles = false
|
|
152
153
|
reportPrivateUsage = false
|
{runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_base_client.py
RENAMED
|
@@ -409,7 +409,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
409
409
|
|
|
410
410
|
idempotency_header = self._idempotency_header
|
|
411
411
|
if idempotency_header and options.method.lower() != "get" and idempotency_header not in headers:
|
|
412
|
-
|
|
412
|
+
options.idempotency_key = options.idempotency_key or self._idempotency_key()
|
|
413
|
+
headers[idempotency_header] = options.idempotency_key
|
|
413
414
|
|
|
414
415
|
# Don't set these headers if they were already set or removed by the caller. We check
|
|
415
416
|
# `custom_headers`, which can contain `Omit()`, instead of `headers` to account for the removal case.
|
|
@@ -943,6 +944,10 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
943
944
|
request = self._build_request(options, retries_taken=retries_taken)
|
|
944
945
|
self._prepare_request(request)
|
|
945
946
|
|
|
947
|
+
if options.idempotency_key:
|
|
948
|
+
# ensure the idempotency key is reused between requests
|
|
949
|
+
input_options.idempotency_key = options.idempotency_key
|
|
950
|
+
|
|
946
951
|
kwargs: HttpxSendArgs = {}
|
|
947
952
|
if self.custom_auth is not None:
|
|
948
953
|
kwargs["auth"] = self.custom_auth
|
|
@@ -1475,6 +1480,10 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1475
1480
|
request = self._build_request(options, retries_taken=retries_taken)
|
|
1476
1481
|
await self._prepare_request(request)
|
|
1477
1482
|
|
|
1483
|
+
if options.idempotency_key:
|
|
1484
|
+
# ensure the idempotency key is reused between requests
|
|
1485
|
+
input_options.idempotency_key = options.idempotency_key
|
|
1486
|
+
|
|
1478
1487
|
kwargs: HttpxSendArgs = {}
|
|
1479
1488
|
if self.custom_auth is not None:
|
|
1480
1489
|
kwargs["auth"] = self.custom_auth
|
|
@@ -681,7 +681,7 @@ def set_pydantic_config(typ: Any, config: pydantic.ConfigDict) -> None:
|
|
|
681
681
|
setattr(typ, "__pydantic_config__", config) # noqa: B010
|
|
682
682
|
|
|
683
683
|
|
|
684
|
-
# our use of
|
|
684
|
+
# our use of subclassing here causes weirdness for type checkers,
|
|
685
685
|
# so we just pretend that we don't subclass
|
|
686
686
|
if TYPE_CHECKING:
|
|
687
687
|
GenericModel = BaseModel
|
{runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_transform.py
RENAMED
|
@@ -5,13 +5,15 @@ import base64
|
|
|
5
5
|
import pathlib
|
|
6
6
|
from typing import Any, Mapping, TypeVar, cast
|
|
7
7
|
from datetime import date, datetime
|
|
8
|
-
from typing_extensions import Literal, get_args, override, get_type_hints
|
|
8
|
+
from typing_extensions import Literal, get_args, override, get_type_hints as _get_type_hints
|
|
9
9
|
|
|
10
10
|
import anyio
|
|
11
11
|
import pydantic
|
|
12
12
|
|
|
13
13
|
from ._utils import (
|
|
14
14
|
is_list,
|
|
15
|
+
is_given,
|
|
16
|
+
lru_cache,
|
|
15
17
|
is_mapping,
|
|
16
18
|
is_iterable,
|
|
17
19
|
)
|
|
@@ -108,6 +110,7 @@ def transform(
|
|
|
108
110
|
return cast(_T, transformed)
|
|
109
111
|
|
|
110
112
|
|
|
113
|
+
@lru_cache(maxsize=8096)
|
|
111
114
|
def _get_annotated_type(type_: type) -> type | None:
|
|
112
115
|
"""If the given type is an `Annotated` type then it is returned, if not `None` is returned.
|
|
113
116
|
|
|
@@ -126,7 +129,7 @@ def _get_annotated_type(type_: type) -> type | None:
|
|
|
126
129
|
def _maybe_transform_key(key: str, type_: type) -> str:
|
|
127
130
|
"""Transform the given `data` based on the annotations provided in `type_`.
|
|
128
131
|
|
|
129
|
-
Note: this function only looks at `Annotated` types that contain `
|
|
132
|
+
Note: this function only looks at `Annotated` types that contain `PropertyInfo` metadata.
|
|
130
133
|
"""
|
|
131
134
|
annotated_type = _get_annotated_type(type_)
|
|
132
135
|
if annotated_type is None:
|
|
@@ -142,6 +145,10 @@ def _maybe_transform_key(key: str, type_: type) -> str:
|
|
|
142
145
|
return key
|
|
143
146
|
|
|
144
147
|
|
|
148
|
+
def _no_transform_needed(annotation: type) -> bool:
|
|
149
|
+
return annotation == float or annotation == int
|
|
150
|
+
|
|
151
|
+
|
|
145
152
|
def _transform_recursive(
|
|
146
153
|
data: object,
|
|
147
154
|
*,
|
|
@@ -184,6 +191,15 @@ def _transform_recursive(
|
|
|
184
191
|
return cast(object, data)
|
|
185
192
|
|
|
186
193
|
inner_type = extract_type_arg(stripped_type, 0)
|
|
194
|
+
if _no_transform_needed(inner_type):
|
|
195
|
+
# for some types there is no need to transform anything, so we can get a small
|
|
196
|
+
# perf boost from skipping that work.
|
|
197
|
+
#
|
|
198
|
+
# but we still need to convert to a list to ensure the data is json-serializable
|
|
199
|
+
if is_list(data):
|
|
200
|
+
return data
|
|
201
|
+
return list(data)
|
|
202
|
+
|
|
187
203
|
return [_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
|
|
188
204
|
|
|
189
205
|
if is_union_type(stripped_type):
|
|
@@ -245,6 +261,11 @@ def _transform_typeddict(
|
|
|
245
261
|
result: dict[str, object] = {}
|
|
246
262
|
annotations = get_type_hints(expected_type, include_extras=True)
|
|
247
263
|
for key, value in data.items():
|
|
264
|
+
if not is_given(value):
|
|
265
|
+
# we don't need to include `NotGiven` values here as they'll
|
|
266
|
+
# be stripped out before the request is sent anyway
|
|
267
|
+
continue
|
|
268
|
+
|
|
248
269
|
type_ = annotations.get(key)
|
|
249
270
|
if type_ is None:
|
|
250
271
|
# we do not have a type annotation for this field, leave it as is
|
|
@@ -332,6 +353,15 @@ async def _async_transform_recursive(
|
|
|
332
353
|
return cast(object, data)
|
|
333
354
|
|
|
334
355
|
inner_type = extract_type_arg(stripped_type, 0)
|
|
356
|
+
if _no_transform_needed(inner_type):
|
|
357
|
+
# for some types there is no need to transform anything, so we can get a small
|
|
358
|
+
# perf boost from skipping that work.
|
|
359
|
+
#
|
|
360
|
+
# but we still need to convert to a list to ensure the data is json-serializable
|
|
361
|
+
if is_list(data):
|
|
362
|
+
return data
|
|
363
|
+
return list(data)
|
|
364
|
+
|
|
335
365
|
return [await _async_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
|
|
336
366
|
|
|
337
367
|
if is_union_type(stripped_type):
|
|
@@ -393,6 +423,11 @@ async def _async_transform_typeddict(
|
|
|
393
423
|
result: dict[str, object] = {}
|
|
394
424
|
annotations = get_type_hints(expected_type, include_extras=True)
|
|
395
425
|
for key, value in data.items():
|
|
426
|
+
if not is_given(value):
|
|
427
|
+
# we don't need to include `NotGiven` values here as they'll
|
|
428
|
+
# be stripped out before the request is sent anyway
|
|
429
|
+
continue
|
|
430
|
+
|
|
396
431
|
type_ = annotations.get(key)
|
|
397
432
|
if type_ is None:
|
|
398
433
|
# we do not have a type annotation for this field, leave it as is
|
|
@@ -400,3 +435,13 @@ async def _async_transform_typeddict(
|
|
|
400
435
|
else:
|
|
401
436
|
result[_maybe_transform_key(key, type_)] = await _async_transform_recursive(value, annotation=type_)
|
|
402
437
|
return result
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
@lru_cache(maxsize=8096)
|
|
441
|
+
def get_type_hints(
|
|
442
|
+
obj: Any,
|
|
443
|
+
globalns: dict[str, Any] | None = None,
|
|
444
|
+
localns: Mapping[str, Any] | None = None,
|
|
445
|
+
include_extras: bool = False,
|
|
446
|
+
) -> dict[str, Any]:
|
|
447
|
+
return _get_type_hints(obj, globalns=globalns, localns=localns, include_extras=include_extras)
|
{runloop_api_client-0.28.0 → runloop_api_client-0.30.0}/src/runloop_api_client/_utils/_typing.py
RENAMED
|
@@ -13,6 +13,7 @@ from typing_extensions import (
|
|
|
13
13
|
get_origin,
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
+
from ._utils import lru_cache
|
|
16
17
|
from .._types import InheritsGeneric
|
|
17
18
|
from .._compat import is_union as _is_union
|
|
18
19
|
|
|
@@ -66,6 +67,7 @@ def is_type_alias_type(tp: Any, /) -> TypeIs[typing_extensions.TypeAliasType]:
|
|
|
66
67
|
|
|
67
68
|
|
|
68
69
|
# Extracts T from Annotated[T, ...] or from Required[Annotated[T, ...]]
|
|
70
|
+
@lru_cache(maxsize=8096)
|
|
69
71
|
def strip_annotated_type(typ: type) -> type:
|
|
70
72
|
if is_required_type(typ) or is_annotated_type(typ):
|
|
71
73
|
return strip_annotated_type(cast(type, get_args(typ)[0]))
|