FlowerPower 0.11.6.10__py3-none-any.whl → 0.11.6.12__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.
flowerpower/fs/ext.py CHANGED
@@ -953,8 +953,13 @@ def _read_parquet(
953
953
  schemas = [t.schema for t in tables]
954
954
  unified_schema = unify_schemas_pa(schemas)
955
955
  tables = [cast_schema(t, unified_schema) for t in tables]
956
+
957
+ tables = [table for table in tables if table.num_rows > 0]
958
+ if not tables:
959
+ return unified_schema.empty_table()
960
+
956
961
  result = pa.concat_tables(
957
- [table for table in tables if table.num_rows > 0],
962
+ tables,
958
963
  promote_options="permissive",
959
964
  )
960
965
  # if opt_dtypes:
@@ -965,8 +970,12 @@ def _read_parquet(
965
970
  # tables = opt_dtype_pa(tables, strict=False)
966
971
  return tables
967
972
  else:
968
- return pa.concat_tables(
969
- [table for table in tables if table.num_rows > 0],
973
+ tables = [table for table in tables if table.num_rows > 0]
974
+ if not tables:
975
+ return unified_schema.empty_table()
976
+
977
+ result = pa.concat_tables(
978
+ tables,
970
979
  promote_options="permissive",
971
980
  )
972
981
  return tables
@@ -1088,8 +1097,11 @@ def _read_parquet_batches(
1088
1097
  schemas = [t.schema for t in batch_tables]
1089
1098
  unified_schema = unify_schemas_pa(schemas)
1090
1099
  batch_tables = [cast_schema(t, unified_schema) for t in batch_tables]
1100
+ batch_tables = [table for table in batch_tables if table.num_rows > 0]
1101
+ if not batch_tables:
1102
+ yield unified_schema.empty_table()
1091
1103
  batch_table = pa.concat_tables(
1092
- [table for table in batch_tables if table.num_rows > 0],
1104
+ batch_tables,
1093
1105
  promote_options="permissive",
1094
1106
  )
1095
1107
  # if opt_dtypes:
@@ -68,7 +68,7 @@ def _optimize_string_column(
68
68
  cleaned_expr = _clean_string_expr(col_name)
69
69
  non_null = series.drop_nulls().replace({"-": None, "": None, "None": None})
70
70
  if len(non_null) == 0:
71
- return pl.col(col_name).cast(series.dtype)
71
+ return pl.col(col_name).cast(pl.Null()) # Fix: Cast to Null type
72
72
 
73
73
  stripped = non_null.str.strip_chars()
74
74
  lowercase = stripped.str.to_lowercase()
@@ -123,7 +123,7 @@ def _get_column_expr(
123
123
 
124
124
  # Handle all-null columns
125
125
  if series.is_null().all():
126
- return pl.col(col_name).cast(series.dtype)
126
+ return pl.col(col_name).cast(pl.Null())
127
127
 
128
128
  # Process based on current type
129
129
  if series.dtype.is_numeric():
@@ -272,7 +272,7 @@ def _optimize_string_array(
272
272
  if len(array) == 0:
273
273
  return pa.array([], type=pa.int8())
274
274
  if array.null_count == len(array):
275
- return pa.array([None] * len(array), type=array.type)
275
+ return pa.array([None] * len(array), type=pa.null())
276
276
 
277
277
  # Clean string values
278
278
  cleaned_array = _clean_string_array(array)
@@ -342,7 +342,7 @@ def _process_column(
342
342
 
343
343
  # Handle all-null columns
344
344
  if array.null_count == len(array):
345
- return pa.array([None] * len(array), type=array.type)
345
+ return pa.array([None] * len(array), type=pa.null())
346
346
 
347
347
  # Process based on current type
348
348
  if pa.types.is_floating(array.type) or pa.types.is_integer(array.type):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: FlowerPower
3
- Version: 0.11.6.10
3
+ Version: 0.11.6.12
4
4
  Summary: A simple workflow framework. Hamilton + APScheduler = FlowerPower
5
5
  Author-email: "Volker L." <ligno.blades@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/legout/flowerpower
@@ -18,7 +18,7 @@ flowerpower/cli/pipeline.py,sha256=60P6u_QOSgp0jJXEMxazEEo5Sh7-SWFo-Kkuaz21YuI,3
18
18
  flowerpower/cli/utils.py,sha256=nDSSj_1nlYlMmj252kRZeohhFqHv9yvdgDEduQCyWOc,5152
19
19
  flowerpower/fs/__init__.py,sha256=uZaPXErEfQqQRbKRIjkB9yiygd45X5_psYn9-VVrBTQ,910
20
20
  flowerpower/fs/base.py,sha256=TqgqBsaFj13O1NpAr8kHuGJ9CTlaSWViMB8Ai_iuCjs,22761
21
- flowerpower/fs/ext.py,sha256=jshry-nBIjasijqrZZsqVn6QyB8Zh3amt8v1lWk0hEo,70205
21
+ flowerpower/fs/ext.py,sha256=gVmca4UVC1y33Y-8BIstO5a7oyw20bcSxtA19F0Limk,70548
22
22
  flowerpower/fs/storage_options.py,sha256=msq5TpxAU8tcE_Bxjw6SyxaFa75UjdYnR4-O9U2wmbk,48034
23
23
  flowerpower/job_queue/__init__.py,sha256=a25hIqv2xoFKb4JZlyUukS0ppZ9-2sJKH3XAvbk3rlk,10788
24
24
  flowerpower/job_queue/base.py,sha256=YwLunDQSyqkSU_vJ69C5SSybJeJP1bAiZ3teUtOchxA,13640
@@ -47,8 +47,8 @@ flowerpower/pipeline/visualizer.py,sha256=amjMrl5NetErE198HzZBPWVZBi_t5jj9ydxWpu
47
47
  flowerpower/plugins/io/base.py,sha256=oGxTKobs0M19hPV842EelAeJ01EBz6kDdGv_4GTyFzk,97098
48
48
  flowerpower/plugins/io/metadata.py,sha256=PCrepLilXRWKDsB5BKFF_-OFs712s1zBeitW-84lDLQ,7005
49
49
  flowerpower/plugins/io/helpers/datetime.py,sha256=1WBUg2ywcsodJQwoF6JiIGc9yhVobvE2IErWp4i95m4,10649
50
- flowerpower/plugins/io/helpers/polars.py,sha256=cuzMby0a90AMFXhNEycf53UOwdHw4uxnx322l3m7jB0,27443
51
- flowerpower/plugins/io/helpers/pyarrow.py,sha256=NwA2NAPMIcGmaFE3gx1jKYW_-6gAxQ8Oczdgk4Av-s8,13903
50
+ flowerpower/plugins/io/helpers/polars.py,sha256=6YbPg1UDeZaWLSnXatgvzCNJI8Ui2GhTegYsbV5VgrM,27463
51
+ flowerpower/plugins/io/helpers/pyarrow.py,sha256=r8JNCp_BSte2ly41hpk0Z9Ik02-IouazgNp98GcNCb8,13901
52
52
  flowerpower/plugins/io/helpers/sql.py,sha256=BPIxjarKF3p93EdtUu-md8KislE9q8IWNSeZ5toFU6U,7298
53
53
  flowerpower/plugins/io/loader/__init__.py,sha256=MKH42nvVokaWas0wFgX1yrpU5iLpvHjRqqF-KzwLHCg,780
54
54
  flowerpower/plugins/io/loader/csv.py,sha256=Q5bmcbbr530sT1kQ2YiJwvsMUPqi0VcZWsLOygmzRyI,827
@@ -94,9 +94,9 @@ flowerpower/utils/monkey.py,sha256=VPl3yimoWhwD9kI05BFsjNvtyQiDyLfY4Q85Bb6Ma0w,2
94
94
  flowerpower/utils/open_telemetry.py,sha256=fQWJWbIQFtKIxMBjAWeF12NGnqT0isO3A3j-DSOv_vE,949
95
95
  flowerpower/utils/scheduler.py,sha256=2zJ_xmLXpvXUQNF1XS2Gqm3Ogo907ctZ50GtvQB_rhE,9354
96
96
  flowerpower/utils/templates.py,sha256=ouyEeSDqa9PjW8c32fGpcINlpC0WToawRFZkMPtwsLE,1591
97
- flowerpower-0.11.6.10.dist-info/licenses/LICENSE,sha256=9AkLexxrmr0aBgSHiqxpJk9wgazpP1CTJyiDyr56J9k,1063
98
- flowerpower-0.11.6.10.dist-info/METADATA,sha256=sSuLHj16hjgnT_mUWWZLs6Wf5IE-Fz4hTRmBy0A9s7s,21613
99
- flowerpower-0.11.6.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
100
- flowerpower-0.11.6.10.dist-info/entry_points.txt,sha256=61X11i5a2IwC9LBiP20XCDl5zMOigGCjMCx17B7bDbQ,52
101
- flowerpower-0.11.6.10.dist-info/top_level.txt,sha256=VraH4WtEUfSxs5L-rXwDQhzQb9eLHTUtgvmFZ2dAYnA,12
102
- flowerpower-0.11.6.10.dist-info/RECORD,,
97
+ flowerpower-0.11.6.12.dist-info/licenses/LICENSE,sha256=9AkLexxrmr0aBgSHiqxpJk9wgazpP1CTJyiDyr56J9k,1063
98
+ flowerpower-0.11.6.12.dist-info/METADATA,sha256=2_9L9FZ9Chw2Z5IQJXNdkUnfdmrv91cPiq7KRijnrw0,21613
99
+ flowerpower-0.11.6.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
100
+ flowerpower-0.11.6.12.dist-info/entry_points.txt,sha256=61X11i5a2IwC9LBiP20XCDl5zMOigGCjMCx17B7bDbQ,52
101
+ flowerpower-0.11.6.12.dist-info/top_level.txt,sha256=VraH4WtEUfSxs5L-rXwDQhzQb9eLHTUtgvmFZ2dAYnA,12
102
+ flowerpower-0.11.6.12.dist-info/RECORD,,