Flowfile 0.4.1__py3-none-any.whl → 0.5.3__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 (332) hide show
  1. build_backends/main.py +25 -22
  2. build_backends/main_prd.py +10 -19
  3. flowfile/__init__.py +179 -73
  4. flowfile/__main__.py +10 -7
  5. flowfile/api.py +52 -59
  6. flowfile/web/__init__.py +14 -9
  7. flowfile/web/static/assets/AdminView-49392a9a.js +713 -0
  8. flowfile/web/static/assets/AdminView-f53bad23.css +129 -0
  9. flowfile/web/static/assets/CloudConnectionView-36bcd6df.css +72 -0
  10. flowfile/web/static/assets/{CloudConnectionManager-d3248f8d.js → CloudConnectionView-f13f202b.js} +11 -11
  11. flowfile/web/static/assets/{CloudStorageReader-d65bf041.js → CloudStorageReader-0023d4a5.js} +10 -8
  12. flowfile/web/static/assets/{CloudStorageReader-29d14fcc.css → CloudStorageReader-24c54524.css} +27 -27
  13. flowfile/web/static/assets/{CloudStorageWriter-b0ee067f.css → CloudStorageWriter-60547855.css} +26 -26
  14. flowfile/web/static/assets/{CloudStorageWriter-e83be3ed.js → CloudStorageWriter-8e781e11.js} +10 -8
  15. flowfile/web/static/assets/{ColumnSelector-47996a16.css → ColumnSelector-371637fb.css} +2 -2
  16. flowfile/web/static/assets/{ColumnSelector-cce661cf.js → ColumnSelector-8ad68ea9.js} +3 -5
  17. flowfile/web/static/assets/{ContextMenu-c13f91d0.css → ContextMenu-26d4dd27.css} +6 -6
  18. flowfile/web/static/assets/{ContextMenu-11a4652a.js → ContextMenu-31ee57f0.js} +3 -3
  19. flowfile/web/static/assets/{ContextMenu-160afb08.js → ContextMenu-69a74055.js} +3 -3
  20. flowfile/web/static/assets/{ContextMenu-cf18d2cc.js → ContextMenu-8e2051c6.js} +3 -3
  21. flowfile/web/static/assets/{ContextMenu-4c74eef1.css → ContextMenu-8ec1729e.css} +6 -6
  22. flowfile/web/static/assets/{ContextMenu-63cfa99b.css → ContextMenu-9b310c60.css} +6 -6
  23. flowfile/web/static/assets/{CrossJoin-d395d38c.js → CrossJoin-03df6938.js} +12 -10
  24. flowfile/web/static/assets/{CrossJoin-1119d18e.css → CrossJoin-71b4cc10.css} +20 -20
  25. flowfile/web/static/assets/CustomNode-59e99a86.css +32 -0
  26. flowfile/web/static/assets/{CustomNode-b812dc0b.js → CustomNode-8479239b.js} +36 -24
  27. flowfile/web/static/assets/{DatabaseConnectionSettings-7000bf2c.js → DatabaseConnectionSettings-869e3efd.js} +5 -4
  28. flowfile/web/static/assets/{DatabaseConnectionSettings-0c04b2e5.css → DatabaseConnectionSettings-e91df89a.css} +13 -13
  29. flowfile/web/static/assets/{DatabaseReader-ae61773c.css → DatabaseReader-36898a00.css} +24 -24
  30. flowfile/web/static/assets/{DatabaseReader-4f035d0c.js → DatabaseReader-c58b9552.js} +25 -15
  31. flowfile/web/static/assets/DatabaseView-6655afd6.css +57 -0
  32. flowfile/web/static/assets/{DatabaseManager-9662ec5b.js → DatabaseView-d26a9140.js} +11 -11
  33. flowfile/web/static/assets/{DatabaseWriter-2f570e53.css → DatabaseWriter-217a99f1.css} +19 -19
  34. flowfile/web/static/assets/{DatabaseWriter-f65dcd54.js → DatabaseWriter-4d05ddc7.js} +17 -10
  35. flowfile/web/static/assets/{designer-e3c150ec.css → DesignerView-a6d0ee84.css} +629 -538
  36. flowfile/web/static/assets/{designer-f3656d8c.js → DesignerView-e6f5c0e8.js} +1214 -3209
  37. flowfile/web/static/assets/{documentation-52b241e7.js → DocumentationView-2e78ef1b.js} +5 -5
  38. flowfile/web/static/assets/{documentation-12216a74.css → DocumentationView-fd46c656.css} +7 -7
  39. flowfile/web/static/assets/{ExploreData-2d0cf4db.css → ExploreData-10c5acc8.css} +13 -12
  40. flowfile/web/static/assets/{ExploreData-94c43dfc.js → ExploreData-7b54caca.js} +18 -9
  41. flowfile/web/static/assets/{ExternalSource-ac04b3cc.js → ExternalSource-3fa399b2.js} +9 -7
  42. flowfile/web/static/assets/{ExternalSource-e37b6275.css → ExternalSource-47ab05a3.css} +17 -17
  43. flowfile/web/static/assets/Filter-7494ea97.css +48 -0
  44. flowfile/web/static/assets/Filter-8cbbdbf3.js +287 -0
  45. flowfile/web/static/assets/{Formula-bb96803d.css → Formula-53d58c43.css} +7 -7
  46. flowfile/web/static/assets/{Formula-71472193.js → Formula-aac42b1e.js} +13 -11
  47. flowfile/web/static/assets/{FuzzyMatch-1010f966.css → FuzzyMatch-ad6361d6.css} +68 -69
  48. flowfile/web/static/assets/{FuzzyMatch-b317f631.js → FuzzyMatch-cd9bbfca.js} +12 -10
  49. flowfile/web/static/assets/{Pivot-cf333e3d.css → GraphSolver-c24dec17.css} +5 -5
  50. flowfile/web/static/assets/{GraphSolver-754a234f.js → GraphSolver-c7e6780e.js} +13 -11
  51. flowfile/web/static/assets/{GroupBy-6c6f9802.js → GroupBy-93c5d22b.js} +9 -7
  52. flowfile/web/static/assets/{GroupBy-b9505323.css → GroupBy-be7ac0bf.css} +10 -10
  53. flowfile/web/static/assets/{Join-fd79b451.css → Join-28b5e18f.css} +22 -22
  54. flowfile/web/static/assets/{Join-a1b800be.js → Join-a19b2de2.js} +13 -11
  55. flowfile/web/static/assets/LoginView-0df4ed0a.js +134 -0
  56. flowfile/web/static/assets/LoginView-d325d632.css +172 -0
  57. flowfile/web/static/assets/ManualInput-3702e677.css +293 -0
  58. flowfile/web/static/assets/{ManualInput-a9640276.js → ManualInput-8d3374b2.js} +170 -116
  59. flowfile/web/static/assets/{MultiSelect-97213888.js → MultiSelect-ad1b6243.js} +2 -2
  60. flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-6ffe088a.js → MultiSelect.vue_vue_type_script_setup_true_lang-e278950d.js} +1 -1
  61. flowfile/web/static/assets/NodeDesigner-40b647c9.js +2610 -0
  62. flowfile/web/static/assets/NodeDesigner-5f53be3f.css +1429 -0
  63. flowfile/web/static/assets/{NumericInput-e638088a.js → NumericInput-7100234c.js} +2 -2
  64. flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-90eb2cba.js → NumericInput.vue_vue_type_script_setup_true_lang-5130219f.js} +5 -2
  65. flowfile/web/static/assets/{Output-ddc9079f.css → Output-35e97000.css} +6 -6
  66. flowfile/web/static/assets/{Output-76750610.js → Output-f5efd2aa.js} +60 -38
  67. flowfile/web/static/assets/{GraphSolver-f0cb7bfb.css → Pivot-0eda81b4.css} +5 -5
  68. flowfile/web/static/assets/{Pivot-7814803f.js → Pivot-d981d23c.js} +11 -9
  69. flowfile/web/static/assets/PivotValidation-0e905b1a.css +13 -0
  70. flowfile/web/static/assets/{PivotValidation-f92137d2.js → PivotValidation-39386e95.js} +3 -3
  71. flowfile/web/static/assets/PivotValidation-41b57ad6.css +13 -0
  72. flowfile/web/static/assets/{PivotValidation-76dd431a.js → PivotValidation-63de1f73.js} +3 -3
  73. flowfile/web/static/assets/{PolarsCode-650322d1.css → PolarsCode-2b1f1f23.css} +4 -4
  74. flowfile/web/static/assets/{PolarsCode-889c3008.js → PolarsCode-f9d69217.js} +18 -9
  75. flowfile/web/static/assets/PopOver-b22f049e.js +939 -0
  76. flowfile/web/static/assets/PopOver-d96599db.css +33 -0
  77. flowfile/web/static/assets/{Read-6b17491f.css → Read-36e7bd51.css} +12 -12
  78. flowfile/web/static/assets/{Read-637b72a7.js → Read-aec2e377.js} +83 -105
  79. flowfile/web/static/assets/{RecordCount-2b050c41.js → RecordCount-78ed6845.js} +6 -4
  80. flowfile/web/static/assets/{RecordId-81df7784.js → RecordId-2156e890.js} +8 -6
  81. flowfile/web/static/assets/{SQLQueryComponent-36cef432.css → SQLQueryComponent-1c2f26b4.css} +5 -5
  82. flowfile/web/static/assets/{SQLQueryComponent-88dcfe53.js → SQLQueryComponent-48c72f5b.js} +3 -3
  83. flowfile/web/static/assets/{Sample-258ad2a9.js → Sample-1352ca74.js} +6 -4
  84. flowfile/web/static/assets/SecretSelector-22b5ff89.js +113 -0
  85. flowfile/web/static/assets/SecretSelector-6329f743.css +43 -0
  86. flowfile/web/static/assets/{SecretManager-2a2cb7e2.js → SecretsView-17df66ee.js} +35 -36
  87. flowfile/web/static/assets/SecretsView-aa291340.css +38 -0
  88. flowfile/web/static/assets/{Select-850215fd.js → Select-0aee4c54.js} +9 -7
  89. flowfile/web/static/assets/{SettingsSection-55bae608.js → SettingsSection-0784e157.js} +3 -3
  90. flowfile/web/static/assets/{SettingsSection-71e6b7e3.css → SettingsSection-07fbbc39.css} +4 -4
  91. flowfile/web/static/assets/{SettingsSection-5c696bee.css → SettingsSection-26fe48d4.css} +4 -4
  92. flowfile/web/static/assets/{SettingsSection-2e4d03c4.css → SettingsSection-8f980839.css} +4 -4
  93. flowfile/web/static/assets/{SettingsSection-0e8d9123.js → SettingsSection-cd341bb6.js} +3 -3
  94. flowfile/web/static/assets/{SettingsSection-29b4fa6b.js → SettingsSection-f2002a6d.js} +3 -3
  95. flowfile/web/static/assets/{SingleSelect-bebd408b.js → SingleSelect-460cc0ea.js} +2 -2
  96. flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-6093741c.js → SingleSelect.vue_vue_type_script_setup_true_lang-30741bb2.js} +1 -1
  97. flowfile/web/static/assets/{SliderInput-6a05ab61.js → SliderInput-5d926864.js} +7 -4
  98. flowfile/web/static/assets/SliderInput-f2e4f23c.css +4 -0
  99. flowfile/web/static/assets/{Sort-10ab48ed.js → Sort-3cdc971b.js} +9 -7
  100. flowfile/web/static/assets/{Unique-f9fb0809.css → Sort-8a871341.css} +10 -10
  101. flowfile/web/static/assets/{TextInput-df9d6259.js → TextInput-a2d0bfbd.js} +2 -2
  102. flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-000e1178.js → TextInput.vue_vue_type_script_setup_true_lang-abad1ca2.js} +5 -2
  103. flowfile/web/static/assets/{TextToRows-5d2c1190.css → TextToRows-12afb4f4.css} +10 -10
  104. flowfile/web/static/assets/{TextToRows-6c2d93d8.js → TextToRows-918945f7.js} +11 -10
  105. flowfile/web/static/assets/{ToggleSwitch-0ff7ac52.js → ToggleSwitch-f0ef5196.js} +2 -2
  106. flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-c6dc3029.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-5605c793.js} +1 -1
  107. flowfile/web/static/assets/{UnavailableFields-5edd5322.css → UnavailableFields-54d2f518.css} +6 -6
  108. flowfile/web/static/assets/{UnavailableFields-1bab97cb.js → UnavailableFields-bdad6144.js} +4 -4
  109. flowfile/web/static/assets/{Union-af6c3d9b.css → Union-d6a8d7d5.css} +7 -7
  110. flowfile/web/static/assets/{Union-b563478a.js → Union-e8ab8c86.js} +8 -6
  111. flowfile/web/static/assets/{Unique-f90db5db.js → Unique-8cd4f976.js} +13 -22
  112. flowfile/web/static/assets/{Sort-3643d625.css → Unique-9fb2f567.css} +10 -10
  113. flowfile/web/static/assets/{Unpivot-1e422df3.css → Unpivot-710a2948.css} +7 -7
  114. flowfile/web/static/assets/{Unpivot-bcb0025f.js → Unpivot-8da14095.js} +10 -8
  115. flowfile/web/static/assets/{UnpivotValidation-c4e73b04.js → UnpivotValidation-6f7d89ff.js} +3 -3
  116. flowfile/web/static/assets/UnpivotValidation-d5ca3b7b.css +13 -0
  117. flowfile/web/static/assets/{VueGraphicWalker-bb8535e2.js → VueGraphicWalker-3fb312e1.js} +4 -4
  118. flowfile/web/static/assets/{VueGraphicWalker-ed5ab88b.css → VueGraphicWalker-430f0b86.css} +1 -1
  119. flowfile/web/static/assets/{api-4c8e3822.js → api-24483f0d.js} +1 -1
  120. flowfile/web/static/assets/{api-2d6adc4f.js → api-8b81fa73.js} +1 -1
  121. flowfile/web/static/assets/{dropDown-35135ba8.css → dropDown-3d8dc5fa.css} +40 -40
  122. flowfile/web/static/assets/{dropDown-1bca8a74.js → dropDown-ac0fda9d.js} +3 -3
  123. flowfile/web/static/assets/{fullEditor-2985687e.js → fullEditor-5497a84a.js} +11 -10
  124. flowfile/web/static/assets/{fullEditor-178376bb.css → fullEditor-a0be62b3.css} +74 -62
  125. flowfile/web/static/assets/{genericNodeSettings-924759c7.css → genericNodeSettings-3b2507ea.css} +10 -10
  126. flowfile/web/static/assets/{genericNodeSettings-0476ba4e.js → genericNodeSettings-99014e1d.js} +5 -5
  127. flowfile/web/static/assets/index-07dda503.js +38 -0
  128. flowfile/web/static/assets/index-3ba44389.js +2696 -0
  129. flowfile/web/static/assets/{index-50508d4d.css → index-e6289dd0.css} +1945 -569
  130. flowfile/web/static/assets/{index-246f201c.js → index-fb6493ae.js} +41626 -40869
  131. flowfile/web/static/assets/node.types-2c15bb7e.js +82 -0
  132. flowfile/web/static/assets/nodeInput-0eb13f1a.js +2 -0
  133. flowfile/web/static/assets/{outputCsv-d686eeaf.js → outputCsv-8f8ba42d.js} +3 -3
  134. flowfile/web/static/assets/outputCsv-b9a072af.css +2499 -0
  135. flowfile/web/static/assets/{outputExcel-8809ea2f.js → outputExcel-393f4fef.js} +3 -3
  136. flowfile/web/static/assets/{outputExcel-b41305c0.css → outputExcel-f5d272b2.css} +26 -26
  137. flowfile/web/static/assets/{outputParquet-53ba645a.js → outputParquet-07c81f65.js} +4 -4
  138. flowfile/web/static/assets/outputParquet-54597c3c.css +4 -0
  139. flowfile/web/static/assets/{readCsv-053bf97b.js → readCsv-07f6d9ad.js} +21 -20
  140. flowfile/web/static/assets/{readCsv-bca3ed53.css → readCsv-3bfac4c3.css} +15 -15
  141. flowfile/web/static/assets/{readExcel-e1b381ea.css → readExcel-3db6b763.css} +13 -13
  142. flowfile/web/static/assets/{readExcel-ad531eab.js → readExcel-ed69bc8f.js} +10 -12
  143. flowfile/web/static/assets/{readParquet-cee068e2.css → readParquet-c5244ad5.css} +4 -4
  144. flowfile/web/static/assets/{readParquet-58e899a1.js → readParquet-e3ed4528.js} +4 -7
  145. flowfile/web/static/assets/secrets.api-002e7d7e.js +65 -0
  146. flowfile/web/static/assets/{selectDynamic-b38de2ba.js → selectDynamic-80b92899.js} +5 -5
  147. flowfile/web/static/assets/{selectDynamic-aa913ff4.css → selectDynamic-f2fb394f.css} +21 -20
  148. flowfile/web/static/assets/{vue-codemirror.esm-db9b8936.js → vue-codemirror.esm-0965f39f.js} +31 -637
  149. flowfile/web/static/assets/{vue-content-loader.es-b5f3ac30.js → vue-content-loader.es-c506ad97.js} +1 -1
  150. flowfile/web/static/index.html +2 -2
  151. {flowfile-0.4.1.dist-info → flowfile-0.5.3.dist-info}/METADATA +4 -4
  152. flowfile-0.5.3.dist-info/RECORD +402 -0
  153. {flowfile-0.4.1.dist-info → flowfile-0.5.3.dist-info}/WHEEL +1 -1
  154. {flowfile-0.4.1.dist-info → flowfile-0.5.3.dist-info}/entry_points.txt +1 -0
  155. flowfile_core/__init__.py +13 -3
  156. flowfile_core/auth/jwt.py +51 -16
  157. flowfile_core/auth/models.py +32 -7
  158. flowfile_core/auth/password.py +89 -0
  159. flowfile_core/auth/secrets.py +8 -6
  160. flowfile_core/configs/__init__.py +9 -7
  161. flowfile_core/configs/flow_logger.py +15 -14
  162. flowfile_core/configs/node_store/__init__.py +72 -4
  163. flowfile_core/configs/node_store/nodes.py +155 -172
  164. flowfile_core/configs/node_store/user_defined_node_registry.py +108 -27
  165. flowfile_core/configs/settings.py +28 -15
  166. flowfile_core/database/connection.py +7 -6
  167. flowfile_core/database/init_db.py +96 -2
  168. flowfile_core/database/models.py +3 -1
  169. flowfile_core/fileExplorer/__init__.py +17 -0
  170. flowfile_core/fileExplorer/funcs.py +123 -57
  171. flowfile_core/fileExplorer/utils.py +10 -11
  172. flowfile_core/flowfile/_extensions/real_time_interface.py +10 -8
  173. flowfile_core/flowfile/analytics/analytics_processor.py +27 -24
  174. flowfile_core/flowfile/analytics/graphic_walker.py +11 -12
  175. flowfile_core/flowfile/analytics/utils.py +1 -1
  176. flowfile_core/flowfile/code_generator/code_generator.py +391 -279
  177. flowfile_core/flowfile/connection_manager/_connection_manager.py +6 -5
  178. flowfile_core/flowfile/connection_manager/models.py +1 -1
  179. flowfile_core/flowfile/database_connection_manager/db_connections.py +60 -44
  180. flowfile_core/flowfile/database_connection_manager/models.py +1 -1
  181. flowfile_core/flowfile/extensions.py +17 -12
  182. flowfile_core/flowfile/flow_data_engine/cloud_storage_reader.py +34 -32
  183. flowfile_core/flowfile/flow_data_engine/create/funcs.py +152 -103
  184. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +526 -477
  185. flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +2 -2
  186. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +92 -52
  187. flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +12 -11
  188. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +6 -6
  189. flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +26 -30
  190. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +43 -32
  191. flowfile_core/flowfile/flow_data_engine/join/__init__.py +1 -1
  192. flowfile_core/flowfile/flow_data_engine/join/utils.py +11 -9
  193. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +15 -11
  194. flowfile_core/flowfile/flow_data_engine/pivot_table.py +5 -7
  195. flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +95 -82
  196. flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +66 -65
  197. flowfile_core/flowfile/flow_data_engine/sample_data.py +27 -21
  198. flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +1 -1
  199. flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +13 -11
  200. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +360 -191
  201. flowfile_core/flowfile/flow_data_engine/threaded_processes.py +8 -8
  202. flowfile_core/flowfile/flow_data_engine/utils.py +101 -67
  203. flowfile_core/flowfile/flow_graph.py +1011 -561
  204. flowfile_core/flowfile/flow_graph_utils.py +31 -49
  205. flowfile_core/flowfile/flow_node/flow_node.py +332 -232
  206. flowfile_core/flowfile/flow_node/models.py +54 -41
  207. flowfile_core/flowfile/flow_node/schema_callback.py +14 -19
  208. flowfile_core/flowfile/graph_tree/graph_tree.py +41 -41
  209. flowfile_core/flowfile/handler.py +82 -32
  210. flowfile_core/flowfile/manage/compatibility_enhancements.py +493 -47
  211. flowfile_core/flowfile/manage/io_flowfile.py +391 -0
  212. flowfile_core/flowfile/node_designer/__init__.py +15 -13
  213. flowfile_core/flowfile/node_designer/_type_registry.py +34 -37
  214. flowfile_core/flowfile/node_designer/custom_node.py +162 -36
  215. flowfile_core/flowfile/node_designer/ui_components.py +136 -35
  216. flowfile_core/flowfile/schema_callbacks.py +77 -54
  217. flowfile_core/flowfile/setting_generator/__init__.py +0 -1
  218. flowfile_core/flowfile/setting_generator/setting_generator.py +6 -5
  219. flowfile_core/flowfile/setting_generator/settings.py +72 -55
  220. flowfile_core/flowfile/sources/external_sources/base_class.py +12 -10
  221. flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +27 -17
  222. flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +9 -9
  223. flowfile_core/flowfile/sources/external_sources/factory.py +0 -1
  224. flowfile_core/flowfile/sources/external_sources/sql_source/models.py +45 -31
  225. flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +198 -73
  226. flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +250 -196
  227. flowfile_core/flowfile/util/calculate_layout.py +9 -13
  228. flowfile_core/flowfile/util/execution_orderer.py +25 -17
  229. flowfile_core/flowfile/util/node_skipper.py +4 -4
  230. flowfile_core/flowfile/utils.py +19 -21
  231. flowfile_core/main.py +26 -19
  232. flowfile_core/routes/auth.py +284 -11
  233. flowfile_core/routes/cloud_connections.py +25 -25
  234. flowfile_core/routes/logs.py +21 -29
  235. flowfile_core/routes/public.py +3 -3
  236. flowfile_core/routes/routes.py +77 -43
  237. flowfile_core/routes/secrets.py +25 -27
  238. flowfile_core/routes/user_defined_components.py +483 -4
  239. flowfile_core/run_lock.py +0 -1
  240. flowfile_core/schemas/__init__.py +4 -6
  241. flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +55 -55
  242. flowfile_core/schemas/cloud_storage_schemas.py +59 -55
  243. flowfile_core/schemas/input_schema.py +398 -154
  244. flowfile_core/schemas/output_model.py +50 -35
  245. flowfile_core/schemas/schemas.py +207 -67
  246. flowfile_core/schemas/transform_schema.py +1360 -435
  247. flowfile_core/schemas/yaml_types.py +117 -0
  248. flowfile_core/secret_manager/secret_manager.py +17 -13
  249. flowfile_core/{flowfile/node_designer/data_types.py → types.py} +33 -3
  250. flowfile_core/utils/arrow_reader.py +7 -6
  251. flowfile_core/utils/excel_file_manager.py +3 -3
  252. flowfile_core/utils/fileManager.py +7 -7
  253. flowfile_core/utils/fl_executor.py +8 -10
  254. flowfile_core/utils/utils.py +4 -4
  255. flowfile_core/utils/validate_setup.py +5 -4
  256. flowfile_frame/__init__.py +107 -50
  257. flowfile_frame/adapters.py +2 -9
  258. flowfile_frame/adding_expr.py +73 -32
  259. flowfile_frame/cloud_storage/frame_helpers.py +27 -23
  260. flowfile_frame/cloud_storage/secret_manager.py +12 -26
  261. flowfile_frame/config.py +2 -5
  262. flowfile_frame/expr.py +311 -218
  263. flowfile_frame/expr.pyi +160 -159
  264. flowfile_frame/expr_name.py +23 -23
  265. flowfile_frame/flow_frame.py +581 -489
  266. flowfile_frame/flow_frame.pyi +123 -104
  267. flowfile_frame/flow_frame_methods.py +236 -252
  268. flowfile_frame/group_frame.py +50 -20
  269. flowfile_frame/join.py +2 -2
  270. flowfile_frame/lazy.py +129 -87
  271. flowfile_frame/lazy_methods.py +83 -30
  272. flowfile_frame/list_name_space.py +55 -50
  273. flowfile_frame/selectors.py +148 -68
  274. flowfile_frame/series.py +9 -7
  275. flowfile_frame/utils.py +19 -21
  276. flowfile_worker/__init__.py +12 -4
  277. flowfile_worker/configs.py +11 -19
  278. flowfile_worker/create/__init__.py +14 -27
  279. flowfile_worker/create/funcs.py +143 -94
  280. flowfile_worker/create/models.py +139 -68
  281. flowfile_worker/create/pl_types.py +14 -15
  282. flowfile_worker/create/read_excel_tables.py +34 -41
  283. flowfile_worker/create/utils.py +22 -19
  284. flowfile_worker/external_sources/s3_source/main.py +18 -51
  285. flowfile_worker/external_sources/s3_source/models.py +34 -27
  286. flowfile_worker/external_sources/sql_source/main.py +8 -5
  287. flowfile_worker/external_sources/sql_source/models.py +13 -9
  288. flowfile_worker/flow_logger.py +10 -8
  289. flowfile_worker/funcs.py +214 -155
  290. flowfile_worker/main.py +11 -17
  291. flowfile_worker/models.py +35 -28
  292. flowfile_worker/process_manager.py +2 -3
  293. flowfile_worker/routes.py +121 -93
  294. flowfile_worker/secrets.py +9 -6
  295. flowfile_worker/spawner.py +80 -49
  296. flowfile_worker/utils.py +3 -2
  297. shared/__init__.py +2 -7
  298. shared/storage_config.py +25 -13
  299. test_utils/postgres/commands.py +3 -2
  300. test_utils/postgres/fixtures.py +9 -9
  301. test_utils/s3/commands.py +1 -1
  302. test_utils/s3/data_generator.py +3 -4
  303. test_utils/s3/demo_data_generator.py +4 -7
  304. test_utils/s3/fixtures.py +7 -5
  305. tools/migrate/README.md +56 -0
  306. tools/migrate/__init__.py +12 -0
  307. tools/migrate/__main__.py +118 -0
  308. tools/migrate/legacy_schemas.py +682 -0
  309. tools/migrate/migrate.py +610 -0
  310. tools/migrate/tests/__init__.py +0 -0
  311. tools/migrate/tests/conftest.py +21 -0
  312. tools/migrate/tests/test_migrate.py +622 -0
  313. tools/migrate/tests/test_migration_e2e.py +1009 -0
  314. tools/migrate/tests/test_node_migrations.py +843 -0
  315. flowfile/web/static/assets/CloudConnectionManager-2dfdce2f.css +0 -86
  316. flowfile/web/static/assets/CustomNode-74a37f74.css +0 -32
  317. flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -64
  318. flowfile/web/static/assets/Filter-812dcbca.js +0 -164
  319. flowfile/web/static/assets/Filter-f62091b3.css +0 -20
  320. flowfile/web/static/assets/ManualInput-3246a08d.css +0 -96
  321. flowfile/web/static/assets/PivotValidation-891ddfb0.css +0 -13
  322. flowfile/web/static/assets/PivotValidation-c46cd420.css +0 -13
  323. flowfile/web/static/assets/SliderInput-b8fb6a8c.css +0 -4
  324. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +0 -13
  325. flowfile/web/static/assets/outputCsv-9cc59e0b.css +0 -2499
  326. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +0 -4
  327. flowfile/web/static/assets/secretApi-538058f3.js +0 -46
  328. flowfile/web/static/assets/vue-codemirror-bccfde04.css +0 -32
  329. flowfile-0.4.1.dist-info/RECORD +0 -376
  330. flowfile_core/flowfile/manage/open_flowfile.py +0 -143
  331. {flowfile-0.4.1.dist-info → flowfile-0.5.3.dist-info}/licenses/LICENSE +0 -0
  332. /flowfile_core/flowfile/manage/manage_flowfile.py → /tools/__init__.py +0 -0
