crc-pulp-python-client 20250819.1__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.

Potentially problematic release.


This version of crc-pulp-python-client might be problematic. Click here for more details.

Files changed (120) hide show
  1. crc-pulp_python-client/__init__.py +2 -0
  2. crc-pulp_python-client/api/__init__.py +14 -0
  3. crc-pulp_python-client/api/api_pypi_api.py +370 -0
  4. crc-pulp_python-client/api/api_pypi_legacy_api.py +393 -0
  5. crc-pulp_python-client/api/api_pypi_simple_api.py +1045 -0
  6. crc-pulp_python-client/api/content_packages_api.py +2594 -0
  7. crc-pulp_python-client/api/distributions_pypi_api.py +4186 -0
  8. crc-pulp_python-client/api/publications_pypi_api.py +2881 -0
  9. crc-pulp_python-client/api/pypi_metadata_api.py +385 -0
  10. crc-pulp_python-client/api/remotes_python_api.py +4552 -0
  11. crc-pulp_python-client/api/repositories_python_api.py +4856 -0
  12. crc-pulp_python-client/api/repositories_python_versions_api.py +1670 -0
  13. crc-pulp_python-client/api_client.py +798 -0
  14. crc-pulp_python-client/api_response.py +21 -0
  15. crc-pulp_python-client/configuration.py +628 -0
  16. crc-pulp_python-client/exceptions.py +200 -0
  17. crc-pulp_python-client/models/__init__.py +56 -0
  18. crc-pulp_python-client/models/async_operation_response.py +88 -0
  19. crc-pulp_python-client/models/content_summary_response.py +92 -0
  20. crc-pulp_python-client/models/exclude_platforms_enum.py +40 -0
  21. crc-pulp_python-client/models/my_permissions_response.py +88 -0
  22. crc-pulp_python-client/models/nested_role.py +93 -0
  23. crc-pulp_python-client/models/nested_role_response.py +92 -0
  24. crc-pulp_python-client/models/object_roles_response.py +96 -0
  25. crc-pulp_python-client/models/package_metadata_response.py +109 -0
  26. crc-pulp_python-client/models/package_types_enum.py +44 -0
  27. crc-pulp_python-client/models/package_upload_task_response.py +103 -0
  28. crc-pulp_python-client/models/paginated_repository_version_response_list.py +112 -0
  29. crc-pulp_python-client/models/paginatedpython_python_distribution_response_list.py +112 -0
  30. crc-pulp_python-client/models/paginatedpython_python_package_content_response_list.py +112 -0
  31. crc-pulp_python-client/models/paginatedpython_python_publication_response_list.py +112 -0
  32. crc-pulp_python-client/models/paginatedpython_python_remote_response_list.py +112 -0
  33. crc-pulp_python-client/models/paginatedpython_python_repository_response_list.py +112 -0
  34. crc-pulp_python-client/models/patchedpython_python_distribution.py +125 -0
  35. crc-pulp_python-client/models/patchedpython_python_remote.py +219 -0
  36. crc-pulp_python-client/models/patchedpython_python_repository.py +114 -0
  37. crc-pulp_python-client/models/policy_enum.py +39 -0
  38. crc-pulp_python-client/models/python_python_distribution.py +125 -0
  39. crc-pulp_python-client/models/python_python_distribution_response.py +149 -0
  40. crc-pulp_python-client/models/python_python_package_content_response.py +201 -0
  41. crc-pulp_python-client/models/python_python_publication.py +90 -0
  42. crc-pulp_python-client/models/python_python_publication_response.py +111 -0
  43. crc-pulp_python-client/models/python_python_remote.py +219 -0
  44. crc-pulp_python-client/models/python_python_remote_response.py +213 -0
  45. crc-pulp_python-client/models/python_python_remote_response_hidden_fields_inner.py +90 -0
  46. crc-pulp_python-client/models/python_python_repository.py +114 -0
  47. crc-pulp_python-client/models/python_python_repository_response.py +139 -0
  48. crc-pulp_python-client/models/repair.py +88 -0
  49. crc-pulp_python-client/models/repository_add_remove_content.py +93 -0
  50. crc-pulp_python-client/models/repository_sync_url.py +90 -0
  51. crc-pulp_python-client/models/repository_version_response.py +121 -0
  52. crc-pulp_python-client/models/set_label.py +103 -0
  53. crc-pulp_python-client/models/set_label_response.py +103 -0
  54. crc-pulp_python-client/models/summary_response.py +92 -0
  55. crc-pulp_python-client/models/unset_label.py +96 -0
  56. crc-pulp_python-client/models/unset_label_response.py +100 -0
  57. crc-pulp_python-client/py.typed +0 -0
  58. crc-pulp_python-client/rest.py +258 -0
  59. crc_pulp_python_client-20250819.1.dist-info/METADATA +25 -0
  60. crc_pulp_python_client-20250819.1.dist-info/RECORD +120 -0
  61. crc_pulp_python_client-20250819.1.dist-info/WHEEL +5 -0
  62. crc_pulp_python_client-20250819.1.dist-info/top_level.txt +2 -0
  63. services-pulp_python-client/__init__.py +2 -0
  64. services-pulp_python-client/api/__init__.py +14 -0
  65. services-pulp_python-client/api/api_pypi_api.py +370 -0
  66. services-pulp_python-client/api/api_pypi_legacy_api.py +393 -0
  67. services-pulp_python-client/api/api_pypi_simple_api.py +1045 -0
  68. services-pulp_python-client/api/content_packages_api.py +2594 -0
  69. services-pulp_python-client/api/distributions_pypi_api.py +4186 -0
  70. services-pulp_python-client/api/publications_pypi_api.py +2881 -0
  71. services-pulp_python-client/api/pypi_metadata_api.py +385 -0
  72. services-pulp_python-client/api/remotes_python_api.py +4552 -0
  73. services-pulp_python-client/api/repositories_python_api.py +4856 -0
  74. services-pulp_python-client/api/repositories_python_versions_api.py +1670 -0
  75. services-pulp_python-client/api_client.py +798 -0
  76. services-pulp_python-client/api_response.py +21 -0
  77. services-pulp_python-client/configuration.py +628 -0
  78. services-pulp_python-client/exceptions.py +200 -0
  79. services-pulp_python-client/models/__init__.py +56 -0
  80. services-pulp_python-client/models/async_operation_response.py +88 -0
  81. services-pulp_python-client/models/content_summary_response.py +92 -0
  82. services-pulp_python-client/models/exclude_platforms_enum.py +40 -0
  83. services-pulp_python-client/models/my_permissions_response.py +88 -0
  84. services-pulp_python-client/models/nested_role.py +93 -0
  85. services-pulp_python-client/models/nested_role_response.py +92 -0
  86. services-pulp_python-client/models/object_roles_response.py +96 -0
  87. services-pulp_python-client/models/package_metadata_response.py +109 -0
  88. services-pulp_python-client/models/package_types_enum.py +44 -0
  89. services-pulp_python-client/models/package_upload_task_response.py +103 -0
  90. services-pulp_python-client/models/paginated_repository_version_response_list.py +112 -0
  91. services-pulp_python-client/models/paginatedpython_python_distribution_response_list.py +112 -0
  92. services-pulp_python-client/models/paginatedpython_python_package_content_response_list.py +112 -0
  93. services-pulp_python-client/models/paginatedpython_python_publication_response_list.py +112 -0
  94. services-pulp_python-client/models/paginatedpython_python_remote_response_list.py +112 -0
  95. services-pulp_python-client/models/paginatedpython_python_repository_response_list.py +112 -0
  96. services-pulp_python-client/models/patchedpython_python_distribution.py +125 -0
  97. services-pulp_python-client/models/patchedpython_python_remote.py +219 -0
  98. services-pulp_python-client/models/patchedpython_python_repository.py +114 -0
  99. services-pulp_python-client/models/policy_enum.py +39 -0
  100. services-pulp_python-client/models/python_python_distribution.py +125 -0
  101. services-pulp_python-client/models/python_python_distribution_response.py +149 -0
  102. services-pulp_python-client/models/python_python_package_content_response.py +201 -0
  103. services-pulp_python-client/models/python_python_publication.py +90 -0
  104. services-pulp_python-client/models/python_python_publication_response.py +111 -0
  105. services-pulp_python-client/models/python_python_remote.py +219 -0
  106. services-pulp_python-client/models/python_python_remote_response.py +213 -0
  107. services-pulp_python-client/models/python_python_remote_response_hidden_fields_inner.py +90 -0
  108. services-pulp_python-client/models/python_python_repository.py +114 -0
  109. services-pulp_python-client/models/python_python_repository_response.py +139 -0
  110. services-pulp_python-client/models/repair.py +88 -0
  111. services-pulp_python-client/models/repository_add_remove_content.py +93 -0
  112. services-pulp_python-client/models/repository_sync_url.py +90 -0
  113. services-pulp_python-client/models/repository_version_response.py +121 -0
  114. services-pulp_python-client/models/set_label.py +103 -0
  115. services-pulp_python-client/models/set_label_response.py +103 -0
  116. services-pulp_python-client/models/summary_response.py +92 -0
  117. services-pulp_python-client/models/unset_label.py +96 -0
  118. services-pulp_python-client/models/unset_label_response.py +100 -0
  119. services-pulp_python-client/py.typed +0 -0
  120. services-pulp_python-client/rest.py +258 -0
