gsctl 0.29.0a20250114__py2.py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- graphscope/flex/rest/__init__.py +106 -0
- graphscope/flex/rest/api/__init__.py +12 -0
- graphscope/flex/rest/api/alert_api.py +2790 -0
- graphscope/flex/rest/api/data_source_api.py +1177 -0
- graphscope/flex/rest/api/deployment_api.py +1323 -0
- graphscope/flex/rest/api/graph_api.py +2813 -0
- graphscope/flex/rest/api/job_api.py +1408 -0
- graphscope/flex/rest/api/service_api.py +1316 -0
- graphscope/flex/rest/api/stored_procedure_api.py +1454 -0
- graphscope/flex/rest/api/utils_api.py +310 -0
- graphscope/flex/rest/api_client.py +789 -0
- graphscope/flex/rest/api_response.py +21 -0
- graphscope/flex/rest/configuration.py +451 -0
- graphscope/flex/rest/exceptions.py +200 -0
- graphscope/flex/rest/models/__init__.py +82 -0
- graphscope/flex/rest/models/base_edge_type.py +102 -0
- graphscope/flex/rest/models/base_edge_type_vertex_type_pair_relations_inner.py +108 -0
- graphscope/flex/rest/models/base_edge_type_vertex_type_pair_relations_inner_x_csr_params.py +98 -0
- graphscope/flex/rest/models/base_property_meta.py +105 -0
- graphscope/flex/rest/models/base_vertex_type.py +96 -0
- graphscope/flex/rest/models/base_vertex_type_x_csr_params.py +88 -0
- graphscope/flex/rest/models/column_mapping.py +94 -0
- graphscope/flex/rest/models/column_mapping_column.py +90 -0
- graphscope/flex/rest/models/create_alert_receiver_request.py +103 -0
- graphscope/flex/rest/models/create_alert_rule_request.py +112 -0
- graphscope/flex/rest/models/create_dataloading_job_response.py +88 -0
- graphscope/flex/rest/models/create_edge_type.py +114 -0
- graphscope/flex/rest/models/create_graph_request.py +106 -0
- graphscope/flex/rest/models/create_graph_response.py +88 -0
- graphscope/flex/rest/models/create_graph_schema_request.py +106 -0
- graphscope/flex/rest/models/create_property_meta.py +105 -0
- graphscope/flex/rest/models/create_stored_proc_request.py +101 -0
- graphscope/flex/rest/models/create_stored_proc_response.py +88 -0
- graphscope/flex/rest/models/create_vertex_type.py +108 -0
- graphscope/flex/rest/models/dataloading_job_config.py +136 -0
- graphscope/flex/rest/models/dataloading_job_config_edges_inner.py +92 -0
- graphscope/flex/rest/models/dataloading_job_config_loading_config.py +104 -0
- graphscope/flex/rest/models/dataloading_job_config_loading_config_format.py +90 -0
- graphscope/flex/rest/models/dataloading_job_config_vertices_inner.py +88 -0
- graphscope/flex/rest/models/dataloading_mr_job_config.py +88 -0
- graphscope/flex/rest/models/date_type.py +88 -0
- graphscope/flex/rest/models/edge_mapping.py +122 -0
- graphscope/flex/rest/models/edge_mapping_type_triplet.py +92 -0
- graphscope/flex/rest/models/error.py +90 -0
- graphscope/flex/rest/models/get_alert_message_response.py +123 -0
- graphscope/flex/rest/models/get_alert_receiver_response.py +107 -0
- graphscope/flex/rest/models/get_alert_rule_response.py +114 -0
- graphscope/flex/rest/models/get_edge_type.py +116 -0
- graphscope/flex/rest/models/get_graph_response.py +139 -0
- graphscope/flex/rest/models/get_graph_schema_response.py +106 -0
- graphscope/flex/rest/models/get_pod_log_response.py +88 -0
- graphscope/flex/rest/models/get_property_meta.py +107 -0
- graphscope/flex/rest/models/get_resource_usage_response.py +105 -0
- graphscope/flex/rest/models/get_storage_usage_response.py +88 -0
- graphscope/flex/rest/models/get_stored_proc_response.py +130 -0
- graphscope/flex/rest/models/get_vertex_type.py +110 -0
- graphscope/flex/rest/models/gs_data_type.py +152 -0
- graphscope/flex/rest/models/job_status.py +107 -0
- graphscope/flex/rest/models/long_text.py +93 -0
- graphscope/flex/rest/models/node_status.py +94 -0
- graphscope/flex/rest/models/parameter.py +96 -0
- graphscope/flex/rest/models/pod_status.py +108 -0
- graphscope/flex/rest/models/primitive_type.py +95 -0
- graphscope/flex/rest/models/resource_usage.py +92 -0
- graphscope/flex/rest/models/running_deployment_info.py +128 -0
- graphscope/flex/rest/models/running_deployment_status.py +124 -0
- graphscope/flex/rest/models/schema_mapping.py +106 -0
- graphscope/flex/rest/models/service_status.py +112 -0
- graphscope/flex/rest/models/service_status_sdk_endpoints.py +94 -0
- graphscope/flex/rest/models/start_service_request.py +88 -0
- graphscope/flex/rest/models/stored_procedure_meta.py +126 -0
- graphscope/flex/rest/models/string_type.py +92 -0
- graphscope/flex/rest/models/string_type_string.py +124 -0
- graphscope/flex/rest/models/temporal_type.py +92 -0
- graphscope/flex/rest/models/temporal_type_temporal.py +138 -0
- graphscope/flex/rest/models/time_stamp_type.py +88 -0
- graphscope/flex/rest/models/update_alert_message_status_request.py +97 -0
- graphscope/flex/rest/models/update_stored_proc_request.py +88 -0
- graphscope/flex/rest/models/upload_file_response.py +90 -0
- graphscope/flex/rest/models/vertex_mapping.py +100 -0
- graphscope/flex/rest/py.typed +0 -0
- graphscope/flex/rest/rest.py +258 -0
- graphscope/gsctl/V6D_VERSION +1 -0
- graphscope/gsctl/VERSION +1 -0
- graphscope/gsctl/__init__.py +22 -0
- graphscope/gsctl/commands/__init__.py +148 -0
- graphscope/gsctl/commands/common.py +200 -0
- graphscope/gsctl/commands/dev.py +448 -0
- graphscope/gsctl/commands/insight/__init__.py +17 -0
- graphscope/gsctl/commands/insight/glob.py +234 -0
- graphscope/gsctl/commands/insight/graph.py +205 -0
- graphscope/gsctl/commands/interactive/__init__.py +17 -0
- graphscope/gsctl/commands/interactive/glob.py +280 -0
- graphscope/gsctl/commands/interactive/graph.py +259 -0
- graphscope/gsctl/config.py +221 -0
- graphscope/gsctl/gsctl.py +51 -0
- graphscope/gsctl/impl/__init__.py +64 -0
- graphscope/gsctl/impl/alert.py +135 -0
- graphscope/gsctl/impl/common.py +53 -0
- graphscope/gsctl/impl/datasource.py +80 -0
- graphscope/gsctl/impl/deployment.py +62 -0
- graphscope/gsctl/impl/graph.py +150 -0
- graphscope/gsctl/impl/job.py +63 -0
- graphscope/gsctl/impl/service.py +62 -0
- graphscope/gsctl/impl/stored_procedure.py +92 -0
- graphscope/gsctl/impl/utils.py +38 -0
- graphscope/gsctl/scripts/install_deps.sh +969 -0
- graphscope/gsctl/tests/__init__.py +17 -0
- graphscope/gsctl/tests/test_graphscope_insight.py +401 -0
- graphscope/gsctl/tests/test_interactive.py +516 -0
- graphscope/gsctl/utils.py +337 -0
- graphscope/gsctl/version.py +31 -0
- gsctl-0.29.0a20250114.dist-info/METADATA +20 -0
- gsctl-0.29.0a20250114.dist-info/RECORD +117 -0
- gsctl-0.29.0a20250114.dist-info/WHEEL +6 -0
- gsctl-0.29.0a20250114.dist-info/entry_points.txt +3 -0
- gsctl-0.29.0a20250114.dist-info/top_level.txt +1 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
GraphScope FLEX HTTP SERVICE API
|
5
|
+
|
6
|
+
This is a specification for GraphScope FLEX HTTP service based on the OpenAPI 3.0 specification. You can find out more details about specification at [doc](https://swagger.io/specification/v3/).
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: graphscope@alibaba-inc.com
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, StrictStr, field_validator
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
23
|
+
from typing import Optional, Set
|
24
|
+
from typing_extensions import Self
|
25
|
+
|
26
|
+
class UpdateAlertMessageStatusRequest(BaseModel):
|
27
|
+
"""
|
28
|
+
UpdateAlertMessageStatusRequest
|
29
|
+
""" # noqa: E501
|
30
|
+
message_ids: List[StrictStr]
|
31
|
+
status: StrictStr
|
32
|
+
__properties: ClassVar[List[str]] = ["message_ids", "status"]
|
33
|
+
|
34
|
+
@field_validator('status')
|
35
|
+
def status_validate_enum(cls, value):
|
36
|
+
"""Validates the enum"""
|
37
|
+
if value not in set(['unsolved', 'solved', 'dealing']):
|
38
|
+
raise ValueError("must be one of enum values ('unsolved', 'solved', 'dealing')")
|
39
|
+
return value
|
40
|
+
|
41
|
+
model_config = ConfigDict(
|
42
|
+
populate_by_name=True,
|
43
|
+
validate_assignment=True,
|
44
|
+
protected_namespaces=(),
|
45
|
+
)
|
46
|
+
|
47
|
+
|
48
|
+
def to_str(self) -> str:
|
49
|
+
"""Returns the string representation of the model using alias"""
|
50
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
51
|
+
|
52
|
+
def to_json(self) -> str:
|
53
|
+
"""Returns the JSON representation of the model using alias"""
|
54
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
55
|
+
return json.dumps(self.to_dict())
|
56
|
+
|
57
|
+
@classmethod
|
58
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
59
|
+
"""Create an instance of UpdateAlertMessageStatusRequest from a JSON string"""
|
60
|
+
return cls.from_dict(json.loads(json_str))
|
61
|
+
|
62
|
+
def to_dict(self) -> Dict[str, Any]:
|
63
|
+
"""Return the dictionary representation of the model using alias.
|
64
|
+
|
65
|
+
This has the following differences from calling pydantic's
|
66
|
+
`self.model_dump(by_alias=True)`:
|
67
|
+
|
68
|
+
* `None` is only added to the output dict for nullable fields that
|
69
|
+
were set at model initialization. Other fields with value `None`
|
70
|
+
are ignored.
|
71
|
+
"""
|
72
|
+
excluded_fields: Set[str] = set([
|
73
|
+
])
|
74
|
+
|
75
|
+
_dict = self.model_dump(
|
76
|
+
by_alias=True,
|
77
|
+
exclude=excluded_fields,
|
78
|
+
exclude_none=True,
|
79
|
+
)
|
80
|
+
return _dict
|
81
|
+
|
82
|
+
@classmethod
|
83
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
84
|
+
"""Create an instance of UpdateAlertMessageStatusRequest from a dict"""
|
85
|
+
if obj is None:
|
86
|
+
return None
|
87
|
+
|
88
|
+
if not isinstance(obj, dict):
|
89
|
+
return cls.model_validate(obj)
|
90
|
+
|
91
|
+
_obj = cls.model_validate({
|
92
|
+
"message_ids": obj.get("message_ids"),
|
93
|
+
"status": obj.get("status")
|
94
|
+
})
|
95
|
+
return _obj
|
96
|
+
|
97
|
+
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
GraphScope FLEX HTTP SERVICE API
|
5
|
+
|
6
|
+
This is a specification for GraphScope FLEX HTTP service based on the OpenAPI 3.0 specification. You can find out more details about specification at [doc](https://swagger.io/specification/v3/).
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: graphscope@alibaba-inc.com
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, StrictStr
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
23
|
+
from typing import Optional, Set
|
24
|
+
from typing_extensions import Self
|
25
|
+
|
26
|
+
class UpdateStoredProcRequest(BaseModel):
|
27
|
+
"""
|
28
|
+
UpdateStoredProcRequest
|
29
|
+
""" # noqa: E501
|
30
|
+
description: StrictStr
|
31
|
+
__properties: ClassVar[List[str]] = ["description"]
|
32
|
+
|
33
|
+
model_config = ConfigDict(
|
34
|
+
populate_by_name=True,
|
35
|
+
validate_assignment=True,
|
36
|
+
protected_namespaces=(),
|
37
|
+
)
|
38
|
+
|
39
|
+
|
40
|
+
def to_str(self) -> str:
|
41
|
+
"""Returns the string representation of the model using alias"""
|
42
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
43
|
+
|
44
|
+
def to_json(self) -> str:
|
45
|
+
"""Returns the JSON representation of the model using alias"""
|
46
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
47
|
+
return json.dumps(self.to_dict())
|
48
|
+
|
49
|
+
@classmethod
|
50
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
51
|
+
"""Create an instance of UpdateStoredProcRequest from a JSON string"""
|
52
|
+
return cls.from_dict(json.loads(json_str))
|
53
|
+
|
54
|
+
def to_dict(self) -> Dict[str, Any]:
|
55
|
+
"""Return the dictionary representation of the model using alias.
|
56
|
+
|
57
|
+
This has the following differences from calling pydantic's
|
58
|
+
`self.model_dump(by_alias=True)`:
|
59
|
+
|
60
|
+
* `None` is only added to the output dict for nullable fields that
|
61
|
+
were set at model initialization. Other fields with value `None`
|
62
|
+
are ignored.
|
63
|
+
"""
|
64
|
+
excluded_fields: Set[str] = set([
|
65
|
+
])
|
66
|
+
|
67
|
+
_dict = self.model_dump(
|
68
|
+
by_alias=True,
|
69
|
+
exclude=excluded_fields,
|
70
|
+
exclude_none=True,
|
71
|
+
)
|
72
|
+
return _dict
|
73
|
+
|
74
|
+
@classmethod
|
75
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
76
|
+
"""Create an instance of UpdateStoredProcRequest from a dict"""
|
77
|
+
if obj is None:
|
78
|
+
return None
|
79
|
+
|
80
|
+
if not isinstance(obj, dict):
|
81
|
+
return cls.model_validate(obj)
|
82
|
+
|
83
|
+
_obj = cls.model_validate({
|
84
|
+
"description": obj.get("description")
|
85
|
+
})
|
86
|
+
return _obj
|
87
|
+
|
88
|
+
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
GraphScope FLEX HTTP SERVICE API
|
5
|
+
|
6
|
+
This is a specification for GraphScope FLEX HTTP service based on the OpenAPI 3.0 specification. You can find out more details about specification at [doc](https://swagger.io/specification/v3/).
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: graphscope@alibaba-inc.com
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, StrictStr
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
23
|
+
from typing import Optional, Set
|
24
|
+
from typing_extensions import Self
|
25
|
+
|
26
|
+
class UploadFileResponse(BaseModel):
|
27
|
+
"""
|
28
|
+
UploadFileResponse
|
29
|
+
""" # noqa: E501
|
30
|
+
file_path: StrictStr
|
31
|
+
metadata: Dict[str, Any]
|
32
|
+
__properties: ClassVar[List[str]] = ["file_path", "metadata"]
|
33
|
+
|
34
|
+
model_config = ConfigDict(
|
35
|
+
populate_by_name=True,
|
36
|
+
validate_assignment=True,
|
37
|
+
protected_namespaces=(),
|
38
|
+
)
|
39
|
+
|
40
|
+
|
41
|
+
def to_str(self) -> str:
|
42
|
+
"""Returns the string representation of the model using alias"""
|
43
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
44
|
+
|
45
|
+
def to_json(self) -> str:
|
46
|
+
"""Returns the JSON representation of the model using alias"""
|
47
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
48
|
+
return json.dumps(self.to_dict())
|
49
|
+
|
50
|
+
@classmethod
|
51
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
52
|
+
"""Create an instance of UploadFileResponse from a JSON string"""
|
53
|
+
return cls.from_dict(json.loads(json_str))
|
54
|
+
|
55
|
+
def to_dict(self) -> Dict[str, Any]:
|
56
|
+
"""Return the dictionary representation of the model using alias.
|
57
|
+
|
58
|
+
This has the following differences from calling pydantic's
|
59
|
+
`self.model_dump(by_alias=True)`:
|
60
|
+
|
61
|
+
* `None` is only added to the output dict for nullable fields that
|
62
|
+
were set at model initialization. Other fields with value `None`
|
63
|
+
are ignored.
|
64
|
+
"""
|
65
|
+
excluded_fields: Set[str] = set([
|
66
|
+
])
|
67
|
+
|
68
|
+
_dict = self.model_dump(
|
69
|
+
by_alias=True,
|
70
|
+
exclude=excluded_fields,
|
71
|
+
exclude_none=True,
|
72
|
+
)
|
73
|
+
return _dict
|
74
|
+
|
75
|
+
@classmethod
|
76
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
77
|
+
"""Create an instance of UploadFileResponse from a dict"""
|
78
|
+
if obj is None:
|
79
|
+
return None
|
80
|
+
|
81
|
+
if not isinstance(obj, dict):
|
82
|
+
return cls.model_validate(obj)
|
83
|
+
|
84
|
+
_obj = cls.model_validate({
|
85
|
+
"file_path": obj.get("file_path"),
|
86
|
+
"metadata": obj.get("metadata")
|
87
|
+
})
|
88
|
+
return _obj
|
89
|
+
|
90
|
+
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
GraphScope FLEX HTTP SERVICE API
|
5
|
+
|
6
|
+
This is a specification for GraphScope FLEX HTTP service based on the OpenAPI 3.0 specification. You can find out more details about specification at [doc](https://swagger.io/specification/v3/).
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: graphscope@alibaba-inc.com
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, StrictStr
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
23
|
+
from graphscope.flex.rest.models.column_mapping import ColumnMapping
|
24
|
+
from typing import Optional, Set
|
25
|
+
from typing_extensions import Self
|
26
|
+
|
27
|
+
class VertexMapping(BaseModel):
|
28
|
+
"""
|
29
|
+
VertexMapping
|
30
|
+
""" # noqa: E501
|
31
|
+
type_name: StrictStr
|
32
|
+
inputs: List[StrictStr]
|
33
|
+
column_mappings: Optional[List[ColumnMapping]] = None
|
34
|
+
__properties: ClassVar[List[str]] = ["type_name", "inputs", "column_mappings"]
|
35
|
+
|
36
|
+
model_config = ConfigDict(
|
37
|
+
populate_by_name=True,
|
38
|
+
validate_assignment=True,
|
39
|
+
protected_namespaces=(),
|
40
|
+
)
|
41
|
+
|
42
|
+
|
43
|
+
def to_str(self) -> str:
|
44
|
+
"""Returns the string representation of the model using alias"""
|
45
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
46
|
+
|
47
|
+
def to_json(self) -> str:
|
48
|
+
"""Returns the JSON representation of the model using alias"""
|
49
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
50
|
+
return json.dumps(self.to_dict())
|
51
|
+
|
52
|
+
@classmethod
|
53
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
54
|
+
"""Create an instance of VertexMapping from a JSON string"""
|
55
|
+
return cls.from_dict(json.loads(json_str))
|
56
|
+
|
57
|
+
def to_dict(self) -> Dict[str, Any]:
|
58
|
+
"""Return the dictionary representation of the model using alias.
|
59
|
+
|
60
|
+
This has the following differences from calling pydantic's
|
61
|
+
`self.model_dump(by_alias=True)`:
|
62
|
+
|
63
|
+
* `None` is only added to the output dict for nullable fields that
|
64
|
+
were set at model initialization. Other fields with value `None`
|
65
|
+
are ignored.
|
66
|
+
"""
|
67
|
+
excluded_fields: Set[str] = set([
|
68
|
+
])
|
69
|
+
|
70
|
+
_dict = self.model_dump(
|
71
|
+
by_alias=True,
|
72
|
+
exclude=excluded_fields,
|
73
|
+
exclude_none=True,
|
74
|
+
)
|
75
|
+
# override the default output from pydantic by calling `to_dict()` of each item in column_mappings (list)
|
76
|
+
_items = []
|
77
|
+
if self.column_mappings:
|
78
|
+
for _item_column_mappings in self.column_mappings:
|
79
|
+
if _item_column_mappings:
|
80
|
+
_items.append(_item_column_mappings.to_dict())
|
81
|
+
_dict['column_mappings'] = _items
|
82
|
+
return _dict
|
83
|
+
|
84
|
+
@classmethod
|
85
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
86
|
+
"""Create an instance of VertexMapping from a dict"""
|
87
|
+
if obj is None:
|
88
|
+
return None
|
89
|
+
|
90
|
+
if not isinstance(obj, dict):
|
91
|
+
return cls.model_validate(obj)
|
92
|
+
|
93
|
+
_obj = cls.model_validate({
|
94
|
+
"type_name": obj.get("type_name"),
|
95
|
+
"inputs": obj.get("inputs"),
|
96
|
+
"column_mappings": [ColumnMapping.from_dict(_item) for _item in obj["column_mappings"]] if obj.get("column_mappings") is not None else None
|
97
|
+
})
|
98
|
+
return _obj
|
99
|
+
|
100
|
+
|
File without changes
|
@@ -0,0 +1,258 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
GraphScope FLEX HTTP SERVICE API
|
5
|
+
|
6
|
+
This is a specification for GraphScope FLEX HTTP service based on the OpenAPI 3.0 specification. You can find out more details about specification at [doc](https://swagger.io/specification/v3/).
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: graphscope@alibaba-inc.com
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
import io
|
17
|
+
import json
|
18
|
+
import re
|
19
|
+
import ssl
|
20
|
+
|
21
|
+
import urllib3
|
22
|
+
|
23
|
+
from graphscope.flex.rest.exceptions import ApiException, ApiValueError
|
24
|
+
|
25
|
+
SUPPORTED_SOCKS_PROXIES = {"socks5", "socks5h", "socks4", "socks4a"}
|
26
|
+
RESTResponseType = urllib3.HTTPResponse
|
27
|
+
|
28
|
+
|
29
|
+
def is_socks_proxy_url(url):
|
30
|
+
if url is None:
|
31
|
+
return False
|
32
|
+
split_section = url.split("://")
|
33
|
+
if len(split_section) < 2:
|
34
|
+
return False
|
35
|
+
else:
|
36
|
+
return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES
|
37
|
+
|
38
|
+
|
39
|
+
class RESTResponse(io.IOBase):
|
40
|
+
|
41
|
+
def __init__(self, resp) -> None:
|
42
|
+
self.response = resp
|
43
|
+
self.status = resp.status
|
44
|
+
self.reason = resp.reason
|
45
|
+
self.data = None
|
46
|
+
|
47
|
+
def read(self):
|
48
|
+
if self.data is None:
|
49
|
+
self.data = self.response.data
|
50
|
+
return self.data
|
51
|
+
|
52
|
+
def getheaders(self):
|
53
|
+
"""Returns a dictionary of the response headers."""
|
54
|
+
return self.response.headers
|
55
|
+
|
56
|
+
def getheader(self, name, default=None):
|
57
|
+
"""Returns a given response header."""
|
58
|
+
return self.response.headers.get(name, default)
|
59
|
+
|
60
|
+
|
61
|
+
class RESTClientObject:
|
62
|
+
|
63
|
+
def __init__(self, configuration) -> None:
|
64
|
+
# urllib3.PoolManager will pass all kw parameters to connectionpool
|
65
|
+
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
|
66
|
+
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
|
67
|
+
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
|
68
|
+
|
69
|
+
# cert_reqs
|
70
|
+
if configuration.verify_ssl:
|
71
|
+
cert_reqs = ssl.CERT_REQUIRED
|
72
|
+
else:
|
73
|
+
cert_reqs = ssl.CERT_NONE
|
74
|
+
|
75
|
+
pool_args = {
|
76
|
+
"cert_reqs": cert_reqs,
|
77
|
+
"ca_certs": configuration.ssl_ca_cert,
|
78
|
+
"cert_file": configuration.cert_file,
|
79
|
+
"key_file": configuration.key_file,
|
80
|
+
}
|
81
|
+
if configuration.assert_hostname is not None:
|
82
|
+
pool_args['assert_hostname'] = (
|
83
|
+
configuration.assert_hostname
|
84
|
+
)
|
85
|
+
|
86
|
+
if configuration.retries is not None:
|
87
|
+
pool_args['retries'] = configuration.retries
|
88
|
+
|
89
|
+
if configuration.tls_server_name:
|
90
|
+
pool_args['server_hostname'] = configuration.tls_server_name
|
91
|
+
|
92
|
+
|
93
|
+
if configuration.socket_options is not None:
|
94
|
+
pool_args['socket_options'] = configuration.socket_options
|
95
|
+
|
96
|
+
if configuration.connection_pool_maxsize is not None:
|
97
|
+
pool_args['maxsize'] = configuration.connection_pool_maxsize
|
98
|
+
|
99
|
+
# https pool manager
|
100
|
+
self.pool_manager: urllib3.PoolManager
|
101
|
+
|
102
|
+
if configuration.proxy:
|
103
|
+
if is_socks_proxy_url(configuration.proxy):
|
104
|
+
from urllib3.contrib.socks import SOCKSProxyManager
|
105
|
+
pool_args["proxy_url"] = configuration.proxy
|
106
|
+
pool_args["headers"] = configuration.proxy_headers
|
107
|
+
self.pool_manager = SOCKSProxyManager(**pool_args)
|
108
|
+
else:
|
109
|
+
pool_args["proxy_url"] = configuration.proxy
|
110
|
+
pool_args["proxy_headers"] = configuration.proxy_headers
|
111
|
+
self.pool_manager = urllib3.ProxyManager(**pool_args)
|
112
|
+
else:
|
113
|
+
self.pool_manager = urllib3.PoolManager(**pool_args)
|
114
|
+
|
115
|
+
def request(
|
116
|
+
self,
|
117
|
+
method,
|
118
|
+
url,
|
119
|
+
headers=None,
|
120
|
+
body=None,
|
121
|
+
post_params=None,
|
122
|
+
_request_timeout=None
|
123
|
+
):
|
124
|
+
"""Perform requests.
|
125
|
+
|
126
|
+
:param method: http request method
|
127
|
+
:param url: http request url
|
128
|
+
:param headers: http request headers
|
129
|
+
:param body: request json body, for `application/json`
|
130
|
+
:param post_params: request post parameters,
|
131
|
+
`application/x-www-form-urlencoded`
|
132
|
+
and `multipart/form-data`
|
133
|
+
:param _request_timeout: timeout setting for this request. If one
|
134
|
+
number provided, it will be total request
|
135
|
+
timeout. It can also be a pair (tuple) of
|
136
|
+
(connection, read) timeouts.
|
137
|
+
"""
|
138
|
+
method = method.upper()
|
139
|
+
assert method in [
|
140
|
+
'GET',
|
141
|
+
'HEAD',
|
142
|
+
'DELETE',
|
143
|
+
'POST',
|
144
|
+
'PUT',
|
145
|
+
'PATCH',
|
146
|
+
'OPTIONS'
|
147
|
+
]
|
148
|
+
|
149
|
+
if post_params and body:
|
150
|
+
raise ApiValueError(
|
151
|
+
"body parameter cannot be used with post_params parameter."
|
152
|
+
)
|
153
|
+
|
154
|
+
post_params = post_params or {}
|
155
|
+
headers = headers or {}
|
156
|
+
|
157
|
+
timeout = None
|
158
|
+
if _request_timeout:
|
159
|
+
if isinstance(_request_timeout, (int, float)):
|
160
|
+
timeout = urllib3.Timeout(total=_request_timeout)
|
161
|
+
elif (
|
162
|
+
isinstance(_request_timeout, tuple)
|
163
|
+
and len(_request_timeout) == 2
|
164
|
+
):
|
165
|
+
timeout = urllib3.Timeout(
|
166
|
+
connect=_request_timeout[0],
|
167
|
+
read=_request_timeout[1]
|
168
|
+
)
|
169
|
+
|
170
|
+
try:
|
171
|
+
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
172
|
+
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
173
|
+
|
174
|
+
# no content type provided or payload is json
|
175
|
+
content_type = headers.get('Content-Type')
|
176
|
+
if (
|
177
|
+
not content_type
|
178
|
+
or re.search('json', content_type, re.IGNORECASE)
|
179
|
+
):
|
180
|
+
request_body = None
|
181
|
+
if body is not None:
|
182
|
+
request_body = json.dumps(body)
|
183
|
+
r = self.pool_manager.request(
|
184
|
+
method,
|
185
|
+
url,
|
186
|
+
body=request_body,
|
187
|
+
timeout=timeout,
|
188
|
+
headers=headers,
|
189
|
+
preload_content=False
|
190
|
+
)
|
191
|
+
elif content_type == 'application/x-www-form-urlencoded':
|
192
|
+
r = self.pool_manager.request(
|
193
|
+
method,
|
194
|
+
url,
|
195
|
+
fields=post_params,
|
196
|
+
encode_multipart=False,
|
197
|
+
timeout=timeout,
|
198
|
+
headers=headers,
|
199
|
+
preload_content=False
|
200
|
+
)
|
201
|
+
elif content_type == 'multipart/form-data':
|
202
|
+
# must del headers['Content-Type'], or the correct
|
203
|
+
# Content-Type which generated by urllib3 will be
|
204
|
+
# overwritten.
|
205
|
+
del headers['Content-Type']
|
206
|
+
# Ensures that dict objects are serialized
|
207
|
+
post_params = [(a, json.dumps(b)) if isinstance(b, dict) else (a,b) for a, b in post_params]
|
208
|
+
r = self.pool_manager.request(
|
209
|
+
method,
|
210
|
+
url,
|
211
|
+
fields=post_params,
|
212
|
+
encode_multipart=True,
|
213
|
+
timeout=timeout,
|
214
|
+
headers=headers,
|
215
|
+
preload_content=False
|
216
|
+
)
|
217
|
+
# Pass a `string` parameter directly in the body to support
|
218
|
+
# other content types than JSON when `body` argument is
|
219
|
+
# provided in serialized form.
|
220
|
+
elif isinstance(body, str) or isinstance(body, bytes):
|
221
|
+
r = self.pool_manager.request(
|
222
|
+
method,
|
223
|
+
url,
|
224
|
+
body=body,
|
225
|
+
timeout=timeout,
|
226
|
+
headers=headers,
|
227
|
+
preload_content=False
|
228
|
+
)
|
229
|
+
elif headers['Content-Type'] == 'text/plain' and isinstance(body, bool):
|
230
|
+
request_body = "true" if body else "false"
|
231
|
+
r = self.pool_manager.request(
|
232
|
+
method,
|
233
|
+
url,
|
234
|
+
body=request_body,
|
235
|
+
preload_content=False,
|
236
|
+
timeout=timeout,
|
237
|
+
headers=headers)
|
238
|
+
else:
|
239
|
+
# Cannot generate the request from given parameters
|
240
|
+
msg = """Cannot prepare a request message for provided
|
241
|
+
arguments. Please check that your arguments match
|
242
|
+
declared content type."""
|
243
|
+
raise ApiException(status=0, reason=msg)
|
244
|
+
# For `GET`, `HEAD`
|
245
|
+
else:
|
246
|
+
r = self.pool_manager.request(
|
247
|
+
method,
|
248
|
+
url,
|
249
|
+
fields={},
|
250
|
+
timeout=timeout,
|
251
|
+
headers=headers,
|
252
|
+
preload_content=False
|
253
|
+
)
|
254
|
+
except urllib3.exceptions.SSLError as e:
|
255
|
+
msg = "\n".join([type(e).__name__, str(e)])
|
256
|
+
raise ApiException(status=0, reason=msg)
|
257
|
+
|
258
|
+
return RESTResponse(r)
|
@@ -0,0 +1 @@
|
|
1
|
+
v0.24.2
|
graphscope/gsctl/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.29.0a20250114
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
#
|
4
|
+
# Copyright 2023 Alibaba Group Holding Limited. All Rights Reserved.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
import warnings
|
20
|
+
|
21
|
+
# Disable warnings
|
22
|
+
warnings.filterwarnings("ignore", category=Warning)
|