fugue 0.9.7.dev1__tar.gz → 0.9.7.dev2__tar.gz

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 (161) hide show
  1. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/PKG-INFO +7 -10
  2. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/__init__.py +1 -1
  3. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/_utils/misc.py +1 -3
  4. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/constants.py +1 -1
  5. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dev.py +1 -1
  6. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/execution/__init__.py +1 -1
  7. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/execution/native_execution_engine.py +41 -18
  8. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/registry.py +2 -5
  9. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue.egg-info/PKG-INFO +7 -10
  10. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue.egg-info/requires.txt +6 -9
  11. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_test/builtin_suite.py +29 -16
  12. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_test/execution_suite.py +16 -9
  13. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/pyproject.toml +23 -35
  14. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/LICENSE +0 -0
  15. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/README.md +0 -0
  16. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/_utils/__init__.py +0 -0
  17. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/_utils/display.py +0 -0
  18. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/_utils/exception.py +0 -0
  19. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/_utils/interfaceless.py +0 -0
  20. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/_utils/io.py +0 -0
  21. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/_utils/registry.py +0 -0
  22. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/api.py +0 -0
  23. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/bag/__init__.py +0 -0
  24. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/bag/array_bag.py +0 -0
  25. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/bag/bag.py +0 -0
  26. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/collections/__init__.py +0 -0
  27. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/collections/partition.py +0 -0
  28. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/collections/sql.py +0 -0
  29. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/collections/yielded.py +0 -0
  30. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/column/__init__.py +0 -0
  31. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/column/expressions.py +0 -0
  32. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/column/functions.py +0 -0
  33. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/column/sql.py +0 -0
  34. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/__init__.py +0 -0
  35. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/api.py +0 -0
  36. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/array_dataframe.py +0 -0
  37. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/arrow_dataframe.py +0 -0
  38. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/dataframe.py +0 -0
  39. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/dataframe_iterable_dataframe.py +0 -0
  40. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/dataframes.py +0 -0
  41. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/function_wrapper.py +0 -0
  42. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/iterable_dataframe.py +0 -0
  43. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/pandas_dataframe.py +0 -0
  44. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataframe/utils.py +0 -0
  45. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataset/__init__.py +0 -0
  46. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataset/api.py +0 -0
  47. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/dataset/dataset.py +0 -0
  48. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/exceptions.py +0 -0
  49. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/execution/api.py +0 -0
  50. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/execution/execution_engine.py +0 -0
  51. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/execution/factory.py +0 -0
  52. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/__init__.py +0 -0
  53. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/_builtins/__init__.py +0 -0
  54. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/_builtins/creators.py +0 -0
  55. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/_builtins/outputters.py +0 -0
  56. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/_builtins/processors.py +0 -0
  57. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/_utils.py +0 -0
  58. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/context.py +0 -0
  59. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/creator/__init__.py +0 -0
  60. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/creator/convert.py +0 -0
  61. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/creator/creator.py +0 -0
  62. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/outputter/__init__.py +0 -0
  63. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/outputter/convert.py +0 -0
  64. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/outputter/outputter.py +0 -0
  65. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/processor/__init__.py +0 -0
  66. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/processor/convert.py +0 -0
  67. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/processor/processor.py +0 -0
  68. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/transformer/__init__.py +0 -0
  69. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/transformer/constants.py +0 -0
  70. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/transformer/convert.py +0 -0
  71. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/extensions/transformer/transformer.py +0 -0
  72. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/plugins.py +0 -0
  73. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/py.typed +0 -0
  74. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/rpc/__init__.py +0 -0
  75. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/rpc/base.py +0 -0
  76. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/rpc/flask.py +0 -0
  77. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/sql/__init__.py +0 -0
  78. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/sql/_utils.py +0 -0
  79. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/sql/_visitors.py +0 -0
  80. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/sql/api.py +0 -0
  81. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/sql/workflow.py +0 -0
  82. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/test/__init__.py +0 -0
  83. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/test/pandas_tester.py +0 -0
  84. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/test/plugins.py +0 -0
  85. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/__init__.py +0 -0
  86. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/_checkpoint.py +0 -0
  87. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/_tasks.py +0 -0
  88. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/_workflow_context.py +0 -0
  89. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/api.py +0 -0
  90. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/input.py +0 -0
  91. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/module.py +0 -0
  92. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue/workflow/workflow.py +0 -0
  93. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue.egg-info/SOURCES.txt +0 -0
  94. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue.egg-info/dependency_links.txt +0 -0
  95. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue.egg-info/entry_points.txt +0 -0
  96. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue.egg-info/top_level.txt +0 -0
  97. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_contrib/__init__.py +0 -0
  98. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_contrib/contrib.py +0 -0
  99. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_contrib/seaborn/__init__.py +0 -0
  100. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_contrib/viz/__init__.py +0 -0
  101. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_contrib/viz/_ext.py +0 -0
  102. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/__init__.py +0 -0
  103. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/_constants.py +0 -0
  104. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/_dask_sql_wrapper.py +0 -0
  105. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/_io.py +0 -0
  106. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/_utils.py +0 -0
  107. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/dataframe.py +0 -0
  108. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/execution_engine.py +0 -0
  109. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/registry.py +0 -0
  110. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_dask/tester.py +0 -0
  111. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/__init__.py +0 -0
  112. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/_io.py +0 -0
  113. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/_utils.py +0 -0
  114. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/dask.py +0 -0
  115. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/dataframe.py +0 -0
  116. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/execution_engine.py +0 -0
  117. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/registry.py +0 -0
  118. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_duckdb/tester.py +0 -0
  119. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ibis/__init__.py +0 -0
  120. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ibis/_compat.py +0 -0
  121. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ibis/_utils.py +0 -0
  122. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ibis/dataframe.py +0 -0
  123. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ibis/execution_engine.py +0 -0
  124. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_notebook/__init__.py +0 -0
  125. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_notebook/env.py +0 -0
  126. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_notebook/nbextension/README.md +0 -0
  127. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_notebook/nbextension/__init__.py +0 -0
  128. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_notebook/nbextension/description.yaml +0 -0
  129. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_notebook/nbextension/main.js +0 -0
  130. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_polars/__init__.py +0 -0
  131. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_polars/_utils.py +0 -0
  132. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_polars/polars_dataframe.py +0 -0
  133. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_polars/registry.py +0 -0
  134. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/__init__.py +0 -0
  135. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/_constants.py +0 -0
  136. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/_utils/__init__.py +0 -0
  137. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/_utils/cluster.py +0 -0
  138. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/_utils/dataframe.py +0 -0
  139. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/_utils/io.py +0 -0
  140. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/dataframe.py +0 -0
  141. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/execution_engine.py +0 -0
  142. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/registry.py +0 -0
  143. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_ray/tester.py +0 -0
  144. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/__init__.py +0 -0
  145. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/_constants.py +0 -0
  146. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/_utils/__init__.py +0 -0
  147. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/_utils/convert.py +0 -0
  148. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/_utils/io.py +0 -0
  149. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/_utils/misc.py +0 -0
  150. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/_utils/partition.py +0 -0
  151. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/dataframe.py +0 -0
  152. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/execution_engine.py +0 -0
  153. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/registry.py +0 -0
  154. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_spark/tester.py +0 -0
  155. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_sql/__init__.py +0 -0
  156. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_sql/exceptions.py +0 -0
  157. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_test/__init__.py +0 -0
  158. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_test/bag_suite.py +0 -0
  159. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_test/dataframe_suite.py +0 -0
  160. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/fugue_test/fixtures.py +0 -0
  161. {fugue-0.9.7.dev1 → fugue-0.9.7.dev2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fugue
3
- Version: 0.9.7.dev1
3
+ Version: 0.9.7.dev2
4
4
  Summary: An abstraction layer for distributed computing
5
5
  Author-email: The Fugue Development Team <hello@fugue.ai>
6
6
  License: Apache-2.0
@@ -24,12 +24,12 @@ Requires-Dist: triad>=1.0.1
24
24
  Requires-Dist: adagio>=0.2.6
25
25
  Requires-Dist: pandas<3
26
26
  Provides-Extra: sql
27
- Requires-Dist: qpd>=0.4.4; extra == "sql"
28
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "sql"
27
+ Requires-Dist: duckdb>=0.5.0; extra == "sql"
28
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "sql"
29
29
  Requires-Dist: sqlglot<28; extra == "sql"
30
30
  Requires-Dist: jinja2; extra == "sql"
31
31
  Provides-Extra: cpp-sql-parser
32
- Requires-Dist: fugue-sql-antlr[cpp]>=0.2.0; extra == "cpp-sql-parser"
32
+ Requires-Dist: fugue-sql-antlr[cpp]>=0.2.4; extra == "cpp-sql-parser"
33
33
  Provides-Extra: spark
34
34
  Requires-Dist: pyspark>=3.1.1; extra == "spark"
35
35
  Requires-Dist: zstandard>=0.25.0; extra == "spark"
@@ -43,8 +43,7 @@ Requires-Dist: duckdb>=0.5.0; extra == "ray"
43
43
  Requires-Dist: pyarrow>=7.0.0; extra == "ray"
44
44
  Requires-Dist: pandas; extra == "ray"
45
45
  Provides-Extra: duckdb
46
- Requires-Dist: qpd>=0.4.4; extra == "duckdb"
47
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "duckdb"
46
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "duckdb"
48
47
  Requires-Dist: sqlglot<28; extra == "duckdb"
49
48
  Requires-Dist: jinja2; extra == "duckdb"
50
49
  Requires-Dist: duckdb>=0.5.0; extra == "duckdb"
@@ -52,8 +51,7 @@ Requires-Dist: numpy; extra == "duckdb"
52
51
  Provides-Extra: polars
53
52
  Requires-Dist: polars; extra == "polars"
54
53
  Provides-Extra: ibis
55
- Requires-Dist: qpd>=0.4.4; extra == "ibis"
56
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "ibis"
54
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "ibis"
57
55
  Requires-Dist: sqlglot<28; extra == "ibis"
58
56
  Requires-Dist: jinja2; extra == "ibis"
59
57
  Requires-Dist: ibis-framework[pandas]; extra == "ibis"
@@ -62,8 +60,7 @@ Requires-Dist: notebook; extra == "notebook"
62
60
  Requires-Dist: jupyterlab; extra == "notebook"
63
61
  Requires-Dist: ipython>=7.10.0; extra == "notebook"
64
62
  Provides-Extra: all
65
- Requires-Dist: qpd>=0.4.4; extra == "all"
66
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "all"
63
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "all"
67
64
  Requires-Dist: sqlglot<28; extra == "all"
68
65
  Requires-Dist: jinja2; extra == "all"
69
66
  Requires-Dist: pyspark>=3.1.1; extra == "all"
@@ -55,7 +55,7 @@ from fugue.execution.factory import (
55
55
  from fugue.execution.native_execution_engine import (
56
56
  NativeExecutionEngine,
57
57
  PandasMapEngine,
58
- QPDPandasEngine,
58
+ DefaultSQLEngine,
59
59
  )
60
60
  from fugue.extensions.creator import Creator, creator, register_creator
61
61
  from fugue.extensions.outputter import Outputter, outputter, register_outputter
@@ -23,6 +23,4 @@ def import_or_throw(package_name: str, message: str) -> Any:
23
23
 
24
24
 
25
25
  def import_fsql_dependency(package_name: str) -> Any:
26
- return import_or_throw(
27
- package_name, "Please try to install the package by `pip install fugue[sql]`."
28
- )
26
+ return import_or_throw(package_name, "Please pip install with extra `fugue[sql]`.")
@@ -37,7 +37,7 @@ _FUGUE_GLOBAL_CONF = ParamDict(
37
37
  FUGUE_CONF_WORKFLOW_CONCURRENCY: 1,
38
38
  FUGUE_CONF_WORKFLOW_AUTO_PERSIST: False,
39
39
  FUGUE_CONF_WORKFLOW_EXCEPTION_HIDE: "fugue.,six,adagio.,pandas,"
40
- "fugue_dask.,dask.,fugue_spark.,pyspark.,antlr4,_qpd_antlr,qpd,triad,"
40
+ "fugue_dask.,dask.,fugue_spark.,pyspark.,antlr4,triad,"
41
41
  "fugue_notebook.,ipython.,jupyter.,ipykernel,_pytest,pytest,fugue_ibis.",
42
42
  FUGUE_CONF_WORKFLOW_EXCEPTION_INJECT: 3,
43
43
  FUGUE_CONF_WORKFLOW_EXCEPTION_OPTIMIZE: True,
@@ -32,7 +32,7 @@ from fugue.execution.factory import (
32
32
  register_execution_engine,
33
33
  register_sql_engine,
34
34
  )
35
- from fugue.execution.native_execution_engine import PandasMapEngine, QPDPandasEngine
35
+ from fugue.execution.native_execution_engine import PandasMapEngine, DefaultSQLEngine
36
36
  from fugue.rpc import (
37
37
  EmptyRPCHandler,
38
38
  RPCClient,
@@ -10,4 +10,4 @@ from .factory import (
10
10
  register_execution_engine,
11
11
  register_sql_engine,
12
12
  )
13
- from .native_execution_engine import NativeExecutionEngine, QPDPandasEngine
13
+ from .native_execution_engine import NativeExecutionEngine, DefaultSQLEngine
@@ -11,7 +11,6 @@ from triad.utils.io import makedirs
11
11
  from triad.utils.pandas_like import PandasUtils
12
12
 
13
13
  from fugue._utils.io import load_df, save_df
14
- from fugue._utils.misc import import_fsql_dependency
15
14
  from fugue.collections.partition import (
16
15
  PartitionCursor,
17
16
  PartitionSpec,
@@ -21,6 +20,7 @@ from fugue.collections.sql import StructuredRawSQL
21
20
  from fugue.constants import KEYWORD_PARALLELISM, KEYWORD_ROWCOUNT
22
21
  from fugue.dataframe import (
23
22
  AnyDataFrame,
23
+ ArrowDataFrame,
24
24
  DataFrame,
25
25
  DataFrames,
26
26
  LocalBoundedDataFrame,
@@ -39,31 +39,53 @@ from .execution_engine import (
39
39
  )
40
40
 
41
41
 
42
- class QPDPandasEngine(SQLEngine):
43
- """QPD execution implementation.
42
+ class DefaultSQLEngine(SQLEngine):
43
+ """DuckDB SQL backend implementation.
44
44
 
45
45
  :param execution_engine: the execution engine this sql engine will run on
46
46
  """
47
47
 
48
48
  @property
49
49
  def dialect(self) -> Optional[str]:
50
- return "spark"
51
-
52
- def to_df(self, df: AnyDataFrame, schema: Any = None) -> DataFrame:
53
- return _to_native_execution_engine_df(df, schema)
54
-
55
- @property
56
- def is_distributed(self) -> bool:
57
- return False
50
+ return "duckdb"
58
51
 
59
52
  def select(self, dfs: DataFrames, statement: StructuredRawSQL) -> DataFrame:
60
- qpd_pandas = import_fsql_dependency("qpd_pandas")
53
+ import duckdb
54
+
55
+ from fugue_duckdb.dataframe import _duck_as_arrow
61
56
 
62
57
  _dfs, _sql = self.encode(dfs, statement)
63
- _dd = {k: self.to_df(v).as_pandas() for k, v in _dfs.items()} # type: ignore
64
58
 
65
- df = qpd_pandas.run_sql_on_pandas(_sql, _dd, ignore_case=True)
66
- return self.to_df(df)
59
+ with duckdb.connect() as conn:
60
+ for k, v in _dfs.items():
61
+ duckdb.from_arrow(v.as_arrow(), connection=conn).create_view(k)
62
+ return ArrowDataFrame(_duck_as_arrow(conn.sql(_sql)))
63
+
64
+ def table_exists(self, table: str) -> bool: # pragma: no cover
65
+ raise NotImplementedError(
66
+ "table_exists can only be used with DuckExecutionEngine"
67
+ )
68
+
69
+ def save_table(
70
+ self,
71
+ df: DataFrame,
72
+ table: str,
73
+ mode: str = "overwrite",
74
+ partition_spec: Optional[PartitionSpec] = None,
75
+ **kwargs: Any,
76
+ ) -> None: # pragma: no cover
77
+ raise NotImplementedError(
78
+ "save_table can only be used with DuckExecutionEngine"
79
+ )
80
+
81
+ def load_table(self, table: str, **kwargs: Any) -> DataFrame: # pragma: no cover
82
+ raise NotImplementedError(
83
+ "load_table can only be used with DuckExecutionEngine"
84
+ )
85
+
86
+ @property
87
+ def is_distributed(self) -> bool:
88
+ return False
67
89
 
68
90
 
69
91
  class PandasMapEngine(MapEngine):
@@ -148,8 +170,9 @@ class PandasMapEngine(MapEngine):
148
170
  output_df = PandasDataFrame(output_df.native, output_schema)
149
171
  assert_or_throw(
150
172
  output_df.schema == output_schema,
151
- lambda: f"map output {output_df.schema} "
152
- f"mismatches given {output_schema}",
173
+ lambda: (
174
+ f"map output {output_df.schema} mismatches given {output_schema}"
175
+ ),
153
176
  )
154
177
  return self.to_df(output_df) # type: ignore
155
178
 
@@ -194,7 +217,7 @@ class NativeExecutionEngine(ExecutionEngine):
194
217
  return False
195
218
 
196
219
  def create_default_sql_engine(self) -> SQLEngine:
197
- return QPDPandasEngine(self)
220
+ return DefaultSQLEngine(self)
198
221
 
199
222
  def create_default_map_engine(self) -> MapEngine:
200
223
  return PandasMapEngine(self)
@@ -1,7 +1,7 @@
1
1
  from fugue.execution.factory import register_execution_engine, register_sql_engine
2
2
  from fugue.execution.native_execution_engine import (
3
+ DefaultSQLEngine,
3
4
  NativeExecutionEngine,
4
- QPDPandasEngine,
5
5
  )
6
6
 
7
7
 
@@ -25,8 +25,5 @@ def _register_engines() -> None:
25
25
  "pandas", lambda conf: NativeExecutionEngine(conf), on_dup="ignore"
26
26
  )
27
27
  register_sql_engine(
28
- "qpdpandas", lambda engine: QPDPandasEngine(engine), on_dup="ignore"
29
- )
30
- register_sql_engine(
31
- "qpd_pandas", lambda engine: QPDPandasEngine(engine), on_dup="ignore"
28
+ "default", lambda engine: DefaultSQLEngine(engine), on_dup="ignore"
32
29
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fugue
3
- Version: 0.9.7.dev1
3
+ Version: 0.9.7.dev2
4
4
  Summary: An abstraction layer for distributed computing
5
5
  Author-email: The Fugue Development Team <hello@fugue.ai>
6
6
  License: Apache-2.0
@@ -24,12 +24,12 @@ Requires-Dist: triad>=1.0.1
24
24
  Requires-Dist: adagio>=0.2.6
25
25
  Requires-Dist: pandas<3
26
26
  Provides-Extra: sql
27
- Requires-Dist: qpd>=0.4.4; extra == "sql"
28
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "sql"
27
+ Requires-Dist: duckdb>=0.5.0; extra == "sql"
28
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "sql"
29
29
  Requires-Dist: sqlglot<28; extra == "sql"
30
30
  Requires-Dist: jinja2; extra == "sql"
31
31
  Provides-Extra: cpp-sql-parser
32
- Requires-Dist: fugue-sql-antlr[cpp]>=0.2.0; extra == "cpp-sql-parser"
32
+ Requires-Dist: fugue-sql-antlr[cpp]>=0.2.4; extra == "cpp-sql-parser"
33
33
  Provides-Extra: spark
34
34
  Requires-Dist: pyspark>=3.1.1; extra == "spark"
35
35
  Requires-Dist: zstandard>=0.25.0; extra == "spark"
@@ -43,8 +43,7 @@ Requires-Dist: duckdb>=0.5.0; extra == "ray"
43
43
  Requires-Dist: pyarrow>=7.0.0; extra == "ray"
44
44
  Requires-Dist: pandas; extra == "ray"
45
45
  Provides-Extra: duckdb
46
- Requires-Dist: qpd>=0.4.4; extra == "duckdb"
47
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "duckdb"
46
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "duckdb"
48
47
  Requires-Dist: sqlglot<28; extra == "duckdb"
49
48
  Requires-Dist: jinja2; extra == "duckdb"
50
49
  Requires-Dist: duckdb>=0.5.0; extra == "duckdb"
@@ -52,8 +51,7 @@ Requires-Dist: numpy; extra == "duckdb"
52
51
  Provides-Extra: polars
53
52
  Requires-Dist: polars; extra == "polars"
54
53
  Provides-Extra: ibis
55
- Requires-Dist: qpd>=0.4.4; extra == "ibis"
56
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "ibis"
54
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "ibis"
57
55
  Requires-Dist: sqlglot<28; extra == "ibis"
58
56
  Requires-Dist: jinja2; extra == "ibis"
59
57
  Requires-Dist: ibis-framework[pandas]; extra == "ibis"
@@ -62,8 +60,7 @@ Requires-Dist: notebook; extra == "notebook"
62
60
  Requires-Dist: jupyterlab; extra == "notebook"
63
61
  Requires-Dist: ipython>=7.10.0; extra == "notebook"
64
62
  Provides-Extra: all
65
- Requires-Dist: qpd>=0.4.4; extra == "all"
66
- Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "all"
63
+ Requires-Dist: fugue-sql-antlr>=0.2.4; extra == "all"
67
64
  Requires-Dist: sqlglot<28; extra == "all"
68
65
  Requires-Dist: jinja2; extra == "all"
69
66
  Requires-Dist: pyspark>=3.1.1; extra == "all"
@@ -3,8 +3,7 @@ adagio>=0.2.6
3
3
  pandas<3
4
4
 
5
5
  [all]
6
- qpd>=0.4.4
7
- fugue-sql-antlr>=0.2.0
6
+ fugue-sql-antlr>=0.2.4
8
7
  sqlglot<28
9
8
  jinja2
10
9
  pyspark>=3.1.1
@@ -23,7 +22,7 @@ polars
23
22
  ray[data]>=2.30.0
24
23
 
25
24
  [cpp_sql_parser]
26
- fugue-sql-antlr[cpp]>=0.2.0
25
+ fugue-sql-antlr[cpp]>=0.2.4
27
26
 
28
27
  [dask]
29
28
  dask[dataframe,distributed]>=2024.4.0
@@ -31,16 +30,14 @@ pyarrow>=7.0.0
31
30
  pandas>=2.0.2
32
31
 
33
32
  [duckdb]
34
- qpd>=0.4.4
35
- fugue-sql-antlr>=0.2.0
33
+ fugue-sql-antlr>=0.2.4
36
34
  sqlglot<28
37
35
  jinja2
38
36
  duckdb>=0.5.0
39
37
  numpy
40
38
 
41
39
  [ibis]
42
- qpd>=0.4.4
43
- fugue-sql-antlr>=0.2.0
40
+ fugue-sql-antlr>=0.2.4
44
41
  sqlglot<28
45
42
  jinja2
46
43
  ibis-framework[pandas]
@@ -66,7 +63,7 @@ pyspark>=3.1.1
66
63
  zstandard>=0.25.0
67
64
 
68
65
  [sql]
69
- qpd>=0.4.4
70
- fugue-sql-antlr>=0.2.0
66
+ duckdb>=0.5.0
67
+ fugue-sql-antlr>=0.2.4
71
68
  sqlglot<28
72
69
  jinja2
@@ -1,10 +1,11 @@
1
1
  # pylint: disable-all
2
2
  try:
3
- import qpd_pandas # noqa: F401
3
+ import duckdb # noqa: F401
4
+ import sqlglot # noqa: F401
4
5
 
5
- HAS_QPD = True
6
+ HAS_DEFAULT_SQL_ENGINE = True
6
7
  except ImportError: # pragma: no cover
7
- HAS_QPD = False
8
+ HAS_DEFAULT_SQL_ENGINE = False
8
9
 
9
10
  import datetime
10
11
  import os
@@ -29,6 +30,7 @@ from fugue import (
29
30
  CoTransformer,
30
31
  DataFrame,
31
32
  DataFrames,
33
+ DefaultSQLEngine,
32
34
  ExecutionEngine,
33
35
  FugueWorkflow,
34
36
  LocalDataFrame,
@@ -38,7 +40,6 @@ from fugue import (
38
40
  PandasDataFrame,
39
41
  PartitionSpec,
40
42
  Processor,
41
- QPDPandasEngine,
42
43
  Schema,
43
44
  Transformer,
44
45
  cotransformer,
@@ -858,7 +859,9 @@ class BuiltInTests(object):
858
859
  ).assert_eq(d)
859
860
  dag.run(self.engine)
860
861
 
861
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
862
+ @pytest.mark.skipif(
863
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
864
+ )
862
865
  def test_df_select(self):
863
866
  with FugueWorkflow() as dag:
864
867
  # wildcard
@@ -910,7 +913,9 @@ class BuiltInTests(object):
910
913
  dag.select("select * from", a).assert_eq(b)
911
914
  dag.run(self.engine, {"fugue.sql.compile.ignore_case": True})
912
915
 
913
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
916
+ @pytest.mark.skipif(
917
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
918
+ )
914
919
  def test_df_filter(self):
915
920
  with FugueWorkflow() as dag:
916
921
  a = dag.df([[1, 10], [2, 20], [3, 30]], "x:int,y:int")
@@ -918,7 +923,9 @@ class BuiltInTests(object):
918
923
  a.filter((col("y") > 15) & (col("y") < 25)).assert_eq(b)
919
924
  dag.run(self.engine)
920
925
 
921
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
926
+ @pytest.mark.skipif(
927
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
928
+ )
922
929
  def test_df_assign(self):
923
930
  with FugueWorkflow() as dag:
924
931
  a = dag.df([[1, 10], [2, 20], [3, 30]], "x:int,y:int")
@@ -932,7 +939,9 @@ class BuiltInTests(object):
932
939
  a.assign(lit("x").alias("y"), z=(col("y") + 1).cast(float)).assert_eq(b)
933
940
  dag.run(self.engine)
934
941
 
935
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
942
+ @pytest.mark.skipif(
943
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
944
+ )
936
945
  def test_aggregate(self):
937
946
  with FugueWorkflow() as dag:
938
947
  a = dag.df([[1, 10], [1, 200], [3, 30]], "x:int,y:int")
@@ -946,9 +955,11 @@ class BuiltInTests(object):
946
955
  ).assert_eq(c)
947
956
  dag.run(self.engine)
948
957
 
949
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
958
+ @pytest.mark.skipif(
959
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
960
+ )
950
961
  def test_select(self):
951
- class MockEngine(QPDPandasEngine):
962
+ class MockEngine(DefaultSQLEngine):
952
963
  def __init__(self, execution_engine, p: int = 0):
953
964
  super().__init__(execution_engine)
954
965
  self.p = p
@@ -985,7 +996,7 @@ class BuiltInTests(object):
985
996
  "AS t1 INNER JOIN",
986
997
  b,
987
998
  "AS t2 ON t1.x=t2.x",
988
- sql_engine="qpdpandas",
999
+ sql_engine="default",
989
1000
  ).assert_eq(c)
990
1001
 
991
1002
  # specify sql engine and params
@@ -1059,7 +1070,6 @@ class BuiltInTests(object):
1059
1070
  "x:long,y:double",
1060
1071
  )
1061
1072
  )
1062
- # TODO: INTERSECT ALL is not implemented (QPD issue)
1063
1073
  # a.intersect(b, distinct=False).assert_eq(
1064
1074
  # ArrayDataFrame(
1065
1075
  # [[2, None], [2, None]],
@@ -1091,7 +1101,6 @@ class BuiltInTests(object):
1091
1101
  "x:long,y:double",
1092
1102
  )
1093
1103
  )
1094
- # # TODO: EXCEPT ALL is not implemented (QPD issue)
1095
1104
  # a.subtract(c, distinct=False).assert_eq(
1096
1105
  # ArrayDataFrame(
1097
1106
  # [[2, None], [2, None]],
@@ -1634,7 +1643,7 @@ class BuiltInTests(object):
1634
1643
  df.partition(by=["a"]).out_transform(t12)
1635
1644
  raises(
1636
1645
  FugueInterfacelessError,
1637
- lambda: (df.partition(by=["a"]).out_transform(t1)),
1646
+ lambda: df.partition(by=["a"]).out_transform(t1),
1638
1647
  ) # for t1, callback must be provided
1639
1648
  df.assert_eq(res)
1640
1649
  dag.run(self.engine)
@@ -1691,7 +1700,9 @@ class BuiltInTests(object):
1691
1700
 
1692
1701
  assert 4 == cb3.n
1693
1702
 
1694
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
1703
+ @pytest.mark.skipif(
1704
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
1705
+ )
1695
1706
  def test_sql_api(self):
1696
1707
  def tr(df: pd.DataFrame, n=1) -> pd.DataFrame:
1697
1708
  return df + n
@@ -1738,7 +1749,9 @@ class BuiltInTests(object):
1738
1749
  assert fa.is_local(sdf4)
1739
1750
 
1740
1751
  @pytest.mark.skipif(os.name == "nt", reason="Skip Windows")
1741
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
1752
+ @pytest.mark.skipif(
1753
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
1754
+ )
1742
1755
  def test_any_column_name(self):
1743
1756
  f_parquet = os.path.join(str(self.tmpdir), "a.parquet")
1744
1757
  f_csv = os.path.join(str(self.tmpdir), "a.csv")
@@ -1,10 +1,11 @@
1
1
  # pylint: disable-all
2
2
  try:
3
- import qpd_pandas # noqa: F401
3
+ import duckdb # noqa: F401
4
+ import sqlglot # noqa: F401
4
5
 
5
- HAS_QPD = True
6
+ HAS_DEFAULT_SQL_ENGINE = True
6
7
  except ImportError: # pragma: no cover
7
- HAS_QPD = False
8
+ HAS_DEFAULT_SQL_ENGINE = False
8
9
 
9
10
  import copy
10
11
  import os
@@ -81,7 +82,9 @@ class ExecutionEngineTests(object):
81
82
  pdf = pdf[pdf.a < 0]
82
83
  self.df_eq(o, fa.as_fugue_engine_df(e, pdf), throw=True)
83
84
 
84
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
85
+ @pytest.mark.skipif(
86
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
87
+ )
85
88
  def test_filter(self):
86
89
  a = ArrayDataFrame(
87
90
  [[1, 2], [None, 2], [None, 1], [3, 4], [None, 4]],
@@ -94,7 +97,9 @@ class ExecutionEngineTests(object):
94
97
  c = fa.filter(a, col("a") + col("b") == 3)
95
98
  self.df_eq(c, [[1, 2]], "a:double,b:int", throw=True)
96
99
 
97
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
100
+ @pytest.mark.skipif(
101
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
102
+ )
98
103
  def test_select(self):
99
104
  a = ArrayDataFrame(
100
105
  [[1, 2], [None, 2], [None, 1], [3, 4], [None, 4]], "a:double,b:int"
@@ -153,7 +158,9 @@ class ExecutionEngineTests(object):
153
158
  b, [[1, "1", 2], [None, "1", 7]], "a:double,o:str,c:double", throw=True
154
159
  )
155
160
 
156
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
161
+ @pytest.mark.skipif(
162
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
163
+ )
157
164
  def test_assign(self):
158
165
  a = ArrayDataFrame(
159
166
  [[1, 2], [None, 2], [None, 1], [3, 4], [None, 4]], "a:double,b:int"
@@ -173,7 +180,9 @@ class ExecutionEngineTests(object):
173
180
  throw=True,
174
181
  )
175
182
 
176
- @pytest.mark.skipif(not HAS_QPD, reason="qpd not working")
183
+ @pytest.mark.skipif(
184
+ not HAS_DEFAULT_SQL_ENGINE, reason="Default sql engine not available"
185
+ )
177
186
  def test_aggregate(self):
178
187
  a = ArrayDataFrame(
179
188
  [[1, 2], [None, 2], [None, 1], [3, 4], [None, 4]], "a:double,b:int"
@@ -605,7 +614,6 @@ class ExecutionEngineTests(object):
605
614
  "a:double,b:double,c:int",
606
615
  throw=True,
607
616
  )
608
- # TODO: EXCEPT ALL is not implemented (QPD issue)
609
617
  # c = fa.subtract(a, b, distinct=False)
610
618
  # self.df_eq(
611
619
  # c,
@@ -648,7 +656,6 @@ class ExecutionEngineTests(object):
648
656
  "a:double,b:double,c:int",
649
657
  throw=True,
650
658
  )
651
- # TODO: INTERSECT ALL is not implemented (QPD issue)
652
659
  # c = fa.intersect(a, b, distinct=False)
653
660
  # self.df_eq(
654
661
  # c,
@@ -4,14 +4,20 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fugue"
7
- version = "0.9.7.dev1"
7
+ version = "0.9.7.dev2"
8
8
  description = "An abstraction layer for distributed computing"
9
9
  readme = "README.md"
10
- license = {text = "Apache-2.0"}
11
- authors = [
12
- {name = "The Fugue Development Team", email = "hello@fugue.ai"}
10
+ license = { text = "Apache-2.0" }
11
+ authors = [{ name = "The Fugue Development Team", email = "hello@fugue.ai" }]
12
+ keywords = [
13
+ "distributed",
14
+ "spark",
15
+ "dask",
16
+ "ray",
17
+ "sql",
18
+ "dsl",
19
+ "domain specific language",
13
20
  ]
14
- keywords = ["distributed", "spark", "dask", "ray", "sql", "dsl", "domain specific language"]
15
21
  classifiers = [
16
22
  "Development Status :: 5 - Production/Stable",
17
23
  "Intended Audience :: Developers",
@@ -25,28 +31,16 @@ classifiers = [
25
31
  "Programming Language :: Python :: 3 :: Only",
26
32
  ]
27
33
  requires-python = ">=3.10"
28
- dependencies = [
29
- "triad>=1.0.1",
30
- "adagio>=0.2.6",
31
- "pandas<3",
32
- ]
34
+ dependencies = ["triad>=1.0.1", "adagio>=0.2.6", "pandas<3"]
33
35
 
34
36
  [project.urls]
35
37
  Homepage = "http://github.com/fugue-project/fugue"
36
38
  Repository = "http://github.com/fugue-project/fugue"
37
39
 
38
40
  [project.optional-dependencies]
39
- sql = [
40
- "qpd>=0.4.4",
41
- "fugue-sql-antlr>=0.2.0",
42
- "sqlglot<28",
43
- "jinja2",
44
- ]
45
- cpp_sql_parser = ["fugue-sql-antlr[cpp]>=0.2.0"]
46
- spark = [
47
- "pyspark>=3.1.1",
48
- "zstandard>=0.25.0",
49
- ]
41
+ sql = ["duckdb>=0.5.0", "fugue-sql-antlr>=0.2.4", "sqlglot<28", "jinja2"]
42
+ cpp_sql_parser = ["fugue-sql-antlr[cpp]>=0.2.4"]
43
+ spark = ["pyspark>=3.1.1", "zstandard>=0.25.0"]
50
44
  dask = [
51
45
  "dask[distributed,dataframe]>=2024.4.0",
52
46
  "pyarrow>=7.0.0",
@@ -59,8 +53,7 @@ ray = [
59
53
  "pandas",
60
54
  ]
61
55
  duckdb = [
62
- "qpd>=0.4.4",
63
- "fugue-sql-antlr>=0.2.0",
56
+ "fugue-sql-antlr>=0.2.4",
64
57
  "sqlglot<28",
65
58
  "jinja2",
66
59
  "duckdb>=0.5.0",
@@ -68,20 +61,14 @@ duckdb = [
68
61
  ]
69
62
  polars = ["polars"]
70
63
  ibis = [
71
- "qpd>=0.4.4",
72
- "fugue-sql-antlr>=0.2.0",
64
+ "fugue-sql-antlr>=0.2.4",
73
65
  "sqlglot<28",
74
66
  "jinja2",
75
67
  "ibis-framework[pandas]",
76
68
  ]
77
- notebook = [
78
- "notebook",
79
- "jupyterlab",
80
- "ipython>=7.10.0",
81
- ]
69
+ notebook = ["notebook", "jupyterlab", "ipython>=7.10.0"]
82
70
  all = [
83
- "qpd>=0.4.4",
84
- "fugue-sql-antlr>=0.2.0",
71
+ "fugue-sql-antlr>=0.2.4",
85
72
  "sqlglot<28",
86
73
  "jinja2",
87
74
  "pyspark>=3.1.1",
@@ -116,7 +103,7 @@ dev = [
116
103
  "pytest",
117
104
  "pytest-cov",
118
105
  "pytest-mock",
119
- "pytest-rerunfailures==10.2",
106
+ "pytest-rerunfailures>10.2",
120
107
  # Additional test dependencies
121
108
  "flask",
122
109
  "psutil",
@@ -148,7 +135,7 @@ fugue_test = "fugue_test"
148
135
  fugue_test_fixtures = "fugue_test.fixtures"
149
136
 
150
137
  [tool.setuptools]
151
- packages = {find = {include = ["fugue*"]}}
138
+ packages = { find = { include = ["fugue*"] } }
152
139
 
153
140
  [tool.setuptools.package-data]
154
141
  fugue = ["py.typed"]
@@ -156,7 +143,8 @@ fugue_notebook = ["nbextension/*"]
156
143
 
157
144
  [tool.pytest.ini_options]
158
145
  addopts = [
159
- "-p", "pytest_cov",
146
+ "-p",
147
+ "pytest_cov",
160
148
  "--cov=fugue",
161
149
  "--cov=fugue_test",
162
150
  "--cov=fugue_spark",
File without changes
File without changes