gnetclisdk 0.0__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.
- gnetclisdk/auth.py +41 -0
- gnetclisdk/client.py +481 -0
- gnetclisdk/exceptions.py +116 -0
- gnetclisdk/interceptors.py +196 -0
- gnetclisdk/proto/server_pb2.py +83 -0
- gnetclisdk/proto/server_pb2.pyi +190 -0
- gnetclisdk/proto/server_pb2_grpc.py +399 -0
- gnetclisdk-0.0.dist-info/METADATA +45 -0
- gnetclisdk-0.0.dist-info/RECORD +11 -0
- gnetclisdk-0.0.dist-info/WHEEL +5 -0
- gnetclisdk-0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,399 @@
|
|
1
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
2
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
3
|
+
import grpc
|
4
|
+
import warnings
|
5
|
+
|
6
|
+
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
|
7
|
+
from . import server_pb2 as server__pb2
|
8
|
+
|
9
|
+
GRPC_GENERATED_VERSION = '1.66.1'
|
10
|
+
GRPC_VERSION = grpc.__version__
|
11
|
+
_version_not_supported = False
|
12
|
+
|
13
|
+
try:
|
14
|
+
from grpc._utilities import first_version_is_lower
|
15
|
+
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
16
|
+
except ImportError:
|
17
|
+
_version_not_supported = True
|
18
|
+
|
19
|
+
if _version_not_supported:
|
20
|
+
raise RuntimeError(
|
21
|
+
f'The grpc package installed is at version {GRPC_VERSION},'
|
22
|
+
+ f' but the generated code in server_pb2_grpc.py depends on'
|
23
|
+
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
24
|
+
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
25
|
+
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
26
|
+
)
|
27
|
+
|
28
|
+
|
29
|
+
class GnetcliStub(object):
|
30
|
+
"""Missing associated documentation comment in .proto file."""
|
31
|
+
|
32
|
+
def __init__(self, channel):
|
33
|
+
"""Constructor.
|
34
|
+
|
35
|
+
Args:
|
36
|
+
channel: A grpc.Channel.
|
37
|
+
"""
|
38
|
+
self.SetupHostParams = channel.unary_unary(
|
39
|
+
'/gnetcli.Gnetcli/SetupHostParams',
|
40
|
+
request_serializer=server__pb2.HostParams.SerializeToString,
|
41
|
+
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
|
42
|
+
_registered_method=True)
|
43
|
+
self.Exec = channel.unary_unary(
|
44
|
+
'/gnetcli.Gnetcli/Exec',
|
45
|
+
request_serializer=server__pb2.CMD.SerializeToString,
|
46
|
+
response_deserializer=server__pb2.CMDResult.FromString,
|
47
|
+
_registered_method=True)
|
48
|
+
self.ExecChat = channel.stream_stream(
|
49
|
+
'/gnetcli.Gnetcli/ExecChat',
|
50
|
+
request_serializer=server__pb2.CMD.SerializeToString,
|
51
|
+
response_deserializer=server__pb2.CMDResult.FromString,
|
52
|
+
_registered_method=True)
|
53
|
+
self.AddDevice = channel.unary_unary(
|
54
|
+
'/gnetcli.Gnetcli/AddDevice',
|
55
|
+
request_serializer=server__pb2.Device.SerializeToString,
|
56
|
+
response_deserializer=server__pb2.DeviceResult.FromString,
|
57
|
+
_registered_method=True)
|
58
|
+
self.ExecNetconf = channel.unary_unary(
|
59
|
+
'/gnetcli.Gnetcli/ExecNetconf',
|
60
|
+
request_serializer=server__pb2.CMDNetconf.SerializeToString,
|
61
|
+
response_deserializer=server__pb2.CMDResult.FromString,
|
62
|
+
_registered_method=True)
|
63
|
+
self.ExecNetconfChat = channel.stream_stream(
|
64
|
+
'/gnetcli.Gnetcli/ExecNetconfChat',
|
65
|
+
request_serializer=server__pb2.CMDNetconf.SerializeToString,
|
66
|
+
response_deserializer=server__pb2.CMDResult.FromString,
|
67
|
+
_registered_method=True)
|
68
|
+
self.Download = channel.unary_unary(
|
69
|
+
'/gnetcli.Gnetcli/Download',
|
70
|
+
request_serializer=server__pb2.FileDownloadRequest.SerializeToString,
|
71
|
+
response_deserializer=server__pb2.FilesResult.FromString,
|
72
|
+
_registered_method=True)
|
73
|
+
self.Upload = channel.unary_unary(
|
74
|
+
'/gnetcli.Gnetcli/Upload',
|
75
|
+
request_serializer=server__pb2.FileUploadRequest.SerializeToString,
|
76
|
+
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
|
77
|
+
_registered_method=True)
|
78
|
+
|
79
|
+
|
80
|
+
class GnetcliServicer(object):
|
81
|
+
"""Missing associated documentation comment in .proto file."""
|
82
|
+
|
83
|
+
def SetupHostParams(self, request, context):
|
84
|
+
"""Missing associated documentation comment in .proto file."""
|
85
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
86
|
+
context.set_details('Method not implemented!')
|
87
|
+
raise NotImplementedError('Method not implemented!')
|
88
|
+
|
89
|
+
def Exec(self, request, context):
|
90
|
+
"""Missing associated documentation comment in .proto file."""
|
91
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
92
|
+
context.set_details('Method not implemented!')
|
93
|
+
raise NotImplementedError('Method not implemented!')
|
94
|
+
|
95
|
+
def ExecChat(self, request_iterator, context):
|
96
|
+
"""Missing associated documentation comment in .proto file."""
|
97
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
98
|
+
context.set_details('Method not implemented!')
|
99
|
+
raise NotImplementedError('Method not implemented!')
|
100
|
+
|
101
|
+
def AddDevice(self, request, context):
|
102
|
+
"""Missing associated documentation comment in .proto file."""
|
103
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
104
|
+
context.set_details('Method not implemented!')
|
105
|
+
raise NotImplementedError('Method not implemented!')
|
106
|
+
|
107
|
+
def ExecNetconf(self, request, context):
|
108
|
+
"""Missing associated documentation comment in .proto file."""
|
109
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
110
|
+
context.set_details('Method not implemented!')
|
111
|
+
raise NotImplementedError('Method not implemented!')
|
112
|
+
|
113
|
+
def ExecNetconfChat(self, request_iterator, context):
|
114
|
+
"""Missing associated documentation comment in .proto file."""
|
115
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
116
|
+
context.set_details('Method not implemented!')
|
117
|
+
raise NotImplementedError('Method not implemented!')
|
118
|
+
|
119
|
+
def Download(self, request, context):
|
120
|
+
"""Missing associated documentation comment in .proto file."""
|
121
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
122
|
+
context.set_details('Method not implemented!')
|
123
|
+
raise NotImplementedError('Method not implemented!')
|
124
|
+
|
125
|
+
def Upload(self, request, context):
|
126
|
+
"""Missing associated documentation comment in .proto file."""
|
127
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
128
|
+
context.set_details('Method not implemented!')
|
129
|
+
raise NotImplementedError('Method not implemented!')
|
130
|
+
|
131
|
+
|
132
|
+
def add_GnetcliServicer_to_server(servicer, server):
|
133
|
+
rpc_method_handlers = {
|
134
|
+
'SetupHostParams': grpc.unary_unary_rpc_method_handler(
|
135
|
+
servicer.SetupHostParams,
|
136
|
+
request_deserializer=server__pb2.HostParams.FromString,
|
137
|
+
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
|
138
|
+
),
|
139
|
+
'Exec': grpc.unary_unary_rpc_method_handler(
|
140
|
+
servicer.Exec,
|
141
|
+
request_deserializer=server__pb2.CMD.FromString,
|
142
|
+
response_serializer=server__pb2.CMDResult.SerializeToString,
|
143
|
+
),
|
144
|
+
'ExecChat': grpc.stream_stream_rpc_method_handler(
|
145
|
+
servicer.ExecChat,
|
146
|
+
request_deserializer=server__pb2.CMD.FromString,
|
147
|
+
response_serializer=server__pb2.CMDResult.SerializeToString,
|
148
|
+
),
|
149
|
+
'AddDevice': grpc.unary_unary_rpc_method_handler(
|
150
|
+
servicer.AddDevice,
|
151
|
+
request_deserializer=server__pb2.Device.FromString,
|
152
|
+
response_serializer=server__pb2.DeviceResult.SerializeToString,
|
153
|
+
),
|
154
|
+
'ExecNetconf': grpc.unary_unary_rpc_method_handler(
|
155
|
+
servicer.ExecNetconf,
|
156
|
+
request_deserializer=server__pb2.CMDNetconf.FromString,
|
157
|
+
response_serializer=server__pb2.CMDResult.SerializeToString,
|
158
|
+
),
|
159
|
+
'ExecNetconfChat': grpc.stream_stream_rpc_method_handler(
|
160
|
+
servicer.ExecNetconfChat,
|
161
|
+
request_deserializer=server__pb2.CMDNetconf.FromString,
|
162
|
+
response_serializer=server__pb2.CMDResult.SerializeToString,
|
163
|
+
),
|
164
|
+
'Download': grpc.unary_unary_rpc_method_handler(
|
165
|
+
servicer.Download,
|
166
|
+
request_deserializer=server__pb2.FileDownloadRequest.FromString,
|
167
|
+
response_serializer=server__pb2.FilesResult.SerializeToString,
|
168
|
+
),
|
169
|
+
'Upload': grpc.unary_unary_rpc_method_handler(
|
170
|
+
servicer.Upload,
|
171
|
+
request_deserializer=server__pb2.FileUploadRequest.FromString,
|
172
|
+
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
|
173
|
+
),
|
174
|
+
}
|
175
|
+
generic_handler = grpc.method_handlers_generic_handler(
|
176
|
+
'gnetcli.Gnetcli', rpc_method_handlers)
|
177
|
+
server.add_generic_rpc_handlers((generic_handler,))
|
178
|
+
server.add_registered_method_handlers('gnetcli.Gnetcli', rpc_method_handlers)
|
179
|
+
|
180
|
+
|
181
|
+
# This class is part of an EXPERIMENTAL API.
|
182
|
+
class Gnetcli(object):
|
183
|
+
"""Missing associated documentation comment in .proto file."""
|
184
|
+
|
185
|
+
@staticmethod
|
186
|
+
def SetupHostParams(request,
|
187
|
+
target,
|
188
|
+
options=(),
|
189
|
+
channel_credentials=None,
|
190
|
+
call_credentials=None,
|
191
|
+
insecure=False,
|
192
|
+
compression=None,
|
193
|
+
wait_for_ready=None,
|
194
|
+
timeout=None,
|
195
|
+
metadata=None):
|
196
|
+
return grpc.experimental.unary_unary(
|
197
|
+
request,
|
198
|
+
target,
|
199
|
+
'/gnetcli.Gnetcli/SetupHostParams',
|
200
|
+
server__pb2.HostParams.SerializeToString,
|
201
|
+
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
|
202
|
+
options,
|
203
|
+
channel_credentials,
|
204
|
+
insecure,
|
205
|
+
call_credentials,
|
206
|
+
compression,
|
207
|
+
wait_for_ready,
|
208
|
+
timeout,
|
209
|
+
metadata,
|
210
|
+
_registered_method=True)
|
211
|
+
|
212
|
+
@staticmethod
|
213
|
+
def Exec(request,
|
214
|
+
target,
|
215
|
+
options=(),
|
216
|
+
channel_credentials=None,
|
217
|
+
call_credentials=None,
|
218
|
+
insecure=False,
|
219
|
+
compression=None,
|
220
|
+
wait_for_ready=None,
|
221
|
+
timeout=None,
|
222
|
+
metadata=None):
|
223
|
+
return grpc.experimental.unary_unary(
|
224
|
+
request,
|
225
|
+
target,
|
226
|
+
'/gnetcli.Gnetcli/Exec',
|
227
|
+
server__pb2.CMD.SerializeToString,
|
228
|
+
server__pb2.CMDResult.FromString,
|
229
|
+
options,
|
230
|
+
channel_credentials,
|
231
|
+
insecure,
|
232
|
+
call_credentials,
|
233
|
+
compression,
|
234
|
+
wait_for_ready,
|
235
|
+
timeout,
|
236
|
+
metadata,
|
237
|
+
_registered_method=True)
|
238
|
+
|
239
|
+
@staticmethod
|
240
|
+
def ExecChat(request_iterator,
|
241
|
+
target,
|
242
|
+
options=(),
|
243
|
+
channel_credentials=None,
|
244
|
+
call_credentials=None,
|
245
|
+
insecure=False,
|
246
|
+
compression=None,
|
247
|
+
wait_for_ready=None,
|
248
|
+
timeout=None,
|
249
|
+
metadata=None):
|
250
|
+
return grpc.experimental.stream_stream(
|
251
|
+
request_iterator,
|
252
|
+
target,
|
253
|
+
'/gnetcli.Gnetcli/ExecChat',
|
254
|
+
server__pb2.CMD.SerializeToString,
|
255
|
+
server__pb2.CMDResult.FromString,
|
256
|
+
options,
|
257
|
+
channel_credentials,
|
258
|
+
insecure,
|
259
|
+
call_credentials,
|
260
|
+
compression,
|
261
|
+
wait_for_ready,
|
262
|
+
timeout,
|
263
|
+
metadata,
|
264
|
+
_registered_method=True)
|
265
|
+
|
266
|
+
@staticmethod
|
267
|
+
def AddDevice(request,
|
268
|
+
target,
|
269
|
+
options=(),
|
270
|
+
channel_credentials=None,
|
271
|
+
call_credentials=None,
|
272
|
+
insecure=False,
|
273
|
+
compression=None,
|
274
|
+
wait_for_ready=None,
|
275
|
+
timeout=None,
|
276
|
+
metadata=None):
|
277
|
+
return grpc.experimental.unary_unary(
|
278
|
+
request,
|
279
|
+
target,
|
280
|
+
'/gnetcli.Gnetcli/AddDevice',
|
281
|
+
server__pb2.Device.SerializeToString,
|
282
|
+
server__pb2.DeviceResult.FromString,
|
283
|
+
options,
|
284
|
+
channel_credentials,
|
285
|
+
insecure,
|
286
|
+
call_credentials,
|
287
|
+
compression,
|
288
|
+
wait_for_ready,
|
289
|
+
timeout,
|
290
|
+
metadata,
|
291
|
+
_registered_method=True)
|
292
|
+
|
293
|
+
@staticmethod
|
294
|
+
def ExecNetconf(request,
|
295
|
+
target,
|
296
|
+
options=(),
|
297
|
+
channel_credentials=None,
|
298
|
+
call_credentials=None,
|
299
|
+
insecure=False,
|
300
|
+
compression=None,
|
301
|
+
wait_for_ready=None,
|
302
|
+
timeout=None,
|
303
|
+
metadata=None):
|
304
|
+
return grpc.experimental.unary_unary(
|
305
|
+
request,
|
306
|
+
target,
|
307
|
+
'/gnetcli.Gnetcli/ExecNetconf',
|
308
|
+
server__pb2.CMDNetconf.SerializeToString,
|
309
|
+
server__pb2.CMDResult.FromString,
|
310
|
+
options,
|
311
|
+
channel_credentials,
|
312
|
+
insecure,
|
313
|
+
call_credentials,
|
314
|
+
compression,
|
315
|
+
wait_for_ready,
|
316
|
+
timeout,
|
317
|
+
metadata,
|
318
|
+
_registered_method=True)
|
319
|
+
|
320
|
+
@staticmethod
|
321
|
+
def ExecNetconfChat(request_iterator,
|
322
|
+
target,
|
323
|
+
options=(),
|
324
|
+
channel_credentials=None,
|
325
|
+
call_credentials=None,
|
326
|
+
insecure=False,
|
327
|
+
compression=None,
|
328
|
+
wait_for_ready=None,
|
329
|
+
timeout=None,
|
330
|
+
metadata=None):
|
331
|
+
return grpc.experimental.stream_stream(
|
332
|
+
request_iterator,
|
333
|
+
target,
|
334
|
+
'/gnetcli.Gnetcli/ExecNetconfChat',
|
335
|
+
server__pb2.CMDNetconf.SerializeToString,
|
336
|
+
server__pb2.CMDResult.FromString,
|
337
|
+
options,
|
338
|
+
channel_credentials,
|
339
|
+
insecure,
|
340
|
+
call_credentials,
|
341
|
+
compression,
|
342
|
+
wait_for_ready,
|
343
|
+
timeout,
|
344
|
+
metadata,
|
345
|
+
_registered_method=True)
|
346
|
+
|
347
|
+
@staticmethod
|
348
|
+
def Download(request,
|
349
|
+
target,
|
350
|
+
options=(),
|
351
|
+
channel_credentials=None,
|
352
|
+
call_credentials=None,
|
353
|
+
insecure=False,
|
354
|
+
compression=None,
|
355
|
+
wait_for_ready=None,
|
356
|
+
timeout=None,
|
357
|
+
metadata=None):
|
358
|
+
return grpc.experimental.unary_unary(
|
359
|
+
request,
|
360
|
+
target,
|
361
|
+
'/gnetcli.Gnetcli/Download',
|
362
|
+
server__pb2.FileDownloadRequest.SerializeToString,
|
363
|
+
server__pb2.FilesResult.FromString,
|
364
|
+
options,
|
365
|
+
channel_credentials,
|
366
|
+
insecure,
|
367
|
+
call_credentials,
|
368
|
+
compression,
|
369
|
+
wait_for_ready,
|
370
|
+
timeout,
|
371
|
+
metadata,
|
372
|
+
_registered_method=True)
|
373
|
+
|
374
|
+
@staticmethod
|
375
|
+
def Upload(request,
|
376
|
+
target,
|
377
|
+
options=(),
|
378
|
+
channel_credentials=None,
|
379
|
+
call_credentials=None,
|
380
|
+
insecure=False,
|
381
|
+
compression=None,
|
382
|
+
wait_for_ready=None,
|
383
|
+
timeout=None,
|
384
|
+
metadata=None):
|
385
|
+
return grpc.experimental.unary_unary(
|
386
|
+
request,
|
387
|
+
target,
|
388
|
+
'/gnetcli.Gnetcli/Upload',
|
389
|
+
server__pb2.FileUploadRequest.SerializeToString,
|
390
|
+
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
|
391
|
+
options,
|
392
|
+
channel_credentials,
|
393
|
+
insecure,
|
394
|
+
call_credentials,
|
395
|
+
compression,
|
396
|
+
wait_for_ready,
|
397
|
+
timeout,
|
398
|
+
metadata,
|
399
|
+
_registered_method=True)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: gnetclisdk
|
3
|
+
Version: 0.0
|
4
|
+
Summary: Client for Gnetcli GRPC-server
|
5
|
+
Home-page: https://github.com/annetutil/gnetcli
|
6
|
+
Author: Alexander Balezin
|
7
|
+
Author-email: gescheit12@gmail.com
|
8
|
+
License: MIT
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
10
|
+
Classifier: Intended Audience :: Developers
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
12
|
+
Classifier: Programming Language :: Python :: 3.8
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
15
|
+
Description-Content-Type: text/markdown
|
16
|
+
Requires-Dist: protobuf ==4.24.4
|
17
|
+
Requires-Dist: grpcio ==1.59.2
|
18
|
+
Requires-Dist: googleapis-common-protos ==1.61.0
|
19
|
+
|
20
|
+
## Python client for Gnetcli GRPC server
|
21
|
+
|
22
|
+
Gnetcli provides a universal way to execute arbitrary commands using a CLI,
|
23
|
+
eliminating the need for screen scraping with expect.
|
24
|
+
|
25
|
+
See documentation on [gnetcli server](https://annetutil.github.io/gnetcli/).
|
26
|
+
|
27
|
+
Example:
|
28
|
+
|
29
|
+
```python
|
30
|
+
from gnetclisdk.client import Credentials, Gnetcli
|
31
|
+
import os, asyncio
|
32
|
+
|
33
|
+
async def example():
|
34
|
+
api = Gnetcli(insecure_grpc=True)
|
35
|
+
dev_creds = Credentials(os.environ.get("LOGIN"), os.environ.get("PASSWORD"))
|
36
|
+
res = await api.cmd(hostname="myhost", device="huawei", cmd="dis clock", credentials=dev_creds)
|
37
|
+
print("err=%s status=%s out=%s" % (res.error, res.status, res.out))
|
38
|
+
|
39
|
+
asyncio.run(example())
|
40
|
+
```
|
41
|
+
|
42
|
+
Output:
|
43
|
+
```
|
44
|
+
err=b'' status=0 out=b'2023-11-10 09:31:58\nFriday\nTime Zone(UTC) : UTC'
|
45
|
+
```
|
@@ -0,0 +1,11 @@
|
|
1
|
+
gnetclisdk/auth.py,sha256=GwM7H7Ecb-gwqUTkQorifNB_mtnZfgeS46gOW2Vx1U4,1246
|
2
|
+
gnetclisdk/client.py,sha256=NvhxhxZ3YCVLnAslKao_YnnLWOWV76hx8v8_jUSNQsM,17317
|
3
|
+
gnetclisdk/exceptions.py,sha256=d0Bcq8tnAzemCuCCrGJEmL_A1IQxCCLFRCwDhr9zvkU,2683
|
4
|
+
gnetclisdk/interceptors.py,sha256=apj3l4lnR2ZcsA49odptrBC0kTDmP6Mp0EzYkeEJz9Y,7010
|
5
|
+
gnetclisdk/proto/server_pb2.py,sha256=YL1_7wubJbSp97OeRZ_L9qJjbM2U-PMcfOg-_QpkjWs,8360
|
6
|
+
gnetclisdk/proto/server_pb2.pyi,sha256=th-HnFVkR1ZEY-XmFmk8VMfDj_4uFAoSAXH61mSlVec,8295
|
7
|
+
gnetclisdk/proto/server_pb2_grpc.py,sha256=rjuNEIfeqwFw99oSiWUyvNKCKPgITJZKcL8pQPbUQvM,14967
|
8
|
+
gnetclisdk-0.0.dist-info/METADATA,sha256=NZSdVwA36BQMobM-9EsRqFOBOFcyinTeO2siwf3Z3Cs,1431
|
9
|
+
gnetclisdk-0.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
10
|
+
gnetclisdk-0.0.dist-info/top_level.txt,sha256=MNjS8LEt6d2rZ-dUbV2cnqkuTMu3EqEL2eiSvUZuUlA,11
|
11
|
+
gnetclisdk-0.0.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
gnetclisdk
|