dsw-tdk 4.25.1__py2.py3-none-any.whl → 4.26.0rc1__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 +12 -2
- dsw/tdk/build_info.py +4 -4
- dsw/tdk/consts.py +2 -2
- dsw/tdk/core.py +25 -52
- {dsw_tdk-4.25.1.dist-info → dsw_tdk-4.26.0rc1.dist-info}/METADATA +1 -1
- {dsw_tdk-4.25.1.dist-info → dsw_tdk-4.26.0rc1.dist-info}/RECORD +10 -10
- {dsw_tdk-4.25.1.dist-info → dsw_tdk-4.26.0rc1.dist-info}/WHEEL +0 -0
- {dsw_tdk-4.25.1.dist-info → dsw_tdk-4.26.0rc1.dist-info}/entry_points.txt +0 -0
- {dsw_tdk-4.25.1.dist-info → dsw_tdk-4.26.0rc1.dist-info}/licenses/LICENSE +0 -0
- {dsw_tdk-4.25.1.dist-info → dsw_tdk-4.26.0rc1.dist-info}/top_level.txt +0 -0
dsw/tdk/api_client.py
CHANGED
|
@@ -361,9 +361,19 @@ class WizardAPIClient:
|
|
|
361
361
|
return await self._delete(f'/document-template-drafts/{remote_id}/assets/{asset_id}')
|
|
362
362
|
|
|
363
363
|
@handle_client_errors
|
|
364
|
-
async def get_api_version(self) -> str:
|
|
364
|
+
async def get_api_version(self) -> tuple[str, str | None]:
|
|
365
365
|
body = await self._get_json('/')
|
|
366
|
-
|
|
366
|
+
version = body.get('version', None)
|
|
367
|
+
metamodel_version = None
|
|
368
|
+
for item in body.get('metamodelVersions', []):
|
|
369
|
+
if item.get('name', '') == 'Document Template':
|
|
370
|
+
metamodel_version = item.get('version', None)
|
|
371
|
+
if version is None:
|
|
372
|
+
raise WizardCommunicationError(
|
|
373
|
+
reason='Invalid response',
|
|
374
|
+
message='Server did not return valid API version information (incompatible TDK?)'
|
|
375
|
+
)
|
|
376
|
+
return version, metamodel_version
|
|
367
377
|
|
|
368
378
|
@handle_client_errors
|
|
369
379
|
async def get_organization_id(self) -> str:
|
dsw/tdk/build_info.py
CHANGED
|
@@ -9,9 +9,9 @@ BuildInfo = namedtuple(
|
|
|
9
9
|
)
|
|
10
10
|
|
|
11
11
|
BUILD_INFO = BuildInfo(
|
|
12
|
-
version='v4.
|
|
13
|
-
built_at='
|
|
14
|
-
sha='
|
|
12
|
+
version='v4.26.0~919c0b6',
|
|
13
|
+
built_at='2026-01-06 08:15:13Z',
|
|
14
|
+
sha='919c0b6cbc66f7fc93f03d3bd2f14e345a438367',
|
|
15
15
|
branch='HEAD',
|
|
16
|
-
tag='v4.
|
|
16
|
+
tag='v4.26.0',
|
|
17
17
|
)
|
dsw/tdk/consts.py
CHANGED
|
@@ -4,9 +4,9 @@ import re
|
|
|
4
4
|
import pathspec
|
|
5
5
|
|
|
6
6
|
APP = 'dsw-tdk'
|
|
7
|
-
VERSION = '4.
|
|
7
|
+
VERSION = '4.26.0rc1'
|
|
8
8
|
METAMODEL_VERSION_MAJOR = 17
|
|
9
|
-
METAMODEL_VERSION_MINOR =
|
|
9
|
+
METAMODEL_VERSION_MINOR = 1
|
|
10
10
|
METAMODEL_VERSION = f'{METAMODEL_VERSION_MAJOR}.{METAMODEL_VERSION_MINOR}'
|
|
11
11
|
|
|
12
12
|
REGEX_SEMVER = re.compile(r'^[0-9]+\.[0-9]+\.[0-9]+$')
|
dsw/tdk/core.py
CHANGED
|
@@ -4,7 +4,6 @@ import io
|
|
|
4
4
|
import json
|
|
5
5
|
import logging
|
|
6
6
|
import pathlib
|
|
7
|
-
import re
|
|
8
7
|
import shutil
|
|
9
8
|
import tempfile
|
|
10
9
|
import zipfile
|
|
@@ -12,7 +11,7 @@ import zipfile
|
|
|
12
11
|
import watchfiles
|
|
13
12
|
|
|
14
13
|
from .api_client import WizardAPIClient, WizardCommunicationError
|
|
15
|
-
from .consts import DEFAULT_ENCODING
|
|
14
|
+
from .consts import DEFAULT_ENCODING
|
|
16
15
|
from .model import TemplateProject, Template, TemplateFile, TemplateFileType
|
|
17
16
|
from .utils import UUIDGen
|
|
18
17
|
from .validation import ValidationError, TemplateValidator
|
|
@@ -32,33 +31,16 @@ class TDKProcessingError(RuntimeError):
|
|
|
32
31
|
self.hint = hint
|
|
33
32
|
|
|
34
33
|
|
|
35
|
-
METAMODEL_VERSION_SUPPORT = {
|
|
36
|
-
'1.0': (2, 5, 0),
|
|
37
|
-
'2.0': (2, 6, 0),
|
|
38
|
-
'3.0': (2, 12, 0),
|
|
39
|
-
'4.0': (3, 2, 0),
|
|
40
|
-
'5.0': (3, 5, 0),
|
|
41
|
-
'6.0': (3, 6, 0),
|
|
42
|
-
'7.0': (3, 7, 0),
|
|
43
|
-
'8.0': (3, 8, 0),
|
|
44
|
-
'9.0': (3, 10, 0),
|
|
45
|
-
'10.0': (3, 12, 0),
|
|
46
|
-
'11.0': (3, 20, 0),
|
|
47
|
-
'12.0': (4, 1, 0),
|
|
48
|
-
'13.0': (4, 3, 0),
|
|
49
|
-
'14.0': (4, 10, 0),
|
|
50
|
-
'15.0': (4, 12, 0),
|
|
51
|
-
'16.0': (4, 13, 0),
|
|
52
|
-
'17.0': (4, 22, 0),
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
34
|
# pylint: disable-next=too-many-public-methods
|
|
57
35
|
class TDKCore:
|
|
58
36
|
|
|
59
37
|
# pylint: disable-next=too-many-locals
|
|
60
38
|
def _check_metamodel_version(self):
|
|
61
39
|
hint = 'Fix your metamodelVersion in template.json and/or visit docs'
|
|
40
|
+
if self.remote_metamodel_version is None:
|
|
41
|
+
self.logger.warning('Remote metamodel version is unknown, you should use '
|
|
42
|
+
'a matching version of TDK to avoid issues')
|
|
43
|
+
return
|
|
62
44
|
mm_ver = str(self.safe_template.metamodel_version)
|
|
63
45
|
try:
|
|
64
46
|
if '.' not in mm_ver:
|
|
@@ -66,34 +48,24 @@ class TDKCore:
|
|
|
66
48
|
mm_major, mm_minor = map(int, mm_ver.split('.'))
|
|
67
49
|
except ValueError as e:
|
|
68
50
|
raise TDKProcessingError(f'Invalid metamodel version format: {mm_ver}', hint) from e
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
for known_version in map_reverse.keys():
|
|
86
|
-
if known_version <= ver:
|
|
87
|
-
nearest_leq = known_version
|
|
88
|
-
else:
|
|
89
|
-
break
|
|
90
|
-
if nearest_leq == unknown_version:
|
|
91
|
-
raise TDKProcessingError(f'Unsupported API version: {vtag}', hint)
|
|
92
|
-
api_mm_major, api_mm_minor = map(int, map_reverse[nearest_leq].split('.'))
|
|
93
|
-
if mm_major != api_mm_major or mm_minor < api_mm_minor:
|
|
51
|
+
mmr_ver = self.remote_metamodel_version
|
|
52
|
+
try:
|
|
53
|
+
if '.' not in mmr_ver:
|
|
54
|
+
mmr_ver = f'{mmr_ver}.0'
|
|
55
|
+
mmr_major, mmr_minor = map(int, mmr_ver.split('.'))
|
|
56
|
+
except ValueError as e:
|
|
57
|
+
raise TDKProcessingError(f'Invalid remote metamodel version format: {mmr_ver}',
|
|
58
|
+
'Check if connecting to correct API with matching version '
|
|
59
|
+
'as you have in TDK.') from e
|
|
60
|
+
if (mm_major, mm_minor) == (mmr_major, mmr_minor):
|
|
61
|
+
self.logger.debug('Metamodel version %s matches remote version %s',
|
|
62
|
+
mmr_ver, mmr_ver)
|
|
63
|
+
elif mm_major == mmr_major and mm_minor < mmr_minor:
|
|
64
|
+
self.logger.warning('Local metamodel version %s is older than remote version %s, '
|
|
65
|
+
'but still compatible', mm_ver, mmr_ver)
|
|
66
|
+
else:
|
|
94
67
|
raise TDKProcessingError(
|
|
95
|
-
f'Unsupported metamodel version {mm_ver}
|
|
96
|
-
hint,
|
|
68
|
+
f'Unsupported metamodel version: local {mm_ver}, remote {mmr_ver}', hint
|
|
97
69
|
)
|
|
98
70
|
|
|
99
71
|
def __init__(self, template: Template | None = None, project: TemplateProject | None = None,
|
|
@@ -101,7 +73,8 @@ class TDKCore:
|
|
|
101
73
|
self.template = template
|
|
102
74
|
self.project = project
|
|
103
75
|
self.client = client
|
|
104
|
-
self.remote_version = 'unknown~??????'
|
|
76
|
+
self.remote_version: str = 'unknown~??????'
|
|
77
|
+
self.remote_metamodel_version: str | None = 'unknown'
|
|
105
78
|
self.logger = logger or logging.getLogger()
|
|
106
79
|
self.loop = asyncio.get_event_loop()
|
|
107
80
|
self.changes_processor = ChangesProcessor(self)
|
|
@@ -131,7 +104,7 @@ class TDKCore:
|
|
|
131
104
|
async def init_client(self, api_url: str, api_key: str):
|
|
132
105
|
self.logger.info('Connecting to %s', api_url)
|
|
133
106
|
self.client = WizardAPIClient(api_url=api_url, api_key=api_key)
|
|
134
|
-
self.remote_version = await self.client.get_api_version()
|
|
107
|
+
self.remote_version, self.remote_metamodel_version = await self.client.get_api_version()
|
|
135
108
|
user = await self.client.get_current_user()
|
|
136
109
|
self.logger.info('Successfully authenticated as %s %s (%s)',
|
|
137
110
|
user['firstName'], user['lastName'], user['email'])
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
dsw/tdk/__init__.py,sha256=zJeTybb0SqiNdGLkANjRa36hku4axi17mZL2dM3tHto,288
|
|
2
2
|
dsw/tdk/__main__.py,sha256=cCzxo6f7raF50kQE-nM_segNjCNe723ZrxOBB6f3qwc,84
|
|
3
|
-
dsw/tdk/api_client.py,sha256=
|
|
4
|
-
dsw/tdk/build_info.py,sha256=
|
|
3
|
+
dsw/tdk/api_client.py,sha256=YBr_7CV2EMpyXKoGHYTDQSwoeIE1F5Uje_DFEIKEfxE,15436
|
|
4
|
+
dsw/tdk/build_info.py,sha256=ureIUUESM8ZemjCvErMSsn9HZTHGh40c-weckrTKOAE,381
|
|
5
5
|
dsw/tdk/cli.py,sha256=VEpzf1_JIhPqeDcDLfR76oqoYVS9nvbIujBZ-2syL2M,28128
|
|
6
6
|
dsw/tdk/config.py,sha256=ZZlpMqJ5QGsiywwleXtFS2DO1bhnp3ttGOsNq4VoPYc,4888
|
|
7
|
-
dsw/tdk/consts.py,sha256=
|
|
8
|
-
dsw/tdk/core.py,sha256=
|
|
7
|
+
dsw/tdk/consts.py,sha256=58kIQkOSIOBa5tpuLcBkTtiAARNLEG9pEP0JGslYCVk,716
|
|
8
|
+
dsw/tdk/core.py,sha256=RYV_AQNbcpAHxxq_Tg7LavyNs1JcbPat2Hy5DHbGBlY,27193
|
|
9
9
|
dsw/tdk/model.py,sha256=e7wAraebj66AMRSKc1Lkmvrsj7m9ep2UcAxMdwd_x0c,17340
|
|
10
10
|
dsw/tdk/utils.py,sha256=9XBc_2c9IDw0FqAXZYFRVxYFVPuYULWvs2Y9SjNQJT4,5681
|
|
11
11
|
dsw/tdk/validation.py,sha256=PxgthiZJIk7al64n7Nj7Bp5Vvg_ltxRm3ocp74UO8Y8,10173
|
|
@@ -13,9 +13,9 @@ dsw/tdk/templates/LICENSE.j2,sha256=6WzK06169rxZ4V_boYgejcZkw-1Up_WoU18iI3Gbkfs,
|
|
|
13
13
|
dsw/tdk/templates/README.md.j2,sha256=FzUABeMM8To0oT48Kytoox64uAZ8F7FSAAXgpyKzqdU,247
|
|
14
14
|
dsw/tdk/templates/env.j2,sha256=yUaY7ZLbjdG45-_q6KWi-YnX9bjP7_lfXrowhJF1he0,98
|
|
15
15
|
dsw/tdk/templates/starter.j2,sha256=JKJIkiXsmBO4P6pKXM4IvSz3JgJhqCnaZI1NVfPPnXg,246
|
|
16
|
-
dsw_tdk-4.
|
|
17
|
-
dsw_tdk-4.
|
|
18
|
-
dsw_tdk-4.
|
|
19
|
-
dsw_tdk-4.
|
|
20
|
-
dsw_tdk-4.
|
|
21
|
-
dsw_tdk-4.
|
|
16
|
+
dsw_tdk-4.26.0rc1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
17
|
+
dsw_tdk-4.26.0rc1.dist-info/METADATA,sha256=xJ4SW-FtGDW3UlUw4nxgr-P6nBEugP1futKHZEepD9s,6098
|
|
18
|
+
dsw_tdk-4.26.0rc1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
|
19
|
+
dsw_tdk-4.26.0rc1.dist-info/entry_points.txt,sha256=lwD5ZzRCbTFSjP1-SkhYsaJe8sEXOWWgMAMUhw0v2Hk,41
|
|
20
|
+
dsw_tdk-4.26.0rc1.dist-info/top_level.txt,sha256=7SfbsHFoJ_vlAgG6C-xzETETwYO71dBrGnod8uMFnjw,4
|
|
21
|
+
dsw_tdk-4.26.0rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|