flowfile_frame/expr.pyi CHANGED
@@ -2,33 +2,34 @@
2
2
  # DO NOT MODIFY THIS FILE MANUALLY
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, List, Optional, Union, TypeVar, TYPE_CHECKING
5
+ from typing import TYPE_CHECKING, Any, TypeVar, Union
6
+
6
7
  import polars as pl
7
- from polars.expr.expr import Expr as PolarsExpr
8
- from polars.expr.string import ExprStringNameSpace
9
8
 
10
9
  if TYPE_CHECKING:
11
10
  from collections.abc import Iterable
12
11
  from io import IOBase
13
- from polars import DataFrame, LazyFrame, Series
12
+
13
+ from polars import Series
14
14
  from polars._typing import *
15
15
 
16
16
  if sys.version_info >= (3, 11):
17
17
  from typing import Concatenate, ParamSpec
18
18
  else:
19
- from typing_extensions import Concatenate, ParamSpec
19
+ from typing import Concatenate
20
+
21
+ from typing_extensions import ParamSpec
20
22
  T = TypeVar('T')
21
23
  P = ParamSpec('P')
22
24
  from flowfile_core.schemas import transform_schema
23
- import flowfile_frame
24
- from flowfile_frame.selectors import Selector
25
25
  from flowfile_frame.expr_name import ExprNameNameSpace
