@eagleoutice/flowr 2.6.3 → 2.7.2
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.
- package/README.md +22 -22
- package/abstract-interpretation/absint-visitor.d.ts +160 -0
- package/abstract-interpretation/absint-visitor.js +279 -0
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +4 -7
- package/abstract-interpretation/data-frame/dataframe-domain.js +26 -16
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +6 -4
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +11 -14
- package/abstract-interpretation/data-frame/mappers/arguments.d.ts +10 -9
- package/abstract-interpretation/data-frame/mappers/arguments.js +8 -5
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +18 -18
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +53 -58
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +7 -5
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +26 -29
- package/abstract-interpretation/data-frame/semantics.js +48 -44
- package/abstract-interpretation/data-frame/shape-inference.d.ts +52 -28
- package/abstract-interpretation/data-frame/shape-inference.js +67 -90
- package/abstract-interpretation/domains/abstract-domain.d.ts +1 -0
- package/abstract-interpretation/domains/abstract-domain.js +3 -2
- package/abstract-interpretation/domains/bounded-set-domain.d.ts +2 -2
- package/abstract-interpretation/domains/bounded-set-domain.js +1 -1
- package/abstract-interpretation/domains/interval-domain.d.ts +4 -4
- package/abstract-interpretation/domains/interval-domain.js +3 -6
- package/abstract-interpretation/domains/lattice.d.ts +2 -0
- package/abstract-interpretation/domains/lattice.js +3 -1
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +1 -1
- package/abstract-interpretation/domains/positive-interval-domain.js +1 -1
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +2 -2
- package/abstract-interpretation/domains/satisfiable-domain.js +2 -2
- package/abstract-interpretation/domains/set-range-domain.d.ts +104 -0
- package/abstract-interpretation/domains/set-range-domain.js +406 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +2 -2
- package/abstract-interpretation/domains/set-upper-bound-domain.js +2 -2
- package/abstract-interpretation/domains/singleton-domain.d.ts +2 -2
- package/abstract-interpretation/domains/singleton-domain.js +2 -2
- package/benchmark/slicer.d.ts +2 -1
- package/benchmark/slicer.js +50 -29
- package/benchmark/stats/print.js +8 -5
- package/benchmark/stats/stats.d.ts +3 -2
- package/benchmark/summarizer/data.d.ts +11 -8
- package/benchmark/summarizer/first-phase/process.js +11 -8
- package/benchmark/summarizer/second-phase/process.js +24 -18
- package/cli/common/options.d.ts +431 -8
- package/cli/common/options.js +1 -1
- package/cli/common/scripts-info.d.ts +431 -7
- package/cli/flowr-main-options.d.ts +102 -2
- package/cli/flowr.d.ts +102 -2
- package/cli/repl/commands/repl-commands.d.ts +25 -0
- package/cli/repl/commands/repl-query.js +17 -5
- package/cli/wiki.d.ts +13 -0
- package/cli/wiki.js +7 -2
- package/config.d.ts +4 -4
- package/config.js +1 -1
- package/control-flow/basic-cfg-guided-visitor.js +7 -8
- package/control-flow/cfg-dead-code.js +3 -2
- package/control-flow/control-flow-graph.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.js +1 -1
- package/control-flow/useless-loop.js +4 -2
- package/core/steps/all/static-slicing/00-slice.d.ts +3 -0
- package/core/steps/all/static-slicing/00-slice.js +2 -1
- package/core/steps/pipeline/default-pipelines.d.ts +42 -42
- package/dataflow/cluster.js +2 -2
- package/dataflow/environments/append.d.ts +5 -0
- package/dataflow/environments/append.js +6 -20
- package/dataflow/environments/built-in.d.ts +2 -1
- package/dataflow/environments/clone.d.ts +1 -1
- package/dataflow/environments/clone.js +3 -27
- package/dataflow/environments/define.d.ts +7 -3
- package/dataflow/environments/define.js +9 -56
- package/dataflow/environments/diff.js +1 -1
- package/dataflow/environments/environment.d.ts +48 -28
- package/dataflow/environments/environment.js +187 -62
- package/dataflow/environments/overwrite.js +2 -45
- package/dataflow/environments/reference-to-maybe.d.ts +13 -0
- package/dataflow/environments/reference-to-maybe.js +54 -0
- package/dataflow/environments/resolve-by-name.d.ts +6 -1
- package/dataflow/environments/resolve-by-name.js +56 -4
- package/dataflow/environments/scoping.d.ts +2 -2
- package/dataflow/environments/scoping.js +7 -7
- package/dataflow/eval/resolve/alias-tracking.d.ts +10 -4
- package/dataflow/eval/resolve/alias-tracking.js +16 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +2 -1
- package/dataflow/eval/resolve/resolve-argument.js +8 -8
- package/dataflow/eval/resolve/resolve.d.ts +13 -11
- package/dataflow/eval/resolve/resolve.js +16 -15
- package/dataflow/extractor.js +1 -7
- package/dataflow/fn/higher-order-function.d.ts +2 -1
- package/dataflow/fn/higher-order-function.js +4 -4
- package/dataflow/graph/dataflowgraph-builder.d.ts +9 -5
- package/dataflow/graph/dataflowgraph-builder.js +21 -11
- package/dataflow/graph/diff-dataflow-graph.js +2 -2
- package/dataflow/graph/graph.d.ts +10 -2
- package/dataflow/graph/graph.js +41 -12
- package/dataflow/graph/invert-dfg.d.ts +3 -2
- package/dataflow/graph/invert-dfg.js +3 -3
- package/dataflow/graph/resolve-graph.d.ts +2 -1
- package/dataflow/graph/resolve-graph.js +2 -2
- package/dataflow/graph/vertex.d.ts +3 -3
- package/dataflow/graph/vertex.js +3 -3
- package/dataflow/info.d.ts +1 -1
- package/dataflow/internal/linker.d.ts +2 -0
- package/dataflow/internal/linker.js +13 -19
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +7 -1
- package/dataflow/internal/process/functions/call/argument/unpack-argument.js +12 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +3 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +9 -9
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +9 -7
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +2 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +9 -13
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +8 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +6 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +5 -5
- package/dataflow/internal/process/functions/call/common.js +2 -3
- package/dataflow/internal/process/functions/call/known-call-handling.js +1 -1
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +1 -1
- package/dataflow/internal/process/functions/process-argument.js +1 -1
- package/dataflow/internal/process/process-symbol.js +1 -1
- package/dataflow/internal/process/process-value.d.ts +1 -1
- package/dataflow/internal/process/process-value.js +7 -7
- package/dataflow/processor.d.ts +1 -5
- package/documentation/doc-capabilities.d.ts +1 -1
- package/documentation/doc-readme.d.ts +1 -1
- package/documentation/doc-util/doc-cfg.js +1 -1
- package/documentation/doc-util/doc-cli-option.d.ts +6 -6
- package/documentation/doc-util/doc-cli-option.js +3 -3
- package/documentation/doc-util/doc-dfg.d.ts +1 -1
- package/documentation/doc-util/doc-dfg.js +3 -2
- package/documentation/doc-util/doc-files.d.ts +3 -0
- package/documentation/doc-util/doc-files.js +4 -1
- package/documentation/doc-util/doc-normalized-ast.js +5 -4
- package/documentation/doc-util/doc-types.d.ts +1 -1
- package/documentation/doc-util/doc-types.js +2 -2
- package/documentation/issue-linting-rule.d.ts +1 -1
- package/documentation/wiki-analyzer.d.ts +1 -1
- package/documentation/wiki-analyzer.js +14 -1
- package/documentation/wiki-cfg.d.ts +1 -1
- package/documentation/wiki-core.d.ts +1 -1
- package/documentation/wiki-dataflow-graph.d.ts +1 -1
- package/documentation/wiki-dataflow-graph.js +10 -11
- package/documentation/wiki-engine.d.ts +1 -1
- package/documentation/wiki-engine.js +9 -10
- package/documentation/wiki-faq.d.ts +1 -1
- package/documentation/wiki-faq.js +0 -1
- package/documentation/wiki-interface.d.ts +1 -1
- package/documentation/wiki-interface.js +12 -13
- package/documentation/wiki-linter.d.ts +1 -1
- package/documentation/wiki-linter.js +1 -1
- package/documentation/wiki-linting-and-testing.d.ts +1 -1
- package/documentation/wiki-mk/doc-context.d.ts +54 -1
- package/documentation/wiki-mk/doc-context.js +17 -0
- package/documentation/wiki-mk/doc-maker.d.ts +5 -5
- package/documentation/wiki-mk/doc-maker.js +5 -2
- package/documentation/wiki-normalized-ast.d.ts +1 -1
- package/documentation/wiki-onboarding.d.ts +1 -1
- package/documentation/wiki-overview.d.ts +9 -0
- package/documentation/wiki-overview.js +248 -0
- package/documentation/wiki-query.d.ts +1 -1
- package/documentation/wiki-query.js +17 -1
- package/documentation/wiki-search.d.ts +1 -1
- package/documentation/wiki-setup.d.ts +9 -0
- package/documentation/wiki-setup.js +122 -0
- package/linter/linter-rules.d.ts +2 -2
- package/linter/rules/absolute-path.js +4 -4
- package/linter/rules/dataframe-access-validation.d.ts +2 -2
- package/linter/rules/dataframe-access-validation.js +9 -11
- package/linter/rules/function-finder-util.d.ts +2 -2
- package/linter/rules/function-finder-util.js +1 -1
- package/linter/rules/network-functions.js +1 -1
- package/linter/rules/seeded-randomness.d.ts +1 -1
- package/linter/rules/seeded-randomness.js +5 -5
- package/linter/rules/unused-definition.js +1 -1
- package/package.json +1 -2
- package/project/context/flowr-analyzer-context.d.ts +11 -0
- package/project/context/flowr-analyzer-context.js +3 -0
- package/project/context/flowr-analyzer-environment-context.d.ts +47 -0
- package/project/context/flowr-analyzer-environment-context.js +50 -0
- package/project/context/flowr-analyzer-files-context.d.ts +9 -1
- package/project/context/flowr-analyzer-files-context.js +4 -0
- package/project/context/flowr-file.d.ts +2 -0
- package/project/context/flowr-file.js +2 -0
- package/project/plugins/file-plugins/{flowr-description-file.d.ts → files/flowr-description-file.d.ts} +1 -1
- package/project/plugins/file-plugins/files/flowr-description-file.js +75 -0
- package/project/plugins/file-plugins/files/flowr-news-file.d.ts +27 -0
- package/project/plugins/file-plugins/files/flowr-news-file.js +152 -0
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +1 -1
- package/project/plugins/file-plugins/flowr-analyzer-news-file-plugin.d.ts +23 -0
- package/project/plugins/file-plugins/flowr-analyzer-news-file-plugin.js +35 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +1 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +1 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +1 -1
- package/project/plugins/flowr-analyzer-plugin-defaults.js +2 -0
- package/project/plugins/plugin-registry.d.ts +2 -1
- package/project/plugins/plugin-registry.js +2 -0
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -1
- package/queries/catalog/call-context-query/call-context-query-executor.js +1 -4
- package/queries/catalog/control-flow-query/control-flow-query-format.js +3 -2
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +4 -4
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +1 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +5 -3
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +4 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.js +2 -2
- package/queries/catalog/files-query/files-query-executor.d.ts +6 -0
- package/queries/catalog/files-query/files-query-executor.js +49 -0
- package/queries/catalog/files-query/files-query-format.d.ts +36 -0
- package/queries/catalog/files-query/files-query-format.js +114 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -3
- package/queries/catalog/linter-query/linter-query-format.js +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +1 -1
- package/queries/query.d.ts +10 -1
- package/queries/query.js +3 -1
- package/r-bridge/lang-4.x/ast/model/model.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +8 -8
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +8 -8
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +0 -1
- package/slicing/static/slice-call.d.ts +3 -2
- package/slicing/static/slice-call.js +4 -4
- package/slicing/static/static-slicer.d.ts +3 -1
- package/slicing/static/static-slicer.js +6 -7
- package/statistics/features/supported/control-flow/control-flow.js +1 -1
- package/statistics/features/supported/data-access/data-access.js +1 -1
- package/statistics/features/supported/used-functions/used-functions.js +1 -1
- package/statistics/features/supported/variables/variables.js +2 -1
- package/util/containers.js +2 -2
- package/util/files.d.ts +0 -7
- package/util/files.js +0 -41
- package/util/mermaid/ast.d.ts +3 -2
- package/util/mermaid/ast.js +13 -7
- package/util/mermaid/cfg.d.ts +3 -2
- package/util/mermaid/cfg.js +26 -6
- package/util/mermaid/dfg.d.ts +2 -7
- package/util/mermaid/dfg.js +10 -6
- package/util/mermaid/info.d.ts +17 -0
- package/util/mermaid/info.js +5 -0
- package/util/prefix.d.ts +9 -5
- package/util/prefix.js +14 -6
- package/util/r-regex.d.ts +21 -0
- package/util/r-regex.js +25 -0
- package/util/simple-df/dfg-view.d.ts +2 -1
- package/util/simple-df/dfg-view.js +2 -2
- package/util/text/args.js +12 -3
- package/util/version.js +1 -1
- package/abstract-interpretation/data-frame/absint-info.d.ts +0 -109
- package/abstract-interpretation/data-frame/absint-info.js +0 -31
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +0 -57
- package/abstract-interpretation/data-frame/absint-visitor.js +0 -176
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -19
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -33
- package/dataflow/environments/remove.d.ts +0 -12
- package/dataflow/environments/remove.js +0 -52
- package/documentation/doc-util/doc-print.d.ts +0 -5
- package/documentation/doc-util/doc-print.js +0 -36
- package/project/plugins/file-plugins/flowr-description-file.js +0 -37
- package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
- package/project/plugins/file-plugins/notebooks/notebook.js +0 -2
- /package/project/plugins/file-plugins/{notebooks → files}/flowr-jupyter-file.d.ts +0 -0
- /package/project/plugins/file-plugins/{notebooks → files}/flowr-jupyter-file.js +0 -0
- /package/project/plugins/file-plugins/{notebooks → files}/flowr-rmarkdown-file.d.ts +0 -0
- /package/project/plugins/file-plugins/{notebooks → files}/flowr-rmarkdown-file.js +0 -0
|
@@ -25,10 +25,10 @@ export declare class SingletonDomain<T, Value extends SingletonLift<T> = Singlet
|
|
|
25
25
|
bottom(): this & SingletonDomain<T, SingletonBottom>;
|
|
26
26
|
equals(other: this): boolean;
|
|
27
27
|
leq(other: this): boolean;
|
|
28
|
-
join(other: this): this;
|
|
29
28
|
join(other: SingletonLift<T>): this;
|
|
30
|
-
|
|
29
|
+
join(other: this): this;
|
|
31
30
|
meet(other: SingletonLift<T>): this;
|
|
31
|
+
meet(other: this): this;
|
|
32
32
|
widen(other: this): this;
|
|
33
33
|
narrow(other: this): this;
|
|
34
34
|
concretize(): ReadonlySet<T> | typeof Top;
|
|
@@ -109,10 +109,10 @@ class SingletonDomain extends abstract_domain_1.AbstractDomain {
|
|
|
109
109
|
}
|
|
110
110
|
toString() {
|
|
111
111
|
if (this.value === lattice_1.Top) {
|
|
112
|
-
return
|
|
112
|
+
return lattice_1.TopSymbol;
|
|
113
113
|
}
|
|
114
114
|
else if (this.value === lattice_1.Bottom) {
|
|
115
|
-
return
|
|
115
|
+
return lattice_1.BottomSymbol;
|
|
116
116
|
}
|
|
117
117
|
return (0, abstract_domain_1.domainElementToString)(this.value);
|
|
118
118
|
}
|
package/benchmark/slicer.d.ts
CHANGED
|
@@ -106,7 +106,8 @@ export declare class BenchmarkSlicer {
|
|
|
106
106
|
* @returns The statistics of the data frame shape inference
|
|
107
107
|
*/
|
|
108
108
|
inferDataFrameShapes(): SlicerStatsDfShape;
|
|
109
|
-
private
|
|
109
|
+
private getInferredRange;
|
|
110
|
+
private getInferredNumber;
|
|
110
111
|
/** Bridging the gap between the new internal and the old names for the benchmarking */
|
|
111
112
|
private measureCommonStep;
|
|
112
113
|
private measureSimpleStep;
|
package/benchmark/slicer.js
CHANGED
|
@@ -26,8 +26,9 @@ const vertex_1 = require("../dataflow/graph/vertex");
|
|
|
26
26
|
const arrays_1 = require("../util/collections/arrays");
|
|
27
27
|
const config_1 = require("../config");
|
|
28
28
|
const extract_cfg_1 = require("../control-flow/extract-cfg");
|
|
29
|
-
const absint_info_1 = require("../abstract-interpretation/data-frame/absint-info");
|
|
30
29
|
const shape_inference_1 = require("../abstract-interpretation/data-frame/shape-inference");
|
|
30
|
+
const lattice_1 = require("../abstract-interpretation/domains/lattice");
|
|
31
|
+
const set_range_domain_1 = require("../abstract-interpretation/domains/set-range-domain");
|
|
31
32
|
const fs_1 = __importDefault(require("fs"));
|
|
32
33
|
const flowr_analyzer_context_1 = require("../project/context/flowr-analyzer-context");
|
|
33
34
|
/**
|
|
@@ -117,10 +118,10 @@ class BenchmarkSlicer {
|
|
|
117
118
|
for (const [n, info] of vertices) {
|
|
118
119
|
const outgoingEdges = this.dataflow.graph.outgoingEdges(n);
|
|
119
120
|
numberOfEdges += outgoingEdges?.size ?? 0;
|
|
120
|
-
if (info.tag ===
|
|
121
|
+
if (info.tag === vertex_1.VertexType.FunctionCall) {
|
|
121
122
|
numberOfCalls++;
|
|
122
123
|
}
|
|
123
|
-
else if (info.tag ===
|
|
124
|
+
else if (info.tag === vertex_1.VertexType.FunctionDefinition) {
|
|
124
125
|
numberOfDefinitions++;
|
|
125
126
|
}
|
|
126
127
|
}
|
|
@@ -163,7 +164,7 @@ class BenchmarkSlicer {
|
|
|
163
164
|
numberOfNormalizedTokensNoComments: nodesNoComments
|
|
164
165
|
},
|
|
165
166
|
dataflow: {
|
|
166
|
-
numberOfNodes:
|
|
167
|
+
numberOfNodes: this.dataflow.graph.vertices(true).toArray().length,
|
|
167
168
|
numberOfEdges: numberOfEdges,
|
|
168
169
|
numberOfCalls: numberOfCalls,
|
|
169
170
|
numberOfFunctionDefinitions: numberOfDefinitions,
|
|
@@ -257,7 +258,7 @@ class BenchmarkSlicer {
|
|
|
257
258
|
}).join('')}`);
|
|
258
259
|
}
|
|
259
260
|
// if it is not in the dataflow graph it was kept to be safe and should not count to the included nodes
|
|
260
|
-
stats.numberOfDataflowNodesSliced =
|
|
261
|
+
stats.numberOfDataflowNodesSliced = Array.from(slicedOutput.result).filter(id => results.dataflow.graph.hasVertex(id, false)).length;
|
|
261
262
|
stats.timesHitThreshold = slicedOutput.timesHitThreshold;
|
|
262
263
|
stats.measurements = measurements.get();
|
|
263
264
|
return {
|
|
@@ -289,7 +290,7 @@ class BenchmarkSlicer {
|
|
|
289
290
|
(0, assert_1.guard)(this.normalizedAst !== undefined, 'normalizedAst should be defined for data frame shape inference');
|
|
290
291
|
(0, assert_1.guard)(this.dataflow !== undefined, 'dataflow should be defined for data frame shape inference');
|
|
291
292
|
(0, assert_1.guard)(this.controlFlow !== undefined, 'controlFlow should be defined for data frame shape inference');
|
|
292
|
-
(0, assert_1.guard)(this.
|
|
293
|
+
(0, assert_1.guard)(this.context !== undefined, 'context should be defined for data frame shape inference');
|
|
293
294
|
const ast = this.normalizedAst;
|
|
294
295
|
const dfg = this.dataflow.graph;
|
|
295
296
|
const cfinfo = this.controlFlow;
|
|
@@ -298,15 +299,17 @@ class BenchmarkSlicer {
|
|
|
298
299
|
numberOfNonDataFrameFiles: 0,
|
|
299
300
|
numberOfResultConstraints: 0,
|
|
300
301
|
numberOfResultingValues: 0,
|
|
301
|
-
numberOfResultingTop: 0,
|
|
302
302
|
numberOfResultingBottom: 0,
|
|
303
|
+
numberOfResultingTop: 0,
|
|
303
304
|
numberOfEmptyNodes: 0,
|
|
304
305
|
numberOfOperationNodes: 0,
|
|
305
306
|
numberOfValueNodes: 0,
|
|
306
307
|
sizeOfInfo: 0,
|
|
307
308
|
perNodeStats: new Map()
|
|
308
309
|
};
|
|
309
|
-
const
|
|
310
|
+
const inference = new shape_inference_1.DataFrameShapeInferenceVisitor({ controlFlow: cfinfo, dfg, normalizedAst: ast, ctx: this.context });
|
|
311
|
+
this.measureSimpleStep('infer data frame shapes', () => inference.start());
|
|
312
|
+
const result = inference.getEndState();
|
|
310
313
|
stats.numberOfResultConstraints = result.value.size;
|
|
311
314
|
for (const value of result.value.values()) {
|
|
312
315
|
if (value.isTop()) {
|
|
@@ -319,30 +322,29 @@ class BenchmarkSlicer {
|
|
|
319
322
|
stats.numberOfResultingValues++;
|
|
320
323
|
}
|
|
321
324
|
}
|
|
322
|
-
(0, visitor_1.visitAst)(this.normalizedAst.ast.files.map(
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
}
|
|
326
|
-
stats.sizeOfInfo += (0, size_of_1.safeSizeOf)([node.info.dataFrame]);
|
|
327
|
-
const expression = (0, absint_info_1.hasDataFrameExpressionInfo)(node) ? node.info.dataFrame : undefined;
|
|
328
|
-
const value = node.info.dataFrame.domain?.get(node.info.id);
|
|
325
|
+
(0, visitor_1.visitAst)(this.normalizedAst.ast.files.map(file => file.root), node => {
|
|
326
|
+
const operations = inference.getAbstractOperations(node.info.id);
|
|
327
|
+
const value = inference.getAbstractValue(node.info.id);
|
|
329
328
|
// Only store per-node information for nodes representing expressions or nodes with abstract values
|
|
330
|
-
if (
|
|
329
|
+
if (operations === undefined && value === undefined) {
|
|
331
330
|
stats.numberOfEmptyNodes++;
|
|
332
331
|
return;
|
|
333
332
|
}
|
|
333
|
+
const state = inference.getAbstractState(node.info.id);
|
|
334
|
+
stats.sizeOfInfo += (0, size_of_1.safeSizeOf)([state]);
|
|
334
335
|
const nodeStats = {
|
|
335
|
-
numberOfEntries:
|
|
336
|
+
numberOfEntries: state?.value.size ?? 0
|
|
336
337
|
};
|
|
337
|
-
if (
|
|
338
|
-
nodeStats.mappedOperations =
|
|
338
|
+
if (operations !== undefined) {
|
|
339
|
+
nodeStats.mappedOperations = operations.map(op => op.operation);
|
|
339
340
|
stats.numberOfOperationNodes++;
|
|
340
341
|
if (value !== undefined) {
|
|
341
|
-
nodeStats.inferredColNames =
|
|
342
|
-
nodeStats.inferredColCount = this.
|
|
343
|
-
nodeStats.inferredRowCount = this.
|
|
344
|
-
nodeStats.
|
|
345
|
-
nodeStats.
|
|
342
|
+
nodeStats.inferredColNames = this.getInferredNumber(value.colnames);
|
|
343
|
+
nodeStats.inferredColCount = this.getInferredNumber(value.cols);
|
|
344
|
+
nodeStats.inferredRowCount = this.getInferredNumber(value.rows);
|
|
345
|
+
nodeStats.approxRangeColNames = this.getInferredRange(value.colnames);
|
|
346
|
+
nodeStats.approxRangeColCount = this.getInferredRange(value.cols);
|
|
347
|
+
nodeStats.approxRangeRowCount = this.getInferredRange(value.rows);
|
|
346
348
|
}
|
|
347
349
|
}
|
|
348
350
|
if (value !== undefined) {
|
|
@@ -359,15 +361,34 @@ class BenchmarkSlicer {
|
|
|
359
361
|
this.stats.dataFrameShape = stats;
|
|
360
362
|
return stats;
|
|
361
363
|
}
|
|
362
|
-
|
|
364
|
+
getInferredRange(value) {
|
|
365
|
+
if (value.isValue()) {
|
|
366
|
+
if (value instanceof set_range_domain_1.SetRangeDomain) {
|
|
367
|
+
return value.value.range === lattice_1.Top ? Infinity : value.value.range.size;
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
return value.value[1] - value.value[0];
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return 0;
|
|
374
|
+
}
|
|
375
|
+
getInferredNumber(value) {
|
|
363
376
|
if (value.isTop()) {
|
|
364
377
|
return 'top';
|
|
365
378
|
}
|
|
366
|
-
else if (value.isValue() && !isFinite(value.value[1])) {
|
|
367
|
-
return 'infinite';
|
|
368
|
-
}
|
|
369
379
|
else if (value.isValue()) {
|
|
370
|
-
|
|
380
|
+
if (value instanceof set_range_domain_1.SetRangeDomain) {
|
|
381
|
+
if (value.value.range === lattice_1.Top) {
|
|
382
|
+
return 'infinite';
|
|
383
|
+
}
|
|
384
|
+
return Math.floor(value.value.min.size + (value.value.range.size / 2));
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
if (!isFinite(value.value[1])) {
|
|
388
|
+
return 'infinite';
|
|
389
|
+
}
|
|
390
|
+
return Math.floor((value.value[0] + value.value[1]) / 2);
|
|
391
|
+
}
|
|
371
392
|
}
|
|
372
393
|
return 'bottom';
|
|
373
394
|
}
|
package/benchmark/stats/print.js
CHANGED
|
@@ -176,15 +176,16 @@ Dataframe shape inference:
|
|
|
176
176
|
Number of total top: ${pad(stats.dataFrameShape.numberOfTotalTop)}
|
|
177
177
|
Inferred column names per node: ${pad(stats.dataFrameShape.inferredColNames.mean)}
|
|
178
178
|
Number of column names values: ${pad(stats.dataFrameShape.numberOfColNamesValues)}
|
|
179
|
-
Number of column names
|
|
179
|
+
Number of column names infinite:${pad(stats.dataFrameShape.numberOfColNamesInfinite)}
|
|
180
|
+
Number of column names top: ${pad(stats.dataFrameShape.numberOfColNamesTop)}
|
|
180
181
|
Inferred column count per node: ${pad(stats.dataFrameShape.inferredColCount.mean)}
|
|
181
182
|
Number of column count values: ${pad(stats.dataFrameShape.numberOfColCountValues)}
|
|
182
|
-
Number of column count Top: ${pad(stats.dataFrameShape.numberOfColCountTop)}
|
|
183
183
|
Number of column count infinite:${pad(stats.dataFrameShape.numberOfColCountInfinite)}
|
|
184
|
+
Number of column count top: ${pad(stats.dataFrameShape.numberOfColCountTop)}
|
|
184
185
|
Inferred row count per node: ${pad(stats.dataFrameShape.inferredRowCount.mean)}
|
|
185
186
|
Number of row count values: ${pad(stats.dataFrameShape.numberOfRowCountValues)}
|
|
186
|
-
Number of row count Top: ${pad(stats.dataFrameShape.numberOfRowCountTop)}
|
|
187
187
|
Number of row count infinite: ${pad(stats.dataFrameShape.numberOfRowCountInfinite)}
|
|
188
|
+
Number of row count top: ${pad(stats.dataFrameShape.numberOfRowCountTop)}
|
|
188
189
|
Size of data frame shape info: ${convertNumberToNiceBytes(stats.dataFrameShape.sizeOfInfo)}`;
|
|
189
190
|
}
|
|
190
191
|
return result;
|
|
@@ -276,18 +277,20 @@ Dataframe shape inference:
|
|
|
276
277
|
Number of total values: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfTotalValues)}
|
|
277
278
|
Number of total top: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfTotalTop)}
|
|
278
279
|
Inferred column names per node: ${formatSummarizedMeasure(stats.dataFrameShape.inferredColNames)}
|
|
280
|
+
Number of column names exact: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfColNamesExact)}
|
|
279
281
|
Number of column names values: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfColNamesValues)}
|
|
282
|
+
Number of column names infinite:${formatSummarizedMeasure(stats.dataFrameShape.numberOfColNamesInfinite)}
|
|
280
283
|
Number of column names top: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfColNamesTop)}
|
|
281
284
|
Inferred column count per node: ${formatSummarizedMeasure(stats.dataFrameShape.inferredColCount)}
|
|
282
285
|
Number of column count exact: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfColCountExact)}
|
|
283
286
|
Number of column count values: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfColCountValues)}
|
|
284
|
-
Number of column count top: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfColCountTop)}
|
|
285
287
|
Number of column count infinite:${formatSummarizedMeasure(stats.dataFrameShape.numberOfColCountInfinite)}
|
|
288
|
+
Number of column count top: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfColCountTop)}
|
|
286
289
|
Inferred row count per node: ${formatSummarizedMeasure(stats.dataFrameShape.inferredRowCount)}
|
|
287
290
|
Number of row count exact: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfRowCountExact)}
|
|
288
291
|
Number of row count values: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfRowCountValues)}
|
|
289
|
-
Number of row count top: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfRowCountTop)}
|
|
290
292
|
Number of row count infinite: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfRowCountInfinite)}
|
|
293
|
+
Number of row count top: ${formatSummarizedMeasure(stats.dataFrameShape.numberOfRowCountTop)}
|
|
291
294
|
Size of data frame shape info: ${formatSummarizedMeasure(stats.dataFrameShape.sizeOfInfo, convertNumberToNiceBytes)}`;
|
|
292
295
|
}
|
|
293
296
|
return result;
|
|
@@ -49,8 +49,8 @@ export interface SlicerStatsDfShape<T = number> {
|
|
|
49
49
|
numberOfNonDataFrameFiles: T extends number ? 0 | 1 : number;
|
|
50
50
|
numberOfResultConstraints: T;
|
|
51
51
|
numberOfResultingValues: T;
|
|
52
|
-
numberOfResultingTop: T;
|
|
53
52
|
numberOfResultingBottom: T;
|
|
53
|
+
numberOfResultingTop: T;
|
|
54
54
|
numberOfEmptyNodes: T;
|
|
55
55
|
numberOfOperationNodes: T;
|
|
56
56
|
numberOfValueNodes: T;
|
|
@@ -60,10 +60,11 @@ export interface SlicerStatsDfShape<T = number> {
|
|
|
60
60
|
export interface PerNodeStatsDfShape<T = number> {
|
|
61
61
|
numberOfEntries: T;
|
|
62
62
|
mappedOperations?: DataFrameOperationName[];
|
|
63
|
-
inferredColNames?: T | 'bottom' | 'top';
|
|
63
|
+
inferredColNames?: T | 'bottom' | 'infinite' | 'top';
|
|
64
64
|
inferredColCount?: T | 'bottom' | 'infinite' | 'top';
|
|
65
65
|
inferredRowCount?: T | 'bottom' | 'infinite' | 'top';
|
|
66
66
|
/** difference between upper and lower bound of interval domain (to estimate approximation) */
|
|
67
|
+
approxRangeColNames?: T;
|
|
67
68
|
approxRangeColCount?: T;
|
|
68
69
|
approxRangeRowCount?: T;
|
|
69
70
|
}
|
|
@@ -84,25 +84,28 @@ export interface SummarizedDfShapeStats<T = number> extends Omit<SlicerStatsDfSh
|
|
|
84
84
|
numberOfEntriesPerNode: SummarizedMeasurement;
|
|
85
85
|
numberOfOperations: T;
|
|
86
86
|
numberOfTotalValues: T;
|
|
87
|
-
numberOfTotalTop: T;
|
|
88
87
|
numberOfTotalBottom: T;
|
|
88
|
+
numberOfTotalTop: T;
|
|
89
89
|
inferredColNames: SummarizedMeasurement;
|
|
90
|
+
approxRangeColNames: SummarizedMeasurement;
|
|
91
|
+
numberOfColNamesExact: T;
|
|
90
92
|
numberOfColNamesValues: T;
|
|
91
|
-
numberOfColNamesTop: T;
|
|
92
93
|
numberOfColNamesBottom: T;
|
|
94
|
+
numberOfColNamesInfinite: T;
|
|
95
|
+
numberOfColNamesTop: T;
|
|
93
96
|
inferredColCount: SummarizedMeasurement;
|
|
97
|
+
approxRangeColCount: SummarizedMeasurement;
|
|
94
98
|
numberOfColCountExact: T;
|
|
95
99
|
numberOfColCountValues: T;
|
|
96
|
-
numberOfColCountTop: T;
|
|
97
|
-
numberOfColCountInfinite: T;
|
|
98
100
|
numberOfColCountBottom: T;
|
|
99
|
-
|
|
101
|
+
numberOfColCountInfinite: T;
|
|
102
|
+
numberOfColCountTop: T;
|
|
100
103
|
inferredRowCount: SummarizedMeasurement;
|
|
104
|
+
approxRangeRowCount: SummarizedMeasurement;
|
|
101
105
|
numberOfRowCountExact: T;
|
|
102
106
|
numberOfRowCountValues: T;
|
|
103
|
-
numberOfRowCountTop: T;
|
|
104
|
-
numberOfRowCountInfinite: T;
|
|
105
107
|
numberOfRowCountBottom: T;
|
|
106
|
-
|
|
108
|
+
numberOfRowCountInfinite: T;
|
|
109
|
+
numberOfRowCountTop: T;
|
|
107
110
|
perOperationNumber: Map<DataFrameOperationName, T>;
|
|
108
111
|
}
|
|
@@ -266,26 +266,29 @@ function summarizeDfShapeStats({ perNodeStats, ...stats }) {
|
|
|
266
266
|
numberOfEntriesPerNode: (0, summarizer_1.summarizeMeasurement)(nodeStats.map(s => s.numberOfEntries)),
|
|
267
267
|
numberOfOperations: (0, arrays_1.arraySum)(nodeStats.map(s => s.mappedOperations?.length).filter(assert_1.isNotUndefined)),
|
|
268
268
|
numberOfTotalValues: nodeStats.filter(s => isValue(s.inferredColNames) && isValue(s.inferredColCount) && isValue(s.inferredRowCount)).length,
|
|
269
|
-
numberOfTotalTop: nodeStats.filter(s => isTop(s.inferredColNames) && isTop(s.inferredColCount) && isTop(s.inferredRowCount)).length,
|
|
270
269
|
numberOfTotalBottom: nodeStats.filter(s => s.inferredColNames === 0 && isBottom(s.inferredColCount) && isBottom(s.inferredRowCount)).length,
|
|
270
|
+
numberOfTotalTop: nodeStats.filter(s => isTop(s.inferredColNames) && isTop(s.inferredColCount) && isTop(s.inferredRowCount)).length,
|
|
271
271
|
inferredColNames: (0, summarizer_1.summarizeMeasurement)(nodeStats.map(s => s.inferredColNames).filter(isValue)),
|
|
272
|
+
approxRangeColNames: (0, summarizer_1.summarizeMeasurement)(nodeStats.map(s => s.approxRangeColNames).filter(assert_1.isNotUndefined).filter(isFinite)),
|
|
273
|
+
numberOfColNamesExact: nodeStats.map(s => s.approxRangeColNames).filter(range => range === 0).length,
|
|
272
274
|
numberOfColNamesValues: nodeStats.map(s => s.inferredColNames).filter(isValue).length,
|
|
275
|
+
numberOfColNamesBottom: nodeStats.map(s => s.inferredColNames).filter(isBottom).length,
|
|
276
|
+
numberOfColNamesInfinite: nodeStats.map(s => s.inferredColNames).filter(isInfinite).length,
|
|
273
277
|
numberOfColNamesTop: nodeStats.map(s => s.inferredColNames).filter(isTop).length,
|
|
274
|
-
numberOfColNamesBottom: nodeStats.map(s => s.inferredColNames).filter(number => number === 0).length,
|
|
275
278
|
inferredColCount: (0, summarizer_1.summarizeMeasurement)(nodeStats.map(s => s.inferredColCount).filter(isValue)),
|
|
279
|
+
approxRangeColCount: (0, summarizer_1.summarizeMeasurement)(nodeStats.map(s => s.approxRangeColCount).filter(assert_1.isNotUndefined).filter(isFinite)),
|
|
276
280
|
numberOfColCountExact: nodeStats.map(s => s.approxRangeColCount).filter(range => range === 0).length,
|
|
277
281
|
numberOfColCountValues: nodeStats.map(s => s.inferredColCount).filter(isValue).length,
|
|
278
|
-
numberOfColCountTop: nodeStats.map(s => s.inferredColCount).filter(isTop).length,
|
|
279
|
-
numberOfColCountInfinite: nodeStats.map(s => s.inferredColCount).filter(isInfinite).length,
|
|
280
282
|
numberOfColCountBottom: nodeStats.map(s => s.inferredColCount).filter(isBottom).length,
|
|
281
|
-
|
|
283
|
+
numberOfColCountInfinite: nodeStats.map(s => s.inferredColCount).filter(isInfinite).length,
|
|
284
|
+
numberOfColCountTop: nodeStats.map(s => s.inferredColCount).filter(isTop).length,
|
|
282
285
|
inferredRowCount: (0, summarizer_1.summarizeMeasurement)(nodeStats.map(s => s.inferredRowCount).filter(isValue)),
|
|
286
|
+
approxRangeRowCount: (0, summarizer_1.summarizeMeasurement)(nodeStats.map(s => s.approxRangeRowCount).filter(assert_1.isNotUndefined).filter(isFinite)),
|
|
283
287
|
numberOfRowCountExact: nodeStats.map(s => s.approxRangeRowCount).filter(range => range === 0).length,
|
|
284
288
|
numberOfRowCountValues: nodeStats.map(s => s.inferredRowCount).filter(isValue).length,
|
|
285
|
-
numberOfRowCountTop: nodeStats.map(s => s.inferredRowCount).filter(isTop).length,
|
|
286
|
-
numberOfRowCountInfinite: nodeStats.map(s => s.inferredRowCount).filter(isInfinite).length,
|
|
287
289
|
numberOfRowCountBottom: nodeStats.map(s => s.inferredRowCount).filter(isBottom).length,
|
|
288
|
-
|
|
290
|
+
numberOfRowCountInfinite: nodeStats.map(s => s.inferredRowCount).filter(isInfinite).length,
|
|
291
|
+
numberOfRowCountTop: nodeStats.map(s => s.inferredRowCount).filter(isTop).length,
|
|
289
292
|
perOperationNumber: summarizePerOperationStats(nodeStats),
|
|
290
293
|
};
|
|
291
294
|
}
|
|
@@ -114,8 +114,8 @@ function summarizeAllSummarizedStats(stats) {
|
|
|
114
114
|
numberOfNonDataFrameFiles: (0, arrays_1.arraySum)(stats.map(s => s.dataFrameShape?.numberOfNonDataFrameFiles).filter(assert_1.isNotUndefined)),
|
|
115
115
|
numberOfResultConstraints: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultConstraints).filter(assert_1.isNotUndefined)),
|
|
116
116
|
numberOfResultingValues: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingValues).filter(assert_1.isNotUndefined)),
|
|
117
|
-
numberOfResultingTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingTop).filter(assert_1.isNotUndefined)),
|
|
118
117
|
numberOfResultingBottom: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingBottom).filter(assert_1.isNotUndefined)),
|
|
118
|
+
numberOfResultingTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingTop).filter(assert_1.isNotUndefined)),
|
|
119
119
|
numberOfEmptyNodes: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfEmptyNodes).filter(assert_1.isNotUndefined)),
|
|
120
120
|
numberOfOperationNodes: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfOperationNodes).filter(assert_1.isNotUndefined)),
|
|
121
121
|
numberOfValueNodes: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfValueNodes).filter(assert_1.isNotUndefined)),
|
|
@@ -123,26 +123,29 @@ function summarizeAllSummarizedStats(stats) {
|
|
|
123
123
|
numberOfEntriesPerNode: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfEntriesPerNode).filter(assert_1.isNotUndefined)),
|
|
124
124
|
numberOfOperations: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfOperations).filter(assert_1.isNotUndefined)),
|
|
125
125
|
numberOfTotalValues: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalValues).filter(assert_1.isNotUndefined)),
|
|
126
|
-
numberOfTotalTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalTop).filter(assert_1.isNotUndefined)),
|
|
127
126
|
numberOfTotalBottom: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalBottom).filter(assert_1.isNotUndefined)),
|
|
127
|
+
numberOfTotalTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalTop).filter(assert_1.isNotUndefined)),
|
|
128
128
|
inferredColNames: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.inferredColNames).filter(assert_1.isNotUndefined)),
|
|
129
|
+
approxRangeColNames: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.approxRangeColNames).filter(assert_1.isNotUndefined)),
|
|
130
|
+
numberOfColNamesExact: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesExact).filter(assert_1.isNotUndefined)),
|
|
129
131
|
numberOfColNamesValues: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesValues).filter(assert_1.isNotUndefined)),
|
|
130
|
-
numberOfColNamesTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesTop).filter(assert_1.isNotUndefined)),
|
|
131
132
|
numberOfColNamesBottom: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesBottom).filter(assert_1.isNotUndefined)),
|
|
133
|
+
numberOfColNamesInfinite: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesInfinite).filter(assert_1.isNotUndefined)),
|
|
134
|
+
numberOfColNamesTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesTop).filter(assert_1.isNotUndefined)),
|
|
132
135
|
inferredColCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.inferredColCount).filter(assert_1.isNotUndefined)),
|
|
136
|
+
approxRangeColCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.approxRangeColCount).filter(assert_1.isNotUndefined)),
|
|
133
137
|
numberOfColCountExact: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountExact).filter(assert_1.isNotUndefined)),
|
|
134
138
|
numberOfColCountValues: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountValues).filter(assert_1.isNotUndefined)),
|
|
135
|
-
numberOfColCountTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountTop).filter(assert_1.isNotUndefined)),
|
|
136
|
-
numberOfColCountInfinite: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountInfinite).filter(assert_1.isNotUndefined)),
|
|
137
139
|
numberOfColCountBottom: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountBottom).filter(assert_1.isNotUndefined)),
|
|
138
|
-
|
|
140
|
+
numberOfColCountInfinite: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountInfinite).filter(assert_1.isNotUndefined)),
|
|
141
|
+
numberOfColCountTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountTop).filter(assert_1.isNotUndefined)),
|
|
139
142
|
inferredRowCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.inferredRowCount).filter(assert_1.isNotUndefined)),
|
|
143
|
+
approxRangeRowCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.approxRangeRowCount).filter(assert_1.isNotUndefined)),
|
|
140
144
|
numberOfRowCountExact: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountExact).filter(assert_1.isNotUndefined)),
|
|
141
145
|
numberOfRowCountValues: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountValues).filter(assert_1.isNotUndefined)),
|
|
142
|
-
numberOfRowCountTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountTop).filter(assert_1.isNotUndefined)),
|
|
143
|
-
numberOfRowCountInfinite: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountInfinite).filter(assert_1.isNotUndefined)),
|
|
144
146
|
numberOfRowCountBottom: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountBottom).filter(assert_1.isNotUndefined)),
|
|
145
|
-
|
|
147
|
+
numberOfRowCountInfinite: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountInfinite).filter(assert_1.isNotUndefined)),
|
|
148
|
+
numberOfRowCountTop: (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountTop).filter(assert_1.isNotUndefined)),
|
|
146
149
|
perOperationNumber: new Map(semantics_1.DataFrameOperationNames.map(n => [n, (0, summarizer_1.summarizeMeasurement)(stats.map(s => s.dataFrameShape?.perOperationNumber.get(n) ?? 0))]))
|
|
147
150
|
} : undefined
|
|
148
151
|
};
|
|
@@ -198,8 +201,8 @@ function summarizeAllUltimateStats(stats) {
|
|
|
198
201
|
numberOfNonDataFrameFiles: (0, arrays_1.arraySum)(stats.map(s => s.dataFrameShape?.numberOfNonDataFrameFiles).filter(assert_1.isNotUndefined)),
|
|
199
202
|
numberOfResultConstraints: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultConstraints).filter(assert_1.isNotUndefined)),
|
|
200
203
|
numberOfResultingValues: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingValues).filter(assert_1.isNotUndefined)),
|
|
201
|
-
numberOfResultingTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingTop).filter(assert_1.isNotUndefined)),
|
|
202
204
|
numberOfResultingBottom: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingBottom).filter(assert_1.isNotUndefined)),
|
|
205
|
+
numberOfResultingTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfResultingTop).filter(assert_1.isNotUndefined)),
|
|
203
206
|
numberOfEmptyNodes: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfEmptyNodes).filter(assert_1.isNotUndefined)),
|
|
204
207
|
numberOfOperationNodes: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfOperationNodes).filter(assert_1.isNotUndefined)),
|
|
205
208
|
numberOfValueNodes: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfValueNodes).filter(assert_1.isNotUndefined)),
|
|
@@ -207,26 +210,29 @@ function summarizeAllUltimateStats(stats) {
|
|
|
207
210
|
numberOfEntriesPerNode: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfEntriesPerNode).filter(assert_1.isNotUndefined)),
|
|
208
211
|
numberOfOperations: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfOperations).filter(assert_1.isNotUndefined)),
|
|
209
212
|
numberOfTotalValues: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalValues).filter(assert_1.isNotUndefined)),
|
|
210
|
-
numberOfTotalTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalTop).filter(assert_1.isNotUndefined)),
|
|
211
213
|
numberOfTotalBottom: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalBottom).filter(assert_1.isNotUndefined)),
|
|
214
|
+
numberOfTotalTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfTotalTop).filter(assert_1.isNotUndefined)),
|
|
212
215
|
inferredColNames: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.inferredColNames).filter(assert_1.isNotUndefined)),
|
|
216
|
+
approxRangeColNames: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.approxRangeColNames).filter(assert_1.isNotUndefined)),
|
|
217
|
+
numberOfColNamesExact: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesExact).filter(assert_1.isNotUndefined)),
|
|
213
218
|
numberOfColNamesValues: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesValues).filter(assert_1.isNotUndefined)),
|
|
214
|
-
numberOfColNamesTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesTop).filter(assert_1.isNotUndefined)),
|
|
215
219
|
numberOfColNamesBottom: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesBottom).filter(assert_1.isNotUndefined)),
|
|
220
|
+
numberOfColNamesInfinite: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesInfinite).filter(assert_1.isNotUndefined)),
|
|
221
|
+
numberOfColNamesTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColNamesTop).filter(assert_1.isNotUndefined)),
|
|
216
222
|
inferredColCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.inferredColCount).filter(assert_1.isNotUndefined)),
|
|
223
|
+
approxRangeColCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.approxRangeColCount).filter(assert_1.isNotUndefined)),
|
|
217
224
|
numberOfColCountExact: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountExact).filter(assert_1.isNotUndefined)),
|
|
218
225
|
numberOfColCountValues: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountValues).filter(assert_1.isNotUndefined)),
|
|
219
|
-
numberOfColCountTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountTop).filter(assert_1.isNotUndefined)),
|
|
220
|
-
numberOfColCountInfinite: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountInfinite).filter(assert_1.isNotUndefined)),
|
|
221
226
|
numberOfColCountBottom: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountBottom).filter(assert_1.isNotUndefined)),
|
|
222
|
-
|
|
227
|
+
numberOfColCountInfinite: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountInfinite).filter(assert_1.isNotUndefined)),
|
|
228
|
+
numberOfColCountTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfColCountTop).filter(assert_1.isNotUndefined)),
|
|
223
229
|
inferredRowCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.inferredRowCount).filter(assert_1.isNotUndefined)),
|
|
230
|
+
approxRangeRowCount: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.approxRangeRowCount).filter(assert_1.isNotUndefined)),
|
|
224
231
|
numberOfRowCountExact: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountExact).filter(assert_1.isNotUndefined)),
|
|
225
232
|
numberOfRowCountValues: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountValues).filter(assert_1.isNotUndefined)),
|
|
226
|
-
numberOfRowCountTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountTop).filter(assert_1.isNotUndefined)),
|
|
227
|
-
numberOfRowCountInfinite: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountInfinite).filter(assert_1.isNotUndefined)),
|
|
228
233
|
numberOfRowCountBottom: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountBottom).filter(assert_1.isNotUndefined)),
|
|
229
|
-
|
|
234
|
+
numberOfRowCountInfinite: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountInfinite).filter(assert_1.isNotUndefined)),
|
|
235
|
+
numberOfRowCountTop: (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.numberOfRowCountTop).filter(assert_1.isNotUndefined)),
|
|
230
236
|
perOperationNumber: new Map(semantics_1.DataFrameOperationNames.map(n => [n, (0, process_1.summarizeSummarizedMeasurement)(stats.map(s => s.dataFrameShape?.perOperationNumber.get(n)).filter(assert_1.isNotUndefined))]))
|
|
231
237
|
} : undefined
|
|
232
238
|
};
|