FlowerPower 0.11.6.14__tar.gz → 0.11.6.16__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.14/src/FlowerPower.egg-info → flowerpower-0.11.6.16}/PKG-INFO +1 -1
  2. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/pyproject.toml +1 -1
  3. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16/src/FlowerPower.egg-info}/PKG-INFO +1 -1
  4. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/helpers/polars.py +36 -9
  5. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/LICENSE +0 -0
  6. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/README.md +0 -0
  7. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/setup.cfg +0 -0
  8. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/FlowerPower.egg-info/SOURCES.txt +0 -0
  9. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/FlowerPower.egg-info/dependency_links.txt +0 -0
  10. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/FlowerPower.egg-info/entry_points.txt +0 -0
  11. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/FlowerPower.egg-info/requires.txt +0 -0
  12. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/FlowerPower.egg-info/top_level.txt +0 -0
  13. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/__init__.py +0 -0
  14. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/__init__.py +0 -0
  15. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/base.py +0 -0
  16. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/pipeline/__init__.py +0 -0
  17. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/pipeline/adapter.py +0 -0
  18. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/pipeline/run.py +0 -0
  19. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/pipeline/schedule.py +0 -0
  20. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/project/__init__.py +0 -0
  21. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/project/adapter.py +0 -0
  22. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cfg/project/job_queue.py +0 -0
  23. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cli/__init__.py +0 -0
  24. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cli/cfg.py +0 -0
  25. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cli/job_queue.py +0 -0
  26. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cli/mqtt.py +0 -0
  27. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cli/pipeline.py +0 -0
  28. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/cli/utils.py +0 -0
  29. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/flowerpower.py +0 -0
  30. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/fs/__init__.py +0 -0
  31. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/fs/base.py +0 -0
  32. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/fs/ext.py +0 -0
  33. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/fs/storage_options.py +0 -0
  34. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/__init__.py +0 -0
  35. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/apscheduler/__init__.py +0 -0
  36. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/apscheduler/_setup/datastore.py +0 -0
  37. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/apscheduler/_setup/eventbroker.py +0 -0
  38. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/apscheduler/manager.py +0 -0
  39. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/apscheduler/setup.py +0 -0
  40. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/apscheduler/trigger.py +0 -0
  41. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/apscheduler/utils.py +0 -0
  42. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/base.py +0 -0
  43. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/rq/__init__.py +0 -0
  44. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/rq/_trigger.py +0 -0
  45. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/rq/concurrent_workers/gevent_worker.py +0 -0
  46. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/rq/concurrent_workers/thread_worker.py +0 -0
  47. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/rq/manager.py +0 -0
  48. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/rq/setup.py +0 -0
  49. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/job_queue/rq/utils.py +0 -0
  50. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/mqtt.py +0 -0
  51. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/__init__.py +0 -0
  52. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/base.py +0 -0
  53. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/io.py +0 -0
  54. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/job_queue.py +0 -0
  55. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/manager.py +0 -0
  56. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/registry.py +0 -0
  57. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/runner.py +0 -0
  58. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/pipeline/visualizer.py +0 -0
  59. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/base.py +0 -0
  60. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/helpers/datetime.py +0 -0
  61. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/helpers/pyarrow.py +0 -0
  62. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/helpers/sql.py +0 -0
  63. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/__init__.py +0 -0
  64. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/csv.py +0 -0
  65. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/deltatable.py +0 -0
  66. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/duckdb.py +0 -0
  67. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/json.py +0 -0
  68. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/mqtt.py +0 -0
  69. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/mssql.py +0 -0
  70. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/mysql.py +0 -0
  71. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/oracle.py +0 -0
  72. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/parquet.py +0 -0
  73. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/postgres.py +0 -0
  74. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/pydala.py +0 -0
  75. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/loader/sqlite.py +0 -0
  76. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/metadata.py +0 -0
  77. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/__init__.py +0 -0
  78. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/csv.py +0 -0
  79. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/deltatable.py +0 -0
  80. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/duckdb.py +0 -0
  81. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/json.py +0 -0
  82. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/mqtt.py +0 -0
  83. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/mssql.py +0 -0
  84. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/mysql.py +0 -0
  85. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/oracle.py +0 -0
  86. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/parquet.py +0 -0
  87. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/postgres.py +0 -0
  88. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/pydala.py +0 -0
  89. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/io/saver/sqlite.py +0 -0
  90. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/mqtt/__init__.py +0 -0
  91. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/mqtt/cfg.py +0 -0
  92. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/plugins/mqtt/manager.py +0 -0
  93. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/__init__.py +0 -0
  94. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/backend.py +0 -0
  95. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/executor.py +0 -0
  96. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/general.py +0 -0
  97. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/hamilton.py +0 -0
  98. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/job_queue.py +0 -0
  99. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/logging.py +0 -0
  100. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/settings/retry.py +0 -0
  101. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/utils/callback.py +0 -0
  102. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/utils/logging.py +0 -0
  103. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/utils/misc.py +0 -0
  104. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/utils/monkey.py +0 -0
  105. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/utils/open_telemetry.py +0 -0
  106. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/src/flowerpower/utils/scheduler.py +0 -0
  107. {flowerpower-0.11.6.14 → flowerpower-0.11.6.16}/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.14
