sibi-dst 2025.9.7__tar.gz → 2025.9.8__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 (99) hide show
  1. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/PKG-INFO +1 -1
  2. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/pyproject.toml +1 -1
  3. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/clickhouse_writer.py +5 -6
  4. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/README.md +0 -0
  5. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/__init__.py +0 -0
  6. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/__init__.py +0 -0
  7. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/_artifact_updater_async.py +0 -0
  8. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/_artifact_updater_threaded.py +0 -0
  9. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/_df_helper.py +0 -0
  10. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/_parquet_artifact.py +0 -0
  11. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/_parquet_reader.py +0 -0
  12. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/__init__.py +0 -0
  13. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/http/__init__.py +0 -0
  14. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/http/_http_config.py +0 -0
  15. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/parquet/__init__.py +0 -0
  16. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/parquet/_parquet_options.py +0 -0
  17. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/sqlalchemy/__init__.py +0 -0
  18. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/sqlalchemy/_db_connection.py +0 -0
  19. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/sqlalchemy/_db_gatekeeper.py +0 -0
  20. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/sqlalchemy/_io_dask.py +0 -0
  21. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/sqlalchemy/_load_from_db.py +0 -0
  22. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/sqlalchemy/_model_registry.py +0 -0
  23. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/backends/sqlalchemy/_sql_model_builder.py +0 -0
  24. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/core/__init__.py +0 -0
  25. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/core/_defaults.py +0 -0
  26. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/core/_filter_handler.py +0 -0
  27. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/core/_params_config.py +0 -0
  28. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/core/_query_config.py +0 -0
  29. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/df_helper/data_cleaner.py +0 -0
  30. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/geopy_helper/__init__.py +0 -0
  31. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/geopy_helper/geo_location_service.py +0 -0
  32. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/geopy_helper/utils.py +0 -0
  33. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/__init__.py +0 -0
  34. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/base_osm_map.py +0 -0
  35. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/basemaps/__init__.py +0 -0
  36. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/basemaps/calendar_html.py +0 -0
  37. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/basemaps/route_map_plotter.py +0 -0
  38. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/basemaps/router_plotter.py +0 -0
  39. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/route_path_builder.py +0 -0
  40. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/osmnx_helper/utils.py +0 -0
  41. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/tests/__init__.py +0 -0
  42. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/tests/test_baseclass.py +0 -0
  43. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/tests/test_data_wrapper_class.py +0 -0
  44. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/__init__.py +0 -0
  45. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/async_utils.py +0 -0
  46. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/base.py +0 -0
  47. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/boilerplate/__init__.py +0 -0
  48. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/boilerplate/base_attacher.py +0 -0
  49. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/boilerplate/base_data_cube.py +0 -0
  50. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/boilerplate/base_parquet_artifact.py +0 -0
  51. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/boilerplate/base_parquet_reader.py +0 -0
  52. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/boilerplate/base_pipeline.py +0 -0
  53. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/boilerplate/hybrid_data_loader.py +0 -0
  54. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/business_days.py +0 -0
  55. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/credentials.py +0 -0
  56. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/dask_utils.py +0 -0
  57. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/data_from_http_source.py +0 -0
  58. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/data_utils.py +0 -0
  59. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/data_wrapper.py +0 -0
  60. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/date_utils.py +0 -0
  61. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/df_utils.py +0 -0
  62. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/file_age_checker.py +0 -0
  63. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/file_utils.py +0 -0
  64. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/filepath_generator.py +0 -0
  65. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/iceberg_saver.py +0 -0
  66. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/log_utils.py +0 -0
  67. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/manifest_manager.py +0 -0
  68. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/parquet_saver.py +0 -0
  69. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/periods.py +0 -0
  70. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/phone_formatter.py +0 -0
  71. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/progress/__init__.py +0 -0
  72. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/progress/jobs.py +0 -0
  73. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/progress/sse_runner.py +0 -0
  74. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/storage_config.py +0 -0
  75. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/storage_hive.py +0 -0
  76. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/storage_manager.py +0 -0
  77. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/update_planner.py +0 -0
  78. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/webdav_client.py +0 -0
  79. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/utils/write_gatekeeper.py +0 -0
  80. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/__init__.py +0 -0
  81. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/__init__.py +0 -0
  82. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/_df_helper.py +0 -0
  83. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/__init__.py +0 -0
  84. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlalchemy/__init__.py +0 -0
  85. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlalchemy/_db_connection.py +0 -0
  86. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlalchemy/_io_dask.py +0 -0
  87. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlalchemy/_load_from_db.py +0 -0
  88. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlalchemy/_model_builder.py +0 -0
  89. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlmodel/__init__.py +0 -0
  90. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlmodel/_db_connection.py +0 -0
  91. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlmodel/_io_dask.py +0 -0
  92. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlmodel/_load_from_db.py +0 -0
  93. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/backends/sqlmodel/_model_builder.py +0 -0
  94. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/core/__init__.py +0 -0
  95. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/core/_filter_handler.py +0 -0
  96. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/core/_params_config.py +0 -0
  97. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/df_helper/core/_query_config.py +0 -0
  98. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/utils/__init__.py +0 -0
  99. {sibi_dst-2025.9.7 → sibi_dst-2025.9.8}/sibi_dst/v2/utils/log_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sibi-dst
3
- Version: 2025.9.7
3
+ Version: 2025.9.8
4
4
  Summary: Data Science Toolkit
5
5
  Author: Luis Valverde
6
6
  Author-email: lvalverdeb@gmail.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "sibi-dst"
3
- version = "2025.9.7"
3
+ version = "2025.9.8"
4
4
  description = "Data Science Toolkit"
5
5
  authors = ["Luis Valverde <lvalverdeb@gmail.com>"]
6
6
  readme = "README.md"
@@ -90,10 +90,14 @@ class ClickHouseWriter(ManagedResource):
90
90
 
91
91
  # one client per thread to avoid session contention
92
92
  self._tlocal = threading.local()
93
+ ow = self.overwrite
94
+ if ow:
95
+ self._command(f"DROP TABLE IF EXISTS {self._ident(self.table)}")
96
+ self.logger.info(f"Dropped table {self.table} (overwrite=True)")
93
97
 
94
98
  # ------------- public -------------
95
99
 
96
- def save_to_clickhouse(self, df: dd.DataFrame, *, overwrite: Optional[bool] = None) -> None:
100
+ def save_to_clickhouse(self, df: dd.DataFrame) -> None:
97
101
  """
98
102
  Persist a Dask DataFrame into ClickHouse.
99
103
 
@@ -118,15 +122,10 @@ class ClickHouseWriter(ManagedResource):
118
122
  )
119
123
 
120
124
  # (re)create table
121
- ow = self.overwrite if overwrite is None else bool(overwrite)
122
125
  dtypes = df._meta_nonempty.dtypes # metadata-only types (no compute)
123
126
  schema_sql = self._generate_clickhouse_schema(dtypes)
124
127
  engine_sql = self._default_engine_sql() if not self.engine else self.engine
125
128
 
126
- if ow:
127
- self._command(f"DROP TABLE IF EXISTS {self._ident(self.table)}")
128
- self.logger.info(f"Dropped table {self.table} (overwrite=True)")
129
-
130
129
  create_sql = f"CREATE TABLE IF NOT EXISTS {self._ident(self.table)} ({schema_sql}) {engine_sql}"
131
130
  self._command(create_sql)
132
131
  self.logger.info(f"Ensured table {self.table} exists")
File without changes