26
+ from flowfile_frame.selectors import Selector
26
27
 
27
28
  # Define NoneType to handle type hints with None
28
29
  NoneType = type(None)
29
30
 
30
31
  ExprOrStr = Union['Expr', str]
31
- ExprOrStrList = List[ExprOrStr]
32
+ ExprOrStrList = list[ExprOrStr]
32
33
  ExprStrOrList = Union[ExprOrStr, ExprOrStrList]
33
34
 
34
35
  class StringMethods:
@@ -40,9 +41,9 @@ class StringMethods:
40
41
 
41
42
  def __getattr__(self, name) -> Any: ...
42
43
 
43
- def __init__(self, parent_expr: 'Expr', parent_repr_str: str, convertable_to_code: bool=True, _function_sources: Optional[List[str]]=None) -> Any: ...
44
+ def __init__(self, parent_expr: Expr, parent_repr_str: str, convertable_to_code: bool=True, _function_sources: list[str] | None=None) -> Any: ...
44
45
 
45
- def _create_next_expr(self, *args, method_name: str, result_expr: Optional[pl.Expr], is_complex: bool, convertable_to_code: bool=None, **kwargs) -> 'Expr': ...
46
+ def _create_next_expr(self, *args, method_name: str, result_expr: pl.Expr | None, is_complex: bool, convertable_to_code: bool=None, **kwargs) -> Expr: ...
46
47
 
