pydpm_xl 0.1.39rc23__py3-none-any.whl → 0.1.39rc25__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.
@@ -429,6 +429,8 @@ class OperandsChecking(ASTTemplate, ABC):
429
429
 
430
430
  def visit_GetOp(self, node: GetOp):
431
431
  """Visit GetOp nodes to collect component codes for property_id lookup."""
432
+ # Visit the operand first to ensure it's properly validated
433
+ self.visit(node.operand)
432
434
  if node.component not in self.getop_components:
433
435
  self.getop_components.append(node.component)
434
436
  # Store reference to node for property_id enrichment
@@ -190,7 +190,8 @@ class ASTToJSONVisitor(NodeVisitor):
190
190
  entries_by_row[row_code] = []
191
191
  entries_by_row[row_code].append(record)
192
192
 
193
- rows = list(entries_by_row.keys())
193
+ # Sort rows to ensure consistent numerical ordering for x-coordinate calculation
194
+ rows = sorted(entries_by_row.keys())
194
195
 
195
196
  # Helper function to detect range syntax (e.g., '0010-0080')
196
197
  def _has_range_syntax(values):
@@ -211,6 +212,19 @@ class ASTToJSONVisitor(NodeVisitor):
211
212
  if col and col not in seen_cols:
212
213
  context_cols.append(col)
213
214
  seen_cols.add(col)
215
+ # Sort to ensure consistent numerical ordering for y-coordinate calculation
216
+ context_cols.sort()
217
+
218
+ # Build sheet order from data for z-coordinate calculation
219
+ # Extract unique sheets and sort them for consistent ordering
220
+ context_sheets = []
221
+ seen_sheets = set()
222
+ for record in data_records:
223
+ sheet = record.get('sheet_code', '')
224
+ if sheet and sheet not in seen_sheets:
225
+ context_sheets.append(sheet)
226
+ seen_sheets.add(sheet)
227
+ context_sheets.sort()
214
228
 
215
229
  # Transform the data to match expected JSON structure
216
230
  transformed_data = []
@@ -247,8 +261,11 @@ class ASTToJSONVisitor(NodeVisitor):
247
261
 
248
262
  # Add z coordinate if sheet data exists
249
263
  if sheet_code:
250
- # For now, use a simple index; could be enhanced with sheet position logic
251
- transformed_record['z'] = 1 # This could be enhanced with actual sheet indexing
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
252
269
 
253
270
  # Note: column and row are at VarID level, not in data entries
254
271
 
py_dpm/__init__.py CHANGED
@@ -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.39rc23"
44
+ __version__ = "0.1.39rc25"
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
  Metadata-Version: 2.4
2
2
  Name: pydpm_xl
3
- Version: 0.1.39rc23
3
+ Version: 0.1.39rc25
4
4
  Summary: Python library for DPM-XL data processing and analysis
5
5
  Author-email: "MeaningfulData S.L." <info@meaningfuldata.eu>
6
6
  License: GPL-3.0-or-later
@@ -1,4 +1,4 @@
1
- py_dpm/__init__.py,sha256=warY-f2q-G1sWP3PRCIud4QoevDsnbmhtp3So8DGhiQ,1863
1
+ py_dpm/__init__.py,sha256=lTGcMQ4FVtmqOhI9kmCqXFePSYZxtVUAZVL5DIFXib0,1863
2
2
  py_dpm/client.py,sha256=DspAS6lVLh62nLlyOy4UEBy00GLR0bb9Wbd6hOZ6bHY,19491
3
3
  py_dpm/data_handlers.py,sha256=_aJqkyflJr1oNsOQ24nB9yzfrpxu28NPrpoil2aAm58,4395
4
4
  py_dpm/db_utils.py,sha256=f0da6FT7HusGpLfGen4fceSvcojW4bzrp5sucgt6XVQ,7822
@@ -13,7 +13,7 @@ py_dpm/AST/ModuleAnalyzer.py,sha256=D93NORVMyEMiaAeVsRuw1qMSd5V5fF1Syh4mpo2gtKA,
13
13
  py_dpm/AST/ModuleDependencies.py,sha256=3Rx5rNLlaeM8UaqCR2lwy5uAK-jwum8eYGfJwzWAua8,8332
14
14
  py_dpm/AST/WhereClauseChecker.py,sha256=zsySpOPMmZgznZnN8Y6WdS-4qARingBmQa2c19xvYlc,322
15
15
  py_dpm/AST/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- py_dpm/AST/check_operands.py,sha256=tq4DP47IIU4Nm6vH-Ldorx0R_VIjVYBPQ9Ij8rk0t34,20877
