@platforma-sdk/workflow-tengo 4.16.0 → 4.17.1

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.
Files changed (39) hide show
  1. package/dist/tengo/lib/pt.expression.lib.tengo +54 -12
  2. package/dist/tengo/lib/pt.lib.tengo +1 -9
  3. package/dist/tengo/tpl/anonymize.deanonymize.plj.gz +0 -0
  4. package/dist/tengo/tpl/anonymize.impl.plj.gz +0 -0
  5. package/dist/tengo/tpl/check_network.create_workdir_from_storage.plj.gz +0 -0
  6. package/dist/tengo/tpl/check_network.download_blob.plj.gz +0 -0
  7. package/dist/tengo/tpl/check_network.run_hello_world.plj.gz +0 -0
  8. package/dist/tengo/tpl/check_network.run_hello_world_py.plj.gz +0 -0
  9. package/dist/tengo/tpl/check_network.upload_blob.plj.gz +0 -0
  10. package/dist/tengo/tpl/check_network.upload_template.plj.gz +0 -0
  11. package/dist/tengo/tpl/check_network.workdir_type_name_extractor.plj.gz +0 -0
  12. package/dist/tengo/tpl/exec.R.create-renv.plj.gz +0 -0
  13. package/dist/tengo/tpl/exec.delayed-compute-allocation.impl.plj.gz +0 -0
  14. package/dist/tengo/tpl/exec.exec-impl.plj.gz +0 -0
  15. package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
  16. package/dist/tengo/tpl/exec.load-software.impl.plj.gz +0 -0
  17. package/dist/tengo/tpl/exec.monetization_info.plj.gz +0 -0
  18. package/dist/tengo/tpl/exec.monetization_to_json.plj.gz +0 -0
  19. package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
  20. package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
  21. package/dist/tengo/tpl/exec.python.venv-bin-path.plj.gz +0 -0
  22. package/dist/tengo/tpl/ll.get-field.plj.gz +0 -0
  23. package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
  24. package/dist/tengo/tpl/pframes.export-pframe-for-ui.plj.gz +0 -0
  25. package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
  26. package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
  27. package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
  28. package/dist/tengo/tpl/pframes.parse-to-json.plj.gz +0 -0
  29. package/dist/tengo/tpl/pframes.process-pcolumn-data.plj.gz +0 -0
  30. package/dist/tengo/tpl/pframes.remove-nulls.plj.gz +0 -0
  31. package/dist/tengo/tpl/pframes.slice-data.plj.gz +0 -0
  32. package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
  33. package/dist/tengo/tpl/pframes.xsv-import-if-not-null.plj.gz +0 -0
  34. package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
  35. package/dist/tengo/tpl/waiter.waiter.plj.gz +0 -0
  36. package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
  37. package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
  38. package/dist/tengo/tpl/workflow.query-anchored.plj.gz +0 -0
  39. package/package.json +2 -2
@@ -338,23 +338,65 @@ _newExpression = func(expression, currentAlias) {
338
338
 
339
339
 
340
340
 
341
- structField: func(...fieldNames) {
342
- ll.assert(len(fieldNames) > 0, "structField expects at least one field name")
343
- for fieldName in fieldNames {
344
- ll.assert(is_string(fieldName), "All field names must be strings, got: %T", fieldName)
345
- }
346
341
 
347
342
 
348
- currentExpr := expression
349
- for fieldName in fieldNames {
350
- currentExpr = {
351
- type: "struct_field",
352
- struct: currentExpr,
353
- fields: fieldName
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+ structField: func(fieldPath, ...options) {
357
+
358
+ ll.assert(!is_undefined(fieldPath), "structField expects a field path (string or array of strings)")
359
+
360
+ fields := undefined
361
+ if is_string(fieldPath) {
362
+ fields = fieldPath
363
+ } else if is_array(fieldPath) {
364
+ ll.assert(len(fieldPath) > 0, "structField field path array cannot be empty")
365
+ for fieldName in fieldPath {
366
+ ll.assert(is_string(fieldName), "All field names in path must be strings, got: %T", fieldName)
367
+ }
368
+ if len(fieldPath) == 1 {
369
+ fields = fieldPath[0]
370
+ } else {
371
+ fields = fieldPath
354
372
  }
373
+ } else {
374
+ ll.panic("structField fieldPath must be a string or array of strings, got: %T", fieldPath)
375
+ }
376
+
377
+
378
+ ops := _validateOptions(options, {
379
+ "__options__,closed": "",
380
+ "default,?": "any",
381
+ "dtype,?": "string"
382
+ }, "structField")
383
+
384
+
385
+ structExpr := {
386
+ type: "struct_field",
387
+ struct: expression,
388
+ fields: fields
389
+ }
390
+
391
+
392
+ if !is_undefined(ops.default) {
393
+ structExpr.default = ops.default
394
+ }
395
+ if !is_undefined(ops.dtype) {
396
+ structExpr.dtype = ops.dtype
355
397
  }
356
398
 
357
- return _newExpression(currentExpr, undefined)
399
+ return _newExpression(structExpr, undefined)
358
400
  },
359
401
 
360
402
 
@@ -829,7 +829,6 @@ _newDataFrame = func(parentWorkflow, dfName) {
829
829
 
830
830
 
831
831
 
832
-
833
832
 
834
833
 
835
834
  sort: func(by, ...optionsRaw) {
@@ -847,7 +846,6 @@ _newDataFrame = func(parentWorkflow, dfName) {
847
846
 
848
847
  descendingOpt := opts.descending
849
848
  nullsLastOpt := opts.nulls_last
850
- maintainOrderOpt := opts.maintain_order // Corresponds to 'stable' in PTabler SortStep
851
849
 
852
850
  if !is_undefined(descendingOpt) && !is_bool(descendingOpt) && !is_array(descendingOpt) {
853
851
  ll.panic("sort 'descending' option must be a boolean or an array of booleans. Got: %T", descendingOpt)
@@ -863,9 +861,7 @@ _newDataFrame = func(parentWorkflow, dfName) {
863
861
  ll.panic("sort 'nulls_last' array length (%d) must match the number of sort keys (%d).", len(nullsLastOpt), len(by))
864
862
  }
865
863
 
866
- if !is_undefined(maintainOrderOpt) && !is_bool(maintainOrderOpt) {
867
- ll.panic("sort 'maintain_order' option must be a boolean. Got: %T", maintainOrderOpt)
868
- }
864
+
869
865
 
870
866
  sortDirectives := []
871
867
  for i, item in by {
@@ -918,10 +914,6 @@ _newDataFrame = func(parentWorkflow, dfName) {
918
914
  by: sortDirectives
919
915
  }
920
916
 
921
- if !is_undefined(maintainOrderOpt) && maintainOrderOpt == true {
922
- sortStep.stable = true // PTabler 'stable' maps to Polars 'maintain_order'
923
- }
924
-
925
917
  parentWorkflow.addRawStep(sortStep)
926
918
  return _newDataFrame(parentWorkflow, outputDfName)
927
919
  },
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/workflow-tengo",
3
- "version": "4.16.0",
3
+ "version": "4.17.1",
4
4
  "description": "Tengo SDK library",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "@milaboratories/software-pframes-conv": "2.2.2",
20
20
  "@platforma-open/milaboratories.software-small-binaries": "^1.15.21",
21
- "@platforma-open/milaboratories.software-ptabler": "1.11.0"
21
+ "@platforma-open/milaboratories.software-ptabler": ""
22
22
  },
23
23
  "devDependencies": {
24
24
  "@platforma-sdk/tengo-builder": "^2.1.14"