fugue 0.8.2.dev4__py3-none-any.whl → 0.8.4__py3-none-any.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 (68) hide show
  1. fugue/__init__.py +0 -1
  2. fugue/_utils/io.py +2 -91
  3. fugue/api.py +1 -0
  4. fugue/collections/partition.py +12 -6
  5. fugue/constants.py +1 -1
  6. fugue/dataframe/__init__.py +1 -7
  7. fugue/dataframe/arrow_dataframe.py +1 -1
  8. fugue/dataframe/function_wrapper.py +2 -3
  9. fugue/dataframe/utils.py +10 -84
  10. fugue/execution/api.py +34 -12
  11. fugue/execution/native_execution_engine.py +33 -19
  12. fugue/extensions/_builtins/creators.py +4 -2
  13. fugue/extensions/_builtins/outputters.py +3 -3
  14. fugue/extensions/_builtins/processors.py +2 -3
  15. fugue/plugins.py +1 -0
  16. fugue/workflow/_checkpoint.py +1 -1
  17. {fugue-0.8.2.dev4.dist-info → fugue-0.8.4.dist-info}/METADATA +20 -10
  18. {fugue-0.8.2.dev4.dist-info → fugue-0.8.4.dist-info}/RECORD +67 -65
  19. {fugue-0.8.2.dev4.dist-info → fugue-0.8.4.dist-info}/entry_points.txt +2 -2
  20. fugue_contrib/viz/_ext.py +7 -1
  21. fugue_dask/_io.py +0 -13
  22. fugue_dask/_utils.py +10 -4
  23. fugue_dask/execution_engine.py +42 -16
  24. fugue_duckdb/_utils.py +7 -2
  25. fugue_duckdb/dask.py +1 -1
  26. fugue_duckdb/dataframe.py +17 -10
  27. fugue_duckdb/execution_engine.py +12 -22
  28. fugue_ibis/dataframe.py +2 -7
  29. fugue_notebook/env.py +5 -10
  30. fugue_polars/_utils.py +0 -40
  31. fugue_polars/polars_dataframe.py +22 -7
  32. fugue_ray/_constants.py +8 -1
  33. fugue_ray/_utils/dataframe.py +31 -4
  34. fugue_ray/_utils/io.py +2 -4
  35. fugue_ray/dataframe.py +13 -4
  36. fugue_ray/execution_engine.py +39 -21
  37. fugue_spark/_utils/convert.py +22 -11
  38. fugue_spark/_utils/io.py +0 -13
  39. fugue_spark/_utils/misc.py +27 -0
  40. fugue_spark/_utils/partition.py +11 -18
  41. fugue_spark/dataframe.py +24 -19
  42. fugue_spark/execution_engine.py +61 -35
  43. fugue_spark/registry.py +15 -3
  44. fugue_test/builtin_suite.py +7 -9
  45. fugue_test/dataframe_suite.py +7 -3
  46. fugue_test/execution_suite.py +100 -122
  47. fugue_version/__init__.py +1 -1
  48. tests/fugue/collections/test_partition.py +6 -3
  49. tests/fugue/dataframe/test_utils.py +2 -43
  50. tests/fugue/execution/test_naive_execution_engine.py +33 -0
  51. tests/fugue/utils/test_io.py +0 -80
  52. tests/fugue_dask/test_execution_engine.py +45 -0
  53. tests/fugue_dask/test_io.py +0 -55
  54. tests/fugue_duckdb/test_dataframe.py +2 -2
  55. tests/fugue_duckdb/test_utils.py +1 -1
  56. tests/fugue_polars/test_api.py +13 -0
  57. tests/fugue_polars/test_transform.py +11 -5
  58. tests/fugue_ray/test_execution_engine.py +32 -1
  59. tests/fugue_spark/test_dataframe.py +0 -8
  60. tests/fugue_spark/test_execution_engine.py +48 -10
  61. tests/fugue_spark/test_importless.py +4 -4
  62. tests/fugue_spark/test_spark_connect.py +82 -0
  63. tests/fugue_spark/utils/test_convert.py +6 -8
  64. tests/fugue_spark/utils/test_io.py +0 -17
  65. fugue_test/_utils.py +0 -13
  66. {fugue-0.8.2.dev4.dist-info → fugue-0.8.4.dist-info}/LICENSE +0 -0
  67. {fugue-0.8.2.dev4.dist-info → fugue-0.8.4.dist-info}/WHEEL +0 -0
  68. {fugue-0.8.2.dev4.dist-info → fugue-0.8.4.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fugue
3
- Version: 0.8.2.dev4
3
+ Version: 0.8.4
4
4
  Summary: An abstraction layer for distributed computation
5
5
  Home-page: http://github.com/fugue-project/fugue
6
6
  Author: The Fugue Development Team
@@ -20,16 +20,16 @@ Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
21
  Requires-Python: >=3.7
22
22
  Description-Content-Type: text/markdown
23
- Requires-Dist: triad (>=0.8.4)
23
+ Requires-Dist: triad (>=0.8.8)
24
24
  Requires-Dist: adagio (>=0.2.4)
25
- Requires-Dist: qpd (>=0.4.0)
26
- Requires-Dist: fugue-sql-antlr (>=0.1.5)
27
- Requires-Dist: sqlglot
25
+ Requires-Dist: qpd (>=0.4.1)
26
+ Requires-Dist: fugue-sql-antlr (>=0.1.6)
28
27
  Requires-Dist: pyarrow (>=0.15.1)
29
- Requires-Dist: pandas (<2,>=1.2.0)
28
+ Requires-Dist: pandas (>=1.2.0)
29
+ Requires-Dist: sqlglot
30
30
  Requires-Dist: jinja2
31
31
  Provides-Extra: all
32
- Requires-Dist: fugue-sql-antlr[cpp] (>=0.1.5) ; extra == 'all'
32
+ Requires-Dist: fugue-sql-antlr[cpp] (>=0.1.6) ; extra == 'all'
33
33
  Requires-Dist: pyspark ; extra == 'all'
34
34
  Requires-Dist: ray[data] (>=2.0.0) ; extra == 'all'
35
35
  Requires-Dist: qpd[dask] (>=0.4.0) ; extra == 'all'
@@ -44,9 +44,9 @@ Requires-Dist: ibis-framework (>=2.1.1) ; (python_version < "3.8") and extra ==
44
44
  Requires-Dist: dask[dataframe,distributed] (>=2022.9.0) ; (python_version >= "3.8") and extra == 'all'
45
45
  Requires-Dist: ibis-framework (>=3.2.0) ; (python_version >= "3.8") and extra == 'all'
46
46
  Provides-Extra: cpp_sql_parser
47
- Requires-Dist: fugue-sql-antlr[cpp] (>=0.1.5) ; extra == 'cpp_sql_parser'
47
+ Requires-Dist: fugue-sql-antlr[cpp] (>=0.1.6) ; extra == 'cpp_sql_parser'
48
48
  Provides-Extra: dask
49
- Requires-Dist: qpd[dask] (>=0.4.0) ; extra == 'dask'
49
+ Requires-Dist: qpd[dask] (>=0.4.1) ; extra == 'dask'
50
50
  Requires-Dist: dask[dataframe,distributed] ; (python_version < "3.8") and extra == 'dask'
51
51
  Requires-Dist: dask[dataframe,distributed] (>=2022.9.0) ; (python_version >= "3.8") and extra == 'dask'
52
52
  Provides-Extra: duckdb
@@ -219,13 +219,14 @@ It also has the following installation extras:
219
219
  * **dask**: to support Dask as the ExecutionEngine.
220
220
  * **ray**: to support Ray as the ExecutionEngine.
221
221
  * **duckdb**: to support DuckDB as the ExecutionEngine, read [details](https://fugue-tutorials.readthedocs.io/tutorials/integrations/backends/duckdb.html).
222
+ * **polars**: to support Polars DataFrames and extensions using Polars.
222
223
  * **ibis**: to enable Ibis for Fugue workflows, read [details](https://fugue-tutorials.readthedocs.io/tutorials/integrations/backends/ibis.html).
223
224
  * **cpp_sql_parser**: to enable the CPP antlr parser for Fugue SQL. It can be 50+ times faster than the pure Python parser. For the main Python versions and platforms, there is already pre-built binaries, but for the remaining, it needs a C++ compiler to build on the fly.
224
225
 
225
226
  For example a common use case is:
226
227
 
227
228
  ```bash
228
- pip install fugue[duckdb,spark]
229
+ pip install "fugue[duckdb,spark]"
229
230
  ```
230
231
 
231
232
  Note if you already installed Spark or DuckDB independently, Fugue is able to automatically use them without installing the extras.
@@ -272,6 +273,7 @@ By being an abstraction layer, Fugue can be used with a lot of other open-source
272
273
  Python backends:
273
274
 
274
275
  * [Pandas](https://github.com/pandas-dev/pandas)
276
+ * [Polars](https://www.pola.rs) (DataFrames only)
275
277
  * [Spark](https://github.com/apache/spark)
276
278
  * [Dask](https://github.com/dask/dask)
277
279
  * [Ray](http://github.com/ray-project/ray)
@@ -294,6 +296,13 @@ Fugue is available as a backend or can integrate with the following projects:
294
296
  * [Prefect](https://fugue-tutorials.readthedocs.io/tutorials/integrations/ecosystem/prefect.html) - workflow orchestration
295
297
  * [Pandera](https://fugue-tutorials.readthedocs.io/tutorials/integrations/ecosystem/pandera.html) - data validation
296
298
 
299
+ Registered 3rd party extensions (majorly for Fugue SQL) include:
300
+
301
+ * [Pandas plot](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html) - visualize data using matplotlib or plotly
302
+ * [Seaborn](https://seaborn.pydata.org/api.html) - visualize data using seaborn
303
+ * [WhyLogs](https://whylogs.readthedocs.io/en/latest/examples/integrations/Fugue_Profiling.html?highlight=fugue) - visualize data profiling
304
+ * [Vizzu](https://github.com/vizzuhq/ipyvizzu) - visualize data using ipyvizzu
305
+
297
306
  ## Community and Contributing
298
307
 
299
308
  Feel free to message us on [Slack](http://slack.fugue.ai). We also have [contributing instructions](CONTRIBUTING.md).
@@ -308,6 +317,7 @@ Feel free to message us on [Slack](http://slack.fugue.ai). We also have [contrib
308
317
  * [Productionizing Data Science at Interos, Inc. (LinkedIn post by Anthony Holten)](https://www.linkedin.com/posts/anthony-holten_pandas-spark-dask-activity-7022628193983459328-QvcF)
309
318
 
310
319
  * [Multiple Time Series Forecasting with Fugue & Nixtla at Bain & Company(LinkedIn post by Fahad Akbar)](https://www.linkedin.com/posts/fahadakbar_fugue-datascience-forecasting-activity-7041119034813124608-u08q?utm_source=share&utm_medium=member_desktop)
320
+
311
321
  ## Further Resources
312
322
 
313
323
  View some of our latest conferences presentations and content. For a more complete list, check the [Content](https://fugue-tutorials.readthedocs.io/tutorials/resources/content.html) page in the tutorials.
@@ -1,54 +1,54 @@
1
- fugue/__init__.py,sha256=JiMv0Uz-xgW8LTvxJWHA9Nkoi8Bbfwh3NxtV_O14Knw,2816
2
- fugue/api.py,sha256=OxkydFcgJ8VX6i0qxHXGAki54iEX8VW-Qzbwcyv_F1s,1216
3
- fugue/constants.py,sha256=JFjSsWG6We4wGCHizk6Ph0ErGZf33NvjwD4cZgAKpqg,3381
1
+ fugue/__init__.py,sha256=xT5zuNZfRkjbA8a-uTT5oLK6hLGuezGZLWYBl6eS5J4,2749
2
+ fugue/api.py,sha256=6_d3vYwJGAX7tW7NMhHB_NAX4aPsfzK2L06Zr2V78Ks,1240
3
+ fugue/constants.py,sha256=crd0VqX8WtBcjSUNwZDi2LDIEkhUMWOlSn73H8JI9ds,3385
4
4
  fugue/dev.py,sha256=GQCkezBBl4V0lVDWhGtUQKqomiCxgR9dMhfqj9C8cS8,1369
5
5
  fugue/exceptions.py,sha256=ylP8gkZL8ao_ZLinNYKv16FPyO_n7c29dN-4QChUxi0,1544
6
- fugue/plugins.py,sha256=CsIMte5k6XazUzB3pC51ab5UlCqtnLLhJnNghH0vSfk,947
6
+ fugue/plugins.py,sha256=SJ-jqs04StHIHJ65lgdGP0IDopVIGBDpmzHHllNK8p0,998
7
7
  fugue/registry.py,sha256=SNULGv08f37fRO-cIxFDmnVcod7ref2fNLSK6G7nVnI,868
8
8
  fugue/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  fugue/_utils/display.py,sha256=JV8oDA7efHm1wceZulCBOY5dMvjbWHvIm6ASisKfoWY,3164
10
10
  fugue/_utils/exception.py,sha256=SFIjwjV4CIEovp3P9k7ePNOFB12A5D8hDdhtfFUeM5Y,2247
11
11
  fugue/_utils/interfaceless.py,sha256=wI0H6L4W_1uQjh9tpjgT9HzN-fbrrtXXHC1x6Q_rrPg,2203
12
- fugue/_utils/io.py,sha256=8CLy7HNNd6NJETvH6hJ021Ae_YU5o8RoYdtfluW6o7o,11502
12
+ fugue/_utils/io.py,sha256=xA8wAWDwp3bGsMiHogaUsh-2SZ1lCykWy6NSg25p4Ls,9104
13
13
  fugue/_utils/misc.py,sha256=C8bM9DzdeaYPsmHwsqxg-1fsCqk7uJvZHCXkhQmNYGs,495
14
14
  fugue/_utils/registry.py,sha256=lrbzTdUEVnW6paBGDj-Yb-aTIbP5mjCqrXuRU9_N6os,316
15
15
  fugue/bag/__init__.py,sha256=0Q0_rnrEThrTx2U-1xGNyAg95idp_xcnywymIcW4Xck,46
16
16
  fugue/bag/array_bag.py,sha256=b0UdDPmZpEAI3R0SBbZVOLVLAwMQnBCFeYDEpFWen14,1111
17
17
  fugue/bag/bag.py,sha256=sNBAzPmEh5fEm8ME8NEEOOre6l58ri6oouVBWwafqTc,3018
18
18
  fugue/collections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- fugue/collections/partition.py,sha256=7Uxokz5E2CaTn146uZXXf-z4Zx8AhI43Hb5HWu6arx8,17048
19
+ fugue/collections/partition.py,sha256=ClvPBlKoNktY73bhqLnXcR0M8PyzykfVoZRfDMAuLwY,17248
20
20
  fugue/collections/sql.py,sha256=PUFtHCmU7sjjyqE49-rgV_yI90HE068tY_xldAAqKS4,4856
21
21
  fugue/collections/yielded.py,sha256=KAvCXAZpeuErGww7Y217_F7M2zv9G5hfdl2AWiO7wEM,2040
22
22
  fugue/column/__init__.py,sha256=aoZwwzyJtNL-duLxzU2sNGoaKikWd-yesbigE_Wj29s,208
23
23
  fugue/column/expressions.py,sha256=fdGX9oPCqJBuROFZqrOYVcwkjghdXT9ngaSTG5tW_i8,26544
24
24
  fugue/column/functions.py,sha256=ygLyn2gp5lTdGbYqJXeGeMmRNhbm4-vfJvAY_Zt0pb0,9774
25
25
  fugue/column/sql.py,sha256=s_qTtHgnvRFqjhCWr7s595PTrHM-Pr9zHUQfU5xcTVA,17391
26
- fugue/dataframe/__init__.py,sha256=ukjQPns6Apz8E21mPcWK0pe8JRuyLKvtRlwt1eHFc0c,737
26
+ fugue/dataframe/__init__.py,sha256=zm7TbsaJLIvfm7zymWm2LGcuJd3nxfGsFnQiyrSnenM,678
27
27
  fugue/dataframe/api.py,sha256=c5Err3c-ayl-k28IUi6kV_ClDWX30NpVNkv97hQKDac,9862
28
28
  fugue/dataframe/array_dataframe.py,sha256=oBfN545NTGdYJ5zPIRv7hXRR-R_OW1JieyOfnl296oU,4447
29
- fugue/dataframe/arrow_dataframe.py,sha256=pK4wEUCAso4nXBZ88ABGIWpPzafSbPNVPpz-Xc_NgZU,12059
29
+ fugue/dataframe/arrow_dataframe.py,sha256=h0DJH8G0MEgfkyvX4U957iqDXIgvTtrP7YED5iEjizI,12098
30
30
  fugue/dataframe/dataframe.py,sha256=rIjaOplyRDt_BfpFwZWMjZALDqa03NePs9tFiLSW6Jg,17247
31
31
  fugue/dataframe/dataframe_iterable_dataframe.py,sha256=0gvb12D0s4VntNZ-M8J_Pic2XlFpw7upXf4hfMn2ufY,7255
32
32
  fugue/dataframe/dataframes.py,sha256=tBSpHsENgbcdOJ0Jgst6PTKbjG7_uoFJch96oTlaQIs,4160
33
- fugue/dataframe/function_wrapper.py,sha256=o43NxNClV2H0yAUqzwpe125D8aEgbM6b5sGHpRYR_VQ,13540
33
+ fugue/dataframe/function_wrapper.py,sha256=DjyIrNBj5Bv9AwIl2I2fG5ClcKe3OoW_eBkyEabYY5Y,13505
34
34
  fugue/dataframe/iterable_dataframe.py,sha256=Kn5HZnVU4o1nn9mbbQxaV8rGG869wImZcOCK3AdlA-M,4627
35
35
  fugue/dataframe/pandas_dataframe.py,sha256=ZWqI-ZUFiSP7giJ3siRlrZcMedI_fyuoLn227H0YRvw,10453
36
- fugue/dataframe/utils.py,sha256=_Y0h0iWMEHxWw0MFn-xvwKYs2z4fIgxa-W3aG_b9QVw,13587
36
+ fugue/dataframe/utils.py,sha256=nQVU01jspB1NSeRiagE71uzRibDqvyGwi94ZfHwNHD0,10508
37
37
  fugue/dataset/__init__.py,sha256=5f2CAJ4xst6Z2o9Q2e2twfDOGUw8ZJoE2ild4JEU2pg,112
38
38
  fugue/dataset/api.py,sha256=DacI4L2w5NJ-eZ6nFxNMqmReEnb0WUXswbjVp7BeErk,2794
39
39
  fugue/dataset/dataset.py,sha256=jWXZqy3msMPFFkhas2PYJEX55ZAI3gk3Txq5f4-Qya4,4759
40
40
  fugue/execution/__init__.py,sha256=iZGxAznZz9piM3k4gp0tln97MDIBxdliLyNbD-0Zc48,427
41
- fugue/execution/api.py,sha256=2e19YuQliIvnm4tmJLmDv0ti1CP20N3ywfv3vq7etI0,38980
41
+ fugue/execution/api.py,sha256=KsFOLGdWQMlXmlQ5JRgRsbUeB64qzTVHxSEaunjiojo,39818
42
42
  fugue/execution/execution_engine.py,sha256=o7HwZO3SBnCdrIm6OyH3kC3iYkWBWOT1cCN3WX_Ik0M,49152
43
43
  fugue/execution/factory.py,sha256=5ICzfNh2QqqABuVyYLijY5-7LZgfRqczlaZN32p78bE,21003
44
- fugue/execution/native_execution_engine.py,sha256=iGfpckM7GdR2Bu9X5B776sMH1bP1NqouDW3IHkVwakM,12452
44
+ fugue/execution/native_execution_engine.py,sha256=CPE6sBjKjJTShLjj3fxxuGZJyxJuWw7-pDepY5gc4YU,13205
45
45
  fugue/extensions/__init__.py,sha256=y-uLKd6mZ8sZ_8-OdW6ELoBO_9IfC0gDmEbE_rMCvOA,599
46
46
  fugue/extensions/_utils.py,sha256=Bi3pYKy2Z6fG6_5BpwIWldxetassXpB4Zp8QamWB-wg,5173
47
47
  fugue/extensions/context.py,sha256=c_y2UttzzIFoQTOCV42VCdj2nqah33xYuBjbKNIOpx8,4262
48
48
  fugue/extensions/_builtins/__init__.py,sha256=OAUjZJP-QI8VpJxxEEZJFFGir4PmTyLMmWQ3VCHtIGk,545
49
- fugue/extensions/_builtins/creators.py,sha256=9AicKr6WD75tcHfp8ABVqzLVP_6Hr2WhozGK8gKNh54,1759
50
- fugue/extensions/_builtins/outputters.py,sha256=Cyx1MQDNzk0eVmEsjXj1zRyHWG4FFOiWdlacnIXS_zk,6917
51
- fugue/extensions/_builtins/processors.py,sha256=DFp9JdGxfmemVcgAf0tUA_n6Tpvku_q6-lC60vDmfHw,14546
49
+ fugue/extensions/_builtins/creators.py,sha256=ad9snV4oN7F9o50Iaa9T4tw5J6rXBUgOHOINKzDqoEQ,1825
50
+ fugue/extensions/_builtins/outputters.py,sha256=e8yupV7dTTRDKi38KEXqd29x1uPHWcGazMkiXwmqnU0,6892
51
+ fugue/extensions/_builtins/processors.py,sha256=_YkrVNkgBRTk8W3LSjIiZrDtcIByhOCMEDaRG5L9QHQ,14517
52
52
  fugue/extensions/creator/__init__.py,sha256=7qmrb0eRKbGSEvrb6045-5hkmjH-nT1GJo1qYubX158,188
53
53
  fugue/extensions/creator/convert.py,sha256=66ei5x0K0a8nWQ-kNwZXmmf1VeR_6XuqSe9rZ64mYpI,7297
54
54
  fugue/extensions/creator/creator.py,sha256=ET9yprY4mvw0kkfWtW4aQEvKv1VR-FiWT4SThvwgAyo,1541
@@ -71,7 +71,7 @@ fugue/sql/_visitors.py,sha256=2pc0J-AHJAiIexsKgNjcgrCGOyhC3_7rzonSgtjy--k,33844
71
71
  fugue/sql/api.py,sha256=l2I9CAy_W2oFFTct9fDPLyXF0LiDxQhMx5O8jBHTAxU,10050
72
72
  fugue/sql/workflow.py,sha256=0JL44i12DoLBJ1Pj2e1HpSt8giG95utltmOzzGbPRAA,2939
73
73
  fugue/workflow/__init__.py,sha256=tXM_KYO8Q358W6qAVlwhIQIaYNRDgZtTubrIEX4QMgM,229
74
- fugue/workflow/_checkpoint.py,sha256=VeDRjtkJ_o7Bz4jhimYHANUsYkpIgvr3egfAxnEns1U,5705
74
+ fugue/workflow/_checkpoint.py,sha256=MTMyNCdWHf5UK8bRepfR2u8y3cEhO1RYIYq558ZlXzA,5715
75
75
  fugue/workflow/_tasks.py,sha256=Zq_jXJO_VaF8DrWUuBiwO2Y3OVuhsiOQdzP4VBsp7Fo,11826
76
76
  fugue/workflow/_workflow_context.py,sha256=Wmp6n0lSrh2Gpslb5EaSX6BQNniKsvKn6SlhVkQ6ui0,2504
77
77
  fugue/workflow/api.py,sha256=uQoxPSCZ91-ST4vwuPWG7qioRGW4eo-Sgi3DdwtSL4k,12495
@@ -82,78 +82,78 @@ fugue_contrib/__init__.py,sha256=QJioX-r2AiU7Pvt24M-k2c4vNq29qpK-3WNUde7ucck,222
82
82
  fugue_contrib/contrib.py,sha256=3B--6oIVBMZ-GwjIOXwZqYqkloH7Cxfq1I8vkwl2yPk,267
83
83
  fugue_contrib/seaborn/__init__.py,sha256=NuVv8EI4Om4gHcHwYO8ddextLQqw24vDj8qJio3E1MU,1405
84
84
  fugue_contrib/viz/__init__.py,sha256=osgZx63Br-yMZImyEfYf9MVzJNM2Cqqke_-WsuDmG5M,1273
85
- fugue_contrib/viz/_ext.py,sha256=xL8WM3NSkN-NEZe_RXZL56wzLnhsq2zOGq1IFEXZ7_E,1119
85
+ fugue_contrib/viz/_ext.py,sha256=Lu_DlS5DcmrFz27fHcKTCkhKyknVWcfS5kzZVVuO9xM,1345
86
86
  fugue_dask/__init__.py,sha256=2CcJ0AsN-k_f7dZ-yAyYpaICfUMPfH3l0FvUJSBzTr0,161
87
87
  fugue_dask/_constants.py,sha256=dVkUTig3tUB7KY2H0xZjTy5_9oG7w4RMswxlfiva2MM,182
88
- fugue_dask/_io.py,sha256=uWRhIWMsqDISwaJyOcDQArWUOInHHq2hpcIihvR2FSg,5715
89
- fugue_dask/_utils.py,sha256=7hckmJPMe2fa2oHGL7AQYruNySRPDVDhSeBYRb96OzM,4219
88
+ fugue_dask/_io.py,sha256=EntoIwhqNDXspn-0rFzZj875OG_3fMn44VKSeKQpRnk,5314
89
+ fugue_dask/_utils.py,sha256=r_GTainvQaJIQPRYj_sgYlgC1yBojGrYMXIteGU1BS4,4476
90
90
  fugue_dask/dataframe.py,sha256=LoDQ-UZnhvQGHD3hibP4FMls8Z5L_Exc029Ags5L32I,11801
91
- fugue_dask/execution_engine.py,sha256=KKESYINKRTV3K_3GOvNmthXs7BDVFlrtfakYRUHbaIg,17157
91
+ fugue_dask/execution_engine.py,sha256=QG19LWsUAyivd6AALp8zLdj1KJlJCrKmkGtWhMvOzG4,18462
92
92
  fugue_dask/ibis_engine.py,sha256=kQdaG_KlZZ2AjtYETNCdTJOgtwI_eH0aGzLaAiIBbRI,2120
93
93
  fugue_dask/registry.py,sha256=EqhMfuR4m2VEmwDGaf6wtUL1RVFZhSO5rrkkL8AH-fA,2152
94
94
  fugue_duckdb/__init__.py,sha256=nSNv-fxBAKD6W23EbMeV4dVRIaSTqr9DzQUWuVOES8s,379
95
95
  fugue_duckdb/_io.py,sha256=Sq228unVnroYTq4GX-Wnv22SLHC9Ji-aWgiqrfdu81w,8880
96
- fugue_duckdb/_utils.py,sha256=8ZAOVmfvrsMc6xv5k_PD0S5gZ_31tny5QkA1Jgsl5yE,4870
97
- fugue_duckdb/dask.py,sha256=G8HFl8rhie9qq00mA-f32e6u4_TUpkWJldDAdsqX0A0,5009
98
- fugue_duckdb/dataframe.py,sha256=fA265POX4A8cesqN7PAtwzRwdgqTzT9JD0aj85k5VWA,6076
99
- fugue_duckdb/execution_engine.py,sha256=QWWkY206eOAD_xQp7Ohqpqi_9klOXVUUSCQviLIZgbg,20792
96
+ fugue_duckdb/_utils.py,sha256=ElKbHUyn5fWSPGXsK57iqMzcqKtCf0c8pBVBYGe5Ql4,5020
97
+ fugue_duckdb/dask.py,sha256=agoLzeB7Swxj2kVWfmXFbWD1NS2lbbTlnrjSkR8kKWY,5014
98
+ fugue_duckdb/dataframe.py,sha256=yqz0zFTPYVNIBXi3S-3Om3PtoLt8MQajA8qnx9kyhYI,6448
99
+ fugue_duckdb/execution_engine.py,sha256=fkkQb4Eh0m7SwKrTplVk2oQalLkNoj3CW0R12g01ofk,20536
100
100
  fugue_duckdb/ibis_engine.py,sha256=MrypeABozqwetKOpqtrmWvCJX2QPfBXhbSEhvK9vqmI,1990
101
101
  fugue_duckdb/registry.py,sha256=Dj0Tng1cXVT6Q7t-KxOky2k1dD9xSBjYGQmI26UgZPo,3095
102
102
  fugue_ibis/__init__.py,sha256=PcUt66KlLyGGicad7asq5j2U567_fhR0HzvWQBhV1VM,362
103
103
  fugue_ibis/_compat.py,sha256=zKdTaTfuC02eUIzZPkcd7oObnVBi_X5mQjQf7SDme3Y,246
104
104
  fugue_ibis/_utils.py,sha256=BUL5swA5FE4eQu0t5Z17hZVu9a2MFfxlFH6Ymy9xifg,6607
105
- fugue_ibis/dataframe.py,sha256=dXRdezy2T8M9IaMLIHv_SX2lW_9ZgbJhboLEMcE0U9Q,7346
105
+ fugue_ibis/dataframe.py,sha256=Y4Wn--oAlCvmqStY92AgUaAKqr9l6jSfJ2EXOhDFk9M,7302
106
106
  fugue_ibis/execution_engine.py,sha256=igZ_rHflORPKp2h8HMSlzuv50P3ZaaijsvWyc8gilow,18540
107
107
  fugue_ibis/extensions.py,sha256=H8l-SPfoqLuUoILtOuL2nccOpoL83zHeSoIhoqjtWQM,6905
108
108
  fugue_ibis/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
109
  fugue_ibis/execution/ibis_engine.py,sha256=-HdPnIFWD83n5WITdzJiu4attH7GOcO041wkT5Y5ChA,1499
110
110
  fugue_ibis/execution/pandas_backend.py,sha256=r6Pfs06FXrWukSbK2uz5gsCDG6a4wrk4sWIJ9acSuNU,1615
111
111
  fugue_notebook/__init__.py,sha256=9r_-2uxu1lBeZ8GgpYCKom_OZy2soIOYZajg7JDO-HY,4326
112
- fugue_notebook/env.py,sha256=LLlSPfhkSmVKyG17GfIWd090d-ZSb4nYgyiuQ4jz8qU,4767
112
+ fugue_notebook/env.py,sha256=TYiTxYPFi-BVJJY49jDsvw9mddhK8WrifeRxBke30I8,4773
113
113
  fugue_notebook/nbextension/README.md,sha256=QLnr957YeGfwzy2r4c4qbZPaXyCbyGrKPvcqSBQYSnU,123
114
114
  fugue_notebook/nbextension/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
115
  fugue_notebook/nbextension/description.yaml,sha256=CsXgx9CSLbAlO4Z1kvX9ejYA_TImPjOGWzRTF6PY-w0,150
116
116
  fugue_notebook/nbextension/main.js,sha256=Px2tQuBCNGEZOEBKsnfVruFEg-AxK7Tj0dY84ktub_U,3709
117
117
  fugue_polars/__init__.py,sha256=NDkjlbLhHPTjUaCAw6mAwIqeK3HSeh-z88s9dqmwheQ,61
118
- fugue_polars/_utils.py,sha256=GkVQa1gw-8-Y4H0rS36oWzvkehWBFOIxUWaF697Txbg,1449
119
- fugue_polars/polars_dataframe.py,sha256=lVNezTNrfhvECkyHW4alNUE_jks_NdKuVmD5m0QbUbE,6937
118
+ fugue_polars/_utils.py,sha256=64MxC2rCKmbgZryCaY0Y_98VstQEb3JW8im7oU4vMXI,216
119
+ fugue_polars/polars_dataframe.py,sha256=Ll4ZUuRhAETWtmSf87KsdUCqZPiexFqy4FiPkvWQkN0,7348
120
120
  fugue_polars/registry.py,sha256=gd6qQ-OxYtTAQFyvYbLDPXmSvCR-LW6n5K5ylgMY_7A,2950
121
121
  fugue_ray/__init__.py,sha256=HzEHfG2mpc0ugf3nf1Pdy15Bhg35K6maZpYejn1aoyI,119
122
- fugue_ray/_constants.py,sha256=4D2gISJ3Rnu_ktjCM_m6XGCIc2VkZBchzHF8FMe2z64,422
123
- fugue_ray/dataframe.py,sha256=4p_SQZg8NXuBtLguik-3L6J7lGTFhKpqwiGJnD2w5Qw,10179
124
- fugue_ray/execution_engine.py,sha256=yedjd_sswSgicqwx1nzo4IuBCPobD-T4m-6jKpKvv-0,11866
122
+ fugue_ray/_constants.py,sha256=vu5l1w-Wi-2V_nm0HLXKOYhh5HdWRCc5yQktO2XzhOg,569
123
+ fugue_ray/dataframe.py,sha256=shUtnQbAquN2s5bR3Rx1QUGxxLz_g-Az9O0QDcXaCD0,10377
124
+ fugue_ray/execution_engine.py,sha256=PUj1Fgqsg-6DDFG9KNip7NenTX_bfYvBjcFjmXp8LNo,12596
125
125
  fugue_ray/registry.py,sha256=xJRAhbwNrg695EwghQDnVtTKi4YkqZ0_61BD4OAblSA,1685
126
126
  fugue_ray/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
127
  fugue_ray/_utils/cluster.py,sha256=3T3Gyra6lAHlzktta-Ro35j6YZQfH6fNrj2hC5ATF9k,621
128
- fugue_ray/_utils/dataframe.py,sha256=W4F7a3uG4Se-LbTB93xu3G1PkIrThj_ErrDc7tHemMs,2372
129
- fugue_ray/_utils/io.py,sha256=cw-GGKhHixsBrGqAixiKvye99xVTZIbdjv-W2Apg6zY,8913
128
+ fugue_ray/_utils/dataframe.py,sha256=xaw9Pbfjsnd_0vmbGRJJbAPUPWMZaYptw4LfDdIgvHo,3145
129
+ fugue_ray/_utils/io.py,sha256=gHfx70tdXPHmVL6nHxVhmCO5KpWjjyDG8qKT1Lbpav4,8737
130
130
  fugue_spark/__init__.py,sha256=rvrMpFs9socMgyH_58gLbnAqmirBf5oidXoO4cekW6U,165
131
131
  fugue_spark/_constants.py,sha256=K2uLQfjvMxXk75K-7_Wn47Alpwq5rW57BtECAUrOeqA,177
132
- fugue_spark/dataframe.py,sha256=h2Rajq5gcT1PBSzu3f81RoGtEU3Hp4i-p8ZHdTmsrhY,9367
133
- fugue_spark/execution_engine.py,sha256=VkxxTgSqMTPbyWirmunN1etzPmGHJ01h-P5ntg_Eyfc,31298
132
+ fugue_spark/dataframe.py,sha256=xoM2-SwVRFfSyfEEnx4g4b0GO6XgN-DQLvXtUrAMq1Q,9510
133
+ fugue_spark/execution_engine.py,sha256=c0dzpRRVvDbgYrQU2FCA1JQvERqr3b55spDTN_wq4BU,32633
134
134
  fugue_spark/ibis_engine.py,sha256=Yl5xxwROo1idcD2hFaylaI1IpmBUgbvOZRWtcrE0Zjo,1697
135
- fugue_spark/registry.py,sha256=LrUE14FK97QzPBarVL8QIJKpDdq5wrkjTrxuizKM4GM,3704
135
+ fugue_spark/registry.py,sha256=kyIMk6dAiKRSKCHawQKyXu9DhZ24T6j3gL57TiOAZ8c,4162
136
136
  fugue_spark/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
- fugue_spark/_utils/convert.py,sha256=1WsTSIZ0N0IFZJHIid47ccUrPYPgBEk1DRm1qcZa9_U,6300
138
- fugue_spark/_utils/io.py,sha256=rEJO_7TJJgV2aH1r_vlmJFIX5TP0VX-dnHU_00xtxRA,6129
139
- fugue_spark/_utils/partition.py,sha256=rDH0msMM8Sc53lpR_HryFHeonzYdMOYwmLMj6kfbAC4,3723
137
+ fugue_spark/_utils/convert.py,sha256=FcYKCvFZwIY-nVT0eXdi87J7G5F1n6_9B106AsWlwZk,6552
138
+ fugue_spark/_utils/io.py,sha256=TtQ0VunDTRvFyjWUZHbJWj8XVJWoy2Yu0RgNZ2XyJfI,5527
139
+ fugue_spark/_utils/misc.py,sha256=o8dZmXOHnA7D_ps37vgGXTPTiSEG9LQzPKq7l-MG-qM,860
140
+ fugue_spark/_utils/partition.py,sha256=iaesyO5f4uXhj1W-p91cD5ecPiGlu0bzh8gl2ce2Uvg,3618
140
141
  fugue_sql/__init__.py,sha256=Cmr7w0Efr7PzoXdQzdJfc4Dgqd69qKqcHZZodENq7EU,287
141
142
  fugue_sql/exceptions.py,sha256=ltS0MC8gMnVVrJbQiOZ0kRUWvVQ2LTx33dCW3ugqtb0,260
142
143
  fugue_test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
- fugue_test/_utils.py,sha256=VUHbOrnhcI-WasRGve_0rbuIct5qxeVWiw8ht0iKTE4,247
144
144
  fugue_test/bag_suite.py,sha256=WbDCFjuAHYoJh4GXSPiSJxOoOwE1VMtYpJ3lQrsUK-Y,2483
145
- fugue_test/builtin_suite.py,sha256=n_FAOHEaqVbmiJU3_nf-9oSgN__cKEwIoJf77eXPnmw,75774
146
- fugue_test/dataframe_suite.py,sha256=EIskgKgMr-j9n9tqok4kwuNhPwsxoTcjR5s7Inj6TF0,18994
147
- fugue_test/execution_suite.py,sha256=t7wLFe7qgg7R14nSfyfX0aY6pPCKKYpYDVsQUZaOsvc,51250
145
+ fugue_test/builtin_suite.py,sha256=RT8TG-2bzkl_FmKmcnjfydMnuLjvVksmR2uPyJ6Kc7w,75748
146
+ fugue_test/dataframe_suite.py,sha256=6uM7_et2Y55-ePIssG9G_K9mXBYNjPXnpunuCh0xKhw,19082
147
+ fugue_test/execution_suite.py,sha256=PVaZmg41iGQu6RLjatOOX3VNGD_6BMjOC8mQSyfwq_s,50559
148
148
  fugue_test/ibis_suite.py,sha256=Dk4AHVD00RcFsNm9VvJ4_4LOyFdGX30OnAtpO2SPruE,3529
149
- fugue_version/__init__.py,sha256=B7GiO0rd49YwtLYjvPg4lmCZEDlMTonslQKdSImaMJk,22
149
+ fugue_version/__init__.py,sha256=jhHEJFZWhkQDemoZMomBYq-RNrKXknYzUaeIU9A6XsI,22
150
150
  tests/__init__.py,sha256=Ve0nsaoKiNp2pxFA9NX9DubKkq-6tzCAQqKNaf0EWr4,22
151
151
  tests/fugue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
152
  tests/fugue/test_interfaceless.py,sha256=T1elfGTXctyiUsQurhaG_8zB5AsUOrTw_vMQuxFOYO4,6152
153
153
  tests/fugue/bag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
154
  tests/fugue/bag/test_array_bag.py,sha256=JaDsYSsBu90etwQ8PVo__aAnIxgJ9FYg5YzfxjMRh4w,992
155
155
  tests/fugue/collections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
- tests/fugue/collections/test_partition.py,sha256=8qZm63rFs-GdrHdbP0JlS_9CtHplEPjTBZ7m3hgezsI,8722
156
+ tests/fugue/collections/test_partition.py,sha256=R2BIBP_Lukv2XV1emenUrwFKDe6cMTnwFpYoMmNnM0E,8852
157
157
  tests/fugue/collections/test_sql.py,sha256=mClpupzeJl4yv9y3dpWFaDAyDTAgukm_RsRGFr7jpWY,2869
158
158
  tests/fugue/column/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
159
  tests/fugue/column/test_expressions.py,sha256=whTRBlSJn9sCCMCxylVekbVx5hEaEBdLdVNF3xo2ews,8037
@@ -168,13 +168,13 @@ tests/fugue/dataframe/test_dataframes.py,sha256=pvGTrje3p11y48eusoH7vlB8NM0x71rv
168
168
  tests/fugue/dataframe/test_function_wrapper.py,sha256=CLTfZh5OLX-5ysnzLEuwTicvb2NQp_zzM-1_ITc3Ig8,8608
169
169
  tests/fugue/dataframe/test_iterable_dataframe.py,sha256=YvMUS-EEpAnZP59g9ro2vYRPrpSgTHxHwfcDI7WBRKE,4396
170
170
  tests/fugue/dataframe/test_pandas_dataframe.py,sha256=RT4M_TZfaCviNW5FNFGl9ItgaW8DALC6bB3_byxxQGk,7255
171
- tests/fugue/dataframe/test_utils.py,sha256=qaA2jQd1cWEvwHNAE2Li09rvBEO0_4qLcGdCGHWpo4Q,9462
171
+ tests/fugue/dataframe/test_utils.py,sha256=SnFGO2HaiTC8gWpgY3SGdNE9snKRydNAdAPNXoG9N24,7981
172
172
  tests/fugue/execution/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
173
173
  tests/fugue/execution/test_api.py,sha256=JpiObezK_c2oeca1POgPo-Sp3CkgYaAD8a_IYPttQZk,2742
174
174
  tests/fugue/execution/test_execution_engine.py,sha256=xjb1cvisRV9AzrbVDznlgqiS6Yfqp0eE4OcLGWf7fmA,2533
175
175
  tests/fugue/execution/test_factory.py,sha256=KPlRz4T2CQ3nLu4VHkynqt2wpoBRMAhAQEkJxDuEtpE,10284
176
176
  tests/fugue/execution/test_ibis.py,sha256=6VahB8xzJ1WX_nbtrZnzRhw1XONRvtubHQOTbshgtRU,525
177
- tests/fugue/execution/test_naive_execution_engine.py,sha256=vw5UWWv9JbCpyNvdZXxvg0ljXHlSkp-WpynSjiqFKPI,1667
177
+ tests/fugue/execution/test_naive_execution_engine.py,sha256=MbHIEFZGKqPXtvgUoeu2-r02aTHR5euCd_JwrImJGK0,2824
178
178
  tests/fugue/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
179
  tests/fugue/extensions/test_utils.py,sha256=QId9O15J5OJ7iki_-ag5U7zFqoVc2PJ4pChwT38zOT4,4915
180
180
  tests/fugue/extensions/creator/__init__.py,sha256=9JYB5oUuEX2qoddZ2gVSNOKU4ef-pCYrOaH9cahO7Ec,1974
@@ -199,7 +199,7 @@ tests/fugue/sql/test_workflow.py,sha256=GukF4i3sBepY0lFkXQSmR1KV3F7bdaroW9Q9KYzE
199
199
  tests/fugue/sql/test_workflow_parse.py,sha256=C83vE_WKLG3_5uSEJ5nMoTvmXiUNswYSH5BjroDv_pI,23329
200
200
  tests/fugue/utils/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
201
201
  tests/fugue/utils/test_interfaceless.py,sha256=SYMQbuvxktV8siZkfMCHqc8Qfrsn2zSCTzZG101qWTg,1453
202
- tests/fugue/utils/test_io.py,sha256=PtiNM4-_3mM7rPSh0_th_pRPH4W-tr5QqeGumcbEV6w,11035
202
+ tests/fugue/utils/test_io.py,sha256=VXVFty7BoJZeUcWdSzaqSuQn9lrzYcoZLLna-zVBIgk,8170
203
203
  tests/fugue/utils/test_misc.py,sha256=mJBO5YllEjlV7Av6p1e26kWa7jVOfAPZDsVMXGY1nec,399
204
204
  tests/fugue/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
205
  tests/fugue/workflow/test_module.py,sha256=pPfB-AvgSj2HaONdYmibTinxRr_425RidLBRTMeGx_8,5303
@@ -209,18 +209,18 @@ tests/fugue/workflow/test_workflow_determinism.py,sha256=M7DesMhD1aog6VlJJb3pj2q
209
209
  tests/fugue/workflow/test_workflow_parallel.py,sha256=uHbGspkOeMkzVcB0Ojx6_IFSq2_USFV6N8DeDVVpPXA,1418
210
210
  tests/fugue_dask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
211
  tests/fugue_dask/test_dataframe.py,sha256=CuuC4LVe6dsinNGYhFkqnLJaJl3SKNinB0k88g1KB4k,8244
212
- tests/fugue_dask/test_execution_engine.py,sha256=tPg7xBA5qx6dQGJy22pZA73KubF34pMf1245uIn6Js8,6623
212
+ tests/fugue_dask/test_execution_engine.py,sha256=vDspDOvwAWyz10NSnrBQyFbXPmxo8AiPqRDyX6FGtEE,8296
213
213
  tests/fugue_dask/test_ibis.py,sha256=2LCJ1QO4FBhrP-TEV8n5mQRazJQI5KmyKPCLIDQDtZU,450
214
214
  tests/fugue_dask/test_importless.py,sha256=Zoqv6kV2uRcKmfTA4KVIm_I_KjY356DmNxN1vd_AoHo,560
215
- tests/fugue_dask/test_io.py,sha256=MG7ZAwn3m0OJVAYHSVfBNnHfD3E1oV317Aw5M53F04k,6176
215
+ tests/fugue_dask/test_io.py,sha256=HYlakXVwIHPbnkTI-BrmtBR5gheEoZuH5bjVA4kY2SY,4514
216
216
  tests/fugue_dask/test_sql.py,sha256=dd24gUY-0czk9vnPyv8M2e1SBzZnWTiv52W3kFZlOSo,513
217
217
  tests/fugue_duckdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  tests/fugue_duckdb/test_dask.py,sha256=iH3voB6zJQMGEibrBTFgEn6upE1VlYxSLCu0qFoLiOQ,4626
219
- tests/fugue_duckdb/test_dataframe.py,sha256=Qd8Za4ZJTLuRSTgQE-koSI13gBQYQ5MTxBw6s83TIDY,2987
219
+ tests/fugue_duckdb/test_dataframe.py,sha256=WOAXrqjMSSyxLZGRvS8YJ78wyBZOgf5Wy8vC-cKz7qY,2997
220
220
  tests/fugue_duckdb/test_execution_engine.py,sha256=Z3-8B68wwvwOLIT6pL2ljjb2RvOAmG4LhgggA10iPB8,7093
221
221
  tests/fugue_duckdb/test_ibis.py,sha256=SeahaFPzNwgj3n64LuJoE5RYCVf-G593au6C_42Hyrs,1483
222
222
  tests/fugue_duckdb/test_importless.py,sha256=X_UtJE6NmOmfL4MATbtjgqY5MlkDZHMsL7KkCSJjdbQ,671
223
- tests/fugue_duckdb/test_utils.py,sha256=lf6W3bj6nsP5Hy6l9vKsdp2XdFG_TqURTW_ZaRafNnc,3489
223
+ tests/fugue_duckdb/test_utils.py,sha256=TEp8q7qIdplbCdUIiSLpV7UDSYnQyAsLl7x6KFNQB0E,3494
224
224
  tests/fugue_ibis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
225
  tests/fugue_ibis/test_dataframe.py,sha256=UgfXl-7cqjQDPda08wz0WkskzrThLTrCZUmIRer5wHw,3027
226
226
  tests/fugue_ibis/test_execution_engine.py,sha256=oyu5l6iyczwcqZ-tXByivKWP2zPLe-03jK_sQPVw2go,2487
@@ -232,26 +232,28 @@ tests/fugue_ibis/mock/dataframe.py,sha256=1WnaadzCiQ6V5qI8J6DwEhbEFWbLz2ifvmhAOE
232
232
  tests/fugue_ibis/mock/execution_engine.py,sha256=z5WphWdYixGZ4F8h6CiA3rX_h_DpEUzV1iprfqO6wLY,4536
233
233
  tests/fugue_notebook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
234
  tests/fugue_polars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
+ tests/fugue_polars/test_api.py,sha256=buywsQ-TQYXYbsdDHU7UMXE2PdFKxjN1_ZPsl8kxRro,384
235
236
  tests/fugue_polars/test_dataframe.py,sha256=B5VKPMFMVR9mxHhCbIQzPHtehPe4qvZVsXJ_VdFxOUk,2944
236
- tests/fugue_polars/test_transform.py,sha256=FOq08HLtOqOZ_0Epyw7Bdx9047D7T3dJ5Iw_IeBXHMM,3187
237
+ tests/fugue_polars/test_transform.py,sha256=4UetPteBAR1acMNDvVgVyyTjKqCQS-SSc9-3fF0p-2Y,3435
237
238
  tests/fugue_ray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
239
  tests/fugue_ray/test_dataframe.py,sha256=WjDb52C8qXY-aWLp2R1tcJi7Mc7wm1kWFKMUd4sLLIk,4589
239
- tests/fugue_ray/test_execution_engine.py,sha256=ZJK65h9Z40DXUtCZ-ieOi7Uzo_GsPUV6c-4sa6PfE-A,7547
240
+ tests/fugue_ray/test_execution_engine.py,sha256=h73VOVhpFB5kMYYhgmYihbOq1lRDFZ1-8FZ_pKLQxMY,8689
240
241
  tests/fugue_ray/test_registry.py,sha256=B8yxpNqcvcF7ioyhHX1SZ6l7Oo0Tbof02R0tRdNal_Q,771
241
242
  tests/fugue_ray/test_utils.py,sha256=_u5_pWjlaBd0r5sddpNTk46QAxxwvHGgUBBLHH3Tqng,583
242
243
  tests/fugue_spark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
- tests/fugue_spark/test_dataframe.py,sha256=aH-1K1uJ9Z1-Lc69eVB9fZSn4ZzKh7sqgGZLTUX5VGQ,5577
244
- tests/fugue_spark/test_execution_engine.py,sha256=XjwB6547Pa3vLu3X9G6dOX3np8sDVXRUaJfZ3kc6Mns,13466
244
+ tests/fugue_spark/test_dataframe.py,sha256=aSKo4RmdbFcKeoAMvi769bGZkC_IDP_mDrVD_0gxEiQ,5353
245
+ tests/fugue_spark/test_execution_engine.py,sha256=M7Mz5c-Hq3ofrdP22qRTrkEGX7cdb7RSzsDXLKs2Ljg,14844
245
246
  tests/fugue_spark/test_ibis.py,sha256=T-P3bbwk3OawpA-0UdQ6QgH9SaG0OmUuqQcnSHz544E,673
246
- tests/fugue_spark/test_importless.py,sha256=d891pkirXj76vg0jO0n9ukyWYlC6Ww3TMT8WVfr3v-s,1117
247
+ tests/fugue_spark/test_importless.py,sha256=pXaHyuydRBnaovKcicwgVxw-IJOCaiGh2_9-POSJmlM,1149
248
+ tests/fugue_spark/test_spark_connect.py,sha256=9AfnQwYrRLEsx6L7HGWu3y0IbYYSIOUY3ERYFFeJ8mg,2527
247
249
  tests/fugue_spark/test_sql.py,sha256=l1R1e_y1fqwA1nrjHVrAf2tPdfKZgDZOJGP8BcdGBVo,606
248
250
  tests/fugue_spark/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
- tests/fugue_spark/utils/test_convert.py,sha256=eSiZCYxjh3H5iY6c8Ivz6Bw7GwDlgO9WZJYae_I29ow,3378
250
- tests/fugue_spark/utils/test_io.py,sha256=u9XyQvpKQOWZ8d3_hGPlhl_eKqGEprmeRHe9NCn1qOI,5694
251
+ tests/fugue_spark/utils/test_convert.py,sha256=e_8efaawMzx8ROxCYKHRxjKUtkqrudlKy3yL64tD7eY,3304
252
+ tests/fugue_spark/utils/test_io.py,sha256=Av5cjuUHc02E6vo4OglohL1RtwdO9uRtAA5MTCDg2XQ,5069
251
253
  tests/fugue_spark/utils/test_partition.py,sha256=mJKvkAXgmRu1ylQpU_SpO0xCQusFjLalW3axcX4RkJk,4726
252
- fugue-0.8.2.dev4.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
253
- fugue-0.8.2.dev4.dist-info/METADATA,sha256=r3CkbwmHI4wmG1TfN9x5E8-M2X9ClHKf1dFsb7LFXvc,16516
254
- fugue-0.8.2.dev4.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
255
- fugue-0.8.2.dev4.dist-info/entry_points.txt,sha256=XIEFZWgu7Ofrcrm-rVax-UeMWeLYPcF2n57y_IRmM00,374
256
- fugue-0.8.2.dev4.dist-info/top_level.txt,sha256=CgTTBWy9kh6sDmh_rtuh7YVxmjwvrC1Vhpa3ljH5vjA,146
257
- fugue-0.8.2.dev4.dist-info/RECORD,,
254
+ fugue-0.8.4.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
255
+ fugue-0.8.4.dist-info/METADATA,sha256=a1JodYCkwHELyWl-UQzRuUhvYDUA1xaJ4vv2M05XNlQ,17144
256
+ fugue-0.8.4.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
257
+ fugue-0.8.4.dist-info/entry_points.txt,sha256=xD0_Lj3jz-np_UNVAwsKt9kYWX0CwM7o7IvkCXRmcQY,374
258
+ fugue-0.8.4.dist-info/top_level.txt,sha256=CgTTBWy9kh6sDmh_rtuh7YVxmjwvrC1Vhpa3ljH5vjA,146
259
+ fugue-0.8.4.dist-info/RECORD,,
@@ -1,11 +1,11 @@
1
1
  [fugue.plugins]
2
2
  dask = fugue_dask.registry [dask]
3
- dask_ibis = fugue_dask.ibis_engine [ibis,dask]
3
+ dask_ibis = fugue_dask.ibis_engine [dask,ibis]
4
4
  duckdb = fugue_duckdb.registry [duckdb]
5
5
  duckdb_ibis = fugue_duckdb.ibis_engine [ibis,duckdb]
6
6
  ibis = fugue_ibis [ibis]
7
7
  polars = fugue_polars.registry [polars]
8
8
  ray = fugue_ray.registry [ray]
9
9
  spark = fugue_spark.registry [spark]
10
- spark_ibis = fugue_spark.ibis_engine [ibis,spark]
10
+ spark_ibis = fugue_spark.ibis_engine [spark,ibis]
11
11
 
fugue_contrib/viz/_ext.py CHANGED
@@ -1,4 +1,5 @@
1
1
  from abc import ABC, abstractmethod
2
+ from typing import Any
2
3
 
3
4
  import pandas as pd
4
5
  from triad import assert_or_throw
@@ -25,7 +26,12 @@ class Visualize(Outputter, ABC):
25
26
  if len(self.partition_spec.partition_by) == 0:
26
27
  self._plot(df)
27
28
  else:
28
- for _, gp in df.groupby(self.partition_spec.partition_by, dropna=False):
29
+ keys: Any = ( # avoid pandas warning
30
+ self.partition_spec.partition_by
31
+ if len(self.partition_spec.partition_by) > 1
32
+ else self.partition_spec.partition_by[0]
33
+ )
34
+ for _, gp in df.groupby(keys, dropna=False):
29
35
  self._plot(gp.reset_index(drop=True))
30
36
 
31
37
  @abstractmethod
fugue_dask/_io.py CHANGED
@@ -3,8 +3,6 @@ from typing import Any, Callable, Dict, List, Optional, Tuple, Union
3
3
  import fs as pfs
4
4
  from dask import dataframe as dd
5
5
  from fugue._utils.io import FileParser, _get_single_files
6
- from fugue._utils.io import _load_avro as _pd_load_avro
7
- from fugue._utils.io import _save_avro
8
6
  from triad.collections.dict import ParamDict
9
7
  from triad.collections.fs import FileSystem
10
8
  from triad.collections.schema import Schema
@@ -153,25 +151,14 @@ def _load_json(
153
151
  return pdf[schema.names], schema
154
152
 
155
153
 
156
- def _load_avro(
157
- p: FileParser, columns: Any = None, **kwargs: Any
158
- ) -> Tuple[dd.DataFrame, Any]:
159
- # TODO: change this hacky implementation!
160
- pdf, schema = _pd_load_avro(p, columns, **kwargs)
161
-
162
- return dd.from_pandas(pdf, npartitions=4), schema
163
-
164
-
165
154
  _FORMAT_LOAD: Dict[str, Callable[..., Tuple[dd.DataFrame, Any]]] = {
166
155
  "csv": _load_csv,
167
156
  "parquet": _load_parquet,
168
157
  "json": _load_json,
169
- "avro": _load_avro,
170
158
  }
171
159
 
172
160
  _FORMAT_SAVE: Dict[str, Callable] = {
173
161
  "csv": _save_csv,
174
162
  "parquet": _save_parquet,
175
163
  "json": _save_json,
176
- "avro": _save_avro,
177
164
  }
fugue_dask/_utils.py CHANGED
@@ -86,10 +86,14 @@ class DaskUtils(DaskUtilsBase):
86
86
  return df.astype(dtype=to_pandas_dtype(schema))
87
87
  for v in schema:
88
88
  s = df[v.name]
89
- if pa.types.is_string(v.type):
89
+ if pa.types.is_string(v.type) and not pandas.api.types.is_string_dtype(
90
+ s.dtype
91
+ ):
90
92
  ns = s.isnull()
91
93
  s = s.astype(str).mask(ns, None)
92
- elif pa.types.is_boolean(v.type):
94
+ elif pa.types.is_boolean(v.type) and not pandas.api.types.is_bool_dtype(
95
+ s.dtype
96
+ ):
93
97
  ns = s.isnull()
94
98
  if pandas.api.types.is_string_dtype(s.dtype):
95
99
  try:
@@ -98,8 +102,10 @@ class DaskUtils(DaskUtilsBase):
98
102
  s = s.fillna(0).astype(bool)
99
103
  else:
100
104
  s = s.fillna(0).astype(bool)
101
- s = s.mask(ns, None)
102
- elif pa.types.is_integer(v.type):
105
+ s = s.mask(ns, None).astype("boolean")
106
+ elif pa.types.is_integer(v.type) and not pandas.api.types.is_integer_dtype(
107
+ s.dtype
108
+ ):
103
109
  ns = s.isnull()
104
110
  s = s.fillna(0).astype(v.type.to_pandas_dtype()).mask(ns, None)
105
111
  elif not pa.types.is_struct(v.type) and not pa.types.is_list(v.type):