duckdb 1.2.2.dev194__cp311-cp311-win_amd64.whl → 1.4.3.dev13__cp311-cp311-win_amd64.whl

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 (58) hide show
  1. _duckdb-stubs/__init__.pyi +1478 -0
  2. _duckdb-stubs/_func.pyi +46 -0
  3. _duckdb-stubs/_sqltypes.pyi +75 -0
  4. duckdb/duckdb.cp311-win_amd64.pyd → _duckdb.cp311-win_amd64.pyd +0 -0
  5. adbc_driver_duckdb/__init__.py +10 -8
  6. adbc_driver_duckdb/dbapi.py +4 -5
  7. duckdb/__init__.py +343 -384
  8. duckdb/_dbapi_type_object.py +231 -0
  9. duckdb/_version.py +22 -0
  10. duckdb/bytes_io_wrapper.py +12 -9
  11. duckdb/experimental/__init__.py +5 -2
  12. duckdb/experimental/spark/__init__.py +3 -4
  13. duckdb/experimental/spark/_globals.py +8 -8
  14. duckdb/experimental/spark/_typing.py +7 -9
  15. duckdb/experimental/spark/conf.py +16 -15
  16. duckdb/experimental/spark/context.py +60 -44
  17. duckdb/experimental/spark/errors/__init__.py +33 -35
  18. duckdb/experimental/spark/errors/error_classes.py +1 -1
  19. duckdb/experimental/spark/errors/exceptions/__init__.py +1 -1
  20. duckdb/experimental/spark/errors/exceptions/base.py +39 -88
  21. duckdb/experimental/spark/errors/utils.py +11 -16
  22. duckdb/experimental/spark/exception.py +9 -6
  23. duckdb/experimental/spark/sql/__init__.py +5 -5
  24. duckdb/experimental/spark/sql/_typing.py +8 -15
  25. duckdb/experimental/spark/sql/catalog.py +21 -20
  26. duckdb/experimental/spark/sql/column.py +48 -55
  27. duckdb/experimental/spark/sql/conf.py +9 -8
  28. duckdb/experimental/spark/sql/dataframe.py +213 -231
  29. duckdb/experimental/spark/sql/functions.py +1347 -1218
  30. duckdb/experimental/spark/sql/group.py +56 -52
  31. duckdb/experimental/spark/sql/readwriter.py +80 -94
  32. duckdb/experimental/spark/sql/session.py +64 -59
  33. duckdb/experimental/spark/sql/streaming.py +9 -10
  34. duckdb/experimental/spark/sql/type_utils.py +67 -65
  35. duckdb/experimental/spark/sql/types.py +309 -345
  36. duckdb/experimental/spark/sql/udf.py +6 -6
  37. duckdb/filesystem.py +26 -16
  38. duckdb/func/__init__.py +3 -0
  39. duckdb/functional/__init__.py +12 -16
  40. duckdb/polars_io.py +284 -0
  41. duckdb/query_graph/__main__.py +91 -96
  42. duckdb/sqltypes/__init__.py +63 -0
  43. duckdb/typing/__init__.py +18 -8
  44. duckdb/udf.py +10 -5
  45. duckdb/value/__init__.py +1 -0
  46. duckdb/value/{constant.py → constant/__init__.py} +62 -60
  47. duckdb-1.4.3.dev13.dist-info/METADATA +88 -0
  48. duckdb-1.4.3.dev13.dist-info/RECORD +52 -0
  49. {duckdb-1.2.2.dev194.dist-info → duckdb-1.4.3.dev13.dist-info}/WHEEL +1 -1
  50. duckdb-1.4.3.dev13.dist-info/licenses/LICENSE +7 -0
  51. duckdb-1.2.2.dev194.dist-info/METADATA +0 -29
  52. duckdb-1.2.2.dev194.dist-info/RECORD +0 -47
  53. duckdb-1.2.2.dev194.dist-info/top_level.txt +0 -3
  54. duckdb-stubs/__init__.pyi +0 -708
  55. duckdb-stubs/functional/__init__.pyi +0 -33
  56. duckdb-stubs/typing/__init__.pyi +0 -37
  57. duckdb-stubs/value/constant/__init__.pyi +0 -116
  58. /duckdb-stubs/value/__init__.pyi → /duckdb/py.typed +0 -0
