@platforma-sdk/workflow-tengo 6.10.3 → 6.10.5

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 (64) hide show
  1. package/dist/tengo/lib/annotations.util.lib.tengo +0 -1
  2. package/dist/tengo/lib/anonymize.impl.lib.tengo +0 -1
  3. package/dist/tengo/lib/anonymize.lib.tengo +0 -1
  4. package/dist/tengo/lib/exec.R.lib.tengo +0 -1
  5. package/dist/tengo/lib/exec.conda.lib.tengo +0 -2
  6. package/dist/tengo/lib/exec.lib.tengo +11 -1
  7. package/dist/tengo/lib/exec.monetization_internal.lib.tengo +0 -3
  8. package/dist/tengo/lib/exec.python.lib.tengo +0 -1
  9. package/dist/tengo/lib/exec.tmpdir-compat.lib.tengo +120 -12
  10. package/dist/tengo/lib/ll.lib.tengo +0 -1
  11. package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +0 -1
  12. package/dist/tengo/lib/pframes.xsv.lib.tengo +0 -1
  13. package/dist/tengo/lib/render.lib.tengo +0 -2
  14. package/dist/tengo/lib/tpl.base.lib.tengo +0 -1
  15. package/dist/tengo/lib/tpl.state-await.lib.tengo +0 -1
  16. package/dist/tengo/lib/validation.lib.tengo +0 -2
  17. package/dist/tengo/lib/workflow.bobject.lib.tengo +0 -1
  18. package/dist/tengo/lib/workflow.lib.tengo +0 -2
  19. package/dist/tengo/tpl/annotations.compute.plj.gz +0 -0
  20. package/dist/tengo/tpl/anonymize.deanonymize.plj.gz +0 -0
  21. package/dist/tengo/tpl/anonymize.impl.plj.gz +0 -0
  22. package/dist/tengo/tpl/check_network.create_workdir_from_storage.plj.gz +0 -0
  23. package/dist/tengo/tpl/check_network.download_blob.plj.gz +0 -0
  24. package/dist/tengo/tpl/check_network.run_hello_world.plj.gz +0 -0
  25. package/dist/tengo/tpl/check_network.run_hello_world_py.plj.gz +0 -0
  26. package/dist/tengo/tpl/check_network.upload_blob.plj.gz +0 -0
  27. package/dist/tengo/tpl/check_network.upload_template.plj.gz +0 -0
  28. package/dist/tengo/tpl/check_network.workdir_type_name_extractor.plj.gz +0 -0
  29. package/dist/tengo/tpl/exec.conda.create-env.plj.gz +0 -0
  30. package/dist/tengo/tpl/exec.delayed-compute-allocation.impl.plj.gz +0 -0
  31. package/dist/tengo/tpl/exec.exec-impl.plj.gz +0 -0
  32. package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
  33. package/dist/tengo/tpl/exec.load-software.impl.plj.gz +0 -0
  34. package/dist/tengo/tpl/exec.monetization_info.plj.gz +0 -0
  35. package/dist/tengo/tpl/exec.monetization_to_json.plj.gz +0 -0
  36. package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
  37. package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
  38. package/dist/tengo/tpl/exec.python.venv-bin-path.plj.gz +0 -0
  39. package/dist/tengo/tpl/ll.get-field.plj.gz +0 -0
  40. package/dist/tengo/tpl/pframes.build-table.plj.gz +0 -0
  41. package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
  42. package/dist/tengo/tpl/pframes.export-parquet-pcolumn-chunk.plj.gz +0 -0
  43. package/dist/tengo/tpl/pframes.export-pframe-for-ui.plj.gz +0 -0
  44. package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
  45. package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
  46. package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
  47. package/dist/tengo/tpl/pframes.merge-resource-maps.plj.gz +0 -0
  48. package/dist/tengo/tpl/pframes.parse-to-json.plj.gz +0 -0
  49. package/dist/tengo/tpl/pframes.process-pcolumn-batch-split.plj.gz +0 -0
  50. package/dist/tengo/tpl/pframes.process-pcolumn-batch.plj.gz +0 -0
  51. package/dist/tengo/tpl/pframes.process-pcolumn-data.plj.gz +0 -0
  52. package/dist/tengo/tpl/pframes.remove-nulls.plj.gz +0 -0
  53. package/dist/tengo/tpl/pframes.slice-data.plj.gz +0 -0
  54. package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
  55. package/dist/tengo/tpl/pframes.xsv-import-if-not-null.plj.gz +0 -0
  56. package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
  57. package/dist/tengo/tpl/pt.import-dir.plj.gz +0 -0
  58. package/dist/tengo/tpl/pt.workflow-run.plj.gz +0 -0
  59. package/dist/tengo/tpl/waiter.waiter.plj.gz +0 -0
  60. package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
  61. package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
  62. package/dist/tengo/tpl/workflow.query-anchored.plj.gz +0 -0
  63. package/dist/tengo/tpl/workflow.query-context-filter.plj.gz +0 -0
  64. package/package.json +7 -7
