sibi-flux 2026.1.3__py3-none-any.whl → 2026.1.4__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.
@@ -103,6 +103,27 @@ class DatabaseSettings(SibiBaseSettings):
103
103
  }
104
104
 
105
105
 
106
+ class ClickhouseBaseSettings(SibiBaseSettings):
107
+ """Base settings for ClickHouse connection."""
108
+
109
+ interface: str = "http"
110
+ host: str = "localhost"
111
+ port: int = 8123
112
+ database: str = "default"
113
+ username: str = "default"
114
+ password: SecretStr = SecretStr("")
115
+
116
+ def to_legacy_dict(self) -> dict[str, Any]:
117
+ return {
118
+ "interface": self.interface,
119
+ "host": self.host,
120
+ "port": self.port,
121
+ "database": self.database,
122
+ "username": self.username,
123
+ "password": self.password.get_secret_value() if self.password else None,
124
+ }
125
+
126
+
106
127
  class RedisBaseSettings(SibiBaseSettings):
107
128
  """Base settings for Redis connection."""
108
129
 
@@ -72,6 +72,7 @@ class FieldMapFactory:
72
72
  # 2. Fallback to standard locations if not found
73
73
  if not repo_path:
74
74
  candidates = [
75
+ Path("solutions/dataobjects/globals/global_field_repository.yaml"),
75
76
  Path("dataobjects/globals/global_field_repository.yaml"),
76
77
  Path("solutions/conf/global_field_repository.yaml"),
77
78
  ]
@@ -1,5 +1,6 @@
1
1
  import asyncio
2
2
  import json
3
+ import os
3
4
  from contextlib import suppress
4
5
  from collections.abc import Mapping
5
6
  from typing import Any, Optional, Type, Sequence, List
@@ -68,6 +69,10 @@ class BaseCubeRouter:
68
69
  _exclude_columns = ["id"]
69
70
 
70
71
  try:
72
+ # Check if introspection is allowed via env var (default: true)
73
+ if os.environ.get("SIBI_FLUX_ROUTER_INTROSPECTION", "true").lower() == "false":
74
+ return self._fallback_create_model(_exclude_columns)
75
+
71
76
  # Introspect dtypes by loading an empty slice/schema
72
77
  # We use n_records=1 at init to hint the backend to limit query size
73
78
  # Note: This requires the DB/Backend to be accessible at startup
@@ -75,6 +75,7 @@ class DfValidator:
75
75
  "float64": "Float64[pyarrow]",
76
76
  "string": "string[pyarrow]",
77
77
  "timestamp[ns][pyarrow]": "datetime64[ns, UTC]",
78
+ "datetime64[us, UTC]": "datetime64[ns, UTC]",
78
79
  "bool": "boolean[pyarrow]",
79
80
  }
80
81
  return mapping.get(dtype_str, dtype_str)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sibi-flux
3
- Version: 2026.1.3
3
+ Version: 2026.1.4
4
4
  Summary: Sibi Toolkit: A collection of tools for Data Analysis/Engineering.
5
5
  Author: Luis Valverde
6
6
  Author-email: Luis Valverde <lvalverdeb@gmail.com>
@@ -10,7 +10,7 @@ sibi_flux/artifacts/parquet_engine/planner.py,sha256=c_oWfZKMvtpyKH5v-UYlJRRFidR
10
10
  sibi_flux/cli.py,sha256=W3REv_qKGKNXt2c2iwI-o0jpewdtQJsr6RZASKV4rtk,1794
11
11
  sibi_flux/config/__init__.py,sha256=fVgxXW03kzHuVo1zXQkLJoXg6Q6yiooRqujii3L817w,64
12
12
  sibi_flux/config/manager.py,sha256=aiGgkwr1maYCwprt_vjdCpfGSycawBCERAjY3jn6xS4,5093
13
- sibi_flux/config/settings.py,sha256=qjKGNJxHV65t7RkPqoOO89L6YbhXUCLCVxh5_LgSt0o,3935
13
+ sibi_flux/config/settings.py,sha256=F0-Y4Mqwwt5ZOcmFtcPfsXj-tSUZJPzy6LER83nZA20,4560
14
14
  sibi_flux/core/__init__.py,sha256=3NvyTOJns99CGxNTd6K-xV392JjKHHA3p_PQUEjYxLg,84
15
15
  sibi_flux/core/managed_resource/__init__.py,sha256=gyYTDZEPCgOJQvcF-_RJGzBrNoRNkijEIqxm0ruatY4,78
16
16
  sibi_flux/core/managed_resource/_managed_resource.py,sha256=DGcSX5kQ_nHnXqAISxpjHiDdKG3ertyPj6anz_kNOKw,24606
@@ -25,12 +25,12 @@ sibi_flux/datacube/__init__.py,sha256=ODEoa4r5RtzynIp-PdVDaJ-4BcPBj1L9VkLIF7RYSP
25
25
  sibi_flux/datacube/_data_cube.py,sha256=Ofgy3JlR7N0eKijpUzI-ixFlISUd3CFsxnKd6a4fguE,12629
26
26
  sibi_flux/datacube/cli.py,sha256=mQwyj-NmjkKwDRXkJOZeXB6VDHGXGvmHnqbuqOCiYfI,92637
27
27
  sibi_flux/datacube/config_engine.py,sha256=3cmxycCqMzjYJ1fWn8IWrHTNwSQmRqxnPoOzc1lUtDk,8340
