pydpm_xl 0.1.39rc26__tar.gz → 0.1.39rc28__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.
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/PKG-INFO +1 -1
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Utils/ast_serialization.py +46 -25
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/__init__.py +1 -1
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/pydpm_xl.egg-info/PKG-INFO +1 -1
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/pyproject.toml +2 -2
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/LICENSE +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/README.md +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/ASTConstructor.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/ASTObjects.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/ASTTemplate.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/ASTVisitor.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/MLGeneration.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/ModuleAnalyzer.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/ModuleDependencies.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/WhereClauseChecker.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/AST/check_operands.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/DataTypes/ScalarTypes.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/DataTypes/TimeClasses.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/DataTypes/TypePromotion.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/DataTypes/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Exceptions/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Exceptions/exceptions.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Exceptions/messages.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/OperationScopes/OperationScopeService.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/OperationScopes/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/AggregateOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/BooleanOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/ClauseOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/ComparisonOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/ConditionalOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/NumericOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/Operator.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/StringOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/TimeOperators.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Operators/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Utils/ValidationsGenerationUtils.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Utils/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Utils/operands_mapping.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Utils/operator_mapping.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Utils/tokens.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/Utils/utils.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/ValidationsGeneration/PropertiesConstraintsProcessor.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/ValidationsGeneration/Utils.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/ValidationsGeneration/VariantsProcessor.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/ValidationsGeneration/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/ValidationsGeneration/auxiliary_functions.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/ast_generator.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/complete_ast.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/data_dictionary.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/data_dictionary_validation.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/migration.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/operation_scopes.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/semantic.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/api/syntax.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/client.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/data_handlers.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/db_utils.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlLexer.interp +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlLexer.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlLexer.tokens +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlParser.interp +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlParser.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlParser.tokens +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlParserListener.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/dpm_xlParserVisitor.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dist/listeners.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dpm_xlLexer.g4 +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/grammar/dpm_xlParser.g4 +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/migration.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/models.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/semantics/DAG/DAGAnalyzer.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/semantics/DAG/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/semantics/SemanticAnalyzer.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/semantics/Symbols.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/semantics/__init__.py +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/data_types.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/datapoints.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/hierarchy_operand_reference.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/hierarchy_preconditions.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/hierarchy_variables.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/hierarchy_variables_context.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/key_components.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/module_from_table.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/open_keys.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/operation_info.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/operation_list.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/operations_versions_from_module_version.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/precondition_info.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/report_type_operand_reference_info.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/subcategory_info.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/table_info.sql +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/pydpm_xl.egg-info/SOURCES.txt +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/pydpm_xl.egg-info/dependency_links.txt +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/pydpm_xl.egg-info/entry_points.txt +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/pydpm_xl.egg-info/requires.txt +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/pydpm_xl.egg-info/top_level.txt +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/setup.cfg +0 -0
- {pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/tests/test_semantic_release.py +0 -0
|
@@ -240,29 +240,48 @@ class ASTToJSONVisitor(NodeVisitor):
|
|
|
240
240
|
if 'cell_id' in record and record['cell_id'] is not None:
|
|
241
241
|
transformed_record['operand_reference_id'] = int(record['cell_id'])
|
|
242
242
|
|
|
243
|
+
# Check if data type is scalar (no x/y/z coordinates)
|
|
244
|
+
# Scalar types: b (boolean), s (string), e (enumeration/item)
|
|
245
|
+
# Non-scalar types: i, r, m, p (integer, decimal, monetary, percentage)
|
|
246
|
+
data_type = record.get('data_type', '')
|
|
247
|
+
is_scalar_type = data_type in ['b', 's', 'e']
|
|
248
|
+
|
|
243
249
|
column_code = record.get('column_code', '')
|
|
244
250
|
sheet_code = record.get('sheet_code', '')
|
|
245
251
|
|
|
246
|
-
# Add x/y/z coordinates for
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
#
|
|
265
|
-
|
|
252
|
+
# Add x/y/z coordinates for non-scalar types only
|
|
253
|
+
if not is_scalar_type:
|
|
254
|
+
transformed_record['x'] = x_index
|
|
255
|
+
|
|
256
|
+
# Find y coordinate based on column position in context
|
|
257
|
+
y_index = 1 # default
|
|
258
|
+
if context_cols and column_code in context_cols:
|
|
259
|
+
y_index = context_cols.index(column_code) + 1
|
|
260
|
+
transformed_record['y'] = y_index
|
|
261
|
+
|
|
262
|
+
# Add z coordinate if sheet data exists
|
|
263
|
+
if sheet_code:
|
|
264
|
+
# Find z coordinate based on sheet position in context
|
|
265
|
+
z_index = 1 # default
|
|
266
|
+
if context_sheets and sheet_code in context_sheets:
|
|
267
|
+
z_index = context_sheets.index(sheet_code) + 1
|
|
268
|
+
transformed_record['z'] = z_index
|
|
269
|
+
|
|
270
|
+
# Note: column and row are at VarID level, not in data entries
|
|
271
|
+
|
|
272
|
+
# Add additional fields required by ADAM engine
|
|
273
|
+
# CRITICAL: data_type determines how the engine processes values
|
|
274
|
+
if 'data_type' in record and record['data_type'] is not None:
|
|
275
|
+
transformed_record['data_type'] = record['data_type']
|
|
276
|
+
|
|
277
|
+
# Add metadata fields (cell_code, table_code, table_vid)
|
|
278
|
+
# NOTE: row, column, sheet are NOT included in data - they're at VarID level
|
|
279
|
+
if 'cell_code' in record and record['cell_code'] is not None:
|
|
280
|
+
transformed_record['cell_code'] = record['cell_code']
|
|
281
|
+
if 'table_code' in record and record['table_code'] is not None:
|
|
282
|
+
transformed_record['table_code'] = record['table_code']
|
|
283
|
+
if 'table_vid' in record and record['table_vid'] is not None:
|
|
284
|
+
transformed_record['table_vid'] = int(record['table_vid'])
|
|
266
285
|
|
|
267
286
|
transformed_data.append(transformed_record)
|
|
268
287
|
|
|
@@ -300,17 +319,19 @@ class ASTToJSONVisitor(NodeVisitor):
|
|
|
300
319
|
'z': 'sheet'
|
|
301
320
|
}
|
|
302
321
|
|
|
303
|
-
# Add dimension codes
|
|
304
|
-
#
|
|
305
|
-
#
|
|
322
|
+
# Add dimension codes to each data entry
|
|
323
|
+
# IMPORTANT: adam-engine requires BOTH row AND column in every data item
|
|
324
|
+
# We add all dimension codes (row, column, sheet) when they exist in the original record
|
|
325
|
+
# We need to match each transformed record back to its original record
|
|
306
326
|
record_index = 0
|
|
307
327
|
for x_index, row_code in enumerate(rows, 1):
|
|
308
328
|
for original_record in entries_by_row[row_code]:
|
|
309
329
|
if record_index < len(transformed_data):
|
|
310
330
|
transformed_record = transformed_data[record_index]
|
|
311
331
|
|
|
312
|
-
#
|
|
313
|
-
|
|
332
|
+
# Add ALL dimension codes (row, column, sheet) to every data item
|
|
333
|
+
# This is required by adam-engine even when the coordinate is common
|
|
334
|
+
for coord in ['x', 'y', 'z']:
|
|
314
335
|
dimension_field = coord_to_dimension[coord]
|
|
315
336
|
output_field = coord_to_field[coord]
|
|
316
337
|
|
|
@@ -41,7 +41,7 @@ Available packages:
|
|
|
41
41
|
- pydpm.api: Main APIs for migration, syntax, and semantic analysis
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
|
-
__version__ = "0.1.
|
|
44
|
+
__version__ = "0.1.39rc28"
|
|
45
45
|
__author__ = "MeaningfulData S.L."
|
|
46
46
|
__email__ = "info@meaningfuldata.eu"
|
|
47
47
|
__license__ = "GPL-3.0-or-later"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pydpm_xl"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.39rc28"
|
|
4
4
|
description = "Python library for DPM-XL data processing and analysis"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "MeaningfulData S.L.", email = "info@meaningfuldata.eu"}
|
|
@@ -52,7 +52,7 @@ exclude = []
|
|
|
52
52
|
|
|
53
53
|
[tool.poetry]
|
|
54
54
|
name = "pydpm_xl"
|
|
55
|
-
version = "0.1.
|
|
55
|
+
version = "0.1.39rc28"
|
|
56
56
|
description = "Python library for DPM-XL data processing and analysis"
|
|
57
57
|
authors = ["MeaningfulData S.L. <info@meaningfuldata.eu>"]
|
|
58
58
|
readme = "README.md"
|
|
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
|
|
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
|
|
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
|
{pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/ValidationsGeneration/VariantsProcessor.py
RENAMED
|
File without changes
|
|
File without changes
|
{pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/ValidationsGeneration/auxiliary_functions.py
RENAMED
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/operations_versions_from_module_version.sql
RENAMED
|
File without changes
|
|
File without changes
|
{pydpm_xl-0.1.39rc26 → pydpm_xl-0.1.39rc28}/py_dpm/views/report_type_operand_reference_info.sql
RENAMED
|
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
|