@@ -1,5 +1,4 @@
1
1
  hex := import("hex")
2
- rand := import("rand")
3
2
  text := import("text")
4
3
 
5
4
  ll := import("@platforma-sdk/workflow-tengo:ll")
@@ -1,6 +1,5 @@
1
1
  smart := import("@platforma-sdk/workflow-tengo:smart")
2
2
  ll := import("@platforma-sdk/workflow-tengo:ll")
3
- fmt := import("fmt")
4
3
  maps := import("@platforma-sdk/workflow-tengo:maps")
5
4
 
6
5
 
@@ -5,7 +5,6 @@ render := import("@platforma-sdk/workflow-tengo:render")
5
5
  assets := import("@platforma-sdk/workflow-tengo:assets")
6
6
  ll := import("@platforma-sdk/workflow-tengo:ll")
7
7
  smart := import("@platforma-sdk/workflow-tengo:smart")
8
- times := import("times")
9
8
  maps := import("@platforma-sdk/workflow-tengo:maps")
10
9
 
11
10
  anonymizeImplTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:anonymize.impl")
@@ -2,7 +2,6 @@ times := import("times")
2
2
 
3
3
  ll := import("@platforma-sdk/workflow-tengo:ll")
4
4
  validation := import("@platforma-sdk/workflow-tengo:validation")
5
- smart := import("@platforma-sdk/workflow-tengo:smart")
6
5
  pkg := import("@platforma-sdk/workflow-tengo:exec.package")
7
6
  internal := import("@platforma-sdk/workflow-tengo:exec.R.internal")
8
7
  desc := import("@platforma-sdk/workflow-tengo:exec.descriptor")
@@ -1,11 +1,9 @@
1
- json := import("json")
2
1
  times := import("times")
3
2
 
4
3
  ll := import("@platforma-sdk/workflow-tengo:ll")
5
4
  oop := import("@platforma-sdk/workflow-tengo:oop")
6
5
  validation := import("@platforma-sdk/workflow-tengo:validation")
7
6
  assets := import("@platforma-sdk/workflow-tengo:assets")
8
- smart := import("@platforma-sdk/workflow-tengo:smart")
9
7
  render := import("@platforma-sdk/workflow-tengo:render")
10
8
  pkg := import("@platforma-sdk/workflow-tengo:exec.package")
11
9
  internal := import("@platforma-sdk/workflow-tengo:exec.conda.internal")
@@ -1349,7 +1349,17 @@ builder := func() {
1349
1349
  tmpdirCompat.isSizedRequest(scratchFreeSpace, scratchFormulaAst)
1350
1350
  )
