pydpm_xl 0.2.10__tar.gz → 0.2.11__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.2.10/pydpm_xl.egg-info → pydpm_xl-0.2.11}/PKG-INFO +1 -1
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/__init__.py +1 -1
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm_xl/ast_generator.py +24 -9
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11/pydpm_xl.egg-info}/PKG-INFO +1 -1
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/pyproject.toml +2 -2
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/LICENSE +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/README.md +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm/data_dictionary.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm/explorer.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm/hierarchical_queries.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm/instance.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm/migration.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm_xl/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm_xl/complete_ast.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm_xl/operation_scopes.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm_xl/semantic.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/api/dpm_xl/syntax.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/cli/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/cli/commands/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/cli/main.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/migration.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/models.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/queries/base.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/queries/basic_objects.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/queries/explorer_queries.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/queries/filters.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/queries/glossary.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/queries/hierarchical_queries.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/queries/tables.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm/utils.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/constructor.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/ml_generation.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/module_analyzer.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/module_dependencies.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/nodes.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/operands.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/template.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/visitor.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/ast/where_clause.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlLexer.interp +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlLexer.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlLexer.tokens +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlParser.interp +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlParser.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlParser.tokens +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlParserListener.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/dpm_xlParserVisitor.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/grammar/generated/listeners.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/aggregate.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/arithmetic.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/base.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/boolean.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/clause.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/comparison.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/conditional.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/string.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/operators/time.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/semantic_analyzer.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/symbols.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/types/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/types/promotion.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/types/scalar.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/types/time.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/utils/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/utils/data_handlers.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/utils/operands_mapping.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/utils/operator_mapping.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/utils/scopes_calculator.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/utils/serialization.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/dpm_xl/utils/tokens.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/exceptions/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/exceptions/exceptions.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/exceptions/messages.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/instance/__init__.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/py_dpm/instance/instance.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/pydpm_xl.egg-info/SOURCES.txt +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/pydpm_xl.egg-info/dependency_links.txt +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/pydpm_xl.egg-info/entry_points.txt +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/pydpm_xl.egg-info/requires.txt +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/pydpm_xl.egg-info/top_level.txt +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/setup.cfg +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_cli_semantic.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_data_dictionary_releases.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_db_connection_handling.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_get_table_details.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_get_tables_date_filter.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_get_tables_release_code.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_hierarchical_query.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_migration_type_inference.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_query_refactor.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_release_filters_semantic.py +0 -0
- {pydpm_xl-0.2.10 → pydpm_xl-0.2.11}/tests/test_semantic_release.py +0 -0
|
@@ -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.2.
|
|
44
|
+
__version__ = "0.2.11"
|
|
45
45
|
__author__ = "MeaningfulData S.L."
|
|
46
46
|
__email__ = "info@meaningfuldata.eu"
|
|
47
47
|
__license__ = "GPL-3.0-or-later"
|
|
@@ -2206,12 +2206,11 @@ class ASTGeneratorAPI:
|
|
|
2206
2206
|
entry["x"] = x_index
|
|
2207
2207
|
|
|
2208
2208
|
# Calculate y coordinate (column position)
|
|
2209
|
+
# Only add y if there are multiple columns
|
|
2209
2210
|
if cols and col_code in cols:
|
|
2210
2211
|
y_index = cols.index(col_code) + 1
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
# Default to 1 if no column info
|
|
2214
|
-
entry["y"] = 1
|
|
2212
|
+
if len(cols) > 1:
|
|
2213
|
+
entry["y"] = y_index
|
|
2215
2214
|
|
|
2216
2215
|
# Calculate z coordinate (sheet position)
|
|
2217
2216
|
if sheets and sheet_code in sheets:
|
|
@@ -2238,13 +2237,16 @@ class ASTGeneratorAPI:
|
|
|
2238
2237
|
Remove extra fields from data entries in the AST.
|
|
2239
2238
|
|
|
2240
2239
|
Keeps only the fields required by the engine:
|
|
2241
|
-
- datapoint, operand_reference_id
|
|
2240
|
+
- datapoint, operand_reference_id (always)
|
|
2241
|
+
- x and row (only if multiple rows - rows are variable)
|
|
2242
|
+
- y and column (only if multiple columns - columns are variable)
|
|
2243
|
+
- z and sheet (only if multiple sheets - sheets are variable)
|
|
2242
2244
|
|
|
2243
2245
|
Removes internal/debug fields:
|
|
2244
|
-
- data_type, cell_code, table_code, table_vid
|
|
2246
|
+
- data_type, cell_code, table_code, table_vid
|
|
2245
2247
|
"""
|
|
2246
|
-
#
|
|
2247
|
-
|
|
2248
|
+
# Base fields to always keep in data entries
|
|
2249
|
+
BASE_FIELDS = {"datapoint", "operand_reference_id"}
|
|
2248
2250
|
|
|
2249
2251
|
def clean_node(node):
|
|
2250
2252
|
if isinstance(node, dict):
|
|
@@ -2252,9 +2254,22 @@ class ASTGeneratorAPI:
|
|
|
2252
2254
|
if node.get("class_name") == "VarID" and "data" in node:
|
|
2253
2255
|
cleaned_data = []
|
|
2254
2256
|
for data_entry in node["data"]:
|
|
2257
|
+
# Build allowed fields based on which coordinates are present
|
|
2258
|
+
# Only keep row/column/sheet if the corresponding x/y/z coordinate exists
|
|
2259
|
+
allowed = set(BASE_FIELDS)
|
|
2260
|
+
if "x" in data_entry:
|
|
2261
|
+
allowed.add("x")
|
|
2262
|
+
allowed.add("row")
|
|
2263
|
+
if "y" in data_entry:
|
|
2264
|
+
allowed.add("y")
|
|
2265
|
+
allowed.add("column")
|
|
2266
|
+
if "z" in data_entry:
|
|
2267
|
+
allowed.add("z")
|
|
2268
|
+
allowed.add("sheet")
|
|
2269
|
+
|
|
2255
2270
|
# Keep only allowed fields
|
|
2256
2271
|
cleaned_entry = {
|
|
2257
|
-
k: v for k, v in data_entry.items() if k in
|
|
2272
|
+
k: v for k, v in data_entry.items() if k in allowed
|
|
2258
2273
|
}
|
|
2259
2274
|
cleaned_data.append(cleaned_entry)
|
|
2260
2275
|
node["data"] = cleaned_data
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pydpm_xl"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.11"
|
|
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.2.
|
|
55
|
+
version = "0.2.11"
|
|
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
|
|
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
|
|
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
|