duckdb/__init__.py CHANGED
@@ -1,422 +1,381 @@
1
- _exported_symbols = []
1
+ # ruff: noqa: F401
2
+ """The DuckDB Python Package.
2
3
 
3
- # Modules
4
- import duckdb.functional as functional
5
- import duckdb.typing as typing
6
- import functools
4
+ This module re-exports the DuckDB C++ extension (`_duckdb`) and provides DuckDB's public API.
7
5
 
8
- _exported_symbols.extend([
9
- "typing",
10
- "functional"
11
- ])
6
+ Note:
7
+ - Some symbols exposed here are implementation details of DuckDB's C++ engine.
8
+ - They are kept for backwards compatibility but are not considered stable API.
9
+ - Future versions may move them into submodules with deprecation warnings.
10
+ """
12
11
 
13
- # Classes
14
- from .duckdb import (
15
- DuckDBPyRelation,
16
- DuckDBPyConnection,
17
- Statement,
18
- ExplainType,
19
- StatementType,
20
- ExpectedResultType,
21
- CSVLineTerminator,
22
- PythonExceptionHandling,
23
- RenderMode,
24
- Expression,
25
- ConstantExpression,
12
+ from _duckdb import (
13
+ BinderException,
14
+ CaseExpression,
15
+ CatalogException,
16
+ CoalesceOperator,
26
17
  ColumnExpression,
18
+ ConnectionException,
19
+ ConstantExpression,
20
+ ConstraintException,
21
+ ConversionException,
22
+ CSVLineTerminator,
23
+ DatabaseError,
24
+ DataError,
27
25
  DefaultExpression,
28
- CoalesceOperator,
29
- LambdaExpression,
30
- StarExpression,
31
- FunctionExpression,
32
- CaseExpression,
33
- )
34
- _exported_symbols.extend([
35
- "DuckDBPyRelation",
36
- "DuckDBPyConnection",
37
- "ExplainType",
38
- "PythonExceptionHandling",
39
- "Expression",
40
- "ConstantExpression",
41
- "ColumnExpression",
42
- "DefaultExpression",
43
- "CoalesceOperator",
44
- "LambdaExpression",
45
- "StarExpression",
46
- "FunctionExpression",
47
- "CaseExpression",
48
- ])
49
-
50
- # These are overloaded twice, we define them inside of C++ so pybind can deal with it
51
- _exported_symbols.extend([
52
- 'df',
53
- 'arrow'
54
- ])
55
- from .duckdb import (
56
- df,
57
- arrow
58
- )
59
-
60
- # NOTE: this section is generated by tools/pythonpkg/scripts/generate_connection_wrapper_methods.py.
61
- # Do not edit this section manually, your changes will be overwritten!
62
-
63
- # START OF CONNECTION WRAPPER
64
-
65
- from .duckdb import (
66
- cursor,
67
- register_filesystem,
68
- unregister_filesystem,
69
- list_filesystems,
70
- filesystem_is_registered,
71
- create_function,
72
- remove_function,
73
- sqltype,
74
- dtype,
75
- type,
76
- array_type,
77
- list_type,
78
- union_type,
79
- string_type,
80
- enum_type,
81
- decimal_type,
82
- struct_type,
83
- row_type,
84
- map_type,
85
- duplicate,
86
- execute,
87
- executemany,
88
- close,
89
- interrupt,
90
- fetchone,
91
- fetchmany,
92
- fetchall,
93
- fetchnumpy,
94
- fetchdf,
95
- fetch_df,
96
- df,
97
- fetch_df_chunk,
98
- pl,
99
- fetch_arrow_table,
100
- arrow,
101
- fetch_record_batch,
102
- torch,
103
- tf,
104
- begin,
105
- commit,
106
- rollback,
107
- checkpoint,
108
- append,
109
- register,
110
- unregister,
111
- table,
112
- view,
113
- values,
114
- table_function,
115
- read_json,
116
- extract_statements,
117
- sql,
118
- query,
119
- from_query,
120
- read_csv,
121
- from_csv_auto,
122
- from_df,
123
- from_arrow,
124
- from_parquet,
125
- read_parquet,
126
- from_parquet,
127
- read_parquet,
128
- get_table_names,
129
- install_extension,
130
- load_extension,
131
- project,
132
- distinct,
133
- write_csv,
134
- aggregate,
135
- alias,
136
- filter,
137
- limit,
138
- order,
139
- query_df,
140
- description,
141
- rowcount,
142
- )
143
-
144
- _exported_symbols.extend([
145
- 'cursor',
146
- 'register_filesystem',
147
- 'unregister_filesystem',
148
- 'list_filesystems',
149
- 'filesystem_is_registered',
150
- 'create_function',
151
- 'remove_function',
152
- 'sqltype',
153
- 'dtype',
154
- 'type',
155
- 'array_type',
156
- 'list_type',
157
- 'union_type',
158
- 'string_type',
159
- 'enum_type',
160
- 'decimal_type',
161
- 'struct_type',
162
- 'row_type',
163
- 'map_type',
164
- 'duplicate',
165
- 'execute',
166
- 'executemany',
167
- 'close',
168
- 'interrupt',
169
- 'fetchone',
170
- 'fetchmany',
171
- 'fetchall',
172
- 'fetchnumpy',
173
- 'fetchdf',
174
- 'fetch_df',
175
- 'df',
176
- 'fetch_df_chunk',
177
- 'pl',
178
- 'fetch_arrow_table',
179
- 'arrow',
180
- 'fetch_record_batch',
181
- 'torch',
182
- 'tf',
183
- 'begin',
184
- 'commit',
185
- 'rollback',
186
- 'checkpoint',
187
- 'append',
188
- 'register',
189
- 'unregister',
190
- 'table',
191
- 'view',
192
- 'values',
193
- 'table_function',
194
- 'read_json',
195
- 'extract_statements',
196
- 'sql',
197
- 'query',
198
- 'from_query',
199
- 'read_csv',
200
- 'from_csv_auto',
201
- 'from_df',
202
- 'from_arrow',
203
- 'from_parquet',
204
- 'read_parquet',
205
- 'from_parquet',
206
- 'read_parquet',
207
- 'get_table_names',
208
- 'install_extension',
209
- 'load_extension',
210
- 'project',
211
- 'distinct',
212
- 'write_csv',
213
- 'aggregate',
214
- 'alias',
215
- 'filter',
216
- 'limit',
217
- 'order',
218
- 'query_df',
219
- 'description',
220
- 'rowcount',
221
- ])
222
-
223
- # END OF CONNECTION WRAPPER
224
-
225
- # Enums
226
- from .duckdb import (
227
- ANALYZE,
228
- DEFAULT,
229
- RETURN_NULL,
230
- STANDARD,
231
- COLUMNS,
232
- ROWS
233
- )
234
- _exported_symbols.extend([
235
- "ANALYZE",
236
- "DEFAULT",
237
- "RETURN_NULL",
238
- "STANDARD"
239
- ])
240
-
241
-
242
- # read-only properties
243
- from .duckdb import (
244
- __standard_vector_size__,
245
- __interactive__,
246
- __jupyter__,
247
- __formatted_python_version__,
248
- __version__,
249
- apilevel,
250
- comment,
251
- identifier,
252
- keyword,
253
- numeric_const,
254
- operator,
255
- paramstyle,
256
- string_const,
257
- threadsafety,
258
- token_type,
259
- tokenize
260
- )
261
- _exported_symbols.extend([
262
- "__standard_vector_size__",
263
- "__interactive__",
264
- "__jupyter__",
265
- "__formatted_python_version__",
266
- "__version__",
267
- "apilevel",
268
- "comment",
269
- "identifier",
270
- "keyword",
271
- "numeric_const",
272
- "operator",
273
- "paramstyle",
274
- "string_const",
275
- "threadsafety",
276
- "token_type",
277
- "tokenize"
278
- ])
279
-
280
-
281
- from .duckdb import (
282
- connect,
283
- default_connection,
284
- set_default_connection,
285
- )
286
-
287
- _exported_symbols.extend([
288
- "connect",
289
- "default_connection",
290
- "set_default_connection",
291
- ])
292
-
293
- # Exceptions
294
- from .duckdb import (
26
+ DependencyException,
27
+ DuckDBPyConnection,
28
+ DuckDBPyRelation,
295
29
  Error,
296
- DataError,
297
- ConversionException,
298
- OutOfRangeException,
299
- TypeMismatchException,
30
+ ExpectedResultType,
31
+ ExplainType,
32
+ Expression,
300
33
  FatalException,
34
+ FunctionExpression,
35
+ HTTPException,
301
36
  IntegrityError,
302
- ConstraintException,
303
37
  InternalError,
304
38
  InternalException,
305
39
  InterruptException,
306
- NotSupportedError,
40
+ InvalidInputException,
41
+ InvalidTypeException,
42
+ IOException,
43
+ LambdaExpression,
307
44
  NotImplementedException,
45
+ NotSupportedError,
308
46
  OperationalError,
309
- ConnectionException,
310
- IOException,
311
- HTTPException,
312
47
  OutOfMemoryException,
313
- SerializationException,
314
- TransactionException,
48
+ OutOfRangeException,
49
+ ParserException,
315
50
  PermissionException,
316
51
  ProgrammingError,
317
- BinderException,
318
- CatalogException,
319
- InvalidInputException,
320
- InvalidTypeException,
321
- ParserException,
322
- SyntaxException,
52
+ PythonExceptionHandling,
53
+ RenderMode,
323
54
  SequenceException,
324
- Warning
55
+ SerializationException,
56
+ SQLExpression,
57
+ StarExpression,
58
+ Statement,
59
+ StatementType,
60
+ SyntaxException,
61
+ TransactionException,
62
+ TypeMismatchException,
63
+ Warning,
64
+ __formatted_python_version__,
65
+ __git_revision__,
66
+ __interactive__,
67
+ __jupyter__,
68
+ __standard_vector_size__,
69
+ _clean_default_connection,
70
+ aggregate,
71
+ alias,
72
+ apilevel,
73
+ append,
74
+ array_type,
75
+ arrow,
76
+ begin,
77
+ checkpoint,
78
+ close,
79
+ commit,
80
+ connect,
81
+ create_function,
82
+ cursor,
83
+ decimal_type,
84
+ default_connection,
85
+ description,
86
+ df,
87
+ distinct,
88
+ dtype,
89
+ duplicate,
90
+ enum_type,
91
+ execute,
92
+ executemany,
93
+ extract_statements,
94
+ fetch_arrow_table,
95
+ fetch_df,
96
+ fetch_df_chunk,
97
+ fetch_record_batch,
98
+ fetchall,
99
+ fetchdf,
100
+ fetchmany,
101
+ fetchnumpy,
102
+ fetchone,
103
+ filesystem_is_registered,
104
+ filter,
105
+ from_arrow,
106
+ from_csv_auto,
107
+ from_df,
108
+ from_parquet,
109
+ from_query,
110
+ get_table_names,
111
+ install_extension,
112
+ interrupt,
113
+ limit,
114
+ list_filesystems,
115
+ list_type,
116
+ load_extension,
117
+ map_type,
118
+ order,
119
+ paramstyle,
120
+ pl,
121
+ project,
122
+ query,
123
+ query_df,
124
+ query_progress,
125
+ read_csv,
126
+ read_json,
127
+ read_parquet,
128
+ register,
129
+ register_filesystem,
130
+ remove_function,
131
+ rollback,
132
+ row_type,
133
+ rowcount,
134
+ set_default_connection,
135
+ sql,
136
+ sqltype,
137
+ string_type,
138
+ struct_type,
139
+ table,
140
+ table_function,
141
+ tf,
142
+ threadsafety,
143
+ token_type,
144
+ tokenize,
145
+ torch,
146
+ type,
147
+ union_type,
148
+ unregister,
149
+ unregister_filesystem,
150
+ values,
151
+ view,
152
+ write_csv,
325
153
  )
326
- _exported_symbols.extend([
327
- "Error",
328
- "DataError",
329
- "ConversionException",
330
- "OutOfRangeException",
331
- "TypeMismatchException",
332
- "FatalException",
333
- "IntegrityError",
334
- "ConstraintException",
335
- "InternalError",
336
- "InternalException",
337
- "InterruptException",
338
- "NotSupportedError",
339
- "NotImplementedException",
340
- "OperationalError",
341
- "ConnectionException",
342
- "IOException",
343
- "HTTPException",
344
- "OutOfMemoryException",
345
- "SerializationException",
346
- "TransactionException",
347
- "PermissionException",
348
- "ProgrammingError",
349
- "BinderException",
350
- "CatalogException",
351
- "InvalidInputException",
352
- "InvalidTypeException",
353
- "ParserException",
354
- "SyntaxException",
355
- "SequenceException",
356
- "Warning"
357
- ])
358
154
 
359
- # Value
360
- from .value.constant import (
361
- Value,
362
- NullValue,
363
- BooleanValue,
364
- UnsignedBinaryValue,
365
- UnsignedShortValue,
366
- UnsignedIntegerValue,
367
- UnsignedLongValue,
155
+ from duckdb._dbapi_type_object import (
156
+ BINARY,
157
+ DATETIME,
158
+ NUMBER,
159
+ ROWID,
160
+ STRING,
161
+ DBAPITypeObject,
162
+ )
163
+ from duckdb._version import (
164
+ __duckdb_version__,
165
+ __version__,
166
+ version,
167
+ )
168
+ from duckdb.value.constant import (
368
169
  BinaryValue,
369
- ShortValue,
370
- IntegerValue,
371
- LongValue,
372
- HugeIntegerValue,
373
- FloatValue,
374
- DoubleValue,
375
- DecimalValue,
376
- StringValue,
377
- UUIDValue,
378
170
  BitValue,
379
171
  BlobValue,
172
+ BooleanValue,
380
173
  DateValue,
174
+ DecimalValue,
175
+ DoubleValue,
176
+ FloatValue,
177
+ HugeIntegerValue,
178
+ IntegerValue,
381
179
  IntervalValue,
382
- TimestampValue,
383
- TimestampSecondValue,
180
+ ListValue,
181
+ LongValue,
182
+ MapValue,
183
+ NullValue,
184
+ ShortValue,
185
+ StringValue,
186
+ StructValue,
384
187
  TimestampMilisecondValue,
385
188
  TimestampNanosecondValue,
189
+ TimestampSecondValue,
386
190
  TimestampTimeZoneValue,
387
- TimeValue,
191
+ TimestampValue,
388
192
  TimeTimeZoneValue,
193
+ TimeValue,
194
+ UnionType,
195
+ UnsignedBinaryValue,
196
+ UnsignedHugeIntegerValue,
197
+ UnsignedIntegerValue,
198
+ UnsignedLongValue,
199
+ UnsignedShortValue,
200
+ UUIDValue,
201
+ Value,
389
202
  )
390
203
 
391
- _exported_symbols.extend([
392
- "Value",
393
- "NullValue",
394
- "BooleanValue",
395
- "UnsignedBinaryValue",
396
- "UnsignedShortValue",
397
- "UnsignedIntegerValue",
398
- "UnsignedLongValue",
204
+ __all__: list[str] = [
399
205
  "BinaryValue",
400
- "ShortValue",
401
- "IntegerValue",
402
- "LongValue",
403
- "HugeIntegerValue",
404
- "FloatValue",
405
- "DoubleValue",
406
- "DecimalValue",
407
- "StringValue",
408
- "UUIDValue",
206
+ "BinderException",
409
207
  "BitValue",
410
208
  "BlobValue",
209
+ "BooleanValue",
210
+ "CSVLineTerminator",
211
+ "CaseExpression",
212
+ "CatalogException",
213
+ "CoalesceOperator",
214
+ "ColumnExpression",
215
+ "ConnectionException",
216
+ "ConstantExpression",
217
+ "ConstraintException",
218
+ "ConversionException",
219
+ "DataError",
220
+ "DatabaseError",
411
221
  "DateValue",
222
+ "DecimalValue",
223
+ "DefaultExpression",
224
+ "DependencyException",
225
+ "DoubleValue",
226
+ "DuckDBPyConnection",
227
+ "DuckDBPyRelation",
228
+ "Error",
229
+ "ExpectedResultType",
230
+ "ExplainType",
231
+ "Expression",
232
+ "FatalException",
233
+ "FloatValue",
234
+ "FunctionExpression",
235
+ "HTTPException",
236
+ "HugeIntegerValue",
237
+ "IOException",
238
+ "IntegerValue",
239
+ "IntegrityError",
240
+ "InternalError",
241
+ "InternalException",
242
+ "InterruptException",
412
243
  "IntervalValue",
413
- "TimestampValue",
414
- "TimestampSecondValue",
244
+ "InvalidInputException",
245
+ "InvalidTypeException",
246
+ "LambdaExpression",
247
+ "ListValue",
248
+ "LongValue",
249
+ "MapValue",
250
+ "NotImplementedException",
251
+ "NotSupportedError",
252
+ "NullValue",
253
+ "OperationalError",
254
+ "OutOfMemoryException",
255
+ "OutOfRangeException",
256
+ "ParserException",
257
+ "PermissionException",
258
+ "ProgrammingError",
259
+ "PythonExceptionHandling",
260
+ "RenderMode",
261
+ "SQLExpression",
262
+ "SequenceException",
263
+ "SerializationException",
264
+ "ShortValue",
265
+ "StarExpression",
266
+ "Statement",
267
+ "StatementType",
268
+ "StringValue",
269
+ "StructValue",
270
+ "SyntaxException",
271
+ "TimeTimeZoneValue",
272
+ "TimeValue",
415
273
  "TimestampMilisecondValue",
416
274
  "TimestampNanosecondValue",
275
+ "TimestampSecondValue",
417
276
  "TimestampTimeZoneValue",
418
- "TimeValue",
419
- "TimeTimeZoneValue",
420
- ])
421
-
422
- __all__ = _exported_symbols
277
+ "TimestampValue",
278
+ "TransactionException",
279
+ "TypeMismatchException",
280
+ "UUIDValue",
281
+ "UnionType",
282
+ "UnsignedBinaryValue",
283
+ "UnsignedHugeIntegerValue",
284
+ "UnsignedIntegerValue",
285
+ "UnsignedLongValue",
286
+ "UnsignedShortValue",
287
+ "Value",
288
+ "Warning",
289
+ "__formatted_python_version__",
290
+ "__git_revision__",
291
+ "__interactive__",
292
+ "__jupyter__",
293
+ "__standard_vector_size__",
294
+ "__version__",
295
+ "_clean_default_connection",
296
+ "aggregate",
297
+ "alias",
298
+ "apilevel",
299
+ "append",
300
+ "array_type",
301
+ "arrow",
302
+ "begin",
303
+ "checkpoint",
304
+ "close",
305
+ "commit",
306
+ "connect",
307
+ "create_function",
308
+ "cursor",
309
+ "decimal_type",
310
+ "default_connection",
311
+ "description",
312
+ "df",
313
+ "distinct",
314
+ "dtype",
315
+ "duplicate",
316
+ "enum_type",
317
+ "execute",
318
+ "executemany",
319
+ "extract_statements",
320
+ "fetch_arrow_table",
321
+ "fetch_df",
322
+ "fetch_df_chunk",
323
+ "fetch_record_batch",
324
+ "fetchall",
325
+ "fetchdf",
326
+ "fetchmany",
327
+ "fetchnumpy",
328
+ "fetchone",
329
+ "filesystem_is_registered",
330
+ "filter",
331
+ "from_arrow",
332
+ "from_csv_auto",
333
+ "from_df",
334
+ "from_parquet",
335
+ "from_query",
336
+ "get_table_names",
337
+ "install_extension",
338
+ "interrupt",
339
+ "limit",
340
+ "list_filesystems",
341
+ "list_type",
342
+ "load_extension",
343
+ "map_type",
344
+ "order",
345
+ "paramstyle",
346
+ "paramstyle",
347
+ "pl",
348
+ "project",
349
+ "query",
350
+ "query_df",
351
+ "query_progress",
352
+ "read_csv",
353
+ "read_json",
354
+ "read_parquet",
355
+ "register",
356
+ "register_filesystem",
357
+ "remove_function",
358
+ "rollback",
359
+ "row_type",
360
+ "rowcount",
361
+ "set_default_connection",
362
+ "sql",
363
+ "sqltype",
364
+ "string_type",
365
+ "struct_type",
366
+ "table",
367
+ "table_function",
368
+ "tf",
369
+ "threadsafety",
370
+ "threadsafety",
371
+ "token_type",
372
+ "tokenize",
373
+ "torch",
374
+ "type",
375
+ "union_type",
376
+ "unregister",
377
+ "unregister_filesystem",
378
+ "values",
379
+ "view",
380
+ "write_csv",
381
+ ]