16
+ py_dpm/AST/check_operands.py,sha256=byrhQWif3ZA1V9sR0p8YsUsU38utlYgXFjAqdPP2kAw,20978
17
17
  py_dpm/DataTypes/ScalarTypes.py,sha256=annQugU0iV457lruDDR2rNyZB-qGw-ei0J-p1CPp0Xs,6882
18
18
  py_dpm/DataTypes/TimeClasses.py,sha256=MmxsHn9sqBCQ-YkTKlGn-yow-Y-XVMRvrUEthqhT0JM,11379
19
19
  py_dpm/DataTypes/TypePromotion.py,sha256=Js_HBczw_cLdauzg5XtfDdJOGJdmQGtMnV_aTNkYgR0,9587
@@ -35,7 +35,7 @@ py_dpm/Operators/TimeOperators.py,sha256=klcFIYFonGVRNhr66Ipu1lwOr9CxzDGIbA3QQLm
35
35
  py_dpm/Operators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  py_dpm/Utils/ValidationsGenerationUtils.py,sha256=1yINJ_ANqr9BbIDdPm4WxRG2EQu0yaRICikYG1nIhzs,22652
37
37
  py_dpm/Utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- py_dpm/Utils/ast_serialization.py,sha256=hD9vpz-pQh65Mttlkr9hHLN0w-7HW0Md5n4Ov1e1wcI,30984
38
+ py_dpm/Utils/ast_serialization.py,sha256=MmFR1XJ9DqnNLNdGMv2P2nzMDEl_FN14uxwFFMJyQkw,31898
39
39
  py_dpm/Utils/operands_mapping.py,sha256=CDWvoKxh-nBcEKMxrUmMnaCveE8dExjeuFUa-lgK8Rg,2239
40
40
  py_dpm/Utils/operator_mapping.py,sha256=SK8utWaUaQJybSmErkF_2blzUIgiVOUNGFozIk7dBg8,1926
41
41
  py_dpm/Utils/tokens.py,sha256=VRIrPDi5ttwgH-on5Qt4-l4ho4bLA755-nfTalponcA,3496
@@ -88,9 +88,9 @@ py_dpm/views/precondition_info.sql,sha256=l24U8c6NtwFcUDFwb2FqH9h0xgpoi9WbvsKUgJ
88
88
  py_dpm/views/report_type_operand_reference_info.sql,sha256=_lBK9HQILk9yLD7cW9Ieud-vfTc-KQiU3WGAnN6LuNY,977
89
89
  py_dpm/views/subcategory_info.sql,sha256=V8UZiGjicmOWfBEHX2v6ktSMR4r_f1YiGD_LeN9Gn6o,812
90
90
  py_dpm/views/table_info.sql,sha256=htRXIVJya44CZAqjO5sVaJJwiQBQ30oiLFFu5DiBpR4,793
91
- pydpm_xl-0.1.39rc23.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
92
- pydpm_xl-0.1.39rc23.dist-info/METADATA,sha256=oeGPQfv2IIwmR9lUKuH6aEWDypvtke1VFujxkH4tA80,1592
93
- pydpm_xl-0.1.39rc23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
94
- pydpm_xl-0.1.39rc23.dist-info/entry_points.txt,sha256=W9j5xCzgvdfzOKSfEpkk2jSRhEcpmXZUVMwHrsEFAbY,45
95
- pydpm_xl-0.1.39rc23.dist-info/top_level.txt,sha256=495PvWZRoKl2NvbQU25W7dqWIBHqY-mFMPt83uxPpcM,7
96
- pydpm_xl-0.1.39rc23.dist-info/RECORD,,
91
+ pydpm_xl-0.1.39rc25.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
92
+ pydpm_xl-0.1.39rc25.dist-info/METADATA,sha256=3RLFGT5RdPfaLspYarV3n8lILuHG-CsqIyRrZRkuTpM,1592
93
+ pydpm_xl-0.1.39rc25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
94
+ pydpm_xl-0.1.39rc25.dist-info/entry_points.txt,sha256=W9j5xCzgvdfzOKSfEpkk2jSRhEcpmXZUVMwHrsEFAbY,45
95
+ pydpm_xl-0.1.39rc25.dist-info/top_level.txt,sha256=495PvWZRoKl2NvbQU25W7dqWIBHqY-mFMPt83uxPpcM,7
96
+ pydpm_xl-0.1.39rc25.dist-info/RECORD,,