polyaxon-sdk 1.18.0rc7__py2.py3-none-any.whl → 2.1.6__py2.py3-none-any.whl
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.
- polyaxon_sdk/__init__.py +26 -34
- polyaxon_sdk/api/__init__.py +2 -18
- polyaxon_sdk/api/agents_v1_api.py +2314 -1108
- polyaxon_sdk/api/artifacts_stores_v1_api.py +90 -97
- polyaxon_sdk/api/auth_v1_api.py +398 -359
- polyaxon_sdk/api/connections_v1_api.py +516 -488
- polyaxon_sdk/api/dashboards_v1_api.py +516 -488
- polyaxon_sdk/api/organizations_v1_api.py +3107 -2327
- polyaxon_sdk/api/policies_v1_api.py +1232 -0
- polyaxon_sdk/api/presets_v1_api.py +528 -498
- polyaxon_sdk/api/project_dashboards_v1_api.py +596 -590
- polyaxon_sdk/api/project_searches_v1_api.py +596 -590
- polyaxon_sdk/api/projects_v1_api.py +2248 -2167
- polyaxon_sdk/api/queues_v1_api.py +701 -670
- polyaxon_sdk/api/runs_v1_api.py +5136 -4477
- polyaxon_sdk/api/schemas_v1_api.py +64 -70
- polyaxon_sdk/api/searches_v1_api.py +516 -488
- polyaxon_sdk/api/service_accounts_v1_api.py +956 -920
- polyaxon_sdk/api/tags_v1_api.py +587 -552
- polyaxon_sdk/api/teams_v1_api.py +953 -916
- polyaxon_sdk/api/users_v1_api.py +730 -646
- polyaxon_sdk/api/versions_v1_api.py +206 -190
- polyaxon_sdk/api_client.py +145 -101
- polyaxon_sdk/configuration.py +46 -79
- polyaxon_sdk/exceptions.py +6 -23
- polyaxon_sdk/models/__init__.py +24 -32
- polyaxon_sdk/models/agent_state_response_agent_state.py +71 -364
- polyaxon_sdk/models/mx_job_mode.py +12 -105
- polyaxon_sdk/models/protobuf_any.py +65 -164
- polyaxon_sdk/models/protobuf_null_value.py +11 -104
- polyaxon_sdk/models/runtime_error.py +67 -208
- polyaxon_sdk/models/search_view.py +18 -111
- polyaxon_sdk/models/v1_activity.py +68 -313
- polyaxon_sdk/models/v1_agent.py +93 -495
- polyaxon_sdk/models/v1_agent_reconcile_body_request.py +75 -0
- polyaxon_sdk/models/v1_agent_state_response.py +64 -208
- polyaxon_sdk/models/v1_agent_status_body_request.py +61 -182
- polyaxon_sdk/models/v1_analytics_spec.py +59 -208
- polyaxon_sdk/models/v1_artifact_kind.py +42 -134
- polyaxon_sdk/models/v1_artifact_tree.py +57 -182
- polyaxon_sdk/models/v1_artifacts_mount.py +55 -156
- polyaxon_sdk/models/v1_artifacts_type.py +57 -182
- polyaxon_sdk/models/v1_auth.py +54 -131
- polyaxon_sdk/models/v1_auth_type.py +55 -156
- polyaxon_sdk/models/v1_average_stopping_policy.py +54 -131
- polyaxon_sdk/models/v1_bayes.py +79 -364
- polyaxon_sdk/models/v1_bucket_connection.py +54 -131
- polyaxon_sdk/models/v1_build.py +82 -312
- polyaxon_sdk/models/v1_cache.py +59 -208
- polyaxon_sdk/models/v1_claim_connection.py +59 -208
- polyaxon_sdk/models/v1_clean_pod_policy.py +13 -106
- polyaxon_sdk/models/v1_cloning.py +58 -182
- polyaxon_sdk/models/v1_cloning_kind.py +13 -106
- polyaxon_sdk/models/v1_compatibility.py +72 -208
- polyaxon_sdk/models/v1_compiled_operation.py +171 -783
- polyaxon_sdk/models/v1_component.py +132 -572
- polyaxon_sdk/models/v1_connection_kind.py +53 -146
- polyaxon_sdk/models/v1_connection_resource.py +77 -0
- polyaxon_sdk/models/v1_connection_response.py +71 -339
- polyaxon_sdk/models/v1_connection_schema.py +81 -234
- polyaxon_sdk/models/v1_connection_type.py +77 -338
- polyaxon_sdk/models/v1_credentials.py +55 -156
- polyaxon_sdk/models/v1_cron_schedule.py +64 -261
- polyaxon_sdk/models/v1_dag.py +87 -314
- polyaxon_sdk/models/v1_dag_ref.py +55 -156
- polyaxon_sdk/models/v1_dashboard.py +74 -339
- polyaxon_sdk/models/v1_dashboard_spec.py +70 -131
- polyaxon_sdk/models/v1_dask_job.py +87 -0
- polyaxon_sdk/models/v1_dask_replica.py +95 -0
- polyaxon_sdk/models/v1_date_time_schedule.py +56 -157
- polyaxon_sdk/models/v1_diff_stopping_policy.py +61 -236
- polyaxon_sdk/models/v1_dockerfile_type.py +79 -468
- polyaxon_sdk/models/v1_early_stopping.py +81 -234
- polyaxon_sdk/models/v1_entities_tags.py +55 -156
- polyaxon_sdk/models/v1_entities_transfer.py +55 -156
- polyaxon_sdk/models/v1_entity_notification_body.py +69 -286
- polyaxon_sdk/models/v1_entity_stage_body_request.py +65 -234
- polyaxon_sdk/models/v1_entity_status_body_request.py +65 -234
- polyaxon_sdk/models/v1_environment.py +87 -588
- polyaxon_sdk/models/v1_event.py +130 -499
- polyaxon_sdk/models/v1_event_artifact.py +56 -156
- polyaxon_sdk/models/v1_event_audio.py +61 -240
- polyaxon_sdk/models/v1_event_chart.py +56 -156
- polyaxon_sdk/models/v1_event_chart_kind.py +13 -106
- polyaxon_sdk/models/v1_event_confusion_matrix.py +57 -182
- polyaxon_sdk/models/v1_event_curve.py +60 -208
- polyaxon_sdk/models/v1_event_curve_kind.py +13 -106
- polyaxon_sdk/models/v1_event_dataframe.py +55 -156
- polyaxon_sdk/models/v1_event_histogram.py +55 -156
- polyaxon_sdk/models/v1_event_image.py +59 -212
- polyaxon_sdk/models/v1_event_kind.py +42 -135
- polyaxon_sdk/models/v1_event_model.py +57 -182
- polyaxon_sdk/models/v1_event_span.py +110 -0
- polyaxon_sdk/models/v1_event_span_kind.py +39 -0
- polyaxon_sdk/models/v1_event_trigger.py +56 -156
- polyaxon_sdk/models/v1_event_type.py +56 -156
- polyaxon_sdk/models/v1_event_video.py +61 -238
- polyaxon_sdk/models/v1_events_response.py +54 -131
- polyaxon_sdk/models/v1_failure_early_stopping.py +55 -158
- polyaxon_sdk/models/v1_file_type.py +59 -208
- polyaxon_sdk/models/v1_gcs_type.py +55 -156
- polyaxon_sdk/models/v1_git_connection.py +57 -182
- polyaxon_sdk/models/v1_git_type.py +57 -182
- polyaxon_sdk/models/v1_grid_search.py +63 -260
- polyaxon_sdk/models/v1_hook.py +78 -312
- polyaxon_sdk/models/v1_host_connection.py +55 -156
- polyaxon_sdk/models/v1_host_path_connection.py +59 -208
- polyaxon_sdk/models/v1_hp_choice.py +55 -156
- polyaxon_sdk/models/v1_hp_date_range.py +55 -156
- polyaxon_sdk/models/v1_hp_date_time_range.py +55 -156
- polyaxon_sdk/models/v1_hp_geom_space.py +55 -156
- polyaxon_sdk/models/v1_hp_lin_space.py +55 -156
- polyaxon_sdk/models/v1_hp_log_normal.py +55 -156
- polyaxon_sdk/models/v1_hp_log_space.py +55 -156
- polyaxon_sdk/models/v1_hp_log_uniform.py +55 -156
- polyaxon_sdk/models/v1_hp_normal.py +55 -156
- polyaxon_sdk/models/v1_hp_p_choice.py +55 -156
- polyaxon_sdk/models/v1_hp_params.py +150 -523
- polyaxon_sdk/models/v1_hp_q_log_normal.py +55 -156
- polyaxon_sdk/models/v1_hp_q_log_uniform.py +55 -156
- polyaxon_sdk/models/v1_hp_q_normal.py +55 -156
- polyaxon_sdk/models/v1_hp_q_uniform.py +55 -156
- polyaxon_sdk/models/v1_hp_range.py +55 -156
- polyaxon_sdk/models/v1_hp_uniform.py +55 -156
- polyaxon_sdk/models/v1_hub_ref.py +55 -156
- polyaxon_sdk/models/v1_hyperband.py +85 -390
- polyaxon_sdk/models/v1_hyperopt.py +80 -364
- polyaxon_sdk/models/v1_hyperopt_algorithms.py +13 -106
- polyaxon_sdk/models/v1_init.py +95 -416
- polyaxon_sdk/models/v1_installation.py +67 -260
- polyaxon_sdk/models/v1_interval_schedule.py +64 -261
- polyaxon_sdk/models/v1_io.py +83 -442
- polyaxon_sdk/models/v1_iterative.py +69 -286
- polyaxon_sdk/models/v1_job.py +77 -288
- polyaxon_sdk/models/v1_join.py +71 -260
- polyaxon_sdk/models/v1_join_param.py +61 -234
- polyaxon_sdk/models/v1_kf_replica.py +77 -286
- polyaxon_sdk/models/v1_list_activities_response.py +67 -208
- polyaxon_sdk/models/v1_list_agents_response.py +67 -208
- polyaxon_sdk/models/v1_list_bookmarks_response.py +59 -208
- polyaxon_sdk/models/v1_list_connections_response.py +67 -208
- polyaxon_sdk/models/v1_list_dashboards_response.py +67 -208
- polyaxon_sdk/models/v1_list_organization_members_response.py +67 -208
- polyaxon_sdk/models/v1_list_organizations_response.py +67 -208
- polyaxon_sdk/models/v1_list_policies_response.py +85 -0
- polyaxon_sdk/models/v1_list_presets_response.py +67 -208
- polyaxon_sdk/models/v1_list_project_versions_response.py +67 -208
- polyaxon_sdk/models/v1_list_projects_response.py +67 -208
- polyaxon_sdk/models/v1_list_queues_response.py +67 -208
- polyaxon_sdk/models/v1_list_run_artifacts_response.py +67 -208
- polyaxon_sdk/models/v1_list_run_connections_response.py +67 -208
- polyaxon_sdk/models/v1_list_run_edges_response.py +67 -208
- polyaxon_sdk/models/v1_list_runs_response.py +67 -208
- polyaxon_sdk/models/v1_list_searches_response.py +67 -208
- polyaxon_sdk/models/v1_list_service_accounts_response.py +67 -208
- polyaxon_sdk/models/v1_list_tags_response.py +67 -208
- polyaxon_sdk/models/v1_list_team_members_response.py +67 -208
- polyaxon_sdk/models/v1_list_teams_response.py +67 -208
- polyaxon_sdk/models/v1_list_token_response.py +67 -208
- polyaxon_sdk/models/v1_log.py +62 -235
- polyaxon_sdk/models/v1_log_handler.py +55 -156
- polyaxon_sdk/models/v1_logs.py +68 -209
- polyaxon_sdk/models/v1_managed_by.py +36 -0
- polyaxon_sdk/models/v1_mapping.py +59 -208
- polyaxon_sdk/models/v1_matrix.py +93 -286
- polyaxon_sdk/models/v1_matrix_kind.py +17 -110
- polyaxon_sdk/models/v1_median_stopping_policy.py +59 -210
- polyaxon_sdk/models/v1_metric_early_stopping.py +62 -238
- polyaxon_sdk/models/v1_mpi_job.py +75 -312
- polyaxon_sdk/models/v1_multi_events_response.py +71 -0
- polyaxon_sdk/models/v1_mx_job.py +96 -364
- polyaxon_sdk/models/v1_notification.py +56 -156
- polyaxon_sdk/models/v1_operation.py +178 -939
- polyaxon_sdk/models/v1_operation_body.py +69 -286
- polyaxon_sdk/models/v1_optimization.py +12 -105
- polyaxon_sdk/models/v1_optimization_metric.py +56 -156
- polyaxon_sdk/models/v1_optimization_resource.py +56 -156
- polyaxon_sdk/models/v1_organization.py +84 -495
- polyaxon_sdk/models/v1_organization_member.py +64 -261
- polyaxon_sdk/models/v1_paddle_elastic_polic.py +77 -0
- polyaxon_sdk/models/v1_paddle_job.py +97 -0
- polyaxon_sdk/models/v1_param.py +63 -260
- polyaxon_sdk/models/v1_password_change.py +57 -182
- polyaxon_sdk/models/v1_patch_strategy.py +14 -107
- polyaxon_sdk/models/v1_path_ref.py +55 -156
- polyaxon_sdk/models/v1_pipeline.py +58 -182
- polyaxon_sdk/models/v1_pipeline_kind.py +12 -105
- polyaxon_sdk/models/v1_plugins.py +89 -442
- polyaxon_sdk/models/v1_policy.py +119 -0
- polyaxon_sdk/models/v1_polyaxon_init_container.py +59 -208
- polyaxon_sdk/models/v1_polyaxon_sidecar_container.py +67 -286
- polyaxon_sdk/models/v1_preset.py +70 -339
- polyaxon_sdk/models/v1_project.py +90 -495
- polyaxon_sdk/models/v1_project_settings.py +81 -338
- polyaxon_sdk/models/v1_project_version.py +102 -601
- polyaxon_sdk/models/v1_project_version_kind.py +13 -106
- polyaxon_sdk/models/v1_pytorch_elastic_policy.py +91 -0
- polyaxon_sdk/models/v1_pytorch_job.py +81 -234
- polyaxon_sdk/models/v1_queue.py +76 -417
- polyaxon_sdk/models/v1_random_search.py +63 -260
- polyaxon_sdk/models/v1_ray_job.py +94 -0
- polyaxon_sdk/models/v1_ray_replica.py +103 -0
- polyaxon_sdk/models/v1_reference.py +75 -208
- polyaxon_sdk/models/v1_resource_type.py +12 -105
- polyaxon_sdk/models/v1_run.py +158 -1043
- polyaxon_sdk/models/v1_run_artifact.py +70 -338
- polyaxon_sdk/models/v1_run_artifacts.py +62 -131
- polyaxon_sdk/models/v1_run_connection.py +57 -182
- polyaxon_sdk/models/v1_run_edge.py +70 -234
- polyaxon_sdk/models/v1_run_edge_kind.py +19 -111
- polyaxon_sdk/models/v1_run_edge_lineage.py +75 -0
- polyaxon_sdk/models/v1_run_edges_graph.py +79 -0
- polyaxon_sdk/models/v1_run_kind.py +28 -122
- polyaxon_sdk/models/v1_run_pending.py +14 -107
- polyaxon_sdk/models/v1_run_reference_catalog.py +59 -182
- polyaxon_sdk/models/v1_run_resources.py +61 -234
- polyaxon_sdk/models/v1_run_schema.py +120 -419
- polyaxon_sdk/models/v1_run_settings.py +94 -338
- polyaxon_sdk/models/v1_s3_type.py +55 -156
- polyaxon_sdk/models/v1_schedule.py +69 -182
- polyaxon_sdk/models/v1_schedule_kind.py +13 -106
- polyaxon_sdk/models/v1_scheduling_policy.py +61 -182
- polyaxon_sdk/models/v1_schemas.py +192 -731
- polyaxon_sdk/models/v1_search.py +77 -365
- polyaxon_sdk/models/v1_search_spec.py +87 -468
- polyaxon_sdk/models/v1_section_spec.py +75 -286
- polyaxon_sdk/models/v1_service.py +85 -396
- polyaxon_sdk/models/v1_service_account.py +70 -339
- polyaxon_sdk/models/v1_settings_catalog.py +57 -156
- polyaxon_sdk/models/v1_stage.py +66 -182
- polyaxon_sdk/models/v1_stage_condition.py +67 -261
- polyaxon_sdk/models/v1_stages.py +14 -107
- polyaxon_sdk/models/v1_status.py +68 -208
- polyaxon_sdk/models/v1_status_condition.py +67 -261
- polyaxon_sdk/models/v1_statuses.py +30 -123
- polyaxon_sdk/models/v1_tag.py +63 -260
- polyaxon_sdk/models/v1_team.py +72 -313
- polyaxon_sdk/models/v1_team_member.py +64 -261
- polyaxon_sdk/models/v1_team_settings.py +79 -182
- polyaxon_sdk/models/v1_template.py +57 -182
- polyaxon_sdk/models/v1_tensorboard_type.py +61 -234
- polyaxon_sdk/models/v1_termination.py +57 -182
- polyaxon_sdk/models/v1_tf_job.py +87 -286
- polyaxon_sdk/models/v1_token.py +72 -365
- polyaxon_sdk/models/v1_trial_start.py +63 -260
- polyaxon_sdk/models/v1_trigger_policy.py +16 -109
- polyaxon_sdk/models/v1_truncation_stopping_policy.py +63 -264
- polyaxon_sdk/models/v1_tuner.py +69 -208
- polyaxon_sdk/models/v1_uri_type.py +57 -182
- polyaxon_sdk/models/v1_url_ref.py +55 -156
- polyaxon_sdk/models/v1_user.py +63 -260
- polyaxon_sdk/models/v1_user_access.py +77 -0
- polyaxon_sdk/models/v1_user_email.py +54 -131
- polyaxon_sdk/models/v1_user_singup.py +61 -234
- polyaxon_sdk/models/v1_uuids.py +54 -131
- polyaxon_sdk/models/v1_validation.py +109 -0
- polyaxon_sdk/models/v1_version.py +55 -156
- polyaxon_sdk/models/v1_wasb_type.py +57 -182
- polyaxon_sdk/models/v1_xg_boost_job.py +73 -234
- polyaxon_sdk/rest.py +23 -41
- {polyaxon_sdk-1.18.0rc7.dist-info → polyaxon_sdk-2.1.6.dist-info}/METADATA +6 -4
- polyaxon_sdk-2.1.6.dist-info/RECORD +264 -0
- {polyaxon_sdk-1.18.0rc7.dist-info → polyaxon_sdk-2.1.6.dist-info}/WHEEL +1 -1
- polyaxon_sdk/models/mpi_job_implementation.py +0 -128
- polyaxon_sdk/models/spark_deploy_mode.py +0 -129
- polyaxon_sdk/models/v1_dask.py +0 -436
- polyaxon_sdk/models/v1_flink.py +0 -174
- polyaxon_sdk/models/v1_k8s_resource_schema.py +0 -226
- polyaxon_sdk/models/v1_k8s_resource_type.py +0 -200
- polyaxon_sdk/models/v1_project_user_access.py +0 -200
- polyaxon_sdk/models/v1_ray.py +0 -174
- polyaxon_sdk/models/v1_spark.py +0 -558
- polyaxon_sdk/models/v1_spark_replica.py +0 -252
- polyaxon_sdk/models/v1_spark_type.py +0 -130
- polyaxon_sdk-1.18.0rc7.dist-info/RECORD +0 -255
- {polyaxon_sdk-1.18.0rc7.dist-info → polyaxon_sdk-2.1.6.dist-info}/top_level.txt +0 -0
polyaxon_sdk/api_client.py
CHANGED
@@ -1,31 +1,17 @@
|
|
1
|
-
#!/usr/bin/python
|
2
|
-
#
|
3
|
-
# Copyright 2018-2022 Polyaxon, Inc.
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
1
|
# coding: utf-8
|
2
|
+
|
18
3
|
"""
|
19
4
|
Polyaxon SDKs and REST API specification.
|
20
5
|
|
21
|
-
|
6
|
+
# noqa: E501
|
22
7
|
|
23
|
-
The version of the OpenAPI document: 1.
|
8
|
+
The version of the OpenAPI document: 2.1.6
|
24
9
|
Contact: contact@polyaxon.com
|
25
|
-
Generated by
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
26
13
|
"""
|
27
14
|
|
28
|
-
from __future__ import absolute_import
|
29
15
|
|
30
16
|
import atexit
|
31
17
|
import datetime
|
@@ -37,9 +23,7 @@ import os
|
|
37
23
|
import re
|
38
24
|
import tempfile
|
39
25
|
|
40
|
-
|
41
|
-
import six
|
42
|
-
from six.moves.urllib.parse import quote
|
26
|
+
from urllib.parse import quote
|
43
27
|
|
44
28
|
from polyaxon_sdk.configuration import Configuration
|
45
29
|
import polyaxon_sdk.models
|
@@ -55,10 +39,6 @@ class ApiClient(object):
|
|
55
39
|
the methods and models for each application are generated from the OpenAPI
|
56
40
|
templates.
|
57
41
|
|
58
|
-
NOTE: This class is auto generated by OpenAPI Generator.
|
59
|
-
Ref: https://openapi-generator.tech
|
60
|
-
Do not edit the class manually.
|
61
|
-
|
62
42
|
:param configuration: .Configuration object for this client
|
63
43
|
:param header_name: a header to pass when making calls to the API.
|
64
44
|
:param header_value: a header value to pass when making calls to
|
@@ -69,10 +49,10 @@ class ApiClient(object):
|
|
69
49
|
to the API. More threads means more concurrent API requests.
|
70
50
|
"""
|
71
51
|
|
72
|
-
PRIMITIVE_TYPES = (float, bool, bytes,
|
52
|
+
PRIMITIVE_TYPES = (float, bool, bytes, str, int)
|
73
53
|
NATIVE_TYPES_MAPPING = {
|
74
54
|
'int': int,
|
75
|
-
'long': int
|
55
|
+
'long': int, # TODO remove as only py3 is supported?
|
76
56
|
'float': float,
|
77
57
|
'str': str,
|
78
58
|
'bool': bool,
|
@@ -84,8 +64,9 @@ class ApiClient(object):
|
|
84
64
|
|
85
65
|
def __init__(self, configuration=None, header_name=None, header_value=None,
|
86
66
|
cookie=None, pool_threads=1):
|
67
|
+
# use default configuration if none is provided
|
87
68
|
if configuration is None:
|
88
|
-
configuration = Configuration.
|
69
|
+
configuration = Configuration.get_default()
|
89
70
|
self.configuration = configuration
|
90
71
|
self.pool_threads = pool_threads
|
91
72
|
|
@@ -95,7 +76,7 @@ class ApiClient(object):
|
|
95
76
|
self.default_headers[header_name] = header_value
|
96
77
|
self.cookie = cookie
|
97
78
|
# Set default User-Agent.
|
98
|
-
self.user_agent = 'OpenAPI-Generator/1.
|
79
|
+
self.user_agent = 'OpenAPI-Generator/2.1.6/python'
|
99
80
|
self.client_side_validation = configuration.client_side_validation
|
100
81
|
|
101
82
|
def __enter__(self):
|
@@ -134,6 +115,33 @@ class ApiClient(object):
|
|
134
115
|
def set_default_header(self, header_name, header_value):
|
135
116
|
self.default_headers[header_name] = header_value
|
136
117
|
|
118
|
+
|
119
|
+
_default = None
|
120
|
+
|
121
|
+
@classmethod
|
122
|
+
def get_default(cls):
|
123
|
+
"""Return new instance of ApiClient.
|
124
|
+
|
125
|
+
This method returns newly created, based on default constructor,
|
126
|
+
object of ApiClient class or returns a copy of default
|
127
|
+
ApiClient.
|
128
|
+
|
129
|
+
:return: The ApiClient object.
|
130
|
+
"""
|
131
|
+
if cls._default is None:
|
132
|
+
cls._default = ApiClient()
|
133
|
+
return cls._default
|
134
|
+
|
135
|
+
@classmethod
|
136
|
+
def set_default(cls, default):
|
137
|
+
"""Set default instance of ApiClient.
|
138
|
+
|
139
|
+
It stores default ApiClient.
|
140
|
+
|
141
|
+
:param default: object of ApiClient.
|
142
|
+
"""
|
143
|
+
cls._default = default
|
144
|
+
|
137
145
|
def __call_api(
|
138
146
|
self, resource_path, method, path_params=None,
|
139
147
|
query_params=None, header_params=None, body=None, post_params=None,
|
@@ -166,12 +174,6 @@ class ApiClient(object):
|
|
166
174
|
quote(str(v), safe=config.safe_chars_for_path_param)
|
167
175
|
)
|
168
176
|
|
169
|
-
# query parameters
|
170
|
-
if query_params:
|
171
|
-
query_params = self.sanitize_for_serialization(query_params)
|
172
|
-
query_params = self.parameters_to_tuples(query_params,
|
173
|
-
collection_formats)
|
174
|
-
|
175
177
|
# post parameters
|
176
178
|
if post_params or files:
|
177
179
|
post_params = post_params if post_params else []
|
@@ -183,6 +185,7 @@ class ApiClient(object):
|
|
183
185
|
# auth setting
|
184
186
|
self.update_params_for_auth(
|
185
187
|
header_params, query_params, auth_settings,
|
188
|
+
resource_path, method, body,
|
186
189
|
request_auth=_request_auth)
|
187
190
|
|
188
191
|
# body
|
@@ -196,15 +199,25 @@ class ApiClient(object):
|
|
196
199
|
# use server/host defined in path or operation instead
|
197
200
|
url = _host + resource_path
|
198
201
|
|
202
|
+
# query parameters
|
203
|
+
if query_params:
|
204
|
+
query_params = self.sanitize_for_serialization(query_params)
|
205
|
+
url_query = self.parameters_to_url_query(query_params,
|
206
|
+
collection_formats)
|
207
|
+
url += "?" + url_query
|
208
|
+
|
199
209
|
try:
|
200
210
|
# perform request and return response
|
201
211
|
response_data = self.request(
|
202
|
-
method, url,
|
212
|
+
method, url,
|
213
|
+
query_params=query_params,
|
214
|
+
headers=header_params,
|
203
215
|
post_params=post_params, body=body,
|
204
216
|
_preload_content=_preload_content,
|
205
217
|
_request_timeout=_request_timeout)
|
206
218
|
except ApiException as e:
|
207
|
-
|
219
|
+
if e.body:
|
220
|
+
e.body = e.body.decode('utf-8')
|
208
221
|
raise e
|
209
222
|
|
210
223
|
self.last_response = response_data
|
@@ -214,19 +227,22 @@ class ApiClient(object):
|
|
214
227
|
if not _preload_content:
|
215
228
|
return return_data
|
216
229
|
|
217
|
-
response_type = response_types_map.get(response_data.status, None)
|
230
|
+
response_type = response_types_map.get(str(response_data.status), None)
|
218
231
|
|
219
|
-
if
|
232
|
+
if response_type == "bytearray":
|
233
|
+
response_data.data = response_data.data
|
234
|
+
else:
|
220
235
|
match = None
|
221
236
|
content_type = response_data.getheader('content-type')
|
222
237
|
if content_type is not None:
|
223
|
-
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s
|
238
|
+
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
|
224
239
|
encoding = match.group(1) if match else "utf-8"
|
225
240
|
response_data.data = response_data.data.decode(encoding)
|
226
241
|
|
227
242
|
# deserialize response data
|
228
|
-
|
229
|
-
|
243
|
+
if response_type == "bytearray":
|
244
|
+
return_data = response_data.data
|
245
|
+
elif response_type:
|
230
246
|
return_data = self.deserialize(response_data, response_type)
|
231
247
|
else:
|
232
248
|
return_data = None
|
@@ -272,12 +288,10 @@ class ApiClient(object):
|
|
272
288
|
# and attributes which value is not None.
|
273
289
|
# Convert attribute name to json key in
|
274
290
|
# model definition for request.
|
275
|
-
obj_dict =
|
276
|
-
for attr, _ in six.iteritems(obj.openapi_types)
|
277
|
-
if getattr(obj, attr) is not None}
|
291
|
+
obj_dict = obj.to_dict()
|
278
292
|
|
279
293
|
return {key: self.sanitize_for_serialization(val)
|
280
|
-
for key, val in
|
294
|
+
for key, val in obj_dict.items()}
|
281
295
|
|
282
296
|
def deserialize(self, response, response_type):
|
283
297
|
"""Deserializes response into an object.
|
@@ -313,15 +327,15 @@ class ApiClient(object):
|
|
313
327
|
return None
|
314
328
|
|
315
329
|
if type(klass) == str:
|
316
|
-
if klass.startswith('
|
317
|
-
sub_kls = re.match(r'
|
330
|
+
if klass.startswith('List['):
|
331
|
+
sub_kls = re.match(r'List\[(.*)]', klass).group(1)
|
318
332
|
return [self.__deserialize(sub_data, sub_kls)
|
319
333
|
for sub_data in data]
|
320
334
|
|
321
|
-
if klass.startswith('
|
322
|
-
sub_kls = re.match(r'
|
335
|
+
if klass.startswith('Dict['):
|
336
|
+
sub_kls = re.match(r'Dict\[([^,]*), (.*)]', klass).group(2)
|
323
337
|
return {k: self.__deserialize(v, sub_kls)
|
324
|
-
for k, v in
|
338
|
+
for k, v in data.items()}
|
325
339
|
|
326
340
|
# convert str to class
|
327
341
|
if klass in self.NATIVE_TYPES_MAPPING:
|
@@ -414,25 +428,25 @@ class ApiClient(object):
|
|
414
428
|
_request_timeout=None):
|
415
429
|
"""Makes the HTTP request using RESTClient."""
|
416
430
|
if method == "GET":
|
417
|
-
return self.rest_client.
|
431
|
+
return self.rest_client.get_request(url,
|
418
432
|
query_params=query_params,
|
419
433
|
_preload_content=_preload_content,
|
420
434
|
_request_timeout=_request_timeout,
|
421
435
|
headers=headers)
|
422
436
|
elif method == "HEAD":
|
423
|
-
return self.rest_client.
|
437
|
+
return self.rest_client.head_request(url,
|
424
438
|
query_params=query_params,
|
425
439
|
_preload_content=_preload_content,
|
426
440
|
_request_timeout=_request_timeout,
|
427
441
|
headers=headers)
|
428
442
|
elif method == "OPTIONS":
|
429
|
-
return self.rest_client.
|
443
|
+
return self.rest_client.options_request(url,
|
430
444
|
query_params=query_params,
|
431
445
|
headers=headers,
|
432
446
|
_preload_content=_preload_content,
|
433
447
|
_request_timeout=_request_timeout)
|
434
448
|
elif method == "POST":
|
435
|
-
return self.rest_client.
|
449
|
+
return self.rest_client.post_request(url,
|
436
450
|
query_params=query_params,
|
437
451
|
headers=headers,
|
438
452
|
post_params=post_params,
|
@@ -440,7 +454,7 @@ class ApiClient(object):
|
|
440
454
|
_request_timeout=_request_timeout,
|
441
455
|
body=body)
|
442
456
|
elif method == "PUT":
|
443
|
-
return self.rest_client.
|
457
|
+
return self.rest_client.put_request(url,
|
444
458
|
query_params=query_params,
|
445
459
|
headers=headers,
|
446
460
|
post_params=post_params,
|
@@ -448,7 +462,7 @@ class ApiClient(object):
|
|
448
462
|
_request_timeout=_request_timeout,
|
449
463
|
body=body)
|
450
464
|
elif method == "PATCH":
|
451
|
-
return self.rest_client.
|
465
|
+
return self.rest_client.patch_request(url,
|
452
466
|
query_params=query_params,
|
453
467
|
headers=headers,
|
454
468
|
post_params=post_params,
|
@@ -456,7 +470,7 @@ class ApiClient(object):
|
|
456
470
|
_request_timeout=_request_timeout,
|
457
471
|
body=body)
|
458
472
|
elif method == "DELETE":
|
459
|
-
return self.rest_client.
|
473
|
+
return self.rest_client.delete_request(url,
|
460
474
|
query_params=query_params,
|
461
475
|
headers=headers,
|
462
476
|
_preload_content=_preload_content,
|
@@ -478,7 +492,7 @@ class ApiClient(object):
|
|
478
492
|
new_params = []
|
479
493
|
if collection_formats is None:
|
480
494
|
collection_formats = {}
|
481
|
-
for k, v in
|
495
|
+
for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
|
482
496
|
if k in collection_formats:
|
483
497
|
collection_format = collection_formats[k]
|
484
498
|
if collection_format == 'multi':
|
@@ -498,6 +512,44 @@ class ApiClient(object):
|
|
498
512
|
new_params.append((k, v))
|
499
513
|
return new_params
|
500
514
|
|
515
|
+
def parameters_to_url_query(self, params, collection_formats):
|
516
|
+
"""Get parameters as list of tuples, formatting collections.
|
517
|
+
|
518
|
+
:param params: Parameters as dict or list of two-tuples
|
519
|
+
:param dict collection_formats: Parameter collection formats
|
520
|
+
:return: URL query string (e.g. a=Hello%20World&b=123)
|
521
|
+
"""
|
522
|
+
new_params = []
|
523
|
+
if collection_formats is None:
|
524
|
+
collection_formats = {}
|
525
|
+
for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
|
526
|
+
if isinstance(v, (int, float)):
|
527
|
+
v = str(v)
|
528
|
+
if isinstance(v, bool):
|
529
|
+
v = str(v).lower()
|
530
|
+
if isinstance(v, dict):
|
531
|
+
v = json.dumps(v)
|
532
|
+
|
533
|
+
if k in collection_formats:
|
534
|
+
collection_format = collection_formats[k]
|
535
|
+
if collection_format == 'multi':
|
536
|
+
new_params.extend((k, value) for value in v)
|
537
|
+
else:
|
538
|
+
if collection_format == 'ssv':
|
539
|
+
delimiter = ' '
|
540
|
+
elif collection_format == 'tsv':
|
541
|
+
delimiter = '\t'
|
542
|
+
elif collection_format == 'pipes':
|
543
|
+
delimiter = '|'
|
544
|
+
else: # csv is the default
|
545
|
+
delimiter = ','
|
546
|
+
new_params.append(
|
547
|
+
(k, delimiter.join(quote(str(value)) for value in v)))
|
548
|
+
else:
|
549
|
+
new_params.append((k, quote(str(v))))
|
550
|
+
|
551
|
+
return "&".join(["=".join(item) for item in new_params])
|
552
|
+
|
501
553
|
def files_parameters(self, files=None):
|
502
554
|
"""Builds form parameters.
|
503
555
|
|
@@ -507,7 +559,7 @@ class ApiClient(object):
|
|
507
559
|
params = []
|
508
560
|
|
509
561
|
if files:
|
510
|
-
for k, v in
|
562
|
+
for k, v in files.items():
|
511
563
|
if not v:
|
512
564
|
continue
|
513
565
|
file_names = v if type(v) is list else [v]
|
@@ -531,12 +583,11 @@ class ApiClient(object):
|
|
531
583
|
if not accepts:
|
532
584
|
return
|
533
585
|
|
534
|
-
|
586
|
+
for accept in accepts:
|
587
|
+
if re.search('json', accept, re.IGNORECASE):
|
588
|
+
return accept
|
535
589
|
|
536
|
-
|
537
|
-
return 'application/json'
|
538
|
-
else:
|
539
|
-
return ', '.join(accepts)
|
590
|
+
return accepts[0]
|
540
591
|
|
541
592
|
def select_header_content_type(self, content_types):
|
542
593
|
"""Returns `Content-Type` based on an array of content_types provided.
|
@@ -545,22 +596,26 @@ class ApiClient(object):
|
|
545
596
|
:return: Content-Type (e.g. application/json).
|
546
597
|
"""
|
547
598
|
if not content_types:
|
548
|
-
return
|
599
|
+
return None
|
549
600
|
|
550
|
-
|
601
|
+
for content_type in content_types:
|
602
|
+
if re.search('json', content_type, re.IGNORECASE):
|
603
|
+
return content_type
|
551
604
|
|
552
|
-
|
553
|
-
return 'application/json'
|
554
|
-
else:
|
555
|
-
return content_types[0]
|
605
|
+
return content_types[0]
|
556
606
|
|
557
607
|
def update_params_for_auth(self, headers, queries, auth_settings,
|
608
|
+
resource_path, method, body,
|
558
609
|
request_auth=None):
|
559
610
|
"""Updates header and query params based on authentication setting.
|
560
611
|
|
561
612
|
:param headers: Header parameters dict to be updated.
|
562
613
|
:param queries: Query parameters tuple list to be updated.
|
563
614
|
:param auth_settings: Authentication setting identifiers list.
|
615
|
+
:resource_path: A string representation of the HTTP request resource path.
|
616
|
+
:method: A string representation of the HTTP request method.
|
617
|
+
:body: A object representing the body of the HTTP request.
|
618
|
+
The object type is the return value of sanitize_for_serialization().
|
564
619
|
:param request_auth: if set, the provided settings will
|
565
620
|
override the token in the configuration.
|
566
621
|
"""
|
@@ -568,25 +623,36 @@ class ApiClient(object):
|
|
568
623
|
return
|
569
624
|
|
570
625
|
if request_auth:
|
571
|
-
self._apply_auth_params(headers, queries,
|
626
|
+
self._apply_auth_params(headers, queries,
|
627
|
+
resource_path, method, body,
|
628
|
+
request_auth)
|
572
629
|
return
|
573
630
|
|
574
631
|
for auth in auth_settings:
|
575
632
|
auth_setting = self.configuration.auth_settings().get(auth)
|
576
633
|
if auth_setting:
|
577
|
-
self._apply_auth_params(headers, queries,
|
634
|
+
self._apply_auth_params(headers, queries,
|
635
|
+
resource_path, method, body,
|
636
|
+
auth_setting)
|
578
637
|
|
579
|
-
def _apply_auth_params(self, headers, queries,
|
638
|
+
def _apply_auth_params(self, headers, queries,
|
639
|
+
resource_path, method, body,
|
640
|
+
auth_setting):
|
580
641
|
"""Updates the request parameters based on a single auth_setting
|
581
642
|
|
582
643
|
:param headers: Header parameters dict to be updated.
|
583
644
|
:param queries: Query parameters tuple list to be updated.
|
645
|
+
:resource_path: A string representation of the HTTP request resource path.
|
646
|
+
:method: A string representation of the HTTP request method.
|
647
|
+
:body: A object representing the body of the HTTP request.
|
648
|
+
The object type is the return value of sanitize_for_serialization().
|
584
649
|
:param auth_setting: auth settings for the endpoint
|
585
650
|
"""
|
586
651
|
if auth_setting['in'] == 'cookie':
|
587
652
|
headers['Cookie'] = auth_setting['value']
|
588
653
|
elif auth_setting['in'] == 'header':
|
589
|
-
|
654
|
+
if auth_setting['type'] != 'http-signature':
|
655
|
+
headers[auth_setting['key']] = auth_setting['value']
|
590
656
|
elif auth_setting['in'] == 'query':
|
591
657
|
queries.append((auth_setting['key'], auth_setting['value']))
|
592
658
|
else:
|
@@ -629,7 +695,7 @@ class ApiClient(object):
|
|
629
695
|
try:
|
630
696
|
return klass(data)
|
631
697
|
except UnicodeEncodeError:
|
632
|
-
return
|
698
|
+
return str(data)
|
633
699
|
except TypeError:
|
634
700
|
return data
|
635
701
|
|
@@ -684,27 +750,5 @@ class ApiClient(object):
|
|
684
750
|
:param klass: class literal.
|
685
751
|
:return: model object.
|
686
752
|
"""
|
687
|
-
has_discriminator = False
|
688
|
-
if (hasattr(klass, 'get_real_child_model')
|
689
|
-
and klass.discriminator_value_class_map):
|
690
|
-
has_discriminator = True
|
691
|
-
|
692
|
-
if not klass.openapi_types and has_discriminator is False:
|
693
|
-
return data
|
694
753
|
|
695
|
-
|
696
|
-
if (data is not None and
|
697
|
-
klass.openapi_types is not None and
|
698
|
-
isinstance(data, (list, dict))):
|
699
|
-
for attr, attr_type in six.iteritems(klass.openapi_types):
|
700
|
-
if klass.attribute_map[attr] in data:
|
701
|
-
value = data[klass.attribute_map[attr]]
|
702
|
-
kwargs[attr] = self.__deserialize(value, attr_type)
|
703
|
-
|
704
|
-
instance = klass(**kwargs)
|
705
|
-
|
706
|
-
if has_discriminator:
|
707
|
-
klass_name = instance.get_real_child_model(data)
|
708
|
-
if klass_name:
|
709
|
-
instance = self.__deserialize(data, klass_name)
|
710
|
-
return instance
|
754
|
+
return klass.from_dict(data)
|