FlowerPower 0.11.6.10__tar.gz → 0.11.6.12__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 (107) hide show
  1. {flowerpower-0.11.6.10/src/FlowerPower.egg-info → flowerpower-0.11.6.12}/PKG-INFO +1 -1
  2. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/pyproject.toml +1 -1
  3. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12/src/FlowerPower.egg-info}/PKG-INFO +1 -1
  4. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/fs/ext.py +16 -4
  5. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/helpers/polars.py +2 -2
  6. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/helpers/pyarrow.py +2 -2
  7. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/LICENSE +0 -0
  8. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/README.md +0 -0
  9. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/setup.cfg +0 -0
  10. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/FlowerPower.egg-info/SOURCES.txt +0 -0
  11. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/FlowerPower.egg-info/dependency_links.txt +0 -0
  12. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/FlowerPower.egg-info/entry_points.txt +0 -0
  13. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/FlowerPower.egg-info/requires.txt +0 -0
  14. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/FlowerPower.egg-info/top_level.txt +0 -0
  15. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/__init__.py +0 -0
  16. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/__init__.py +0 -0
  17. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/base.py +0 -0
  18. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/pipeline/__init__.py +0 -0
  19. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/pipeline/adapter.py +0 -0
  20. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/pipeline/run.py +0 -0
  21. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/pipeline/schedule.py +0 -0
  22. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/project/__init__.py +0 -0
  23. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/project/adapter.py +0 -0
  24. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cfg/project/job_queue.py +0 -0
  25. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cli/__init__.py +0 -0
  26. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cli/cfg.py +0 -0
  27. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cli/job_queue.py +0 -0
  28. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cli/mqtt.py +0 -0
  29. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cli/pipeline.py +0 -0
  30. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/cli/utils.py +0 -0
  31. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/flowerpower.py +0 -0
  32. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/fs/__init__.py +0 -0
  33. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/fs/base.py +0 -0
  34. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/fs/storage_options.py +0 -0
  35. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/__init__.py +0 -0
  36. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/apscheduler/__init__.py +0 -0
  37. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/apscheduler/_setup/datastore.py +0 -0
  38. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/apscheduler/_setup/eventbroker.py +0 -0
  39. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/apscheduler/manager.py +0 -0
  40. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/apscheduler/setup.py +0 -0
  41. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/apscheduler/trigger.py +0 -0
  42. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/apscheduler/utils.py +0 -0
  43. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/base.py +0 -0
  44. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/rq/__init__.py +0 -0
  45. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/rq/_trigger.py +0 -0
  46. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/rq/concurrent_workers/gevent_worker.py +0 -0
  47. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/rq/concurrent_workers/thread_worker.py +0 -0
  48. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/rq/manager.py +0 -0
  49. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/rq/setup.py +0 -0
  50. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/job_queue/rq/utils.py +0 -0
  51. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/mqtt.py +0 -0
  52. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/__init__.py +0 -0
  53. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/base.py +0 -0
  54. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/io.py +0 -0
  55. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/job_queue.py +0 -0
  56. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/manager.py +0 -0
  57. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/registry.py +0 -0
  58. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/runner.py +0 -0
  59. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/pipeline/visualizer.py +0 -0
  60. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/base.py +0 -0
  61. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/helpers/datetime.py +0 -0
  62. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/helpers/sql.py +0 -0
  63. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/__init__.py +0 -0
  64. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/csv.py +0 -0
  65. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/deltatable.py +0 -0
  66. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/duckdb.py +0 -0
  67. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/json.py +0 -0
  68. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/mqtt.py +0 -0
  69. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/mssql.py +0 -0
  70. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/mysql.py +0 -0
  71. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/oracle.py +0 -0
  72. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/parquet.py +0 -0
  73. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/postgres.py +0 -0
  74. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/pydala.py +0 -0
  75. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/loader/sqlite.py +0 -0
  76. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/metadata.py +0 -0
  77. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/__init__.py +0 -0
  78. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/csv.py +0 -0
  79. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/deltatable.py +0 -0
  80. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/duckdb.py +0 -0
  81. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/json.py +0 -0
  82. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/mqtt.py +0 -0
  83. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/mssql.py +0 -0
  84. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/mysql.py +0 -0
  85. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/oracle.py +0 -0
  86. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/parquet.py +0 -0
  87. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/postgres.py +0 -0
  88. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/pydala.py +0 -0
  89. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/io/saver/sqlite.py +0 -0
  90. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/mqtt/__init__.py +0 -0
  91. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/mqtt/cfg.py +0 -0
  92. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/plugins/mqtt/manager.py +0 -0
  93. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/__init__.py +0 -0
  94. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/backend.py +0 -0
  95. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/executor.py +0 -0
  96. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/general.py +0 -0
  97. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/hamilton.py +0 -0
  98. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/job_queue.py +0 -0
  99. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/logging.py +0 -0
  100. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/settings/retry.py +0 -0
  101. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/utils/callback.py +0 -0
  102. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/utils/logging.py +0 -0
  103. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/utils/misc.py +0 -0
  104. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/utils/monkey.py +0 -0
  105. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/utils/open_telemetry.py +0 -0
  106. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/utils/scheduler.py +0 -0
  107. {flowerpower-0.11.6.10 → flowerpower-0.11.6.12}/src/flowerpower/utils/templates.py +0 -0
@@ -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
@@ -4,7 +4,7 @@ description = "A simple workflow framework. Hamilton + APScheduler = FlowerPower
4
4
  authors = [{ name = "Volker L.", email = "ligno.blades@gmail.com" }]
5
5
  readme = "README.md"
6
6
  requires-python = ">= 3.11"
7
- version = "0.11.6.10"
7
+ version = "0.11.6.12"
8
8
  keywords = [
9
9
  "hamilton",
10
10
  "workflow",
@@ -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
@@ -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):
File without changes