47
48
  def contains(self, pattern, literal=False) -> Any: ...
48
49
 
@@ -56,11 +57,11 @@ class StringMethods:
56
57
 
57
58
  def starts_with(self, prefix) -> Any: ...
58
59
 
59
- def strptime(self, dtype: PolarsTemporalType, format: str | None=None, strict: bool=True, exact: bool=True, cache: bool=True, ambiguous: Literal['earliest', 'latest', 'raise', 'null'] | Expr='raise') -> 'Expr': ...
60
+ def strptime(self, dtype: PolarsTemporalType, format: str | None=None, strict: bool=True, exact: bool=True, cache: bool=True, ambiguous: Literal[earliest, latest, 'raise', null] | Expr='raise') -> Expr: ...
60
61
 
61
62
  def to_date(self, format: str, strict: bool=True, exact: bool=True, cache: bool=True) -> Any: ...
62
63
 
63
- def to_datetime(self, format: str | None=None, time_unit: Literal['ns', 'us', 'ms'] | None=None, time_zone: str | None=None, strict: bool=True, exact: bool=True, cache: bool=True, ambiguous: Literal['earliest', 'latest', 'raise', 'null'] | Expr='raise') -> 'Expr': ...
64
+ def to_datetime(self, format: str | None=None, time_unit: Literal[ns, us, ms] | None=None, time_zone: str | None=None, strict: bool=True, exact: bool=True, cache: bool=True, ambiguous: Literal[earliest, latest, 'raise', null] | Expr='raise') -> Expr: ...
64
65
 
65
66
  def to_lowercase(self, ) -> Any: ...
66
67
 
@@ -78,9 +79,9 @@ class DateTimeMethods:
78
79
 
79
80
  def __getattr__(self, name) -> Any: ...
80
81
 
81
- def __init__(self, parent_expr: 'Expr', parent_repr_str: str, convertable_to_code: bool=True, _function_sources: Optional[List[str]]=None) -> Any: ...
82
+ def __init__(self, parent_expr: Expr, parent_repr_str: str, convertable_to_code: bool=True, _function_sources: list[str] | None=None) -> Any: ...
82
83
 
83
- def _create_next_expr(self, method_name: str, result_expr: Optional[pl.Expr], convertable_to_code: bool=None, *args, **kwargs) -> 'Expr': ...
84
+ def _create_next_expr(self, method_name: str, result_expr: pl.Expr | None, convertable_to_code: bool=None, *args, **kwargs) -> Expr: ...
84
85
 
85
86
  def day(self, ) -> Any: ...
86
87
 
@@ -109,37 +110,37 @@ class Expr:
109
110
  __doc__: Any
110
111
  __hash__: Any
111
112
 
112
- def __add__(self, other) -> 'Expr': ...
113
+ def __add__(self, other) -> Expr: ...
113
114
 
114
- def __and__(self, other) -> 'Expr': ...
115
+ def __and__(self, other) -> Expr: ...
115
116
 
116
- def __eq__(self, other) -> 'Expr': ...
117
+ def __eq__(self, other) -> Expr: ...
117
118
 
118
- def __floordiv__(self, other) -> 'Expr': ...
119
+ def __floordiv__(self, other) -> Expr: ...
119
120
 
120
- def __ge__(self, other) -> 'Expr': ...
121
+ def __ge__(self, other) -> Expr: ...
121
122
 
122
- def __gt__(self, other) -> 'Expr': ...
123
+ def __gt__(self, other) -> Expr: ...
123
124
 
124
- def __init__(self, expr: Optional[pl.Expr], column_name: Optional[str]=None, repr_str: Optional[str]=None, initial_column_name: Optional[str]=None, selector: Optional['Selector']=None, agg_func: Optional[str]=None, ddof: Optional[int]=None, is_complex: bool=False, convertable_to_code: bool=True, _function_sources: Optional[List[str]]=None) -> Any: ...
125
+ def __init__(self, expr: pl.Expr | None, column_name: str | None=None, repr_str: str | None=None, initial_column_name: str | None=None, selector: Selector | None=None, agg_func: str | None=None, ddof: int | None=None, is_complex: bool=False, convertable_to_code: bool=True, _function_sources: list[str] | None=None) -> Any: ...
125
126
 
126
- def __invert__(self, ) -> 'Expr': ...
127
+ def __invert__(self, ) -> Expr: ...
127
128
 
128
- def __le__(self, other) -> 'Expr': ...
129
+ def __le__(self, other) -> Expr: ...
129
130
 
130
- def __lt__(self, other) -> 'Expr': ...
131
+ def __lt__(self, other) -> Expr: ...
131
132
 
132
- def __mod__(self, other) -> 'Expr': ...
133
+ def __mod__(self, other) -> Expr: ...
133
134
 
134
- def __mul__(self, other) -> 'Expr': ...
135
+ def __mul__(self, other) -> Expr: ...
135
136
 
136
- def __ne__(self, other) -> 'Expr': ...
137
+ def __ne__(self, other) -> Expr: ...
137
138
 
138
- def __neg__(self, ) -> 'Expr': ...
139
+ def __neg__(self, ) -> Expr: ...
139
140
 
140
- def __or__(self, other) -> 'Expr': ...
141
+ def __or__(self, other) -> Expr: ...
141
142
 
142
- def __pow__(self, exponent) -> 'Expr': ...
143
+ def __pow__(self, exponent) -> Expr: ...
143
144
 
144
145
  def __radd__(self, other) -> Any: ...
145
146
 
@@ -157,15 +158,15 @@ class Expr:
157
158
 
158
159
  def __rtruediv__(self, other) -> Any: ...
159
160
 
160
- def __sub__(self, other) -> 'Expr': ...
161
+ def __sub__(self, other) -> Expr: ...
161
162
 
162
- def __truediv__(self, other) -> 'Expr': ...
163
+ def __truediv__(self, other) -> Expr: ...
163
164
 
164
165
  # Creates a new Expr for binary operations.
165
- def _create_binary_op_expr(self, op_symbol: str, other: Any, result_expr: Optional[pl.Expr]) -> 'Expr': ...
166
+ def _create_binary_op_expr(self, op_symbol: str, other: Any, result_expr: pl.Expr | None) -> Expr: ...
166
167
 
