@platforma-sdk/workflow-tengo 2.9.6 → 2.9.8

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/assets.lib.tengo +52 -52
  2. package/dist/tengo/lib/assets.swinfo.lib.tengo +45 -45
  3. package/dist/tengo/lib/constants.lib.tengo +32 -32
  4. package/dist/tengo/lib/exec.R.internal.lib.tengo +29 -29
  5. package/dist/tengo/lib/exec.R.lib.tengo +166 -166
  6. package/dist/tengo/lib/exec.constants.lib.tengo +4 -4
  7. package/dist/tengo/lib/exec.descriptor.lib.tengo +31 -31
  8. package/dist/tengo/lib/exec.internal.lib.tengo +297 -297
  9. package/dist/tengo/lib/exec.lib.tengo +815 -815
  10. package/dist/tengo/lib/exec.monetization.lib.tengo +130 -130
  11. package/dist/tengo/lib/exec.package.lib.tengo +212 -212
  12. package/dist/tengo/lib/exec.python.internal.lib.tengo +6 -6
  13. package/dist/tengo/lib/exec.python.lib.tengo +146 -146
  14. package/dist/tengo/lib/exec.runcmd.lib.tengo +371 -371
  15. package/dist/tengo/lib/exec.runenv.lib.tengo +92 -92
  16. package/dist/tengo/lib/exec.stream.lib.tengo +40 -40
  17. package/dist/tengo/lib/file.internal.lib.tengo +77 -77
  18. package/dist/tengo/lib/file.lib.tengo +57 -57
  19. package/dist/tengo/lib/ll.lib.tengo +244 -244
  20. package/dist/tengo/lib/maps.lib.tengo +152 -152
  21. package/dist/tengo/lib/objects.lib.tengo +13 -13
  22. package/dist/tengo/lib/oop.lib.tengo +19 -19
  23. package/dist/tengo/lib/path.lib.tengo +125 -125
  24. package/dist/tengo/lib/pframes.constants.lib.tengo +28 -28
  25. package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +33 -33
  26. package/dist/tengo/lib/pframes.lib.tengo +43 -43
  27. package/dist/tengo/lib/pframes.ll.lib.tengo +72 -72
  28. package/dist/tengo/lib/pframes.pcolumn.lib.tengo +49 -49
  29. package/dist/tengo/lib/pframes.spec.lib.tengo +96 -96
  30. package/dist/tengo/lib/pframes.util.lib.tengo +288 -288
  31. package/dist/tengo/lib/pframes.xsv.lib.tengo +272 -272
  32. package/dist/tengo/lib/render.lib.tengo +75 -75
  33. package/dist/tengo/lib/sets.lib.tengo +68 -68
  34. package/dist/tengo/lib/slices.lib.tengo +258 -155
  35. package/dist/tengo/lib/smart.lib.tengo +1069 -1069
  36. package/dist/tengo/lib/test.lib.tengo +161 -161
  37. package/dist/tengo/lib/tpl.lib.tengo +515 -515
  38. package/dist/tengo/lib/tpl.state-await.lib.tengo +240 -240
  39. package/dist/tengo/lib/tpl.util.lib.tengo +9 -9
  40. package/dist/tengo/lib/validation.lib.tengo +378 -378
  41. package/dist/tengo/lib/workdir.lib.tengo +331 -331
  42. package/dist/tengo/lib/workdir.proc.lib.tengo +144 -144
  43. package/dist/tengo/lib/workdir.save.lib.tengo +130 -130
  44. package/dist/tengo/lib/workflow.bobject.lib.tengo +26 -26
  45. package/dist/tengo/lib/workflow.bquery.lib.tengo +165 -165
  46. package/dist/tengo/lib/workflow.constants.lib.tengo +2 -2
  47. package/dist/tengo/lib/workflow.context.lib.tengo +32 -32
  48. package/dist/tengo/lib/workflow.lib.tengo +206 -206
  49. package/dist/tengo/tpl/exec.R.create-renv.plj.gz +0 -0
  50. package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
  51. package/dist/tengo/tpl/exec.monetization_to_json.plj.gz +0 -0
  52. package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
  53. package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
  54. package/dist/tengo/tpl/pframes.aggregate.plj.gz +0 -0
  55. package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
  56. package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
  57. package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
  58. package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
  59. package/dist/tengo/tpl/pframes.map-pframe.plj.gz +0 -0
  60. package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
  61. package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
  62. package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
  63. package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
  64. package/package.json +2 -2
