tranfi 0.1.2 → 0.2.0
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/LICENSE +177 -0
- package/NOTICE +8 -0
- package/README.md +272 -40
- package/app/assets/{index-pDFMluyz.js → index-BIAIKnrp.js} +1 -1
- package/app/index.html +1 -1
- package/binding.gyp +55 -3
- package/csrc/arena.c +7 -5
- package/csrc/batch.c +818 -71
- package/csrc/buffer.c +84 -8
- package/csrc/cJSON.c +262 -19
- package/csrc/cJSON.h +17 -1
- package/csrc/codec_csv.c +1074 -181
- package/csrc/codec_jsonl.c +830 -118
- package/csrc/codec_table.c +108 -78
- package/csrc/codec_text.c +286 -68
- package/csrc/compiler.c +31 -3
- package/csrc/config.h +21 -0
- package/csrc/dsl.c +4722 -485
- package/csrc/expr.c +363 -55
- package/csrc/expr.h +2 -0
- package/csrc/internal.h +316 -27
- package/csrc/ir.c +65 -18
- package/csrc/ir.h +41 -0
- package/csrc/ir_schema.c +20 -5
- package/csrc/ir_serialize.c +68 -6
- package/csrc/ir_sql.c +796 -185
- package/csrc/ir_validate.c +462 -6
- package/csrc/json_path.c +210 -0
- package/csrc/main.c +879 -30
- package/csrc/memory_estimate.c +477 -0
- package/csrc/op_acf.c +171 -21
- package/csrc/op_across.c +477 -0
- package/csrc/op_anomaly.c +167 -32
- package/csrc/op_assert.c +761 -0
- package/csrc/op_bin.c +168 -29
- package/csrc/op_cast.c +383 -55
- package/csrc/op_clip.c +30 -19
- package/csrc/op_date_trunc.c +208 -34
- package/csrc/op_datetime.c +259 -77
- package/csrc/op_derive.c +65 -97
- package/csrc/op_diff.c +146 -30
- package/csrc/op_ewma.c +149 -30
- package/csrc/op_explode.c +124 -26
- package/csrc/op_fill_down.c +125 -53
- package/csrc/op_fill_null.c +176 -31
- package/csrc/op_filter.c +89 -40
- package/csrc/op_frequency.c +571 -43
- package/csrc/op_grep.c +36 -18
- package/csrc/op_group_agg.c +1790 -119
- package/csrc/op_hash.c +48 -15
- package/csrc/op_head.c +21 -86
- package/csrc/op_interpolate.c +268 -62
- package/csrc/op_join.c +2700 -182
- package/csrc/op_json_extract.c +227 -0
- package/csrc/op_json_filter.c +384 -0
- package/csrc/op_json_flatten.c +293 -0
- package/csrc/op_json_schema.c +503 -0
- package/csrc/op_label_encode.c +328 -53
- package/csrc/op_lag.c +181 -0
- package/csrc/op_lead.c +141 -89
- package/csrc/op_normalize.c +363 -79
- package/csrc/op_onehot.c +345 -73
- package/csrc/op_pivot.c +1546 -162
- package/csrc/op_quarantine.c +189 -0
- package/csrc/op_registry.c +2062 -166
- package/csrc/op_rename.c +41 -50
- package/csrc/op_replace.c +270 -118
- package/csrc/op_rleid.c +297 -0
- package/csrc/op_rowid.c +559 -0
- package/csrc/op_sample.c +80 -23
- package/csrc/op_schema.c +1341 -0
- package/csrc/op_schema_infer.c +252 -0
- package/csrc/op_select.c +265 -65
- package/csrc/op_set.c +3449 -0
- package/csrc/op_skip.c +30 -87
- package/csrc/op_sort.c +670 -124
- package/csrc/op_source_name.c +120 -0
- package/csrc/op_split.c +65 -28
- package/csrc/op_split_data.c +41 -9
- package/csrc/op_stack.c +178 -222
- package/csrc/op_stats.c +206 -110
- package/csrc/op_step.c +217 -55
- package/csrc/op_tail.c +21 -12
- package/csrc/op_tee.c +338 -0
- package/csrc/op_top.c +260 -53
- package/csrc/op_trim.c +48 -19
- package/csrc/op_unique.c +1193 -150
- package/csrc/op_unpivot.c +100 -66
- package/csrc/op_validate.c +601 -24
- package/csrc/op_window.c +492 -51
- package/csrc/path_policy.c +85 -0
- package/csrc/pipeline.c +872 -99
- package/csrc/recipes.c +3 -1
- package/csrc/report.c +73 -30
- package/csrc/selector.c +1097 -0
- package/csrc/size_utils.c +348 -0
- package/csrc/spill.c +317 -0
- package/csrc/spill.h +21 -0
- package/csrc/tranfi.h +169 -1
- package/csrc/transform.h +209 -0
- package/csrc/transform_api.c +2237 -0
- package/csrc/transform_categorical.c +923 -0
- package/csrc/transform_internal.h +472 -0
- package/csrc/transform_json.c +3812 -0
- package/csrc/transform_numeric.c +1966 -0
- package/csrc/transform_sha256.c +154 -0
- package/csrc/transform_wasm.h +162 -0
- package/csrc/transform_wasm_api.c +1373 -0
- package/csrc/wasm_api.c +70 -9
- package/napi_api.c +219 -11
- package/napi_transform.c +1648 -0
- package/napi_transform.h +8 -0
- package/package.json +27 -11
- package/scripts/install-native.js +76 -0
- package/scripts/prepack.js +64 -0
- package/scripts/sync-csrc.js +23 -0
- package/src/cli.js +8 -11
- package/src/engines/duckdb.js +45 -12
- package/src/index.js +661 -42
- package/src/memory_policy.js +411 -0
- package/src/native.js +1 -5
- package/src/pipeline.js +454 -31
- package/src/recipe_json.js +80 -0
- package/src/server.js +10 -8
- package/src/transform.js +403 -0
- package/src/transform_error.js +10 -0
- package/src/wasm.js +6 -4
- package/wasm/index.js +498 -10
- package/wasm/tranfi_core.js +0 -0
- package/wasm/transform.js +1156 -0
- package/wasm/worker.js +786 -0
- package/csrc/plan.c +0 -206
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
#ifndef TRANFI_TRANSFORM_INTERNAL_H
|
|
2
|
+
#define TRANFI_TRANSFORM_INTERNAL_H
|
|
3
|
+
|
|
4
|
+
#include "transform.h"
|
|
5
|
+
#include "cJSON.h"
|
|
6
|
+
#include <fenv.h>
|
|
7
|
+
#include <stdatomic.h>
|
|
8
|
+
|
|
9
|
+
#define TF_TRANSFORM_MAX_SAFE_INTEGER_V1 INT64_C(9007199254740991)
|
|
10
|
+
|
|
11
|
+
typedef enum tf_transform_impute_op {
|
|
12
|
+
TF_TRANSFORM_IMPUTE_NONE = 0,
|
|
13
|
+
TF_TRANSFORM_IMPUTE_ZERO,
|
|
14
|
+
TF_TRANSFORM_IMPUTE_CONSTANT,
|
|
15
|
+
TF_TRANSFORM_IMPUTE_MEAN,
|
|
16
|
+
TF_TRANSFORM_IMPUTE_MEDIAN
|
|
17
|
+
} tf_transform_impute_op;
|
|
18
|
+
|
|
19
|
+
typedef enum tf_transform_column_kind {
|
|
20
|
+
TF_TRANSFORM_KIND_NUMERIC = 0,
|
|
21
|
+
TF_TRANSFORM_KIND_CATEGORICAL,
|
|
22
|
+
TF_TRANSFORM_KIND_INFER
|
|
23
|
+
} tf_transform_column_kind;
|
|
24
|
+
|
|
25
|
+
typedef enum tf_transform_categorical_impute_op {
|
|
26
|
+
TF_TRANSFORM_CATEGORICAL_IMPUTE_NONE = 0,
|
|
27
|
+
TF_TRANSFORM_CATEGORICAL_IMPUTE_CONSTANT,
|
|
28
|
+
TF_TRANSFORM_CATEGORICAL_IMPUTE_MODE
|
|
29
|
+
} tf_transform_categorical_impute_op;
|
|
30
|
+
|
|
31
|
+
typedef enum tf_transform_encode_op {
|
|
32
|
+
TF_TRANSFORM_ENCODE_NONE = 0,
|
|
33
|
+
TF_TRANSFORM_ENCODE_LABEL,
|
|
34
|
+
TF_TRANSFORM_ENCODE_ONEHOT
|
|
35
|
+
} tf_transform_encode_op;
|
|
36
|
+
|
|
37
|
+
typedef enum tf_transform_unknown_policy {
|
|
38
|
+
TF_TRANSFORM_UNKNOWN_NONE = 0,
|
|
39
|
+
TF_TRANSFORM_UNKNOWN_ERROR,
|
|
40
|
+
TF_TRANSFORM_UNKNOWN_SENTINEL,
|
|
41
|
+
TF_TRANSFORM_UNKNOWN_OTHER,
|
|
42
|
+
TF_TRANSFORM_UNKNOWN_ALL_ZERO
|
|
43
|
+
} tf_transform_unknown_policy;
|
|
44
|
+
|
|
45
|
+
typedef enum tf_transform_output_role {
|
|
46
|
+
TF_TRANSFORM_ROLE_VALUE = 0,
|
|
47
|
+
TF_TRANSFORM_ROLE_LABEL,
|
|
48
|
+
TF_TRANSFORM_ROLE_ONEHOT
|
|
49
|
+
} tf_transform_output_role;
|
|
50
|
+
|
|
51
|
+
typedef enum tf_transform_schema_category_kind {
|
|
52
|
+
TF_TRANSFORM_SCHEMA_CATEGORY_NONE = 0,
|
|
53
|
+
TF_TRANSFORM_SCHEMA_CATEGORY_VALUE,
|
|
54
|
+
TF_TRANSFORM_SCHEMA_CATEGORY_OTHER
|
|
55
|
+
} tf_transform_schema_category_kind;
|
|
56
|
+
|
|
57
|
+
typedef enum tf_transform_normalize_op {
|
|
58
|
+
TF_TRANSFORM_NORMALIZE_NONE = 0,
|
|
59
|
+
TF_TRANSFORM_NORMALIZE_STANDARD,
|
|
60
|
+
TF_TRANSFORM_NORMALIZE_MINMAX
|
|
61
|
+
} tf_transform_normalize_op;
|
|
62
|
+
|
|
63
|
+
typedef enum tf_transform_all_missing {
|
|
64
|
+
TF_TRANSFORM_ALL_MISSING_NONE = 0,
|
|
65
|
+
TF_TRANSFORM_ALL_MISSING_ERROR,
|
|
66
|
+
TF_TRANSFORM_ALL_MISSING_ZERO
|
|
67
|
+
} tf_transform_all_missing;
|
|
68
|
+
|
|
69
|
+
typedef struct tf_transform_category_value {
|
|
70
|
+
uint64_t bits;
|
|
71
|
+
} tf_transform_category_value;
|
|
72
|
+
|
|
73
|
+
typedef struct tf_transform_recipe_column {
|
|
74
|
+
char *source_id;
|
|
75
|
+
size_t source_id_len;
|
|
76
|
+
tf_transform_column_kind kind;
|
|
77
|
+
uint64_t infer_max_categories;
|
|
78
|
+
tf_transform_impute_op impute;
|
|
79
|
+
tf_transform_all_missing all_missing;
|
|
80
|
+
double constant;
|
|
81
|
+
uint32_t constant_dtype;
|
|
82
|
+
tf_transform_normalize_op normalize;
|
|
83
|
+
int ddof;
|
|
84
|
+
tf_transform_categorical_impute_op categorical_impute;
|
|
85
|
+
tf_transform_all_missing categorical_all_missing;
|
|
86
|
+
tf_transform_encode_op categorical_encode;
|
|
87
|
+
int categorical_discover;
|
|
88
|
+
uint32_t categorical_fixed_dtype;
|
|
89
|
+
size_t categorical_fixed_count;
|
|
90
|
+
tf_transform_category_value *categorical_fixed;
|
|
91
|
+
tf_transform_unknown_policy categorical_unknown;
|
|
92
|
+
int64_t categorical_sentinel_label;
|
|
93
|
+
int categorical_has_sentinel_label;
|
|
94
|
+
} tf_transform_recipe_column;
|
|
95
|
+
|
|
96
|
+
struct tf_transform_recipe {
|
|
97
|
+
atomic_uint refcount;
|
|
98
|
+
size_t column_count;
|
|
99
|
+
tf_transform_recipe_column *columns;
|
|
100
|
+
uint64_t max_output_columns;
|
|
101
|
+
uint64_t max_output_elements_per_apply;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
typedef struct tf_transform_schema_field_owned {
|
|
105
|
+
uint32_t dtype;
|
|
106
|
+
char *id;
|
|
107
|
+
size_t id_len;
|
|
108
|
+
char *name;
|
|
109
|
+
size_t name_len;
|
|
110
|
+
char *source_id;
|
|
111
|
+
size_t source_id_len;
|
|
112
|
+
tf_transform_output_role role;
|
|
113
|
+
tf_transform_schema_category_kind category_kind;
|
|
114
|
+
uint32_t category_dtype;
|
|
115
|
+
uint64_t category_bits;
|
|
116
|
+
} tf_transform_schema_field_owned;
|
|
117
|
+
|
|
118
|
+
struct tf_transform_schema {
|
|
119
|
+
size_t field_count;
|
|
120
|
+
tf_transform_schema_field_owned *fields;
|
|
121
|
+
int is_output;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
typedef struct tf_transform_numeric_state {
|
|
125
|
+
tf_transform_impute_op impute;
|
|
126
|
+
tf_transform_all_missing all_missing;
|
|
127
|
+
tf_transform_normalize_op normalize;
|
|
128
|
+
int ddof;
|
|
129
|
+
double impute_value;
|
|
130
|
+
int has_impute_value;
|
|
131
|
+
double location;
|
|
132
|
+
double scale;
|
|
133
|
+
} tf_transform_numeric_state;
|
|
134
|
+
|
|
135
|
+
typedef struct tf_transform_categorical_state {
|
|
136
|
+
tf_transform_categorical_impute_op impute;
|
|
137
|
+
tf_transform_all_missing all_missing;
|
|
138
|
+
tf_transform_encode_op encode;
|
|
139
|
+
uint32_t source_dtype;
|
|
140
|
+
tf_transform_category_value *categories;
|
|
141
|
+
size_t category_count;
|
|
142
|
+
uint64_t impute_bits;
|
|
143
|
+
int has_impute_value;
|
|
144
|
+
tf_transform_unknown_policy unknown;
|
|
145
|
+
int64_t sentinel_label;
|
|
146
|
+
int has_sentinel_label;
|
|
147
|
+
uint64_t other_ordinal;
|
|
148
|
+
int has_other_ordinal;
|
|
149
|
+
} tf_transform_categorical_state;
|
|
150
|
+
|
|
151
|
+
typedef struct tf_transform_column_state {
|
|
152
|
+
tf_transform_column_kind kind;
|
|
153
|
+
union {
|
|
154
|
+
tf_transform_numeric_state numeric;
|
|
155
|
+
tf_transform_categorical_state categorical;
|
|
156
|
+
} value;
|
|
157
|
+
} tf_transform_column_state;
|
|
158
|
+
|
|
159
|
+
struct tf_transform_plan {
|
|
160
|
+
atomic_uint refcount;
|
|
161
|
+
tf_transform_recipe *recipe;
|
|
162
|
+
tf_transform_schema input_schema;
|
|
163
|
+
tf_transform_schema output_schema;
|
|
164
|
+
tf_transform_column_state *states;
|
|
165
|
+
uint64_t import_allocation_count;
|
|
166
|
+
uint64_t import_peak_resident_bytes;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
typedef struct tf_transform_running_stats {
|
|
170
|
+
uint64_t observed;
|
|
171
|
+
uint64_t missing;
|
|
172
|
+
double mean;
|
|
173
|
+
double m2;
|
|
174
|
+
double minimum;
|
|
175
|
+
double maximum;
|
|
176
|
+
int has_value;
|
|
177
|
+
int numeric_domain_failed;
|
|
178
|
+
} tf_transform_running_stats;
|
|
179
|
+
|
|
180
|
+
typedef struct tf_transform_median_store {
|
|
181
|
+
double **blocks;
|
|
182
|
+
size_t block_count;
|
|
183
|
+
size_t block_capacity;
|
|
184
|
+
size_t values_per_block;
|
|
185
|
+
uint64_t count;
|
|
186
|
+
} tf_transform_median_store;
|
|
187
|
+
|
|
188
|
+
typedef struct tf_transform_category_store tf_transform_category_store;
|
|
189
|
+
|
|
190
|
+
typedef struct tf_transform_runtime_copy {
|
|
191
|
+
tf_transform_limits_v1 limits;
|
|
192
|
+
tf_transform_cancel_fn cancel;
|
|
193
|
+
void *cancel_user;
|
|
194
|
+
int fp_guard_active;
|
|
195
|
+
} tf_transform_runtime_copy;
|
|
196
|
+
|
|
197
|
+
typedef struct tf_transform_resource_ledger {
|
|
198
|
+
const tf_transform_runtime_copy *runtime;
|
|
199
|
+
uint64_t allocation_count;
|
|
200
|
+
uint64_t resident_bytes;
|
|
201
|
+
uint64_t peak_resident_bytes;
|
|
202
|
+
tf_transform_code last_code;
|
|
203
|
+
} tf_transform_resource_ledger;
|
|
204
|
+
|
|
205
|
+
typedef enum tf_transform_analyzer_state {
|
|
206
|
+
TF_ANALYZER_ACTIVE = 0,
|
|
207
|
+
TF_ANALYZER_FINALIZED,
|
|
208
|
+
TF_ANALYZER_FAILED
|
|
209
|
+
} tf_transform_analyzer_state;
|
|
210
|
+
|
|
211
|
+
struct tf_transform_analyzer {
|
|
212
|
+
tf_transform_recipe *recipe;
|
|
213
|
+
tf_transform_schema input_schema;
|
|
214
|
+
tf_transform_runtime_copy runtime;
|
|
215
|
+
tf_transform_running_stats *stats;
|
|
216
|
+
tf_transform_running_stats *scratch;
|
|
217
|
+
tf_transform_median_store *median_stores;
|
|
218
|
+
tf_transform_category_store *category_stores;
|
|
219
|
+
size_t category_stores_initialized;
|
|
220
|
+
uint64_t total_categories;
|
|
221
|
+
uint64_t total_rows;
|
|
222
|
+
uint64_t total_input_bytes;
|
|
223
|
+
uint64_t allocation_count;
|
|
224
|
+
uint64_t resident_state_bytes;
|
|
225
|
+
tf_transform_analyzer_state state;
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
typedef enum tf_transform_apply_state {
|
|
229
|
+
TF_APPLY_READY = 0,
|
|
230
|
+
TF_APPLY_FAILED
|
|
231
|
+
} tf_transform_apply_state;
|
|
232
|
+
|
|
233
|
+
struct tf_transform_apply {
|
|
234
|
+
tf_transform_plan *plan;
|
|
235
|
+
tf_transform_runtime_copy runtime;
|
|
236
|
+
uint64_t total_rows;
|
|
237
|
+
uint64_t total_input_bytes;
|
|
238
|
+
uint64_t allocation_count;
|
|
239
|
+
uint64_t resident_state_bytes;
|
|
240
|
+
tf_transform_apply_state state;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
struct tf_transform_error {
|
|
244
|
+
tf_transform_code code;
|
|
245
|
+
char *message;
|
|
246
|
+
size_t message_len;
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
typedef struct tf_transform_buffer {
|
|
250
|
+
uint8_t *data;
|
|
251
|
+
size_t len;
|
|
252
|
+
size_t cap;
|
|
253
|
+
int count_only;
|
|
254
|
+
} tf_transform_buffer;
|
|
255
|
+
|
|
256
|
+
typedef struct tf_transform_fp_guard {
|
|
257
|
+
#if !defined(__wasm__)
|
|
258
|
+
fenv_t environment;
|
|
259
|
+
#endif
|
|
260
|
+
#if defined(__i386__) || defined(__x86_64__)
|
|
261
|
+
unsigned int mxcsr;
|
|
262
|
+
#endif
|
|
263
|
+
int active;
|
|
264
|
+
} tf_transform_fp_guard;
|
|
265
|
+
|
|
266
|
+
tf_transform_code tf_transform_set_error(
|
|
267
|
+
tf_transform_error **error, tf_transform_code code, const char *message);
|
|
268
|
+
void tf_transform_clear_error(tf_transform_error **error);
|
|
269
|
+
|
|
270
|
+
tf_transform_code tf_transform_copy_limits(
|
|
271
|
+
const tf_transform_limits_v1 *source, tf_transform_limits_v1 *out,
|
|
272
|
+
tf_transform_error **error);
|
|
273
|
+
tf_transform_code tf_transform_copy_runtime(
|
|
274
|
+
const tf_transform_runtime_v1 *source, tf_transform_runtime_copy *out,
|
|
275
|
+
tf_transform_error **error);
|
|
276
|
+
tf_transform_code tf_transform_poll_cancel(
|
|
277
|
+
const tf_transform_runtime_copy *runtime, tf_transform_error **error);
|
|
278
|
+
tf_transform_code tf_transform_copy_bytes_runtime(
|
|
279
|
+
void *destination, const void *source, size_t len,
|
|
280
|
+
const tf_transform_runtime_copy *runtime,
|
|
281
|
+
tf_transform_error **error);
|
|
282
|
+
tf_transform_code tf_transform_compare_bytes_runtime(
|
|
283
|
+
const void *left, size_t left_len,
|
|
284
|
+
const void *right, size_t right_len,
|
|
285
|
+
const tf_transform_runtime_copy *runtime,
|
|
286
|
+
int *comparison, tf_transform_error **error);
|
|
287
|
+
void tf_transform_resource_ledger_init(
|
|
288
|
+
tf_transform_resource_ledger *ledger,
|
|
289
|
+
const tf_transform_runtime_copy *runtime);
|
|
290
|
+
tf_transform_code tf_transform_resource_reserve(
|
|
291
|
+
tf_transform_resource_ledger *ledger, uint64_t bytes,
|
|
292
|
+
tf_transform_error **error);
|
|
293
|
+
tf_transform_code tf_transform_resource_charge_batch(
|
|
294
|
+
tf_transform_resource_ledger *ledger, uint64_t allocations,
|
|
295
|
+
uint64_t resident_bytes, uint64_t peak_bytes,
|
|
296
|
+
tf_transform_error **error);
|
|
297
|
+
void tf_transform_resource_release(
|
|
298
|
+
tf_transform_resource_ledger *ledger, uint64_t bytes);
|
|
299
|
+
void *tf_transform_resource_malloc(
|
|
300
|
+
tf_transform_resource_ledger *ledger, size_t bytes,
|
|
301
|
+
tf_transform_error **error);
|
|
302
|
+
void *tf_transform_resource_calloc(
|
|
303
|
+
tf_transform_resource_ledger *ledger, size_t count, size_t size,
|
|
304
|
+
tf_transform_error **error);
|
|
305
|
+
tf_transform_code tf_transform_check_runtime_fp(tf_transform_error **error);
|
|
306
|
+
|
|
307
|
+
tf_transform_code tf_transform_analyzer_allocate_retained(
|
|
308
|
+
tf_transform_analyzer *analyzer, size_t bytes, void **out,
|
|
309
|
+
tf_transform_error **error);
|
|
310
|
+
|
|
311
|
+
tf_transform_code tf_transform_category_stores_requirements(
|
|
312
|
+
size_t column_count, uint64_t *resident_bytes,
|
|
313
|
+
uint64_t *allocation_count, tf_transform_error **error);
|
|
314
|
+
tf_transform_code tf_transform_category_stores_init(
|
|
315
|
+
tf_transform_analyzer *analyzer, tf_transform_error **error);
|
|
316
|
+
void tf_transform_category_stores_clear(tf_transform_analyzer *analyzer);
|
|
317
|
+
tf_transform_code tf_transform_category_observe(
|
|
318
|
+
tf_transform_analyzer *analyzer, size_t column_index,
|
|
319
|
+
double value, uint32_t dtype, tf_transform_error **error);
|
|
320
|
+
tf_transform_code tf_transform_category_infer_observe(
|
|
321
|
+
tf_transform_analyzer *analyzer, size_t column_index,
|
|
322
|
+
double value, uint32_t dtype, int is_integer, uint64_t max_categories,
|
|
323
|
+
int *resolved_numeric, tf_transform_error **error);
|
|
324
|
+
tf_transform_code tf_transform_analyzer_resolve_kind(
|
|
325
|
+
const tf_transform_analyzer *analyzer, size_t column_index,
|
|
326
|
+
tf_transform_column_kind *out, tf_transform_error **error);
|
|
327
|
+
tf_transform_code tf_transform_category_check_observed(
|
|
328
|
+
const tf_transform_analyzer *analyzer, size_t column_index,
|
|
329
|
+
uint64_t observed, tf_transform_error **error);
|
|
330
|
+
tf_transform_code tf_transform_category_plan_requirements(
|
|
331
|
+
const tf_transform_analyzer *analyzer, size_t column_index,
|
|
332
|
+
uint64_t *resident_bytes, uint64_t *allocation_count,
|
|
333
|
+
tf_transform_error **error);
|
|
334
|
+
tf_transform_code tf_transform_category_finalize(
|
|
335
|
+
const tf_transform_analyzer *analyzer, size_t column_index,
|
|
336
|
+
tf_transform_categorical_state *out, tf_transform_error **error);
|
|
337
|
+
void tf_transform_categorical_state_clear(tf_transform_categorical_state *state);
|
|
338
|
+
tf_transform_code tf_transform_category_key(
|
|
339
|
+
double value, uint32_t dtype, uint64_t *out, tf_transform_error **error);
|
|
340
|
+
double tf_transform_category_decode(uint64_t bits, uint32_t dtype);
|
|
341
|
+
int tf_transform_category_compare(uint64_t left, uint64_t right, uint32_t dtype);
|
|
342
|
+
tf_transform_code tf_transform_category_lookup(
|
|
343
|
+
const tf_transform_categorical_state *state, uint64_t bits,
|
|
344
|
+
const tf_transform_runtime_copy *runtime, size_t *ordinal, int *found,
|
|
345
|
+
tf_transform_error **error);
|
|
346
|
+
tf_transform_code tf_transform_fp_begin(
|
|
347
|
+
tf_transform_fp_guard *guard, tf_transform_error **error);
|
|
348
|
+
void tf_transform_fp_end(tf_transform_fp_guard *guard);
|
|
349
|
+
|
|
350
|
+
void tf_transform_recipe_retain(tf_transform_recipe *recipe);
|
|
351
|
+
void tf_transform_recipe_release(tf_transform_recipe *recipe);
|
|
352
|
+
void tf_transform_plan_retain(tf_transform_plan *plan);
|
|
353
|
+
void tf_transform_plan_release(tf_transform_plan *plan);
|
|
354
|
+
|
|
355
|
+
tf_transform_code tf_transform_schema_copy(
|
|
356
|
+
const tf_schema_view_v1 *source, const tf_transform_limits_v1 *limits,
|
|
357
|
+
tf_transform_schema *out, tf_transform_error **error);
|
|
358
|
+
tf_transform_code tf_transform_schema_copy_runtime(
|
|
359
|
+
const tf_schema_view_v1 *source,
|
|
360
|
+
const tf_transform_runtime_copy *runtime,
|
|
361
|
+
tf_transform_schema *out, tf_transform_error **error);
|
|
362
|
+
tf_transform_code tf_transform_schema_copy_runtime_ledger(
|
|
363
|
+
const tf_schema_view_v1 *source,
|
|
364
|
+
const tf_transform_runtime_copy *runtime,
|
|
365
|
+
tf_transform_resource_ledger *ledger,
|
|
366
|
+
tf_transform_schema *out, tf_transform_error **error);
|
|
367
|
+
tf_transform_code tf_transform_schema_clone(
|
|
368
|
+
const tf_transform_schema *source, tf_transform_schema *out,
|
|
369
|
+
tf_transform_error **error);
|
|
370
|
+
tf_transform_code tf_transform_schema_clone_runtime(
|
|
371
|
+
const tf_transform_schema *source,
|
|
372
|
+
const tf_transform_runtime_copy *runtime,
|
|
373
|
+
tf_transform_schema *out, tf_transform_error **error);
|
|
374
|
+
void tf_transform_schema_clear(tf_transform_schema *schema);
|
|
375
|
+
tf_transform_code tf_transform_output_schema_requirements(
|
|
376
|
+
const tf_transform_schema *input, const tf_transform_recipe *recipe,
|
|
377
|
+
const tf_transform_analyzer *analyzer,
|
|
378
|
+
const tf_transform_column_state *states,
|
|
379
|
+
const tf_transform_runtime_copy *runtime, uint64_t *field_count,
|
|
380
|
+
uint64_t *resident_bytes, uint64_t *allocation_count,
|
|
381
|
+
uint64_t *collision_bytes,
|
|
382
|
+
tf_transform_error **error);
|
|
383
|
+
tf_transform_code tf_transform_output_schema_build(
|
|
384
|
+
const tf_transform_schema *input, const tf_transform_recipe *recipe,
|
|
385
|
+
const tf_transform_analyzer *analyzer,
|
|
386
|
+
const tf_transform_column_state *states,
|
|
387
|
+
const tf_transform_runtime_copy *runtime, tf_transform_schema *out,
|
|
388
|
+
tf_transform_error **error);
|
|
389
|
+
tf_transform_code tf_transform_output_schema_validate_collisions(
|
|
390
|
+
const tf_transform_schema *input, const tf_transform_schema *output,
|
|
391
|
+
const tf_transform_runtime_copy *runtime,
|
|
392
|
+
tf_transform_resource_ledger *ledger, tf_transform_code collision_code,
|
|
393
|
+
tf_transform_error **error);
|
|
394
|
+
tf_transform_code tf_transform_output_schema_validate_contract(
|
|
395
|
+
const tf_transform_schema *input, const tf_transform_recipe *recipe,
|
|
396
|
+
const tf_transform_analyzer *analyzer,
|
|
397
|
+
const tf_transform_column_state *states,
|
|
398
|
+
const tf_transform_schema *output,
|
|
399
|
+
const tf_transform_runtime_copy *runtime,
|
|
400
|
+
tf_transform_resource_ledger *ledger, tf_transform_code mismatch_code,
|
|
401
|
+
tf_transform_error **error);
|
|
402
|
+
int tf_transform_schema_equal_view(
|
|
403
|
+
const tf_transform_schema *schema, const tf_schema_view_v1 *view);
|
|
404
|
+
tf_transform_code tf_transform_schema_equal_view_runtime(
|
|
405
|
+
const tf_transform_schema *schema, const tf_schema_view_v1 *view,
|
|
406
|
+
const tf_transform_runtime_copy *runtime, int *equal,
|
|
407
|
+
tf_transform_error **error);
|
|
408
|
+
|
|
409
|
+
tf_transform_code tf_transform_recipe_parse_numeric(
|
|
410
|
+
const uint8_t *json, size_t json_len,
|
|
411
|
+
const tf_transform_limits_v1 *limits,
|
|
412
|
+
tf_transform_recipe **out, tf_transform_error **error);
|
|
413
|
+
cJSON *tf_transform_recipe_to_json(const tf_transform_recipe *recipe);
|
|
414
|
+
cJSON *tf_transform_schema_to_json(const tf_transform_schema *schema);
|
|
415
|
+
tf_transform_code tf_transform_schema_json_preflight(
|
|
416
|
+
const tf_transform_schema *schema, const tf_transform_limits_v1 *limits,
|
|
417
|
+
tf_transform_error **error);
|
|
418
|
+
tf_transform_code tf_transform_plan_json_preflight(
|
|
419
|
+
const tf_transform_plan *plan, const tf_transform_limits_v1 *limits,
|
|
420
|
+
tf_transform_error **error);
|
|
421
|
+
tf_transform_code tf_transform_plan_recipe_fingerprint(
|
|
422
|
+
const tf_transform_plan *plan, const tf_transform_limits_v1 *limits,
|
|
423
|
+
char out[65], tf_transform_error **error);
|
|
424
|
+
cJSON *tf_transform_plan_to_json(
|
|
425
|
+
const tf_transform_plan *plan, const tf_transform_limits_v1 *limits,
|
|
426
|
+
tf_transform_error **error);
|
|
427
|
+
tf_transform_code tf_transform_plan_from_json(
|
|
428
|
+
const uint8_t *json, size_t json_len,
|
|
429
|
+
const tf_transform_runtime_copy *runtime,
|
|
430
|
+
tf_transform_plan **out, uint8_t **canonical_out,
|
|
431
|
+
size_t *canonical_len_out, tf_transform_error **error);
|
|
432
|
+
|
|
433
|
+
tf_transform_code tf_transform_json_print_canonical(
|
|
434
|
+
const cJSON *value, const tf_transform_limits_v1 *limits,
|
|
435
|
+
uint8_t **out, size_t *out_len, tf_transform_error **error);
|
|
436
|
+
tf_transform_code tf_transform_json_print_canonical_runtime(
|
|
437
|
+
const cJSON *value, const tf_transform_runtime_copy *runtime,
|
|
438
|
+
uint8_t **out, size_t *out_len, tf_transform_error **error);
|
|
439
|
+
tf_transform_code tf_transform_json_print_canonical_runtime_ledger(
|
|
440
|
+
const cJSON *value, const tf_transform_runtime_copy *runtime,
|
|
441
|
+
tf_transform_resource_ledger *ledger,
|
|
442
|
+
uint8_t **out, size_t *out_len, tf_transform_error **error);
|
|
443
|
+
tf_transform_code tf_transform_json_parse_bounded(
|
|
444
|
+
const uint8_t *json, size_t json_len,
|
|
445
|
+
const tf_transform_limits_v1 *limits, cJSON **out,
|
|
446
|
+
tf_transform_error **error, tf_transform_code malformed_code);
|
|
447
|
+
tf_transform_code tf_transform_json_parse_bounded_runtime(
|
|
448
|
+
const uint8_t *json, size_t json_len,
|
|
449
|
+
const tf_transform_runtime_copy *runtime, cJSON **out,
|
|
450
|
+
uint64_t *resident_bytes_out, uint64_t *allocation_count_out,
|
|
451
|
+
tf_transform_error **error, tf_transform_code malformed_code);
|
|
452
|
+
tf_transform_code tf_transform_json_parse_bounded_runtime_ledger(
|
|
453
|
+
const uint8_t *json, size_t json_len,
|
|
454
|
+
const tf_transform_runtime_copy *runtime,
|
|
455
|
+
tf_transform_resource_ledger *ledger, cJSON **out,
|
|
456
|
+
uint64_t *resident_bytes_out, uint64_t *allocation_count_out,
|
|
457
|
+
tf_transform_error **error, tf_transform_code malformed_code);
|
|
458
|
+
|
|
459
|
+
void tf_transform_sha256(const uint8_t *data, size_t len, uint8_t out[32]);
|
|
460
|
+
tf_transform_code tf_transform_sha256_runtime(
|
|
461
|
+
const uint8_t *data, size_t len,
|
|
462
|
+
const tf_transform_runtime_copy *runtime,
|
|
463
|
+
uint8_t out[32], tf_transform_error **error);
|
|
464
|
+
double tf_transform_sqrt_f64_rne(double value);
|
|
465
|
+
|
|
466
|
+
int tf_transform_double_is_finite(double value);
|
|
467
|
+
int tf_transform_double_is_nan(double value);
|
|
468
|
+
uint64_t tf_transform_double_bits(double value);
|
|
469
|
+
double tf_transform_double_from_bits(uint64_t bits);
|
|
470
|
+
int tf_transform_valid_utf8(const uint8_t *data, size_t len);
|
|
471
|
+
|
|
472
|
+
#endif
|