28
- sibi_flux/datacube/field_factory.py,sha256=B1L4OWoEzExr7M1YfQDwpQvKVcrbHI6Rx1wsq3GFOXQ,6288
28
+ sibi_flux/datacube/field_factory.py,sha256=Z3Yp6tGzrZ13rvKSjMFr9jvW7fazeNi4K1fAalxLujM,6376
29
29
  sibi_flux/datacube/field_mapper.py,sha256=V6aFYunl28DI7gSvrF7tcidPNX9QtOYymVxbumzQqPs,9334
30
30
  sibi_flux/datacube/field_registry.py,sha256=VBTqxNIn2-eWMiZi1oQK-719oyJfn3yhfV7Bz_0iNyU,4355
31
31
  sibi_flux/datacube/generator.py,sha256=DECeAbee4nQHDQsrpBYo6FiQERXHQ7XDmOs86abd9mY,36432
32
32
  sibi_flux/datacube/orchestrator.py,sha256=37iWkqY9ShMkjFqYhpb3dpioYX2GXOTyo5p52cO5t7I,24278
33
- sibi_flux/datacube/router.py,sha256=pyWjuEcjsWifubKFf1t8EunnZd8i2RrAljlWkKxgk-Q,10666
33
+ sibi_flux/datacube/router.py,sha256=SdG0J4O9CSZeUkHjyWHFC8B3oH83fSdDHfMXZfmHfi0,10914
34
34
  sibi_flux/dataset/__init__.py,sha256=zYpf4-nalcQNSUIOCDG0CqQu2SKkm89I9AF6Zy6z1sE,53
35
35
  sibi_flux/dataset/_dataset.py,sha256=DDAshH3QjgFDaXp9E75nkKy8_Ft-Z2zP_chmJQTU9hg,6484
36
36
  sibi_flux/dataset/hybrid_loader.py,sha256=c-gt3x8DLPpQWwpx1OnAueT6OT47eXK7GakHi8Dna00,7693
@@ -63,7 +63,7 @@ sibi_flux/df_helper/core/_filter_handler.py,sha256=7FFcNVKfm8HdoDn3iv2Jw-X7EHpwn
63
63
  sibi_flux/df_helper/core/_params_config.py,sha256=JgR0pgb_GZaovtvckigYtddVFVBoRGMxYd4y_Yy26Xc,6189
64
64
  sibi_flux/df_helper/core/_query_config.py,sha256=bS_k0qmvom1uVhkcJngPV2pc9pOhQ0FDIsanZSVKMFo,439
65
65
  sibi_flux/df_validator/__init__.py,sha256=lkgTVmeCmH0yqfpZ4oPrRMZS8Jy9lm4OF7DjTSWbgTY,66
66
- sibi_flux/df_validator/_df_validator.py,sha256=vochm52Cad1lu-5BAGC7lhVrJ7J4_xlJfFETnp-Bc60,8878
66
+ sibi_flux/df_validator/_df_validator.py,sha256=P8ARf0htKo7L9PMcEjTnobpgT4RsGOiuG81tVEntS4o,8936
67
67
  sibi_flux/init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
68
  sibi_flux/init/core.py,sha256=ahl4wVAyOrl1ko-f2NcYxeX9yQBQceYnobqeH_Gfp98,7785
69
69
  sibi_flux/init/discovery_updater.py,sha256=3WONU50EnaIItaLncumd3hC6h059ykvoqMfRC5NAvi8,5652
@@ -120,7 +120,7 @@ sibi_flux/utils/file_utils.py,sha256=7OHUW65OTe6HlQ6wkDagDd7d0SCQ_-NEGmHlOJguKYw
120
120
  sibi_flux/utils/filepath_generator/__init__.py,sha256=YVFJhIewjwksb9E2t43ojNC-W_AqUDhkKxQVBIBMkY8,91
121
121
  sibi_flux/utils/filepath_generator/_filepath_generator.py,sha256=4HG-Ubvjtv6luL0z-A-8B6_r3o9YqBwATFXhOXiTbKc,6789
122
122
  sibi_flux/utils/retry.py,sha256=45t0MF2IoMayN9xkn5_FtakMq4HwZlGvHVd6qv8x1AY,1227
123
- sibi_flux-2026.1.3.dist-info/WHEEL,sha256=ZyFSCYkV2BrxH6-HRVRg3R9Fo7MALzer9KiPYqNxSbo,79
124
- sibi_flux-2026.1.3.dist-info/entry_points.txt,sha256=6xrq5zuz_8wodJj4s49raopnuC3Owy_leZRkWtcXpTk,49
125
- sibi_flux-2026.1.3.dist-info/METADATA,sha256=_20OX5JJelvD-t8_1BPtAbT-evCfuQySWpXaiPpKX7g,10422
126
- sibi_flux-2026.1.3.dist-info/RECORD,,
123
+ sibi_flux-2026.1.4.dist-info/WHEEL,sha256=ZyFSCYkV2BrxH6-HRVRg3R9Fo7MALzer9KiPYqNxSbo,79
124
+ sibi_flux-2026.1.4.dist-info/entry_points.txt,sha256=6xrq5zuz_8wodJj4s49raopnuC3Owy_leZRkWtcXpTk,49
125
+ sibi_flux-2026.1.4.dist-info/METADATA,sha256=njzorcmcig-EDd4i0-oH-nQ1dfi01ZvDY6xwN6N03B8,10422
126
+ sibi_flux-2026.1.4.dist-info/RECORD,,