dsw-tdk 3.26.2__py2.py3-none-any.whl → 3.27.1__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.
- dsw/tdk/api_client.py +2 -2
- dsw/tdk/build_info.py +4 -4
- dsw/tdk/cli.py +60 -77
- dsw/tdk/consts.py +1 -1
- dsw/tdk/core.py +14 -8
- dsw/tdk/templates/LICENSE.j2 +1 -0
- dsw/tdk/templates/env.j2 +2 -0
- dsw/tdk/utils.py +22 -2
- {dsw_tdk-3.26.2.dist-info → dsw_tdk-3.27.1.dist-info}/METADATA +1 -1
- dsw_tdk-3.27.1.dist-info/RECORD +20 -0
- dsw_tdk-3.26.2.dist-info/RECORD +0 -18
- {dsw_tdk-3.26.2.dist-info → dsw_tdk-3.27.1.dist-info}/LICENSE +0 -0
- {dsw_tdk-3.26.2.dist-info → dsw_tdk-3.27.1.dist-info}/WHEEL +0 -0
- {dsw_tdk-3.26.2.dist-info → dsw_tdk-3.27.1.dist-info}/entry_points.txt +0 -0
- {dsw_tdk-3.26.2.dist-info → dsw_tdk-3.27.1.dist-info}/top_level.txt +0 -0
dsw/tdk/api_client.py
CHANGED
|
@@ -81,7 +81,7 @@ class DSWAPIClient:
|
|
|
81
81
|
f'{r.reason} (expecting {expected_status})'
|
|
82
82
|
)
|
|
83
83
|
|
|
84
|
-
def __init__(self, api_url: str, session=None):
|
|
84
|
+
def __init__(self, api_url: str, api_key: str, session=None):
|
|
85
85
|
"""
|
|
86
86
|
Exception representing communication error with DSW.
|
|
87
87
|
|
|
@@ -90,7 +90,7 @@ class DSWAPIClient:
|
|
|
90
90
|
session (aiohttp.ClientSession): Optional custom session for HTTP communication.
|
|
91
91
|
"""
|
|
92
92
|
self.api_url = api_url
|
|
93
|
-
self.token =
|
|
93
|
+
self.token = api_key
|
|
94
94
|
self.session = session or aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False))
|
|
95
95
|
|
|
96
96
|
@property
|
dsw/tdk/build_info.py
CHANGED
|
@@ -9,9 +9,9 @@ BuildInfo = namedtuple(
|
|
|
9
9
|
)
|
|
10
10
|
|
|
11
11
|
BUILD_INFO = BuildInfo(
|
|
12
|
-
version='v3.
|
|
13
|
-
built_at='2023-09-20 13:02:
|
|
14
|
-
sha='
|
|
12
|
+
version='v3.27.1~4be9747',
|
|
13
|
+
built_at='2023-09-20 13:02:55Z',
|
|
14
|
+
sha='4be974749848a367bb7558c64b2f732e85ed8d75',
|
|
15
15
|
branch='HEAD',
|
|
16
|
-
tag='v3.
|
|
16
|
+
tag='v3.27.1',
|
|
17
17
|
)
|
dsw/tdk/cli.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
import sys
|
|
3
2
|
|
|
4
3
|
import click # type: ignore
|
|
5
4
|
import datetime
|
|
@@ -96,6 +95,10 @@ def rectify_url(ctx, param, value) -> str:
|
|
|
96
95
|
return value.rstrip('/')
|
|
97
96
|
|
|
98
97
|
|
|
98
|
+
def rectify_key(ctx, param, value) -> str:
|
|
99
|
+
return value.strip()
|
|
100
|
+
|
|
101
|
+
|
|
99
102
|
class ClickLogger(logging.Logger):
|
|
100
103
|
|
|
101
104
|
NAME = 'DSW-TDK-CLI'
|
|
@@ -169,6 +172,7 @@ class CLIContext:
|
|
|
169
172
|
|
|
170
173
|
def __init__(self):
|
|
171
174
|
self.logger = ClickLogger.default()
|
|
175
|
+
self.dot_env_file = None
|
|
172
176
|
|
|
173
177
|
def debug_mode(self):
|
|
174
178
|
self.logger.show_timestamp = True
|
|
@@ -178,37 +182,6 @@ class CLIContext:
|
|
|
178
182
|
self.logger.muted = True
|
|
179
183
|
|
|
180
184
|
|
|
181
|
-
class APICredentials:
|
|
182
|
-
|
|
183
|
-
def __init__(self, username, password, api_key):
|
|
184
|
-
self.username = username
|
|
185
|
-
self.password = password
|
|
186
|
-
self.api_key = api_key
|
|
187
|
-
|
|
188
|
-
def check(self):
|
|
189
|
-
if self.api_key is not None:
|
|
190
|
-
return
|
|
191
|
-
if self.username is not None and self.password is not None:
|
|
192
|
-
ClickPrinter.warning('Using username/password credentials, '
|
|
193
|
-
'consider switching to API keys.')
|
|
194
|
-
ClickPrinter.warning('Username/password authentication will be '
|
|
195
|
-
'removed in 3.25 as deprecated.')
|
|
196
|
-
return False
|
|
197
|
-
ClickPrinter.failure('Invalid credentials entered! You need to provide '
|
|
198
|
-
'either API key or username/password credentials.')
|
|
199
|
-
sys.exit(1)
|
|
200
|
-
|
|
201
|
-
def init_args(self):
|
|
202
|
-
if self.api_key is not None:
|
|
203
|
-
return {
|
|
204
|
-
'api_key': self.api_key,
|
|
205
|
-
}
|
|
206
|
-
return {
|
|
207
|
-
'username': self.username,
|
|
208
|
-
'password': self.password,
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
|
|
212
185
|
def interact_formats() -> Dict[str, FormatSpec]:
|
|
213
186
|
add_format = click.confirm('Do you want to add a format?', default=True)
|
|
214
187
|
formats = dict() # type: Dict[str, FormatSpec]
|
|
@@ -273,13 +246,14 @@ def main(ctx, quiet, debug, dot_env):
|
|
|
273
246
|
if pathlib.Path(dot_env).exists():
|
|
274
247
|
dotenv.load_dotenv(dotenv_path=dot_env)
|
|
275
248
|
ctx.ensure_object(CLIContext)
|
|
249
|
+
ctx.obj.dot_env_file = dot_env
|
|
276
250
|
if quiet:
|
|
277
251
|
ctx.obj.quiet_mode()
|
|
278
252
|
if debug:
|
|
279
253
|
ctx.obj.debug_mode()
|
|
280
254
|
|
|
281
255
|
|
|
282
|
-
@main.command(help='Create a new
|
|
256
|
+
@main.command(help='Create a new template project.', name='new')
|
|
283
257
|
@click.argument('TEMPLATE-DIR', type=NEW_DIR_TYPE, default=None, required=False)
|
|
284
258
|
@click.option('-f', '--force', is_flag=True, help='Overwrite any matching files.')
|
|
285
259
|
@click.pass_context
|
|
@@ -303,30 +277,25 @@ def new_template(ctx, template_dir, force):
|
|
|
303
277
|
exit(1)
|
|
304
278
|
|
|
305
279
|
|
|
306
|
-
@main.command(help='Download template from
|
|
280
|
+
@main.command(help='Download template from Wizard.', name='get')
|
|
307
281
|
@click.argument('TEMPLATE-ID')
|
|
308
282
|
@click.argument('TEMPLATE-DIR', type=NEW_DIR_TYPE, default=None, required=False)
|
|
309
|
-
@click.option('-
|
|
310
|
-
prompt='URL
|
|
311
|
-
@click.option('-
|
|
312
|
-
help='
|
|
313
|
-
|
|
314
|
-
help='Admin password for DSW instance.')
|
|
315
|
-
@click.option('-k', '--api-key', envvar='DSW_API_KEY', metavar='API-KEY', default=None,
|
|
316
|
-
help='API key for DSW instance.')
|
|
283
|
+
@click.option('-u', '--api-url', metavar='API-URL', envvar='DSW_API_URL',
|
|
284
|
+
prompt='API URL', help='URL of Wizard server API.', callback=rectify_url)
|
|
285
|
+
@click.option('-k', '--api-key', metavar='API-KEY', envvar='DSW_API_KEY',
|
|
286
|
+
prompt='API Key', help='API key for Wizard instance.', callback=rectify_key,
|
|
287
|
+
hide_input=True)
|
|
317
288
|
@click.option('-f', '--force', is_flag=True, help='Overwrite any existing files.')
|
|
318
289
|
@click.pass_context
|
|
319
|
-
def get_template(ctx,
|
|
290
|
+
def get_template(ctx, api_url, template_id, template_dir, api_key, force):
|
|
320
291
|
template_dir = pathlib.Path(template_dir or dir_from_id(template_id))
|
|
321
|
-
creds = APICredentials(username=username, password=password, api_key=api_key)
|
|
322
|
-
creds.check()
|
|
323
292
|
|
|
324
293
|
async def main_routine():
|
|
325
294
|
tdk = TDKCore(logger=ctx.obj.logger)
|
|
326
295
|
template_type = 'unknown'
|
|
327
296
|
zip_data = None
|
|
328
297
|
try:
|
|
329
|
-
await tdk.init_client(api_url=
|
|
298
|
+
await tdk.init_client(api_url=api_url, api_key=api_key)
|
|
330
299
|
try:
|
|
331
300
|
await tdk.load_remote(template_id=template_id)
|
|
332
301
|
template_type = 'draft'
|
|
@@ -367,23 +336,18 @@ def get_template(ctx, api_server, template_id, template_dir, username, password,
|
|
|
367
336
|
loop.run_until_complete(main_routine())
|
|
368
337
|
|
|
369
338
|
|
|
370
|
-
@main.command(help='Upload template to
|
|
339
|
+
@main.command(help='Upload template to Wizard.', name='put')
|
|
371
340
|
@click.argument('TEMPLATE-DIR', type=DIR_TYPE, default=CURRENT_DIR, required=False)
|
|
372
|
-
@click.option('-
|
|
373
|
-
prompt='URL
|
|
374
|
-
@click.option('-
|
|
375
|
-
help='
|
|
376
|
-
|
|
377
|
-
help='Admin password for DSW instance.')
|
|
378
|
-
@click.option('-k', '--api-key', envvar='DSW_API_KEY', metavar='API-KEY', default=None,
|
|
379
|
-
help='API key for DSW instance.')
|
|
341
|
+
@click.option('-u', '--api-url', metavar='API-URL', envvar='DSW_API_URL',
|
|
342
|
+
prompt='API URL', help='URL of Wizard server API.', callback=rectify_url)
|
|
343
|
+
@click.option('-k', '--api-key', metavar='API-KEY', envvar='DSW_API_KEY',
|
|
344
|
+
prompt='API Key', help='API key for Wizard instance.', callback=rectify_key,
|
|
345
|
+
hide_input=True)
|
|
380
346
|
@click.option('-f', '--force', is_flag=True, help='Delete template if already exists.')
|
|
381
347
|
@click.option('-w', '--watch', is_flag=True, help='Enter watch mode to continually upload changes.')
|
|
382
348
|
@click.pass_context
|
|
383
|
-
def put_template(ctx,
|
|
349
|
+
def put_template(ctx, api_url, template_dir, api_key, force, watch):
|
|
384
350
|
tdk = TDKCore(logger=ctx.obj.logger)
|
|
385
|
-
creds = APICredentials(username=username, password=password, api_key=api_key)
|
|
386
|
-
creds.check()
|
|
387
351
|
|
|
388
352
|
async def watch_callback(changes):
|
|
389
353
|
changes = list(changes)
|
|
@@ -399,10 +363,10 @@ def put_template(ctx, api_server, template_dir, username, password, api_key, for
|
|
|
399
363
|
async def main_routine():
|
|
400
364
|
load_local(tdk, template_dir)
|
|
401
365
|
try:
|
|
402
|
-
await tdk.init_client(api_url=
|
|
366
|
+
await tdk.init_client(api_url=api_url, api_key=api_key)
|
|
403
367
|
await tdk.store_remote(force=force)
|
|
404
368
|
ClickPrinter.success(f'Template {tdk.safe_project.safe_template.id} '
|
|
405
|
-
f'uploaded to {
|
|
369
|
+
f'uploaded to {api_url}')
|
|
406
370
|
|
|
407
371
|
if watch:
|
|
408
372
|
ClickPrinter.watch('Entering watch mode... (press Ctrl+C to abort)')
|
|
@@ -427,7 +391,7 @@ def put_template(ctx, api_server, template_dir, username, password, api_key, for
|
|
|
427
391
|
loop.run_until_complete(main_routine())
|
|
428
392
|
|
|
429
393
|
|
|
430
|
-
@main.command(help='Create ZIP package for
|
|
394
|
+
@main.command(help='Create ZIP package for a template.', name='package')
|
|
431
395
|
@click.argument('TEMPLATE-DIR', type=DIR_TYPE, default=CURRENT_DIR, required=False)
|
|
432
396
|
@click.option('-o', '--output', default='template.zip', type=click.Path(writable=True),
|
|
433
397
|
show_default=True, help='Target package file.')
|
|
@@ -446,7 +410,7 @@ def create_package(ctx, template_dir, output, force: bool):
|
|
|
446
410
|
ClickPrinter.success(f'Package {filename} created')
|
|
447
411
|
|
|
448
412
|
|
|
449
|
-
@main.command(help='Extract
|
|
413
|
+
@main.command(help='Extract a template from ZIP package', name='unpackage')
|
|
450
414
|
@click.argument('TEMPLATE-PACKAGE', type=FILE_READ_TYPE, required=False)
|
|
451
415
|
@click.option('-o', '--output', type=NEW_DIR_TYPE, default=None, required=False,
|
|
452
416
|
help='Target package file.')
|
|
@@ -468,29 +432,23 @@ def extract_package(ctx, template_package, output, force: bool):
|
|
|
468
432
|
ClickPrinter.success(f'Package {template_package} extracted')
|
|
469
433
|
|
|
470
434
|
|
|
471
|
-
@main.command(help='List templates from
|
|
472
|
-
@click.option('-
|
|
473
|
-
prompt='URL
|
|
474
|
-
@click.option('-
|
|
475
|
-
help='
|
|
476
|
-
|
|
477
|
-
help='Admin password for DSW instance.')
|
|
478
|
-
@click.option('-k', '--api-key', envvar='DSW_API_KEY', metavar='API-KEY', default=None,
|
|
479
|
-
help='API key for DSW instance.')
|
|
435
|
+
@main.command(help='List templates from Wizard via API.', name='list')
|
|
436
|
+
@click.option('-u', '--api-url', metavar='API-URL', envvar='DSW_API_URL',
|
|
437
|
+
prompt='API URL', help='URL of Wizard server API.', callback=rectify_url)
|
|
438
|
+
@click.option('-k', '--api-key', metavar='API-KEY', envvar='DSW_API_KEY',
|
|
439
|
+
prompt='API Key', help='API key for Wizard instance.', callback=rectify_key,
|
|
440
|
+
hide_input=True)
|
|
480
441
|
@click.option('--output-format', default=DEFAULT_LIST_FORMAT,
|
|
481
442
|
metavar='FORMAT', help='Entry format string for printing.')
|
|
482
443
|
@click.option('-r', '--released-only', is_flag=True, help='List only released templates')
|
|
483
444
|
@click.option('-d', '--drafts-only', is_flag=True, help='List only template drafts')
|
|
484
445
|
@click.pass_context
|
|
485
|
-
def list_templates(ctx,
|
|
446
|
+
def list_templates(ctx, api_url, api_key, output_format: str,
|
|
486
447
|
released_only: bool, drafts_only: bool):
|
|
487
|
-
creds = APICredentials(username=username, password=password, api_key=api_key)
|
|
488
|
-
creds.check()
|
|
489
|
-
|
|
490
448
|
async def main_routine():
|
|
491
449
|
tdk = TDKCore(logger=ctx.obj.logger)
|
|
492
450
|
try:
|
|
493
|
-
await tdk.init_client(api_url=
|
|
451
|
+
await tdk.init_client(api_url=api_url, api_key=api_key)
|
|
494
452
|
if released_only:
|
|
495
453
|
templates = await tdk.list_remote_templates()
|
|
496
454
|
for template in templates:
|
|
@@ -520,7 +478,7 @@ def list_templates(ctx, api_server, username, password, api_key, output_format:
|
|
|
520
478
|
loop.run_until_complete(main_routine())
|
|
521
479
|
|
|
522
480
|
|
|
523
|
-
@main.command(help='Verify
|
|
481
|
+
@main.command(help='Verify a template project.', name='verify')
|
|
524
482
|
@click.argument('TEMPLATE-DIR', type=DIR_TYPE, default=CURRENT_DIR, required=False)
|
|
525
483
|
@click.pass_context
|
|
526
484
|
def verify_template(ctx, template_dir):
|
|
@@ -535,3 +493,28 @@ def verify_template(ctx, template_dir):
|
|
|
535
493
|
click.echo('Found violations:')
|
|
536
494
|
for err in errors:
|
|
537
495
|
click.echo(f' - {err.field_name}: {err.message}')
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
@main.command(help='Create a .env file.', name='dot-env')
|
|
499
|
+
@click.argument('TEMPLATE-DIR', type=DIR_TYPE, default=CURRENT_DIR, required=False)
|
|
500
|
+
@click.option('-u', '--api-url', metavar='API-URL', envvar='DSW_API_URL',
|
|
501
|
+
prompt='API URL', help='URL of Wizard server API.', callback=rectify_url)
|
|
502
|
+
@click.option('-k', '--api-key', metavar='API-KEY', envvar='DSW_API_KEY',
|
|
503
|
+
prompt='API Key', help='API key for Wizard instance.', callback=rectify_key,
|
|
504
|
+
hide_input=True)
|
|
505
|
+
@click.option('-f', '--force', is_flag=True, help='Overwrite file if already exists.')
|
|
506
|
+
@click.pass_context
|
|
507
|
+
def create_dot_env(ctx, template_dir, api_url, api_key, force):
|
|
508
|
+
filename = ctx.obj.dot_env_file or '.env'
|
|
509
|
+
tdk = TDKCore(logger=ctx.obj.logger)
|
|
510
|
+
try:
|
|
511
|
+
tdk.create_dot_env(
|
|
512
|
+
output=pathlib.Path(template_dir) / filename,
|
|
513
|
+
force=force,
|
|
514
|
+
api_url=api_url,
|
|
515
|
+
api_key=api_key,
|
|
516
|
+
)
|
|
517
|
+
except Exception as e:
|
|
518
|
+
ClickPrinter.failure('Failed to create dot-env file')
|
|
519
|
+
ClickPrinter.error(f'> {e}')
|
|
520
|
+
exit(1)
|
dsw/tdk/consts.py
CHANGED
dsw/tdk/core.py
CHANGED
|
@@ -15,7 +15,7 @@ from typing import List, Optional, Tuple
|
|
|
15
15
|
from .api_client import DSWAPIClient, DSWCommunicationError
|
|
16
16
|
from .consts import DEFAULT_ENCODING, REGEX_SEMVER
|
|
17
17
|
from .model import TemplateProject, Template, TemplateFile, TemplateFileType
|
|
18
|
-
from .utils import UUIDGen
|
|
18
|
+
from .utils import UUIDGen, create_dot_env
|
|
19
19
|
from .validation import ValidationError, TemplateValidator
|
|
20
20
|
|
|
21
21
|
|
|
@@ -99,14 +99,9 @@ class TDKCore:
|
|
|
99
99
|
raise RuntimeError('No DSW API client specified')
|
|
100
100
|
return self.client
|
|
101
101
|
|
|
102
|
-
async def init_client(self, api_url: str,
|
|
103
|
-
password: Optional[str] = None, api_key: Optional[str] = None):
|
|
102
|
+
async def init_client(self, api_url: str, api_key: str):
|
|
104
103
|
self.logger.info(f'Connecting to {api_url}')
|
|
105
|
-
self.client = DSWAPIClient(api_url=api_url)
|
|
106
|
-
if api_key is not None:
|
|
107
|
-
self.client.token = api_key # type: ignore
|
|
108
|
-
if username is not None and password is not None:
|
|
109
|
-
await self.client.login(email=username, password=password)
|
|
104
|
+
self.client = DSWAPIClient(api_url=api_url, api_key=api_key)
|
|
110
105
|
self.remote_version = await self.client.get_api_version()
|
|
111
106
|
user = await self.client.get_current_user()
|
|
112
107
|
self.logger.info(f'Successfully authenticated as {user["firstName"]} '
|
|
@@ -362,6 +357,17 @@ class TDKCore:
|
|
|
362
357
|
target_file.write_text(data=content, encoding=DEFAULT_ENCODING)
|
|
363
358
|
self.logger.debug('Extracting package done')
|
|
364
359
|
|
|
360
|
+
def create_dot_env(self, output: pathlib.Path, force: bool, api_url: str, api_key: str):
|
|
361
|
+
if output.exists():
|
|
362
|
+
if force:
|
|
363
|
+
self.logger.warning(f'Overwriting {output.as_posix()} (forced)')
|
|
364
|
+
else:
|
|
365
|
+
raise RuntimeError(f'File {output} already exists (not forced)')
|
|
366
|
+
output.write_text(
|
|
367
|
+
data=create_dot_env(api_url=api_url, api_key=api_key),
|
|
368
|
+
encoding=DEFAULT_ENCODING,
|
|
369
|
+
)
|
|
370
|
+
|
|
365
371
|
async def watch_project(self, callback):
|
|
366
372
|
async for changes in watchgod.awatch(self.safe_project.template_dir):
|
|
367
373
|
await callback((
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// TODO: fill text of your license ({{ template.license }})
|
dsw/tdk/templates/env.j2
ADDED
dsw/tdk/utils.py
CHANGED
|
@@ -2,7 +2,7 @@ import jinja2 # type: ignore
|
|
|
2
2
|
import pathlib
|
|
3
3
|
import uuid
|
|
4
4
|
|
|
5
|
-
from typing import List, Set
|
|
5
|
+
from typing import List, Set, Optional
|
|
6
6
|
|
|
7
7
|
from .consts import DEFAULT_ENCODING, DEFAULT_README
|
|
8
8
|
from .model import Template, TemplateFile, Format, Step, PackageFilter
|
|
@@ -163,13 +163,33 @@ class TemplateBuilder:
|
|
|
163
163
|
self.template.readme = readme
|
|
164
164
|
self.template.tdk_config.readme_file = DEFAULT_README
|
|
165
165
|
TemplateValidator.validate(self.template)
|
|
166
|
+
|
|
166
167
|
for format_spec in self._formats:
|
|
167
168
|
content = j2_env.get_template('starter.j2').render(template=self.template)
|
|
168
169
|
self.template.files[format_spec.filename] = TemplateFile(
|
|
169
170
|
filename=format_spec.filename,
|
|
170
171
|
content_type='text/plain',
|
|
171
|
-
content=content.encode(encoding=DEFAULT_ENCODING)
|
|
172
|
+
content=content.encode(encoding=DEFAULT_ENCODING),
|
|
172
173
|
)
|
|
173
174
|
self.template.tdk_config.files.append(str(format_spec.filename))
|
|
174
175
|
self.template.allowed_packages.append(PackageFilter())
|
|
176
|
+
|
|
177
|
+
license_file = j2_env.get_template('LICENSE.j2').render(template=self.template)
|
|
178
|
+
self.template.tdk_config.files.append('LICENSE')
|
|
179
|
+
self.template.files['LICENSE'] = TemplateFile(
|
|
180
|
+
filename='LICENSE',
|
|
181
|
+
content_type='text/plain',
|
|
182
|
+
content=license_file.encode(encoding=DEFAULT_ENCODING),
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
self.template.files['.env'] = TemplateFile(
|
|
186
|
+
filename='.env',
|
|
187
|
+
content_type='text/plain',
|
|
188
|
+
content=create_dot_env().encode(encoding=DEFAULT_ENCODING),
|
|
189
|
+
)
|
|
190
|
+
|
|
175
191
|
return self.template
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def create_dot_env(api_url: Optional[str] = None, api_key: Optional[str] = None) -> str:
|
|
195
|
+
return j2_env.get_template('env.j2').render(api_url=api_url, api_key=api_key)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
dsw/tdk/__init__.py,sha256=zJeTybb0SqiNdGLkANjRa36hku4axi17mZL2dM3tHto,288
|
|
2
|
+
dsw/tdk/__main__.py,sha256=IkqeOatxravhcQCdk4l0BkbaMILkgVopB9phYCIR1uo,38
|
|
3
|
+
dsw/tdk/api_client.py,sha256=N3-PoO__kPtqFmR2QY-OG-9OkjYZwuXg8JxcBgpI8vQ,14222
|
|
4
|
+
dsw/tdk/build_info.py,sha256=0D8BZnbHMf_AUQ3g7SeT-D0b4ttuFOM8u_YvLJwblMc,381
|
|
5
|
+
dsw/tdk/cli.py,sha256=hAMvP2RRaPLu3w7aCLAIF12_7KsxFc2R_uT8cPUY3Jw,21199
|
|
6
|
+
dsw/tdk/consts.py,sha256=5bxycH8OL2Ylb95MzOYZxHRlJaLgj0JwKAZuVrvve2E,635
|
|
7
|
+
dsw/tdk/core.py,sha256=yReFEbC1_9AP0Pqwl-XPdP9zRiDKSKiPDdD1LQ6qSik,25177
|
|
8
|
+
dsw/tdk/model.py,sha256=B9_cCmg_Z2IHabMMychKFV4dh4SFPVEentuPcb5fzlY,17235
|
|
9
|
+
dsw/tdk/utils.py,sha256=SFmb9Q2YO4ppY1B4ZMbRYMlrUa1ObXfbsSc4rPpBJI0,5616
|
|
10
|
+
dsw/tdk/validation.py,sha256=hr04MRVqwBIBeKoX6v53Ix1S-vjvIQYM5dwI0SnMRsc,7827
|
|
11
|
+
dsw/tdk/templates/LICENSE.j2,sha256=6WzK06169rxZ4V_boYgejcZkw-1Up_WoU18iI3Gbkfs,60
|
|
12
|
+
dsw/tdk/templates/README.md.j2,sha256=FzUABeMM8To0oT48Kytoox64uAZ8F7FSAAXgpyKzqdU,247
|
|
13
|
+
dsw/tdk/templates/env.j2,sha256=7IJ6HAIY1bXKLake4c72DSEUcQtAquO5wlSgH8vg_8s,97
|
|
14
|
+
dsw/tdk/templates/starter.j2,sha256=XjZy3T9i8aWFlq4clXL6Q4JNh455crGelR9AoHisTbw,296
|
|
15
|
+
dsw_tdk-3.27.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
16
|
+
dsw_tdk-3.27.1.dist-info/METADATA,sha256=DrEC30a0XsJVQIHBGjgjde3_PHbgey1rfXLSy4R6CcI,6149
|
|
17
|
+
dsw_tdk-3.27.1.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
|
|
18
|
+
dsw_tdk-3.27.1.dist-info/entry_points.txt,sha256=lwD5ZzRCbTFSjP1-SkhYsaJe8sEXOWWgMAMUhw0v2Hk,41
|
|
19
|
+
dsw_tdk-3.27.1.dist-info/top_level.txt,sha256=7SfbsHFoJ_vlAgG6C-xzETETwYO71dBrGnod8uMFnjw,4
|
|
20
|
+
dsw_tdk-3.27.1.dist-info/RECORD,,
|
dsw_tdk-3.26.2.dist-info/RECORD
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
dsw/tdk/__init__.py,sha256=zJeTybb0SqiNdGLkANjRa36hku4axi17mZL2dM3tHto,288
|
|
2
|
-
dsw/tdk/__main__.py,sha256=IkqeOatxravhcQCdk4l0BkbaMILkgVopB9phYCIR1uo,38
|
|
3
|
-
dsw/tdk/api_client.py,sha256=1Mk-OCtVNY_86JLUys72Fam0T7mGff7CMqsZDon8e0c,14205
|
|
4
|
-
dsw/tdk/build_info.py,sha256=R-CLCVxYhygXNSkHwnIkhee8jbMkJJ-5nVUbGYmA_80,381
|
|
5
|
-
dsw/tdk/cli.py,sha256=EEvbvGrReh-R0_hKVCm9Nicc50qXCNERS_FhloW_p-w,22154
|
|
6
|
-
dsw/tdk/consts.py,sha256=T0YkY5jyX24p66gf0cCpg6YWq0iClIMl1PzotKM2mz4,635
|
|
7
|
-
dsw/tdk/core.py,sha256=xUbwWR7bl8K5leW8ML3Phu-XjXVejl-H8TF8RLxqVy4,25001
|
|
8
|
-
dsw/tdk/model.py,sha256=B9_cCmg_Z2IHabMMychKFV4dh4SFPVEentuPcb5fzlY,17235
|
|
9
|
-
dsw/tdk/utils.py,sha256=xt7INb2t-ChyIbR-VyQSYrPWupu2ufOlpatxN9yGrz0,4877
|
|
10
|
-
dsw/tdk/validation.py,sha256=hr04MRVqwBIBeKoX6v53Ix1S-vjvIQYM5dwI0SnMRsc,7827
|
|
11
|
-
dsw/tdk/templates/README.md.j2,sha256=FzUABeMM8To0oT48Kytoox64uAZ8F7FSAAXgpyKzqdU,247
|
|
12
|
-
dsw/tdk/templates/starter.j2,sha256=XjZy3T9i8aWFlq4clXL6Q4JNh455crGelR9AoHisTbw,296
|
|
13
|
-
dsw_tdk-3.26.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
14
|
-
dsw_tdk-3.26.2.dist-info/METADATA,sha256=rSiFZE9IZu0kj2FQD7GGBXB2RO_iLhLpLEs9NqYI2vs,6149
|
|
15
|
-
dsw_tdk-3.26.2.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
|
|
16
|
-
dsw_tdk-3.26.2.dist-info/entry_points.txt,sha256=lwD5ZzRCbTFSjP1-SkhYsaJe8sEXOWWgMAMUhw0v2Hk,41
|
|
17
|
-
dsw_tdk-3.26.2.dist-info/top_level.txt,sha256=7SfbsHFoJ_vlAgG6C-xzETETwYO71dBrGnod8uMFnjw,4
|
|
18
|
-
dsw_tdk-3.26.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|