167
168
  # Creates a new Expr instance, appending method call to repr string.
168
- def _create_next_expr(self, *args, method_name: str, result_expr: Optional[pl.Expr], convertable_to_code: bool=None, is_complex: bool, _function_sources: Optional[List[str]]=None, **kwargs) -> 'Expr': ...
169
+ def _create_next_expr(self, *args, method_name: str, result_expr: pl.Expr | None, convertable_to_code: bool=None, is_complex: bool, _function_sources: list[str] | None=None, **kwargs) -> Expr: ...
169
170
 
170
171
  # Helper to get appropriate string representation for an expression
171
172
  def _get_expr_repr(self, expr) -> Any: ...
@@ -180,7 +181,7 @@ class Expr:
180
181
  def agg_groups(self, ) -> Expr: ...
181
182
 
182
183
  # Rename the expression result.
183
- def alias(self, name) -> 'Expr': ...
184
+ def alias(self, name) -> Expr: ...
184
185
 
185
186
  # Return whether all values in the column are `True`.
186
187
  def all(self, ignore_nulls: bool=True) -> Expr: ...
@@ -221,12 +222,12 @@ class Expr:
221
222
  # Get the index of the minimal value.
222
223
  def arg_min(self, ) -> Expr: ...
223
224
 
224
- def arg_sort(self, descending: bool=False, nulls_last: bool=False) -> 'Expr': ...
225
+ def arg_sort(self, descending: bool=False, nulls_last: bool=False) -> Expr: ...
225
226
 
226
227
  # Return indices where expression evaluates `True`.
227
228
  def arg_true(self, ) -> Expr: ...
228
229
 
229
- def arg_unique(self, ) -> 'Expr': ...
230
+ def arg_unique(self, ) -> Expr: ...
230
231
 
231
232
  # Fill missing values with the next non-null value.
232
233
  def backward_fill(self, limit: int | None=None) -> Expr: ...
@@ -265,7 +266,7 @@ class Expr:
265
266
  def bottom_k_by(self, by: IntoExpr | Iterable[IntoExpr], k: int | IntoExprColumn=5, reverse: bool | Sequence[bool]=False) -> Expr: ...
266
267
 
267
268
  # Casts the Expr to a specified data type.
268
- def cast(self, dtype: Union[pl.DataType, str, pl.datatypes.classes.DataTypeClass], strict=True) -> 'Expr': ...
269
+ def cast(self, dtype: pl.DataType | str | pl.datatypes.classes.DataTypeClass, strict=True) -> Expr: ...
269
270
 
270
271
  # Compute the cube root of the elements.
271
272
  def cbrt(self, ) -> Expr: ...
@@ -285,10 +286,10 @@ class Expr:
285
286
  # Compute the element-wise value for the cotangent.
286
287
  def cot(self, ) -> Expr: ...
287
288
 
288
- def count(self, ) -> 'Expr': ...
289
+ def count(self, ) -> Expr: ...
289
290
 
290
291
  # Return the cumulative count of the non-null values in the column.
291
- def cum_count(self, reverse: bool=False) -> 'Expr': ...
292
+ def cum_count(self, reverse: bool=False) -> Expr: ...
292
293
 
293
294
  # Get an array with the cumulative max computed at every element.
294
295
  def cum_max(self, reverse: bool=False) -> Expr: ...
@@ -358,14 +359,14 @@ class Expr:
358
359
  # Extremely fast method for extending the Series with 'n' copies of a value.
359
360
  def extend_constant(self, value: IntoExpr, n: int | IntoExprColumn) -> Expr: ...
360
361
 
361
- def fill_nan(self, value) -> 'Expr': ...
362
+ def fill_nan(self, value) -> Expr: ...
362
363
 
363
- def fill_null(self, value) -> 'Expr': ...
364
+ def fill_null(self, value) -> Expr: ...
364
365
 
365
366
  # Filter expression
366
- def filter(self, *predicates, **constraints) -> 'Expr': ...
367
+ def filter(self, *predicates, **constraints) -> Expr: ...
367
368
 
368
- def first(self, ) -> 'Expr': ...
369
+ def first(self, ) -> Expr: ...
369
370
 
370
371
  # Flatten a list or string column.
371
372
  def flatten(self, ) -> Expr: ...
@@ -452,9 +453,9 @@ class Expr:
452
453
  # Returns a boolean Series indicating which values are not NaN.
453
454
  def is_not_nan(self, ) -> Expr: ...
454
455
 
455
- def is_not_null(self, ) -> 'Expr': ...
456
+ def is_not_null(self, ) -> Expr: ...
456
457
 
457
- def is_null(self, ) -> 'Expr': ...
458
+ def is_null(self, ) -> Expr: ...
458
459
 
459
460
  # Get mask of unique values.
460
461
  def is_unique(self, ) -> Expr: ...
@@ -462,7 +463,7 @@ class Expr:
462
463
  # Compute the kurtosis (Fisher or Pearson) of a dataset.
463
464
  def kurtosis(self, fisher: bool=True, bias: bool=True) -> Expr: ...
464
465
 
465
- def last(self, ) -> 'Expr': ...
466
+ def last(self, ) -> Expr: ...
466
467
 
467
468
  # Method equivalent of "less than or equal" operator `expr <= other`.
468
469
  def le(self, other: Any) -> Expr: ...
@@ -494,13 +495,13 @@ class Expr:
494
495
  # Map a custom/user-defined function (UDF) to each element of a column.
495
496
  def map_elements(self, function: Callable[[Any], Any], return_dtype: PolarsDataType | None=None, skip_nulls: bool=True, pass_name: bool=False, strategy: MapElementsStrategy='thread_local', returns_scalar: bool=False) -> Expr: ...
496
497
 
497
- def max(self, ) -> 'Expr': ...
498
+ def max(self, ) -> Expr: ...
498
499
 
499
- def mean(self, ) -> 'Expr': ...
500
+ def mean(self, ) -> Expr: ...
500
501
 
501
502
  def median(self, ) -> Any: ...
502
503
 
503
- def min(self, ) -> 'Expr': ...
504
+ def min(self, ) -> Expr: ...
504
505
 
505
506
  # Method equivalent of modulus operator `expr % other`.
506
507
  def mod(self, other: Any) -> Expr: ...
@@ -538,7 +539,7 @@ class Expr:
538
539
  def or_(self, *others) -> Expr: ...
539
540
 
540
541
  # Compute expressions over the given groups.
541
- def over(self, partition_by: ExprStrOrList, *more_exprs, order_by: Optional[ExprStrOrList]=None, descending: bool=False, nulls_last: bool=False, mapping_strategy: Literal['group_to_rows', 'join', 'explode']='group_to_rows') -> 'Expr': ...
542
+ def over(self, partition_by: ExprStrOrList, *more_exprs, order_by: ExprStrOrList | None=None, descending: bool=False, nulls_last: bool=False, mapping_strategy: Literal[group_to_rows, join, explode]='group_to_rows') -> Expr: ...
542
543
 
543
544
  # Computes percentage change between values.
544
545
  def pct_change(self, n: int | IntoExprColumn=1) -> Expr: ...
@@ -699,7 +700,7 @@ class Expr:
699
700
  # Get a slice of this expression.
700
701
  def slice(self, offset: int | Expr, length: int | Expr | None=None) -> Expr: ...
701
702
 
702
- def sort(self, descending=False, nulls_last=False) -> 'Expr': ...
703
+ def sort(self, descending=False, nulls_last=False) -> Expr: ...
703
704
 
704
705
  # Sort this column by the ordering of other columns.
705
706
  def sort_by(self, by: IntoExpr | Iterable[IntoExpr], *more_by, descending: bool | Sequence[bool]=False, nulls_last: bool | Sequence[bool]=False, multithreaded: bool=True, maintain_order: bool=False) -> Expr: ...
@@ -712,7 +713,7 @@ class Expr:
712
713
  # Method equivalent of subtraction operator `expr - other`.
713
714
  def sub(self, other: Any) -> Expr: ...
714
715
 
715
- def sum(self, ) -> 'Expr': ...
716
+ def sum(self, ) -> Expr: ...
716
717
 
717
718
  # Get the last `n` rows.
718
719
  def tail(self, n: int | Expr=10) -> Expr: ...
@@ -755,59 +756,59 @@ class Expr:
755
756
  # Method equivalent of bitwise exclusive-or operator `expr ^ other`.
756
757
  def xor(self, other: Any) -> Expr: ...
757
758
 
758
- def __pos__(self, *args, **kwargs) -> 'Expr': ...
759
+ def __pos__(self, *args, **kwargs) -> Expr: ...
759
760
 
760
- def __rxor__(self, *args, **kwargs) -> 'Expr': ...
761
+ def __rxor__(self, *args, **kwargs) -> Expr: ...
761
762
 
762
- def __sizeof__(self, *args, **kwargs) -> 'Expr': ...
763
+ def __sizeof__(self, *args, **kwargs) -> Expr: ...
763
764
 
764
- def __init_subclass__(self, *args, **kwargs) -> 'Expr': ...
765
+ def __init_subclass__(self, *args, **kwargs) -> Expr: ...
765
766
 
766
- def __new__(self, *args, **kwargs) -> 'Expr': ...
767
+ def __new__(self, *args, **kwargs) -> Expr: ...
767
768
 
768
- def __reduce__(self, *args, **kwargs) -> 'Expr': ...
769
+ def __reduce__(self, *args, **kwargs) -> Expr: ...
769
770
 