1351
1351
  if tmpdirCompatNeeded {
1352
- filesToWrite[tmpdirCompat.SCRIPT_FILE_NAME] = tmpdirCompat.script()
1352
+
1353
+
1354
+
1355
+ inContainer := false
1356
+ if !is_undefined(soft) {
1357
+ inContainer = tmpdirCompat.usesDocker(
1358
+ ll.fromStrict(soft.descriptor), feats.isDockerAvailable)
1359
+ }
1360
+ for name, content in tmpdirCompat.filesToStage(inContainer) {
1361
+ filesToWrite[name] = content
1362
+ }
1353
1363
 
1354
1364
 
1355
1365
 
@@ -1,7 +1,5 @@
1
1
 
2
2
 
3
- base64 := import("base64")
4
- json := import("json")
5
3
 
6
4
  ll := import("@platforma-sdk/workflow-tengo:ll")
7
5
 
@@ -13,7 +11,6 @@ runcmd := import("@platforma-sdk/workflow-tengo:exec.runcmd")
13
11
  workdir := import("@platforma-sdk/workflow-tengo:workdir")
14
12
  render := import("@platforma-sdk/workflow-tengo:render")
15
13
  slices := import("@platforma-sdk/workflow-tengo:slices")
16
- sets := import("@platforma-sdk/workflow-tengo:sets")
17
14
 
18
15
  _JWT_TOKEN_RESULT_ENV := "PLATFORMA_MNZ_JWT"
19
16
 
@@ -4,7 +4,6 @@ ll := import("@platforma-sdk/workflow-tengo:ll")
4
4
  oop := import("@platforma-sdk/workflow-tengo:oop")
5
5
  validation := import("@platforma-sdk/workflow-tengo:validation")
6
6
  assets := import("@platforma-sdk/workflow-tengo:assets")
7
- smart := import("@platforma-sdk/workflow-tengo:smart")
8
7
  render := import("@platforma-sdk/workflow-tengo:render")
9
8
  pkg := import("@platforma-sdk/workflow-tengo:exec.package")
10
9
  internal := import("@platforma-sdk/workflow-tengo:exec.python.internal")
@@ -22,6 +22,10 @@
22
22
 
23
23
 
24
24
 
25
+
26
+
27
+
28
+
25
29
 
26
30
 
27
31
 
@@ -42,6 +46,12 @@ SCRIPT_FILE_NAME := ".pl-run-compat-f9b7eca1b8.sh"
42
46
 
43
47
 
44
48
 
49
+ SCRIPT_FILE_NAME_WINDOWS := ".pl-run-compat-f9b7eca1b8.cmd"
50
+
51
+
52
+
53
+
54
+
45
55
 
46
56
 
47
57
 
@@ -61,6 +71,14 @@ WORKDIR_TMP_REL_PATH := ".pl/tmp"
61
71
 
62
72
 
63
73
 
74
+
75
+ WORKDIR_TMP_REL_PATH_WINDOWS := ".pl\\tmp"
76
+
77
+
78
+
79
+
80
+
81
+
64
82
  script := func() {
65
83
  return `#!/bin/sh
66
84
 
@@ -87,6 +105,59 @@ exec "$@"
87
105
 
88
106
 
89
107
 
108
+ _toCRLF := func(value) {
109
+ return text.replace(text.replace(value, "\r\n", "\n", -1), "\n", "\r\n", -1)
110
+ }
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+ scriptWindows := func() {
134
+ return _toCRLF(`@echo off
135
+
136
+ rem Compatibility layer between a current workflow-tengo SDK and a Platforma Backend from before
137
+ rem the temporary-directory contract. Update the backend and this file stops appearing here.
138
+ rem
139
+ rem Written by exec.tmpdirCompat in @platforma-sdk/workflow-tengo.
140
+
141
+ setlocal
142
+
143
+ set "pl_tmp=%CD%\` + WORKDIR_TMP_REL_PATH_WINDOWS + `"
144
+ if not exist "%pl_tmp%" md "%pl_tmp%"
145
+
146
+ set "TMPDIR=%pl_tmp%"
147
+ set "TMP=%pl_tmp%"
148
+ set "TEMP=%pl_tmp%"
149
+
150
+ %*
151
+ exit /b %ERRORLEVEL%
152
+ `)
153
+ }
154
+
155
+
156
+
157
+
158
+
159
+
160
+
90
161
 
91
162
 
92
163
  isNeeded := func(feats, scratchSized) {
@@ -148,11 +219,43 @@ concat := func(prefix, tail) {
148
219
 
149
220
 
150
221
 
151
- _assertNotWindows := func() {
152
- ll.assert(!isWindows(),
153
- "exec.builder: this Platforma Backend is too old to provide a temporary directory (TMPDIR),"+
154
- " and the workaround for it is POSIX-shell only, so it cannot run on Windows."+
155
- " Update Platforma Backend to a version >=4.4.5")
222
+
223
+
224
+
225
+ usesDocker := func(descriptor, isDockerAvailable) {
226
+ return isDockerAvailable && !is_undefined(descriptor.docker)
227
+ }
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+ wrapperPrefix := func(inContainer) {
237
+ if !inContainer && isWindows() {
238
+ return [".\\" + SCRIPT_FILE_NAME_WINDOWS]
239
+ }
240
+
241
+ return ["sh", "./" + SCRIPT_FILE_NAME]
242
+ }
243
+
244
+
245
+
246
+
247
+
248
+
249
+ filesToStage := func(inContainer) {
250
+ files := {}
251
+
252
+ if !inContainer && isWindows() {
253
+ files[SCRIPT_FILE_NAME_WINDOWS] = scriptWindows()
254
+ return files
255
+ }
256
+
257
+ files[SCRIPT_FILE_NAME] = script()
258
+ return files
156
259
  }
157
260
 
158
261
 
@@ -167,12 +270,12 @@ _assertNotWindows := func() {
167
270
 
168
271
 
169
272
  patchSoftwareDescriptor := func(descriptor, isDockerAvailable) {
170
- if isDockerAvailable && !is_undefined(descriptor.docker) {
273
+ if usesDocker(descriptor, isDockerAvailable) {
171
274
  docker := ll.fromStrict(descriptor.docker)
172
275
 
173
276
  entrypoint := docker.entrypoint
174
277
  if is_undefined(entrypoint) { entrypoint = [] }
175
- docker.entrypoint = concat(["sh", "./" + SCRIPT_FILE_NAME], entrypoint)
278
+ docker.entrypoint = concat(wrapperPrefix(true), entrypoint)
176
279
 
177
280
  descriptor.docker = docker
178
281
  return descriptor
@@ -180,7 +283,6 @@ patchSoftwareDescriptor := func(descriptor, isDockerAvailable) {
180
283
 
181
284
 
182
285
 
183
- _assertNotWindows()
184
286
 
185
287
  for kind in ["local", "binary"] {
186
288
  if is_undefined(descriptor[kind]) { continue }
@@ -189,7 +291,7 @@ patchSoftwareDescriptor := func(descriptor, isDockerAvailable) {
189
291
  ll.assert(is_array(pkg.cmd) && len(pkg.cmd) != 0,
190
292
  "exec.tmpdirCompat: software descriptor %q has no 'cmd' to wrap", kind)
191
293
 
192
- pkg.cmd = concat(["sh", "./" + SCRIPT_FILE_NAME], pkg.cmd)
294
+ pkg.cmd = concat(wrapperPrefix(false), pkg.cmd)
193
295
  descriptor[kind] = pkg
194
296
  }
195
297
 
@@ -202,11 +304,11 @@ patchSoftwareDescriptor := func(descriptor, isDockerAvailable) {
202
304
 
203
305
 
204
306
  wrapCommand := func(cmd) {
205
- _assertNotWindows()
307
+ prefix := wrapperPrefix(false)
206
308
 
207
309
  return {
208
- cmd: "sh",
209
- prependArgs: ["./" + SCRIPT_FILE_NAME, cmd]
310
+ cmd: prefix[0],
311
+ prependArgs: concat(prefix[1:], [cmd])
210
312
  }
211
313
  }
212
314
 
@@ -255,11 +357,17 @@ rewriteScratchExpressions := func(value) {
255
357
 
256
358
  export ll.toStrict({
257
359
  SCRIPT_FILE_NAME: SCRIPT_FILE_NAME,
360
+ SCRIPT_FILE_NAME_WINDOWS: SCRIPT_FILE_NAME_WINDOWS,
258
361
  WORKDIR_TMP_REL_PATH: WORKDIR_TMP_REL_PATH,
362
+ WORKDIR_TMP_REL_PATH_WINDOWS: WORKDIR_TMP_REL_PATH_WINDOWS,
259
363
  SCRATCH_PATH_VARIABLE: SCRATCH_PATH_VARIABLE,
260
364
  SCRATCH_SIZE_VARIABLES: SCRATCH_SIZE_VARIABLES,
261
365
 
262
366
  script: script,
367
+ scriptWindows: scriptWindows,
368
+ filesToStage: filesToStage,
369
+ usesDocker: usesDocker,
370
+ wrapperPrefix: wrapperPrefix,
263
371
  isNeeded: isNeeded,
264
372
  isSizedRequest: isSizedRequest,
265
373
  isWindows: isWindows,
@@ -2,7 +2,6 @@
2
2
 
3
3
  plapi := import("plapi")
4
4
  fmt := import("fmt")
5
- log := import("log")
6
5
  text := import("text")
7
6
 
8
7
 
@@ -4,7 +4,6 @@ render := import("@platforma-sdk/workflow-tengo:render")
4
4
  file := import("@platforma-sdk/workflow-tengo:file")
5
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
6
  assets := import("@platforma-sdk/workflow-tengo:assets")
7
- json := import("json")
8
7
 
9
8
 
10
9
  nestedTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-single-pcolumn")
@@ -13,7 +13,6 @@ pBuilder := import("@platforma-sdk/workflow-tengo:pframes.builder")
13
13
  ll := import("@platforma-sdk/workflow-tengo:ll")
14
14
  assets := import("@platforma-sdk/workflow-tengo:assets")
15
15
  xsvIF := import("@platforma-sdk/workflow-tengo:pframes.xsv-import-file")
16
- text := import("text")
17
16
 
18
17
  importXsvIfNullTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.xsv-import-if-not-null")
19
18
 
@@ -3,13 +3,11 @@
3
3
 
4
4
 
5
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
- assets := import("@platforma-sdk/workflow-tengo:assets")
7
6
  smart := import("@platforma-sdk/workflow-tengo:smart")
8
7
  tplutil := import("@platforma-sdk/workflow-tengo:tpl.util")
9
8
  constants := import("@platforma-sdk/workflow-tengo:constants")
10
9
  oop := import("@platforma-sdk/workflow-tengo:oop")
11
10
  tx := import("tx")
12
- times := import("times")
13
11
  maps := import("@platforma-sdk/workflow-tengo:maps")
14
12
  feats := import("@platforma-sdk/workflow-tengo:feats")
15
13
 
@@ -1,4 +1,3 @@
1
- tx := import("tx")
2
1
  ll := import("@platforma-sdk/workflow-tengo:ll")
3
2
  render := import("@platforma-sdk/workflow-tengo:render")
4
3
  smart := import("@platforma-sdk/workflow-tengo:smart")
@@ -5,7 +5,6 @@
5
5
 
6
6
  tx := import("tx")
7
7
  ll := import("@platforma-sdk/workflow-tengo:ll")
8
- text := import("text")
9
8
  regexp := import("@platforma-sdk/workflow-tengo:regexp")
10
9
  smart := import("@platforma-sdk/workflow-tengo:smart")
11
10
  maps := import("@platforma-sdk/workflow-tengo:maps")
@@ -2,11 +2,9 @@ ll := import("@platforma-sdk/workflow-tengo:ll")
2
2
  fmt := import("fmt")
3
3
  text := import("text")
4
4
  maps := import("@platforma-sdk/workflow-tengo:maps")
5
- enum := import("enum")
6
5
  smart := import("@platforma-sdk/workflow-tengo:smart")
7
6
  regexp := import("@platforma-sdk/workflow-tengo:regexp")
8
7
 
9
- json := import("json")
10
8
 
11
9
 
12
10
 
@@ -6,7 +6,6 @@ ll := import("@platforma-sdk/workflow-tengo:ll")
6
6
  constants := import("@platforma-sdk/workflow-tengo:constants")
7
7
  json := import("json")
8
8
  smart := import("@platforma-sdk/workflow-tengo:smart")
9
- validation := import("@platforma-sdk/workflow-tengo:validation")
10
9
 
11
10
 
12
11
 
@@ -2,11 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- tx := import("tx")
6
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
7
6
  assets := import("@platforma-sdk/workflow-tengo:assets")
8
7
  text := import("text")
9
- json := import("json")
10
8
 
11
9
  constants := import("@platforma-sdk/workflow-tengo:workflow.constants")
12
10
  render := import("@platforma-sdk/workflow-tengo:render")
Binary file
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": "6.10.3",
3
+ "version": "6.10.5",
4
4
  "description": "Tengo SDK library",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -16,18 +16,18 @@
16
16
  "./dist/**/*"
17
17
  ],
18
18
  "dependencies": {
19
- "@milaboratories/pframes-rs-wasip2": "1.1.60",
19
+ "@milaboratories/pframes-rs-wasip2": "1.1.61",
20
20
  "@milaboratories/software-pframes-conv": "2.2.9",
21
21
  "@platforma-open/milaboratories.software-small-binaries": "^2.1.1",
22
- "@platforma-open/milaboratories.software-ptexter": "1.2.4",
23
- "@platforma-open/milaboratories.software-ptabler": "2.1.10"
22
+ "@platforma-open/milaboratories.software-ptabler": "2.1.11",
23
+ "@platforma-open/milaboratories.software-ptexter": "1.2.4"
24
24
  },
25
25
  "devDependencies": {
26
- "@platforma-sdk/tengo-builder": "4.0.27"
26
+ "@platforma-sdk/tengo-builder": "4.1.0"
27
27
  },
28
28
  "scripts": {
29
- "type-check": "pl-tengo check",
30
- "build": "rm -rf dist && ./scripts/build.sh",
29
+ "types:check": "pl-tengo imports && pl-tengo check",
30
+ "build": "rm -rf dist && pl-tengo build",
31
31
  "test": "pl-tengo test",
32
32
  "format": "/usr/bin/env emacs --quick --script ./scripts/format.el",
33
33
  "format-stdin": "/usr/bin/env emacs --quick --script ./scripts/format-stdin.el",