brynq-sdk-brynq 4.0.8__tar.gz → 4.0.9__tar.gz
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 brynq-sdk-brynq might be problematic. Click here for more details.
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/PKG-INFO +1 -1
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/scenarios.py +49 -34
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq.egg-info/PKG-INFO +1 -1
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/setup.py +1 -1
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/__init__.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/brynq.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/credentials.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/customers.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/interfaces.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/mappings.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/organization_chart.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/roles.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/scenarios.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/__init__.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/credentials.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/customers.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/interfaces.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/organization_chart.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/roles.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/users.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/source_systems.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/users.py +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq.egg-info/SOURCES.txt +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq.egg-info/dependency_links.txt +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq.egg-info/not-zip-safe +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq.egg-info/requires.txt +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq.egg-info/top_level.txt +0 -0
- {brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/setup.cfg +0 -0
|
@@ -50,14 +50,30 @@ class CustomSourceTarget(BaseModel):
|
|
|
50
50
|
populate_by_name = True
|
|
51
51
|
|
|
52
52
|
|
|
53
|
+
class LibraryFieldDescriptor(BaseModel):
|
|
54
|
+
"""Rich metadata describing a library field target."""
|
|
55
|
+
id: Optional[int] = None
|
|
56
|
+
uuid: Optional[str] = None
|
|
57
|
+
required: Optional[bool] = None
|
|
58
|
+
field: Optional[str] = None
|
|
59
|
+
field_label: Optional[Dict[str, str]] = Field(default=None, alias="fieldLabel")
|
|
60
|
+
app_id: Optional[int] = Field(default=None, alias="appId")
|
|
61
|
+
category: Optional[Dict[str, Any]] = None
|
|
62
|
+
|
|
63
|
+
class Config:
|
|
64
|
+
frozen = True
|
|
65
|
+
strict = True
|
|
66
|
+
populate_by_name = True
|
|
67
|
+
|
|
68
|
+
|
|
53
69
|
class LibrarySourceTarget(BaseModel):
|
|
54
70
|
type: Literal["LIBRARY"] = Field(
|
|
55
71
|
"LIBRARY",
|
|
56
72
|
description="Discriminator—fixed value for library look-ups"
|
|
57
73
|
)
|
|
58
|
-
data: List[str] = Field(
|
|
74
|
+
data: List[Union[str, LibraryFieldDescriptor]] = Field(
|
|
59
75
|
...,
|
|
60
|
-
description="List of library field identifiers"
|
|
76
|
+
description="List of library field identifiers or metadata objects"
|
|
61
77
|
)
|
|
62
78
|
|
|
63
79
|
class Config:
|
|
@@ -128,8 +144,9 @@ class ScenarioDetail(BaseModel):
|
|
|
128
144
|
|
|
129
145
|
source: SourceTarget = Field(..., description="Source definition")
|
|
130
146
|
target: SourceTarget = Field(..., description="Target definition")
|
|
131
|
-
mapping: ScenarioMappingConfiguration = Field(
|
|
132
|
-
|
|
147
|
+
mapping: Optional[ScenarioMappingConfiguration] = Field(
|
|
148
|
+
default=None,
|
|
149
|
+
description="Mapping/value-translation configuration (may be absent)"
|
|
133
150
|
)
|
|
134
151
|
|
|
135
152
|
class Config:
|
|
@@ -266,45 +283,43 @@ class ParsedScenario(BaseModel):
|
|
|
266
283
|
props: Dict[str, FieldProperties] = {}
|
|
267
284
|
source_to_value_maps: Dict[str, List[ScenarioMappingConfiguration]] = defaultdict(list)
|
|
268
285
|
|
|
269
|
-
def
|
|
270
|
-
"""
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
if
|
|
274
|
-
return
|
|
275
|
-
if
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
return
|
|
286
|
+
def _extract_names_from_branch(branch: SourceTarget) -> Set[str]:
|
|
287
|
+
"""Normalise source/target branch data into canonical field names."""
|
|
288
|
+
if isinstance(branch, CustomSourceTarget):
|
|
289
|
+
names = {item.technical_name for item in branch.data if item.technical_name}
|
|
290
|
+
if names:
|
|
291
|
+
return names
|
|
292
|
+
return {item.uuid for item in branch.data if getattr(item, "uuid", None)}
|
|
293
|
+
if isinstance(branch, LibrarySourceTarget):
|
|
294
|
+
names: Set[str] = set()
|
|
295
|
+
for entry in branch.data:
|
|
296
|
+
if isinstance(entry, str):
|
|
297
|
+
names.add(entry)
|
|
298
|
+
else:
|
|
299
|
+
if entry.field:
|
|
300
|
+
names.add(entry.field)
|
|
301
|
+
elif entry.uuid:
|
|
302
|
+
names.add(entry.uuid)
|
|
303
|
+
return names
|
|
304
|
+
if isinstance(branch, FixedSourceTarget):
|
|
305
|
+
return set()
|
|
306
|
+
return set()
|
|
287
307
|
|
|
288
308
|
for detail in details:
|
|
289
|
-
|
|
290
|
-
source_type = detail.get("source", {}).get("type", "LIBRARY")
|
|
291
|
-
target_data = detail.get("target", {}).get("data", [])
|
|
292
|
-
target_type = detail.get("target", {}).get("type", "LIBRARY")
|
|
309
|
+
detail_model = ScenarioDetail.model_validate(detail)
|
|
293
310
|
|
|
294
|
-
source_names =
|
|
295
|
-
target_names =
|
|
311
|
+
source_names = _extract_names_from_branch(detail_model.source)
|
|
312
|
+
target_names = _extract_names_from_branch(detail_model.target)
|
|
296
313
|
|
|
297
314
|
for s_name in source_names:
|
|
298
315
|
src_map[s_name].update(target_names)
|
|
299
316
|
for t_name in target_names:
|
|
300
317
|
tgt_map[t_name].update(source_names)
|
|
301
318
|
|
|
302
|
-
|
|
303
|
-
if
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
key = '|'.join(source_names)
|
|
307
|
-
source_to_value_maps[key].append(mapping_config)
|
|
319
|
+
mapping_config = detail_model.mapping
|
|
320
|
+
if mapping_config and mapping_config.values:
|
|
321
|
+
key = '|'.join(sorted(source_names)) if source_names else detail_model.id
|
|
322
|
+
source_to_value_maps[key].append(mapping_config)
|
|
308
323
|
|
|
309
324
|
base_props = FieldProperties.model_validate(detail)
|
|
310
325
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq/schemas/organization_chart.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brynq_sdk_brynq-4.0.8 → brynq_sdk_brynq-4.0.9}/brynq_sdk_brynq.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|