@@ -0,0 +1,385 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Pulp 3 API
5
+
6
+ Fetch, Upload, Organize, and Distribute Software Packages
7
+
8
+ The version of the OpenAPI document: v3
9
+ Contact: pulp-list@redhat.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+ import warnings
16
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
17
+ from typing import Any, Dict, List, Optional, Tuple, Union
18
+ from typing_extensions import Annotated
19
+
20
+ from pydantic import Field, StrictStr
21
+ from typing import List, Optional
22
+ from typing_extensions import Annotated
23
+ from services-pulp_python-client.models.package_metadata_response import PackageMetadataResponse
24
+
25
+ from services-pulp_python-client.api_client import ApiClient, RequestSerialized
26
+ from services-pulp_python-client.api_response import ApiResponse
27
+ from services-pulp_python-client.rest import RESTResponseType
28
+
29
+
30
+ class PypiMetadataApi:
31
+ """NOTE: This class is auto generated by OpenAPI Generator
32
+ Ref: https://openapi-generator.tech
33
+
34
+ Do not edit the class manually.
35
+ """
36
+
37
+ def __init__(self, api_client=None) -> None:
38
+ if api_client is None:
39
+ api_client = ApiClient.get_default()
40
+ self.api_client = api_client
41
+
42
+
43
+ @validate_call
44
+ def read(
45
+ self,
46
+ meta: StrictStr,
47
+ path: StrictStr,
48
+ x_task_diagnostics: Annotated[Optional[List[StrictStr]], Field(description="List of profilers to use on tasks.")] = None,
49
+ fields: Annotated[Optional[List[StrictStr]], Field(description="A list of fields to include in the response.")] = None,
50
+ exclude_fields: Annotated[Optional[List[StrictStr]], Field(description="A list of fields to exclude from the response.")] = None,
51
+ pulp_domain: StrictStr = "default",
52
+ _request_timeout: Union[
53
+ None,
54
+ Annotated[StrictFloat, Field(gt=0)],
55
+ Tuple[
56
+ Annotated[StrictFloat, Field(gt=0)],
57
+ Annotated[StrictFloat, Field(gt=0)]
58
+ ]
59
+ ] = None,
60
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
61
+ _content_type: Optional[StrictStr] = None,
62
+ _headers: Optional[Dict[StrictStr, Any]] = None,
63
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
64
+ ) -> PackageMetadataResponse:
65
+ """Get package metadata
66
+
67
+ Retrieves the package's core-metadata specified by https://packaging.python.org/specifications/core-metadata/. `meta` must be a path in form of `{package}/json/` or `{package}/{version}/json/`
68
+
69
+ :param meta: (required)
70
+ :type meta: str
71
+ :param path: (required)
72
+ :type path: str
73
+ :param pulp_domain: (required)
74
+ :type pulp_domain: str
75
+ :param x_task_diagnostics: List of profilers to use on tasks.
76
+ :type x_task_diagnostics: List[str]
77
+ :param fields: A list of fields to include in the response.
78
+ :type fields: List[str]
79
+ :param exclude_fields: A list of fields to exclude from the response.
80
+ :type exclude_fields: List[str]
81
+ :param _request_timeout: timeout setting for this request. If one
82
+ number provided, it will be total request
83
+ timeout. It can also be a pair (tuple) of
84
+ (connection, read) timeouts.
85
+ :type _request_timeout: int, tuple(int, int), optional
86
+ :param _request_auth: set to override the auth_settings for an a single
87
+ request; this effectively ignores the
88
+ authentication in the spec for a single request.
89
+ :type _request_auth: dict, optional
90
+ :param _content_type: force content-type for the request.
91
+ :type _content_type: str, Optional
92
+ :param _headers: set to override the headers for a single
93
+ request; this effectively ignores the headers
94
+ in the spec for a single request.
95
+ :type _headers: dict, optional
96
+ :param _host_index: set to override the host_index for a single
97
+ request; this effectively ignores the host_index
98
+ in the spec for a single request.
99
+ :type _host_index: int, optional
100
+ :return: Returns the result object.
101
+ """ # noqa: E501
102
+
103
+ _param = self._read_serialize(
104
+ meta=meta,
105
+ path=path,
106
+ pulp_domain=pulp_domain,
107
+ x_task_diagnostics=x_task_diagnostics,
108
+ fields=fields,
109
+ exclude_fields=exclude_fields,
110
+ _request_auth=_request_auth,
111
+ _content_type=_content_type,
112
+ _headers=_headers,
113
+ _host_index=_host_index
114
+ )
115
+
116
+ _response_types_map: Dict[str, Optional[str]] = {
117
+ '200': "PackageMetadataResponse",
118
+ }
119
+ response_data = self.api_client.call_api(
120
+ *_param,
121
+ _request_timeout=_request_timeout
122
+ )
123
+ response_data.read()
124
+ return self.api_client.response_deserialize(
125
+ response_data=response_data,
126
+ response_types_map=_response_types_map,
127
+ ).data
128
+
129
+
130
+ @validate_call
131
+ def read_with_http_info(
132
+ self,
133
+ meta: StrictStr,
134
+ path: StrictStr,
135
+ x_task_diagnostics: Annotated[Optional[List[StrictStr]], Field(description="List of profilers to use on tasks.")] = None,
136
+ fields: Annotated[Optional[List[StrictStr]], Field(description="A list of fields to include in the response.")] = None,
137
+ exclude_fields: Annotated[Optional[List[StrictStr]], Field(description="A list of fields to exclude from the response.")] = None,
138
+ pulp_domain: StrictStr = "default",
139
+ _request_timeout: Union[
140
+ None,
141
+ Annotated[StrictFloat, Field(gt=0)],
142
+ Tuple[
143
+ Annotated[StrictFloat, Field(gt=0)],
144
+ Annotated[StrictFloat, Field(gt=0)]
145
+ ]
146
+ ] = None,
147
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
148
+ _content_type: Optional[StrictStr] = None,
149
+ _headers: Optional[Dict[StrictStr, Any]] = None,
150
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
151
+ ) -> ApiResponse[PackageMetadataResponse]:
152
+ """Get package metadata
153
+
154
+ Retrieves the package's core-metadata specified by https://packaging.python.org/specifications/core-metadata/. `meta` must be a path in form of `{package}/json/` or `{package}/{version}/json/`
155
+
156
+ :param meta: (required)
157
+ :type meta: str
158
+ :param path: (required)
159
+ :type path: str
160
+ :param pulp_domain: (required)
161
+ :type pulp_domain: str
162
+ :param x_task_diagnostics: List of profilers to use on tasks.
163
+ :type x_task_diagnostics: List[str]
164
+ :param fields: A list of fields to include in the response.
165
+ :type fields: List[str]
166
+ :param exclude_fields: A list of fields to exclude from the response.
167
+ :type exclude_fields: List[str]
168
+ :param _request_timeout: timeout setting for this request. If one
169
+ number provided, it will be total request
170
+ timeout. It can also be a pair (tuple) of
171
+ (connection, read) timeouts.
172
+ :type _request_timeout: int, tuple(int, int), optional
173
+ :param _request_auth: set to override the auth_settings for an a single
174
+ request; this effectively ignores the
175
+ authentication in the spec for a single request.
176
+ :type _request_auth: dict, optional
177
+ :param _content_type: force content-type for the request.
178
+ :type _content_type: str, Optional
179
+ :param _headers: set to override the headers for a single
180
+ request; this effectively ignores the headers
181
+ in the spec for a single request.
182
+ :type _headers: dict, optional
183
+ :param _host_index: set to override the host_index for a single
184
+ request; this effectively ignores the host_index
185
+ in the spec for a single request.
186
+ :type _host_index: int, optional
187
+ :return: Returns the result object.
188
+ """ # noqa: E501
189
+
190
+ _param = self._read_serialize(
191
+ meta=meta,
192
+ path=path,
193
+ pulp_domain=pulp_domain,
194
+ x_task_diagnostics=x_task_diagnostics,
195
+ fields=fields,
196
+ exclude_fields=exclude_fields,
197
+ _request_auth=_request_auth,
198
+ _content_type=_content_type,
199
+ _headers=_headers,
200
+ _host_index=_host_index
201
+ )
202
+
203
+ _response_types_map: Dict[str, Optional[str]] = {
204
+ '200': "PackageMetadataResponse",
205
+ }
206
+ response_data = self.api_client.call_api(
207
+ *_param,
208
+ _request_timeout=_request_timeout
209
+ )
210
+ response_data.read()
211
+ return self.api_client.response_deserialize(
212
+ response_data=response_data,
213
+ response_types_map=_response_types_map,
214
+ )
215
+
216
+
217
+ @validate_call
218
+ def read_without_preload_content(
219
+ self,
220
+ meta: StrictStr,
221
+ path: StrictStr,
222
+ x_task_diagnostics: Annotated[Optional[List[StrictStr]], Field(description="List of profilers to use on tasks.")] = None,
223
+ fields: Annotated[Optional[List[StrictStr]], Field(description="A list of fields to include in the response.")] = None,
224
+ exclude_fields: Annotated[Optional[List[StrictStr]], Field(description="A list of fields to exclude from the response.")] = None,
225
+ pulp_domain: StrictStr = "default",
226
+ _request_timeout: Union[
227
+ None,
228
+ Annotated[StrictFloat, Field(gt=0)],
229
+ Tuple[
230
+ Annotated[StrictFloat, Field(gt=0)],
231
+ Annotated[StrictFloat, Field(gt=0)]
232
+ ]
233
+ ] = None,
234
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
235
+ _content_type: Optional[StrictStr] = None,
236
+ _headers: Optional[Dict[StrictStr, Any]] = None,
237
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
238
+ ) -> RESTResponseType:
239
+ """Get package metadata
240
+
241
+ Retrieves the package's core-metadata specified by https://packaging.python.org/specifications/core-metadata/. `meta` must be a path in form of `{package}/json/` or `{package}/{version}/json/`
242
+
243
+ :param meta: (required)
244
+ :type meta: str
245
+ :param path: (required)
246
+ :type path: str
247
+ :param pulp_domain: (required)
248
+ :type pulp_domain: str
249
+ :param x_task_diagnostics: List of profilers to use on tasks.
250
+ :type x_task_diagnostics: List[str]
251
+ :param fields: A list of fields to include in the response.
252
+ :type fields: List[str]
253
+ :param exclude_fields: A list of fields to exclude from the response.
254
+ :type exclude_fields: List[str]
255
+ :param _request_timeout: timeout setting for this request. If one
256
+ number provided, it will be total request
257
+ timeout. It can also be a pair (tuple) of
258
+ (connection, read) timeouts.
259
+ :type _request_timeout: int, tuple(int, int), optional
260
+ :param _request_auth: set to override the auth_settings for an a single
261
+ request; this effectively ignores the
262
+ authentication in the spec for a single request.
263
+ :type _request_auth: dict, optional
264
+ :param _content_type: force content-type for the request.
265
+ :type _content_type: str, Optional
266
+ :param _headers: set to override the headers for a single
267
+ request; this effectively ignores the headers
268
+ in the spec for a single request.
269
+ :type _headers: dict, optional
270
+ :param _host_index: set to override the host_index for a single
271
+ request; this effectively ignores the host_index
272
+ in the spec for a single request.
273
+ :type _host_index: int, optional
274
+ :return: Returns the result object.
275
+ """ # noqa: E501
276
+
277
+ _param = self._read_serialize(
278
+ meta=meta,
279
+ path=path,
280
+ pulp_domain=pulp_domain,
281
+ x_task_diagnostics=x_task_diagnostics,
282
+ fields=fields,
283
+ exclude_fields=exclude_fields,
284
+ _request_auth=_request_auth,
285
+ _content_type=_content_type,
286
+ _headers=_headers,
287
+ _host_index=_host_index
288
+ )
289
+
290
+ _response_types_map: Dict[str, Optional[str]] = {
291
+ '200': "PackageMetadataResponse",
292
+ }
293
+ response_data = self.api_client.call_api(
294
+ *_param,
295
+ _request_timeout=_request_timeout
296
+ )
297
+ return response_data.response
298
+
299
+
300
+ def _read_serialize(
301
+ self,
302
+ meta,
303
+ path,
304
+ pulp_domain,
305
+ x_task_diagnostics,
306
+ fields,
307
+ exclude_fields,
308
+ _request_auth,
309
+ _content_type,
310
+ _headers,
311
+ _host_index,
312
+ ) -> RequestSerialized:
313
+
314
+ _host = None
315
+
316
+ _collection_formats: Dict[str, str] = {
317
+ 'X-Task-Diagnostics': 'csv',
318
+ 'fields': 'multi',
319
+ 'exclude_fields': 'multi',
320
+ }
321
+
322
+ _path_params: Dict[str, str] = {}
323
+ _query_params: List[Tuple[str, str]] = []
324
+ _header_params: Dict[str, Optional[str]] = _headers or {}
325
+ _form_params: List[Tuple[str, str]] = []
326
+ _files: Dict[
327
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
328
+ ] = {}
329
+ _body_params: Optional[bytes] = None
330
+
331
+ # process the path parameters
332
+ if meta is not None:
333
+ _path_params['meta'] = meta
334
+ if path is not None:
335
+ _path_params['path'] = path
336
+ if pulp_domain is not None:
337
+ _path_params['pulp_domain'] = pulp_domain
338
+ # process the query parameters
339
+ if fields is not None:
340
+
341
+ _query_params.append(('fields', fields))
342
+
343
+ if exclude_fields is not None:
344
+
345
+ _query_params.append(('exclude_fields', exclude_fields))
346
+
347
+ # process the header parameters
348
+ if x_task_diagnostics is not None:
349
+ _header_params['X-Task-Diagnostics'] = x_task_diagnostics
350
+ # process the form parameters
351
+ # process the body parameter
352
+
353
+
354
+ # set the HTTP header `Accept`
355
+ if 'Accept' not in _header_params:
356
+ _header_params['Accept'] = self.api_client.select_header_accept(
357
+ [
358
+ 'application/json'
359
+ ]
360
+ )
361
+
362
+
363
+ # authentication setting
364
+ _auth_settings: List[str] = [
365
+ 'json_header_remote_authentication',
366
+ 'basicAuth',
367
+ 'cookieAuth'
368
+ ]
369
+
370
+ return self.api_client.param_serialize(
371
+ method='GET',
372
+ resource_path='/api/pulp/pypi/{pulp_domain}/{path}/pypi/{meta}/',
373
+ path_params=_path_params,
374
+ query_params=_query_params,
375
+ header_params=_header_params,
376
+ body=_body_params,
377
+ post_params=_form_params,
378
+ files=_files,
379
+ auth_settings=_auth_settings,
380
+ collection_formats=_collection_formats,
381
+ _host=_host,
382
+ _request_auth=_request_auth
383
+ )
384
+
385
+