@@ -15,174 +15,174 @@ _OUTPUT_RUN_ENV := "runEnv"
15
15
  createRenvTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:exec.R.create-renv")
16
16
 
17
17
  rVenvBuilder := func() {
18
- self := undefined
19
-
20
- opMode := "remote"
21
- toolset := "renv"
22
- rDescriptor := undefined
23
- softwareRef := undefined
24
- dependencies := undefined
25
- cache := 0
26
-
27
- self = {
28
- operationMode: func(mode) {
29
- validation.assertJsonSchema(mode, "string",
30
- "exec.R.operationMode: <mode> must be string")
31
-
32
- ll.assert(mode == "remote" || mode == "dev-local",
33
- "exec.R.operationMode: unsupported operation mode: 'remote', 'dev-local' are valid in this version of workflow-tengo SDK")
34
-
35
- opMode = mode
36
- return self
37
- },
38
-
39
- useToolset: func(name) {
40
- validation.assertJsonSchema(name, "string",
41
- "exec.R.useToolset: <name> must be valid name of R packaging toolset (i.e. 'renv')")
42
- ll.assert(name != "", "exec.R.useToolset: toolset name must not be empty")
43
-
44
- toolset = name
45
- return self
46
- },
47
-
48
- runEnvDescriptor: func(descriptor) {
49
- validation.assertJsonSchema(descriptor, desc.runEnvScheme, "exec.R.runEnvDescriptor: <descriptor> must be run environment specification")
50
- ll.assert(descriptor.type == "R", "exec.R.runEnvDescriptor: not a 'R' run environment: %q", descriptor.type)
51
-
52
- rDescriptor = ll.fromStrict(descriptor)
53
- return self
54
- },
55
-
56
- software: func(pkgRef) {
57
- validation.assertJsonSchema(pkgRef, validation.reference, "exec.R.software: <pkgRef> must be a reference to software package")
58
-
59
- softwareRef = pkgRef
60
- return self
61
- },
62
-
63
- dependencies: func(deps) {
64
- validation.assertJsonSchema(deps, { "any": "string" }, "exec.R.dependencies: <deps> must be map of reference file paths")
65
-
66
- dependencies = deps
67
- return self
68
- },
69
-
70
-
71
-
72
-
73
-
74
-
75
- cacheMillis: func(millis) {
76
- ll.assert(is_int(millis) && millis > 0, "exec.R.cacheMillis: cache time must be a number of milliseconds")
77
- cache = millis * times.millisecond
78
- return self
79
- },
80
-
81
-
82
-
83
-
84
-
85
-
86
- cacheSeconds: func(seconds) {
87
- ll.assert(is_int(seconds) && seconds > 0, "exec.R.cacheSeconds: cache time must be a number of seconds")
88
- cache = seconds * times.second
89
- return self
90
- },
91
-
92
-
93
-
94
-
95
-
96
-
97
- cacheMinutes: func(minutes) {
98
- ll.assert(is_int(minutes) && minutes > 0, "exec.R.cacheMinutes: cache time must be a number of minutes")
99
- cache = minutes * times.minute
100
- return self
101
- },
102
-
103
-
104
-
105
-
106
-
107
-
108
- cacheHours: func(hours) {
109
- ll.assert(is_int(hours) && hours > 0, "exec.R.cacheHours: cache time must be a number of hours")
110
- cache = hours * times.hour
111
- return self
112
- },
113
-
114
-
115
-
116
-
117
-
118
-
119
- cacheDays: func(days) {
120
- ll.assert(is_int(days) && days > 0, "exec.R.cacheDays: cache time must be a number of days")
121
- cache = days * times.hour * 24
122
- return self
123
- },
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
- cache: func(time) {
132
- ll.assert(
133
- is_int(time) && time > times.millisecond,
134
- "exec.R.cache: cache time must be an integer. " +
135
- "Did you forget to import a standard tengo library 'times'?")
136
- cache = time
137
- return self
138
- },
139
-
140
- build: func() {
141
- archive := pkg.get(rDescriptor.registry, rDescriptor.package).archive()
142
- rPkg := pkg.install(archive).package()
143
-
144
- rVenvInputs := {
145
- operationMode: opMode,
146
- toolset: toolset,
147
- dependencies: dependencies,
148
- software: softwareRef,
149
- rDescriptor: rDescriptor,
150
- R: rPkg
151
- }
152
-
153
- validation.assertJsonSchema(rVenvInputs, internal.rVenvInputSchema, "incomplete R runenv configuration")
154
-
155
- tpl := render.create(createRenvTpl, rVenvInputs)
156
-
157
- self := undefined
158
- self = ll.toStrict(oop.inherit(tpl, {
159
-
160
-
161
-
162
-
163
-
164
- venv: func() {
165
- return tpl.output(_OUTPUT_RUN_ENV, cache)
166
- },
167
-
168
-
169
-
170
-
171
-
172
-
173
- R: func() {
174
- return rPkg
175
- }
176
- }))
177
-
178
- return self
179
- }
180
- }
181
-
182
- return self
18
+ self := undefined
19
+
20
+ opMode := "remote"
21
+ toolset := "renv"
22
+ rDescriptor := undefined
23
+ softwareRef := undefined
24
+ dependencies := undefined
25
+ cache := 0
26
+
27
+ self = {
28
+ operationMode: func(mode) {
29
+ validation.assertJsonSchema(mode, "string",
30
+ "exec.R.operationMode: <mode> must be string")
31
+
32
+ ll.assert(mode == "remote" || mode == "dev-local",
33
+ "exec.R.operationMode: unsupported operation mode: 'remote', 'dev-local' are valid in this version of workflow-tengo SDK")
34
+
35
+ opMode = mode
36
+ return self
37
+ },
38
+
39
+ useToolset: func(name) {
40
+ validation.assertJsonSchema(name, "string",
41
+ "exec.R.useToolset: <name> must be valid name of R packaging toolset (i.e. 'renv')")
42
+ ll.assert(name != "", "exec.R.useToolset: toolset name must not be empty")
43
+
44
+ toolset = name
45
+ return self
46
+ },
47
+
48
+ runEnvDescriptor: func(descriptor) {
49
+ validation.assertJsonSchema(descriptor, desc.runEnvScheme, "exec.R.runEnvDescriptor: <descriptor> must be run environment specification")
50
+ ll.assert(descriptor.type == "R", "exec.R.runEnvDescriptor: not a 'R' run environment: %q", descriptor.type)
51
+
52
+ rDescriptor = ll.fromStrict(descriptor)
53
+ return self
54
+ },
55
+
56
+ software: func(pkgRef) {
57
+ validation.assertJsonSchema(pkgRef, validation.reference, "exec.R.software: <pkgRef> must be a reference to software package")
58
+
59
+ softwareRef = pkgRef
60
+ return self
61
+ },
62
+
63
+ dependencies: func(deps) {
64
+ validation.assertJsonSchema(deps, { "any": "string" }, "exec.R.dependencies: <deps> must be map of reference file paths")
65
+
66
+ dependencies = deps
67
+ return self
68
+ },
69
+
70
+ /**
71
+ * Sets the cache time in milliseconds.
72
+ *
73
+ * @param millis: number
74
+ */
75
+ cacheMillis: func(millis) {
76
+ ll.assert(is_int(millis) && millis > 0, "exec.R.cacheMillis: cache time must be a number of milliseconds")
77
+ cache = millis * times.millisecond
78
+ return self
79
+ },
80
+
81
+ /**
82
+ * Sets the cache time in seconds.
83
+ *
84
+ * @param seconds: number
85
+ */
86
+ cacheSeconds: func(seconds) {
87
+ ll.assert(is_int(seconds) && seconds > 0, "exec.R.cacheSeconds: cache time must be a number of seconds")
88
+ cache = seconds * times.second
89
+ return self
90
+ },
91
+
92
+ /**
93
+ * Sets the cache time in minutes.
94
+ *
95
+ * @param minutes: number
96
+ */
97
+ cacheMinutes: func(minutes) {
98
+ ll.assert(is_int(minutes) && minutes > 0, "exec.R.cacheMinutes: cache time must be a number of minutes")
99
+ cache = minutes * times.minute
100
+ return self
101
+ },
102
+
103
+ /**
104
+ * Sets the cache time in hours.
105
+ *
106
+ * @param hours: number
107
+ */
108
+ cacheHours: func(hours) {
109
+ ll.assert(is_int(hours) && hours > 0, "exec.R.cacheHours: cache time must be a number of hours")
110
+ cache = hours * times.hour
111
+ return self
112
+ },
113
+
114
+ /**
115
+ * Sets the cache time in days
116
+ *
117
+ * @param days: number
118
+ */
119
+ cacheDays: func(days) {
120
+ ll.assert(is_int(days) && days > 0, "exec.R.cacheDays: cache time must be a number of days")
121
+ cache = days * times.hour * 24
122
+ return self
123
+ },
124
+
125
+ /**
126
+ * @deprecated, use cacheMillis, cacheSeconds, cacheMinutes, cacheHours and cacheDays instead.
127
+ * Sets the cache time.
128
+ *
129
+ * @param time: duration - the cache time from 'times' library.
130
+ */
131
+ cache: func(time) {
132
+ ll.assert(
133
+ is_int(time) && time > times.millisecond,
134
+ "exec.R.cache: cache time must be an integer. " +
135
+ "Did you forget to import a standard tengo library 'times'?")
136
+ cache = time
137
+ return self
138
+ },
139
+
140
+ build: func() {
141
+ archive := pkg.get(rDescriptor.registry, rDescriptor.package).archive()
142
+ rPkg := pkg.install(archive).package()
143
+
144
+ rVenvInputs := {
145
+ operationMode: opMode,
146
+ toolset: toolset,
147
+ dependencies: dependencies,
148
+ software: softwareRef,
149
+ rDescriptor: rDescriptor,
150
+ R: rPkg
151
+ }
152
+
153
+ validation.assertJsonSchema(rVenvInputs, internal.rVenvInputSchema, "incomplete R runenv configuration")
154
+
155
+ tpl := render.create(createRenvTpl, rVenvInputs)
156
+
157
+ self := undefined
158
+ self = ll.toStrict(oop.inherit(tpl, {
159
+ /**
160
+ * R virtual environment with all dependencies installed.
161
+ *
162
+ * @return renv: smart.field - a reference to the R portable run environment.
163
+ */
164
+ venv: func() {
165
+ return tpl.output(_OUTPUT_RUN_ENV, cache)
166
+ },
167
+
168
+ /**
169
+ * R runtime used for R virtual environment creation.
170
+ *
171
+ * @return R: smart.Field - a reference to the R runtime.
172
+ */
173
+ R: func() {
174
+ return rPkg
175
+ }
176
+ }))
177
+
178
+ return self
179
+ }
180
+ }
181
+
182
+ return self
183
183
  }