3
+ Version: 0.11.6.16
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.14"
7
+ version = "0.11.6.16"
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.14
3
+ Version: 0.11.6.16
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
@@ -46,15 +46,32 @@ def _can_downcast_to_float32(series: pl.Series) -> bool:
46
46
  return F32_MIN <= min_val <= max_val <= F32_MAX
47
47
 
48
48
 
49
- def _optimize_numeric_column(series: pl.Series, col_name: str, shrink: bool) -> pl.Expr:
50
- """Optimize numeric column types."""
49
+ def _optimize_numeric_column(
50
+ series: pl.Series, col_name: str, shrink: bool, allow_unsigned: bool = False
51
+ ) -> pl.Expr:
52
+ """Optimize numeric column types, optionally converting to unsigned if all values >= 0."""
53
+ expr = pl.col(col_name)
54
+ dtype = series.dtype
55
+
56
+ if (
57
+ allow_unsigned
58
+ and dtype.is_integer()
59
+ and (series.min() is not None)
60
+ and series.min() >= 0
61
+ ):
62
+ # Convert to unsigned integer type, shrink if requested
63
+ if shrink:
64
+ return expr.cast(pl.UInt64).shrink_dtype()
65
+ else:
66
+ return expr.cast(pl.UInt64)
67
+
51
68
  if not shrink:
52
- return pl.col(col_name)
69
+ return expr
53
70
 
54
- if series.dtype == pl.Float64 and not _can_downcast_to_float32(series):
55
- return pl.col(col_name)
71
+ if dtype == pl.Float64 and not _can_downcast_to_float32(series):
72
+ return expr
56
73
 
57
- return pl.col(col_name).shrink_dtype()
74
+ return expr.shrink_dtype()
58
75
 
59
76
 
60
77
  def _optimize_string_column(
@@ -116,7 +133,11 @@ def _optimize_string_column(
116
133
 
117
134
 
118
135
  def _get_column_expr(
119
- df: pl.DataFrame, col_name: str, shrink_numerics: bool, time_zone: str | None = None
136
+ df: pl.DataFrame,
137
+ col_name: str,
138
+ shrink_numerics: bool,
139
+ allow_unsigned: bool,
140
+ time_zone: str | None = None,
120
141
  ) -> pl.Expr:
121
142
  """Generate optimization expression for a single column."""
122
143
  series = df[col_name]
@@ -127,7 +148,9 @@ def _get_column_expr(
127
148
 
128
149
  # Process based on current type
129
150
  if series.dtype.is_numeric():
130
- return _optimize_numeric_column(series, col_name, shrink_numerics)
151
+ return _optimize_numeric_column(
152
+ series, col_name, shrink_numerics, allow_unsigned
153
+ )
131
154
  elif series.dtype == pl.Utf8:
132
155
  return _optimize_string_column(series, col_name, shrink_numerics, time_zone)
133
156
 
@@ -141,6 +164,7 @@ def opt_dtype(
141
164
  exclude: str | list[str] | None = None,
142
165
  time_zone: str | None = None,
143
166
  shrink_numerics: bool = True,
167
+ allow_unsigned: bool = True,
144
168
  strict: bool = False,
145
169
  ) -> pl.DataFrame:
146
170
  """
@@ -156,6 +180,7 @@ def opt_dtype(
156
180
  exclude: Column(s) to exclude from optimization
157
181
  time_zone: Optional time zone for datetime parsing
158
182
  shrink_numerics: Whether to downcast numeric types when possible
183
+ allow_unsigned: Whether to allow unsigned integer types
159
184
  strict: If True, will raise an error if any column cannot be optimized
160
185
 
161
186
  Returns:
@@ -179,7 +204,9 @@ def opt_dtype(
179
204
  for col_name in cols_to_process:
180
205
  try:
181
206
  expressions.append(
182
- _get_column_expr(df, col_name, shrink_numerics, time_zone)
207
+ _get_column_expr(
208
+ df, col_name, shrink_numerics, allow_unsigned, time_zone
209
+ )
183
210
  )
184
211
  except Exception as e:
185
212
  if strict:
File without changes