770
- def __setattr__(self, *args, **kwargs) -> 'Expr': ...
771
+ def __setattr__(self, *args, **kwargs) -> Expr: ...
771
772
 
772
- def __subclasshook__(self, *args, **kwargs) -> 'Expr': ...
773
+ def __subclasshook__(self, *args, **kwargs) -> Expr: ...
773
774
 
774
- def _skip_batch_predicate(self, *args, **kwargs) -> 'Expr': ...
775
+ def _skip_batch_predicate(self, *args, **kwargs) -> Expr: ...
775
776
 
776
- def __getattribute__(self, *args, **kwargs) -> 'Expr': ...
777
+ def __getattribute__(self, *args, **kwargs) -> Expr: ...
777
778
 
778
- def __class__(self, *args, **kwargs) -> 'Expr': ...
779
+ def __class__(self, *args, **kwargs) -> Expr: ...
779
780
 
780
- def _from_pyexpr(self, *args, **kwargs) -> 'Expr': ...
781
+ def _from_pyexpr(self, *args, **kwargs) -> Expr: ...
781
782
 
782
- def __bool__(self, *args, **kwargs) -> 'Expr': ...
783
+ def __bool__(self, *args, **kwargs) -> Expr: ...
783
784
 
784
- def __setstate__(self, *args, **kwargs) -> 'Expr': ...
785
+ def __setstate__(self, *args, **kwargs) -> Expr: ...
785
786
 
786
- def __format__(self, *args, **kwargs) -> 'Expr': ...
787
+ def __format__(self, *args, **kwargs) -> Expr: ...
787
788
 
788
- def __getstate__(self, *args, **kwargs) -> 'Expr': ...
789
+ def __getstate__(self, *args, **kwargs) -> Expr: ...
789
790
 
790
- def __array_ufunc__(self, *args, **kwargs) -> 'Expr': ...
791
+ def __array_ufunc__(self, *args, **kwargs) -> Expr: ...
791
792
 
792
- def __xor__(self, *args, **kwargs) -> 'Expr': ...
793
+ def __xor__(self, *args, **kwargs) -> Expr: ...
793
794
 
794
- def __reduce_ex__(self, *args, **kwargs) -> 'Expr': ...
795
+ def __reduce_ex__(self, *args, **kwargs) -> Expr: ...
795
796
 
796
- def _repr_html_(self, *args, **kwargs) -> 'Expr': ...
797
+ def _repr_html_(self, *args, **kwargs) -> Expr: ...
797
798
 
798
- def __dir__(self, *args, **kwargs) -> 'Expr': ...
799
+ def __dir__(self, *args, **kwargs) -> Expr: ...
799
800
 
800
- def __abs__(self, *args, **kwargs) -> 'Expr': ...
801
+ def __abs__(self, *args, **kwargs) -> Expr: ...
801
802
 
802
- def __ror__(self, *args, **kwargs) -> 'Expr': ...
803
+ def __ror__(self, *args, **kwargs) -> Expr: ...
803
804
 
804
- def _map_batches_wrapper(self, *args, **kwargs) -> 'Expr': ...
805
+ def _map_batches_wrapper(self, *args, **kwargs) -> Expr: ...
805
806
 
806
- def __rand__(self, *args, **kwargs) -> 'Expr': ...
807
+ def __rand__(self, *args, **kwargs) -> Expr: ...
807
808
 
808
- def __str__(self, *args, **kwargs) -> 'Expr': ...
809
+ def __str__(self, *args, **kwargs) -> Expr: ...
809
810
 
810
- def __delattr__(self, *args, **kwargs) -> 'Expr': ...
811
+ def __delattr__(self, *args, **kwargs) -> Expr: ...
811
812
 
812
813
 
813
814
  class Column(Expr):
@@ -820,37 +821,37 @@ class Column(Expr):
820
821
  __annotations__: Any
821
822
  __doc__: Any
822
823
 
823
- def __add__(self, other) -> 'Column': ...
824
+ def __add__(self, other) -> Column: ...
824
825
 
825
- def __and__(self, other) -> 'Expr': ...
826
+ def __and__(self, other) -> Expr: ...
826
827
 
827
- def __eq__(self, other) -> 'Column': ...
828
+ def __eq__(self, other) -> Column: ...
828
829
 
829
- def __floordiv__(self, other) -> 'Column': ...
830
+ def __floordiv__(self, other) -> Column: ...
830
831
 
831
- def __ge__(self, other) -> 'Expr': ...
832
+ def __ge__(self, other) -> Expr: ...
832
833
 
833
- def __gt__(self, other) -> 'Column': ...
834
+ def __gt__(self, other) -> Column: ...
834
835
 
835
- def __init__(self, name: str, select_input: Optional[transform_schema.SelectInput]=None) -> Any: ...
836
+ def __init__(self, name: str, select_input: transform_schema.SelectInput | None=None) -> Any: ...
836
837
 
837
- def __invert__(self, ) -> 'Expr': ...
838
+ def __invert__(self, ) -> Expr: ...
838
839
 
839
- def __le__(self, other) -> 'Expr': ...
840
+ def __le__(self, other) -> Expr: ...
840
841
 
841
- def __lt__(self, other) -> 'Column': ...
842
+ def __lt__(self, other) -> Column: ...
842
843
 
843
- def __mod__(self, other) -> 'Column': ...
844
+ def __mod__(self, other) -> Column: ...
844
845
 
845
- def __mul__(self, other) -> 'Column': ...
846
+ def __mul__(self, other) -> Column: ...
846
847
 
847
- def __ne__(self, other) -> 'Column': ...
848
+ def __ne__(self, other) -> Column: ...
848
849
 
849
- def __neg__(self, ) -> 'Expr': ...
850
+ def __neg__(self, ) -> Expr: ...
850
851
 
851
- def __or__(self, other) -> 'Expr': ...
852
+ def __or__(self, other) -> Expr: ...
852
853
 
853
- def __pow__(self, exponent) -> 'Column': ...
854
+ def __pow__(self, exponent) -> Column: ...
854
855
 
855
856
  def __radd__(self, other) -> Any: ...
856
857
 
@@ -868,15 +869,15 @@ class Column(Expr):
868
869
 
869
870
  def __rtruediv__(self, other) -> Any: ...
870
871
 
871
- def __sub__(self, other) -> 'Column': ...
872
+ def __sub__(self, other) -> Column: ...
872
873
 
873
- def __truediv__(self, other) -> 'Column': ...
874
+ def __truediv__(self, other) -> Column: ...
874
875
 
875
876
  # Creates a new Expr for binary operations.
876
- def _create_binary_op_expr(self, op_symbol: str, other: Any, result_expr: Optional[pl.Expr]) -> 'Expr': ...
877
+ def _create_binary_op_expr(self, op_symbol: str, other: Any, result_expr: pl.Expr | None) -> Expr: ...
877
878
 
878
879
  # Creates a new Expr instance, appending method call to repr string.
879
- def _create_next_expr(self, *args, method_name: str, result_expr: Optional[pl.Expr], convertable_to_code: bool=None, is_complex: bool, _function_sources: Optional[List[str]]=None, **kwargs) -> 'Expr': ...
880
+ def _create_next_expr(self, *args, method_name: str, result_expr: pl.Expr | None, convertable_to_code: bool=None, is_complex: bool, _function_sources: list[str] | None=None, **kwargs) -> Expr: ...
880
881
 
881
882
  # Helper to get appropriate string representation for an expression
882
883
  def _get_expr_repr(self, expr) -> Any: ...
@@ -891,7 +892,7 @@ class Column(Expr):
891
892
  def agg_groups(self, ) -> Expr: ...
892
893
 
893
894
  # Rename a column, returning a new Column instance.
894
- def alias(self, new_name: str) -> 'Column': ...
895
+ def alias(self, new_name: str) -> Column: ...
895
896
 
896
897
  # Return whether all values in the column are `True`.
897
898
  def all(self, ignore_nulls: bool=True) -> Expr: ...
@@ -932,12 +933,12 @@ class Column(Expr):
932
933
  # Get the index of the minimal value.
933
934
  def arg_min(self, ) -> Expr: ...
934
935
 
935
- def arg_sort(self, descending: bool=False, nulls_last: bool=False) -> 'Expr': ...
936
+ def arg_sort(self, descending: bool=False, nulls_last: bool=False) -> Expr: ...
936
937
 
937
938
  # Return indices where expression evaluates `True`.
938
939
  def arg_true(self, ) -> Expr: ...
939
940
 
940
- def arg_unique(self, ) -> 'Expr': ...
941
+ def arg_unique(self, ) -> Expr: ...
941
942
 
942
943
  # Fill missing values with the next non-null value.
943
944
  def backward_fill(self, limit: int | None=None) -> Expr: ...
@@ -976,7 +977,7 @@ class Column(Expr):
976
977
  def bottom_k_by(self, by: IntoExpr | Iterable[IntoExpr], k: int | IntoExprColumn=5, reverse: bool | Sequence[bool]=False) -> Expr: ...
977
978
 
978
979
  # Change the data type of a column, returning a new Column instance.
979
- def cast(self, dtype: Union[pl.DataType, str, pl.datatypes.classes.DataTypeClass], strict=True) -> 'Column': ...
980
+ def cast(self, dtype: pl.DataType | str | pl.datatypes.classes.DataTypeClass, strict=True) -> Column: ...
980
981
 
981
982
  # Compute the cube root of the elements.