184
184
 
185
185
 
186
186
  export ll.toStrict({
187
- rVenvBuilder : rVenvBuilder
187
+ rVenvBuilder : rVenvBuilder
188
188
  })
@@ -4,8 +4,8 @@ ARG_TYPE_VAR := "variableRef" // TODO: deprecated, remove after 15 Mar 20
4
4
  ARG_TYPES := [ARG_TYPE_STRING, ARG_TYPE_EXPRESSION, ARG_TYPE_VAR]
5
5
 
6
6
  export {
7
- ARG_TYPE_STRING: ARG_TYPE_STRING,
8
- ARG_TYPE_EXPRESSION: ARG_TYPE_EXPRESSION,
9
- ARG_TYPE_VAR: ARG_TYPE_VAR,
10
- ARG_TYPES: ARG_TYPES
7
+ ARG_TYPE_STRING: ARG_TYPE_STRING,
8
+ ARG_TYPE_EXPRESSION: ARG_TYPE_EXPRESSION,
9
+ ARG_TYPE_VAR: ARG_TYPE_VAR,
10
+ ARG_TYPES: ARG_TYPES
11
11
  }
@@ -1,54 +1,54 @@
1
-
2
-
3
-
1
+ /** Everything about software descriptors
2
+ * The scheme is here:
3
+ * https://github.com/milaboratory/platforma/blob/main/tools/package-builder/src/core/renderer.ts#L161 */
4
4
 
