FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
volcengine-python-sdk/volcenginesdkarkruntime/_qs.py at master · volcengine/volcengine-python-sdk · GitHub
volcengine
/
volcengine-python-sdk
Public
Notifications
You must be signed in to change notification settings
Fork
29
Star
188
Code
Issues
0
Pull requests
4
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
volcengine-python-sdk
/
volcenginesdkarkruntime
/
_qs.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
168 lines (147 loc) · 5.15 KB
Breadcrumbs
volcengine-python-sdk
/
volcenginesdkarkruntime
/
_qs.py
Copy path
File metadata and controls
168 lines (147 loc) · 5.15 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
from
__future__
import
annotations
from
typing
import
Any
,
List
,
Tuple
,
Union
,
Mapping
,
TypeVar
from
urllib
.
parse
import
parse_qs
,
urlencode
from
typing_extensions
import
Literal
,
get_args
from
.
_types
import
NOT_GIVEN
,
NotGiven
,
NotGivenOr
from
.
_utils
import
flatten
_T
=
TypeVar
(
"_T"
)
ArrayFormat
=
Literal
[
"comma"
,
"repeat"
,
"indices"
,
"brackets"
]
NestedFormat
=
Literal
[
"dots"
,
"brackets"
]
PrimitiveData
=
Union
[
str
,
int
,
float
,
bool
,
None
]
# this should be Data = Union[PrimitiveData, "List[Data]", "Tuple[Data]", "Mapping[str, Data]"]
# https://github.com/microsoft/pyright/issues/3555
Data
=
Union
[
PrimitiveData
,
List
[
Any
],
Tuple
[
Any
],
"Mapping[str, Any]"
]
Params
=
Mapping
[
str
,
Data
]
class
Querystring
:
array_format
:
ArrayFormat
nested_format
:
NestedFormat
def
__init__
(
self
,
*
,
array_format
:
ArrayFormat
=
"repeat"
,
nested_format
:
NestedFormat
=
"brackets"
,
)
->
None
:
self
.
array_format
=
array_format
self
.
nested_format
=
nested_format
def
parse
(
self
,
query
:
str
)
->
Mapping
[
str
,
object
]:
# Note: custom format syntax is not supported yet
return
parse_qs
(
query
)
def
stringify
(
self
,
params
:
Params
,
*
,
array_format
:
NotGivenOr
[
ArrayFormat
]
=
NOT_GIVEN
,
nested_format
:
NotGivenOr
[
NestedFormat
]
=
NOT_GIVEN
,
)
->
str
:
return
urlencode
(
self
.
stringify_items
(
params
,
array_format
=
array_format
,
nested_format
=
nested_format
,
)
)
def
stringify_items
(
self
,
params
:
Params
,
*
,
array_format
:
NotGivenOr
[
ArrayFormat
]
=
NOT_GIVEN
,
nested_format
:
NotGivenOr
[
NestedFormat
]
=
NOT_GIVEN
,
)
->
list
[
tuple
[
str
,
str
]]:
opts
=
Options
(
qs
=
self
,
array_format
=
array_format
,
nested_format
=
nested_format
,
)
if
isinstance
(
params
,
list
):
return
flatten
(
[
self
.
_stringify_item
(
key
,
value
,
opts
)
for
key
,
value
in
params
]
)
return
flatten
(
[
self
.
_stringify_item
(
key
,
value
,
opts
)
for
key
,
value
in
params
.
items
()]
)
def
_stringify_item
(
self
,
key
:
str
,
value
:
Data
,
opts
:
Options
,
)
->
list
[
tuple
[
str
,
str
]]:
if
isinstance
(
value
,
Mapping
):
items
:
list
[
tuple
[
str
,
str
]]
=
[]
nested_format
=
opts
.
nested_format
for
subkey
,
subvalue
in
value
.
items
():
items
.
extend
(
self
.
_stringify_item
(
# TODO: error if unknown format
f"
{
key
}
.
{
subkey
}
"
if
nested_format
==
"dots"
else
f"
{
key
}
[
{
subkey
}
]"
,
subvalue
,
opts
,
)
)
return
items
if
isinstance
(
value
, (
list
,
tuple
)):
array_format
=
opts
.
array_format
if
array_format
==
"comma"
:
return
[
(
key
,
","
.
join
(
self
.
_primitive_value_to_str
(
item
)
for
item
in
value
if
item
is
not
None
),
),
]
elif
array_format
==
"repeat"
:
items
=
[]
for
item
in
value
:
items
.
extend
(
self
.
_stringify_item
(
key
,
item
,
opts
))
return
items
elif
array_format
==
"indices"
:
raise
NotImplementedError
(
"The array indices format is not supported yet"
)
elif
array_format
==
"brackets"
:
items
=
[]
key
=
key
+
"[]"
for
item
in
value
:
items
.
extend
(
self
.
_stringify_item
(
key
,
item
,
opts
))
return
items
else
:
raise
NotImplementedError
(
f"Unknown array_format value:
{
array_format
}
, choose from
{
', '
.
join
(
get_args
(
ArrayFormat
))
}
"
)
serialised
=
self
.
_primitive_value_to_str
(
value
)
if
not
serialised
:
return
[]
return
[(
key
,
serialised
)]
def
_primitive_value_to_str
(
self
,
value
:
PrimitiveData
)
->
str
:
# copied from httpx
if
value
is
True
:
return
"true"
elif
value
is
False
:
return
"false"
elif
value
is
None
:
return
""
return
str
(
value
)
_qs
=
Querystring
()
parse
=
_qs
.
parse
stringify
=
_qs
.
stringify
stringify_items
=
_qs
.
stringify_items
class
Options
:
array_format
:
ArrayFormat
nested_format
:
NestedFormat
def
__init__
(
self
,
qs
:
Querystring
=
_qs
,
*
,
array_format
:
NotGivenOr
[
ArrayFormat
]
=
NOT_GIVEN
,
nested_format
:
NotGivenOr
[
NestedFormat
]
=
NOT_GIVEN
,
)
->
None
:
self
.
array_format
=
(
qs
.
array_format
if
isinstance
(
array_format
,
NotGiven
)
else
array_format
)
self
.
nested_format
=
(
qs
.
nested_format
if
isinstance
(
nested_format
,
NotGiven
)
else
nested_format
)
Back
|
FazBrowse Home
|
New Git URL