982
983
  def cbrt(self, ) -> Expr: ...
@@ -996,10 +997,10 @@ class Column(Expr):
996
997
  # Compute the element-wise value for the cotangent.
997
998
  def cot(self, ) -> Expr: ...
998
999
 
999
- def count(self, ) -> 'Column': ...
1000
+ def count(self, ) -> Column: ...
1000
1001
 
1001
1002
  # Return the cumulative count of the non-null values in the column.
1002
- def cum_count(self, reverse: bool=False) -> 'Expr': ...
1003
+ def cum_count(self, reverse: bool=False) -> Expr: ...
1003
1004
 
1004
1005
  # Get an array with the cumulative max computed at every element.
1005
1006
  def cum_max(self, reverse: bool=False) -> Expr: ...
@@ -1069,14 +1070,14 @@ class Column(Expr):
1069
1070
  # Extremely fast method for extending the Series with 'n' copies of a value.
1070
1071
  def extend_constant(self, value: IntoExpr, n: int | IntoExprColumn) -> Expr: ...
1071
1072
 
1072
- def fill_nan(self, value) -> 'Column': ...
1073
+ def fill_nan(self, value) -> Column: ...
1073
1074
 
1074
- def fill_null(self, value) -> 'Column': ...
1075
+ def fill_null(self, value) -> Column: ...
1075
1076
 
1076
1077
  # Filter expression
1077
- def filter(self, *predicates, **constraints) -> 'Expr': ...
1078
+ def filter(self, *predicates, **constraints) -> Expr: ...
1078
1079
 
1079
- def first(self, ) -> 'Column': ...
1080
+ def first(self, ) -> Column: ...
1080
1081
 
1081
1082
  # Flatten a list or string column.
1082
1083
  def flatten(self, ) -> Expr: ...
@@ -1163,9 +1164,9 @@ class Column(Expr):
1163
1164
  # Returns a boolean Series indicating which values are not NaN.
1164
1165
  def is_not_nan(self, ) -> Expr: ...
1165
1166
 
1166
- def is_not_null(self, ) -> 'Column': ...
1167
+ def is_not_null(self, ) -> Column: ...
1167
1168
 
1168
- def is_null(self, ) -> 'Column': ...
1169
+ def is_null(self, ) -> Column: ...
1169
1170
 
1170
1171
  # Get mask of unique values.
1171
1172
  def is_unique(self, ) -> Expr: ...
@@ -1173,7 +1174,7 @@ class Column(Expr):
1173
1174
  # Compute the kurtosis (Fisher or Pearson) of a dataset.
1174
1175
  def kurtosis(self, fisher: bool=True, bias: bool=True) -> Expr: ...
1175
1176
 
1176
- def last(self, ) -> 'Column': ...
1177
+ def last(self, ) -> Column: ...
1177
1178
 
1178
1179
  # Method equivalent of "less than or equal" operator `expr <= other`.
1179
1180
  def le(self, other: Any) -> Expr: ...
@@ -1205,13 +1206,13 @@ class Column(Expr):
1205
1206
  # Map a custom/user-defined function (UDF) to each element of a column.
1206
1207
  def map_elements(self, function: Callable[[Any], Any], return_dtype: PolarsDataType | None=None, skip_nulls: bool=True, pass_name: bool=False, strategy: MapElementsStrategy='thread_local', returns_scalar: bool=False) -> Expr: ...
1207
1208
 
1208
- def max(self, ) -> 'Column': ...
1209
+ def max(self, ) -> Column: ...
1209
1210
 
1210
- def mean(self, ) -> 'Column': ...
1211
+ def mean(self, ) -> Column: ...
1211
1212
 
1212
1213
  def median(self, ) -> Any: ...
1213
1214
 
1214
- def min(self, ) -> 'Column': ...
1215
+ def min(self, ) -> Column: ...
1215
1216
 
1216
1217
  # Method equivalent of modulus operator `expr % other`.
1217
1218
  def mod(self, other: Any) -> Expr: ...
@@ -1249,7 +1250,7 @@ class Column(Expr):
1249
1250
  def or_(self, *others) -> Expr: ...
1250
1251
 
1251
1252
  # Compute expressions over the given groups.
1252
- def over(self, partition_by: ExprStrOrList, *more_exprs, order_by: Optional[ExprStrOrList]=None, descending: bool=False, nulls_last: bool=False, mapping_strategy: Literal['group_to_rows', 'join', 'explode']='group_to_rows') -> 'Expr': ...
1253
+ def over(self, partition_by: ExprStrOrList, *more_exprs, order_by: ExprStrOrList | None=None, descending: bool=False, nulls_last: bool=False, mapping_strategy: Literal[group_to_rows, join, explode]='group_to_rows') -> Expr: ...
1253
1254
 
1254
1255
  # Computes percentage change between values.
1255
1256
  def pct_change(self, n: int | IntoExprColumn=1) -> Expr: ...
@@ -1410,7 +1411,7 @@ class Column(Expr):
1410
1411
  # Get a slice of this expression.
1411
1412
  def slice(self, offset: int | Expr, length: int | Expr | None=None) -> Expr: ...
1412
1413
 
1413
- def sort(self, descending=False, nulls_last=False) -> 'Column': ...
1414
+ def sort(self, descending=False, nulls_last=False) -> Column: ...
1414
1415
 
1415
1416
  # Sort this column by the ordering of other columns.
1416
1417
  def sort_by(self, by: IntoExpr | Iterable[IntoExpr], *more_by, descending: bool | Sequence[bool]=False, nulls_last: bool | Sequence[bool]=False, multithreaded: bool=True, maintain_order: bool=False) -> Expr: ...
@@ -1423,7 +1424,7 @@ class Column(Expr):
1423
1424
  # Method equivalent of subtraction operator `expr - other`.
1424
1425
  def sub(self, other: Any) -> Expr: ...
1425
1426
 
1426
- def sum(self, ) -> 'Column': ...
1427
+ def sum(self, ) -> Column: ...
1427
1428
 
1428
1429
  # Get the last `n` rows.
1429
1430
  def tail(self, n: int | Expr=10) -> Expr: ...
@@ -1480,38 +1481,38 @@ class When(Expr):
1480
1481
  __doc__: Any
1481
1482
  __annotations__: Any
1482
1483
 
1483
- def __add__(self, other) -> 'When': ...
1484
+ def __add__(self, other) -> When: ...
1484
1485
 
1485
- def __and__(self, other) -> 'Expr': ...
1486
+ def __and__(self, other) -> Expr: ...
1486
1487
 
1487
- def __eq__(self, other) -> 'When': ...
1488
+ def __eq__(self, other) -> When: ...
1488
1489
 
1489
- def __floordiv__(self, other) -> 'When': ...
1490
+ def __floordiv__(self, other) -> When: ...
1490
1491
 
1491
- def __ge__(self, other) -> 'Expr': ...
1492
+ def __ge__(self, other) -> Expr: ...
1492
1493
 
1493
- def __gt__(self, other) -> 'When': ...
1494
+ def __gt__(self, other) -> When: ...
1494
1495
 
1495
1496
  # Initialize a When expression with a condition.
1496
1497
  def __init__(self, condition) -> Any: ...
1497
1498
 
1498
- def __invert__(self, ) -> 'Expr': ...
1499
+ def __invert__(self, ) -> Expr: ...
1499
1500
 
1500
- def __le__(self, other) -> 'Expr': ...
1501
+ def __le__(self, other) -> Expr: ...
1501
1502
 
1502
- def __lt__(self, other) -> 'When': ...
1503
+ def __lt__(self, other) -> When: ...
1503
1504
 
1504
- def __mod__(self, other) -> 'When': ...
1505
+ def __mod__(self, other) -> When: ...
1505
1506
 
1506
- def __mul__(self, other) -> 'When': ...
1507
+ def __mul__(self, other) -> When: ...
1507
1508
 
1508
- def __ne__(self, other) -> 'When': ...
1509
+ def __ne__(self, other) -> When: ...
1509
1510
 
1510
- def __neg__(self, ) -> 'Expr': ...
1511
+ def __neg__(self, ) -> Expr: ...
1511
1512
 
1512
- def __or__(self, other) -> 'Expr': ...
1513
+ def __or__(self, other) -> Expr: ...
1513
1514
 
1514
- def __pow__(self, exponent) -> 'When': ...
1515
+ def __pow__(self, exponent) -> When: ...
1515
1516
 
1516
1517
  def __radd__(self, other) -> Any: ...
1517
1518
 
@@ -1529,15 +1530,15 @@ class When(Expr):
1529
1530
 
1530
1531
  def __rtruediv__(self, other) -> Any: ...
1531
1532
 
1532
- def __sub__(self, other) -> 'When': ...
1533
+ def __sub__(self, other) -> When: ...
1533
1534
 
1534
- def __truediv__(self, other) -> 'When': ...
1535
+ def __truediv__(self, other) -> When: ...
1535
1536
 
1536
1537
  # Creates a new Expr for binary operations.
1537
- def _create_binary_op_expr(self, op_symbol: str, other: Any, result_expr: Optional[pl.Expr]) -> 'Expr': ...
1538
+ def _create_binary_op_expr(self, op_symbol: str, other: Any, result_expr: pl.Expr | None) -> Expr: ...
1538
1539
 
1539
1540
  # Creates a new Expr instance, appending method call to repr string.