5
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
6
 
7
7
  runEnvScheme := {
8
- registry: "string",
9
- package: "string",
10
- type: "string",
11
- binDir: "string"
8
+ registry: "string",
9
+ package: "string",
10
+ type: "string",
11
+ binDir: "string"
12
12
  }
13
13
 
14
14
  binaryScheme := {
15
- registry: "string",
16
- package: "string",
17
- cmd: ["string"],
18
- "runEnv,?": runEnvScheme
15
+ registry: "string",
16
+ package: "string",
17
+ cmd: ["string"],
18
+ "runEnv,?": runEnvScheme
19
19
  }
20
20
 
21
21
  assetScheme := {
22
- registry: "string",
23
- package: "string",
24
- url: "string"
22
+ registry: "string",
23
+ package: "string",
24
+ url: "string"
25
25
  }
26
26
 
27
27
  localScheme := {
28
- hash: "string",
29
- path: "string",
30
- cmd: ["string"],
31
- runEnv: runEnvScheme
28
+ hash: "string",
29
+ path: "string",
30
+ cmd: ["string"],
31
+ runEnv: runEnvScheme
32
32
  }
33
33
 
34
34
  scheme := {
35
- "isDev,?": "bool",
36
- "schemaVersion,?": "number",
37
- "binary,?": binaryScheme,
38
- "asset,?": assetScheme,
39
- "local,?": localScheme
35
+ "isDev,?": "bool",
36
+ "schemaVersion,?": "number",
37
+ "binary,?": binaryScheme,
38
+ "asset,?": assetScheme,
39
+ "local,?": localScheme
40
40
  }
41
41
 
42
-
42
+ /** True if Platforma Backend supports expression refs. */
43
43
  canBackendUseExpressions := func() {
44
- return ll.apiVersion() >= 2
44
+ return ll.apiVersion() >= 2
45
45
  }
46
46
 
47
47
  export {
48
- runEnvScheme: runEnvScheme,
49
- binaryScheme: binaryScheme,
50
- assetScheme: assetScheme,
51
- localScheme: localScheme,
52
- scheme: scheme,
53
- canBackendUseExpressions: canBackendUseExpressions
48
+ runEnvScheme: runEnvScheme,
49
+ binaryScheme: binaryScheme,
50
+ assetScheme: assetScheme,
51
+ localScheme: localScheme,
52
+ scheme: scheme,
53
+ canBackendUseExpressions: canBackendUseExpressions
54
54
  }