1540
- def _create_next_expr(self, *args, method_name: str, result_expr: Optional[pl.Expr], convertable_to_code: bool=None, is_complex: bool, _function_sources: Optional[List[str]]=None, **kwargs) -> 'Expr': ...
1541
+ def _create_next_expr(self, *args, method_name: str, result_expr: pl.Expr | None, convertable_to_code: bool=None, is_complex: bool, _function_sources: list[str] | None=None, **kwargs) -> Expr: ...
1541
1542
 
1542
1543
  # Extract expression and representation from a value.
1543
1544
  def _get_expr_and_repr(self, value) -> Any: ...
@@ -1555,7 +1556,7 @@ class When(Expr):
1555
1556
  def agg_groups(self, ) -> Expr: ...
1556
1557
 
1557
1558
  # Rename the expression result.
1558
- def alias(self, name) -> 'When': ...
1559
+ def alias(self, name) -> When: ...
1559
1560
 
1560
1561
  # Return whether all values in the column are `True`.
1561
1562
  def all(self, ignore_nulls: bool=True) -> Expr: ...
@@ -1596,12 +1597,12 @@ class When(Expr):
1596
1597
  # Get the index of the minimal value.
1597
1598
  def arg_min(self, ) -> Expr: ...
1598
1599
 
1599
- def arg_sort(self, descending: bool=False, nulls_last: bool=False) -> 'Expr': ...
1600
+ def arg_sort(self, descending: bool=False, nulls_last: bool=False) -> Expr: ...
1600
1601
 
1601
1602
  # Return indices where expression evaluates `True`.
1602
1603
  def arg_true(self, ) -> Expr: ...
1603
1604
 
1604
- def arg_unique(self, ) -> 'Expr': ...
1605
+ def arg_unique(self, ) -> Expr: ...
1605
1606
 
1606
1607
  # Fill missing values with the next non-null value.
1607
1608
  def backward_fill(self, limit: int | None=None) -> Expr: ...
@@ -1640,7 +1641,7 @@ class When(Expr):
1640
1641
  def bottom_k_by(self, by: IntoExpr | Iterable[IntoExpr], k: int | IntoExprColumn=5, reverse: bool | Sequence[bool]=False) -> Expr: ...
1641
1642
 
1642
1643
  # Casts the Expr to a specified data type.
1643
- def cast(self, dtype: Union[pl.DataType, str, pl.datatypes.classes.DataTypeClass], strict=True) -> 'When': ...
1644
+ def cast(self, dtype: pl.DataType | str | pl.datatypes.classes.DataTypeClass, strict=True) -> When: ...
1644
1645
 
1645
1646
  # Compute the cube root of the elements.
1646
1647
  def cbrt(self, ) -> Expr: ...
@@ -1660,10 +1661,10 @@ class When(Expr):
1660
1661
  # Compute the element-wise value for the cotangent.
1661
1662
  def cot(self, ) -> Expr: ...
1662
1663
 
1663
- def count(self, ) -> 'When': ...
1664
+ def count(self, ) -> When: ...
1664
1665
 
1665
1666
  # Return the cumulative count of the non-null values in the column.
1666
- def cum_count(self, reverse: bool=False) -> 'Expr': ...
1667
+ def cum_count(self, reverse: bool=False) -> Expr: ...
1667
1668
 
1668
1669
  # Get an array with the cumulative max computed at every element.
1669
1670
  def cum_max(self, reverse: bool=False) -> Expr: ...
@@ -1733,14 +1734,14 @@ class When(Expr):
1733
1734
  # Extremely fast method for extending the Series with 'n' copies of a value.
1734
1735
  def extend_constant(self, value: IntoExpr, n: int | IntoExprColumn) -> Expr: ...
1735
1736
 
1736
- def fill_nan(self, value) -> 'When': ...
1737
+ def fill_nan(self, value) -> When: ...
1737
1738
 
1738
- def fill_null(self, value) -> 'When': ...
1739
+ def fill_null(self, value) -> When: ...
1739
1740
 
1740
1741
  # Filter expression
1741
- def filter(self, *predicates, **constraints) -> 'Expr': ...
1742
+ def filter(self, *predicates, **constraints) -> Expr: ...
1742
1743
 
1743
- def first(self, ) -> 'When': ...
1744
+ def first(self, ) -> When: ...
1744
1745
 
1745
1746
  # Flatten a list or string column.
1746
1747
  def flatten(self, ) -> Expr: ...
@@ -1827,9 +1828,9 @@ class When(Expr):
1827
1828
  # Returns a boolean Series indicating which values are not NaN.
1828
1829
  def is_not_nan(self, ) -> Expr: ...
1829
1830
 
1830
- def is_not_null(self, ) -> 'When': ...
1831
+ def is_not_null(self, ) -> When: ...
1831
1832
 
1832
- def is_null(self, ) -> 'When': ...
1833
+ def is_null(self, ) -> When: ...
1833
1834
 
1834
1835
  # Get mask of unique values.
1835
1836
  def is_unique(self, ) -> Expr: ...
@@ -1837,7 +1838,7 @@ class When(Expr):
1837
1838
  # Compute the kurtosis (Fisher or Pearson) of a dataset.
1838
1839
  def kurtosis(self, fisher: bool=True, bias: bool=True) -> Expr: ...
1839
1840
 
1840
- def last(self, ) -> 'When': ...
1841
+ def last(self, ) -> When: ...
1841
1842
 
1842
1843
  # Method equivalent of "less than or equal" operator `expr <= other`.
1843
1844
  def le(self, other: Any) -> Expr: ...
@@ -1869,13 +1870,13 @@ class When(Expr):
1869
1870
  # Map a custom/user-defined function (UDF) to each element of a column.
1870
1871
  def map_elements(self, function: Callable[[Any], Any], return_dtype: PolarsDataType | None=None, skip_nulls: bool=True, pass_name: bool=False, strategy: MapElementsStrategy='thread_local', returns_scalar: bool=False) -> Expr: ...
1871
1872
 
1872
- def max(self, ) -> 'When': ...
1873
+ def max(self, ) -> When: ...
1873
1874
 
1874
- def mean(self, ) -> 'When': ...
1875
+ def mean(self, ) -> When: ...
1875
1876
 
1876
1877
  def median(self, ) -> Any: ...
1877
1878
 
1878
- def min(self, ) -> 'When': ...
1879
+ def min(self, ) -> When: ...
1879
1880
 
1880
1881
  # Method equivalent of modulus operator `expr % other`.
1881
1882
  def mod(self, other: Any) -> Expr: ...
@@ -1916,7 +1917,7 @@ class When(Expr):
1916
1917
  def otherwise(self, value) -> Any: ...
1917
1918
 
1918
1919
  # Compute expressions over the given groups.
1919
- def over(self, partition_by: ExprStrOrList, *more_exprs, order_by: Optional[ExprStrOrList]=None, descending: bool=False, nulls_last: bool=False, mapping_strategy: Literal['group_to_rows', 'join', 'explode']='group_to_rows') -> 'Expr': ...
1920
+ def over(self, partition_by: ExprStrOrList, *more_exprs, order_by: ExprStrOrList | None=None, descending: bool=False, nulls_last: bool=False, mapping_strategy: Literal[group_to_rows, join, explode]='group_to_rows') -> Expr: ...
1920
1921
 
1921
1922
  # Computes percentage change between values.
1922
1923
  def pct_change(self, n: int | IntoExprColumn=1) -> Expr: ...
@@ -2077,7 +2078,7 @@ class When(Expr):
2077
2078
  # Get a slice of this expression.
2078
2079
  def slice(self, offset: int | Expr, length: int | Expr | None=None) -> Expr: ...
2079
2080
 
2080
- def sort(self, descending=False, nulls_last=False) -> 'When': ...
2081
+ def sort(self, descending=False, nulls_last=False) -> When: ...
2081
2082
 
2082
2083
  # Sort this column by the ordering of other columns.
2083
2084
  def sort_by(self, by: IntoExpr | Iterable[IntoExpr], *more_by, descending: bool | Sequence[bool]=False, nulls_last: bool | Sequence[bool]=False, multithreaded: bool=True, maintain_order: bool=False) -> Expr: ...
@@ -2090,7 +2091,7 @@ class When(Expr):
2090
2091
  # Method equivalent of subtraction operator `expr - other`.
2091
2092
  def sub(self, other: Any) -> Expr: ...
2092
2093
 
2093
- def sum(self, ) -> 'When': ...
2094
+ def sum(self, ) -> When: ...
2094
2095
 
2095
2096
  # Get the last `n` rows.
2096
2097
  def tail(self, n: int | Expr=10) -> Expr: ...
@@ -2150,12 +2151,12 @@ def col(name: str) -> Column: ...
2150
2151
  def column(name: str) -> Column: ...
2151
2152
 
2152
2153
  # Compute the correlation between two columns.
2153
- def corr(a: Union[str, Expr], b: Union[str, Expr], method: str='pearson', ddof: int=None, propagate_nans: bool=False) -> Expr: ...
2154
+ def corr(a: str | Expr, b: str | Expr, method: str='pearson', ddof: int=None, propagate_nans: bool=False) -> Expr: ...
2154
2155
 
2155
2156
  def count(*names) -> Expr: ...
2156
2157
 
2157
2158
  # Compute the covariance between two columns.
2158
- def cov(a: Union[str, Expr], b: Union[str, Expr], ddof: int=1) -> Expr: ...
2159
+ def cov(a: str | Expr, b: str | Expr, ddof: int=1) -> Expr: ...
2159
2160
 
2160
2161
  # Return the cumulative count of the non-null values in the column.
2161
2162
  def cum_count(expr, reverse: bool=False) -> Expr: ...