sibi-flux 2026.1.3__tar.gz → 2026.1.4__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 (125) hide show
  1. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/PKG-INFO +1 -1
  2. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/pyproject.toml +2 -2
  3. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/config/settings.py +21 -0
  4. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/field_factory.py +1 -0
  5. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/router.py +5 -0
  6. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_validator/_df_validator.py +1 -0
  7. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/README.md +0 -0
  8. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_dst/__init__.py +0 -0
  9. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/__init__.py +0 -0
  10. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/artifacts/__init__.py +0 -0
  11. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/artifacts/base.py +0 -0
  12. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/artifacts/parquet.py +0 -0
  13. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/artifacts/parquet_engine/__init__.py +0 -0
  14. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/artifacts/parquet_engine/executor.py +0 -0
  15. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/artifacts/parquet_engine/manifest.py +0 -0
  16. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/artifacts/parquet_engine/planner.py +0 -0
  17. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/cli.py +0 -0
  18. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/config/__init__.py +0 -0
  19. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/config/manager.py +0 -0
  20. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/core/__init__.py +0 -0
  21. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/core/managed_resource/__init__.py +0 -0
  22. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/core/managed_resource/_managed_resource.py +0 -0
  23. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/core/type_maps/__init__.py +0 -0
  24. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dask_cluster/__init__.py +0 -0
  25. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dask_cluster/async_core.py +0 -0
  26. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dask_cluster/client_manager.py +0 -0
  27. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dask_cluster/core.py +0 -0
  28. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dask_cluster/exceptions.py +0 -0
  29. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dask_cluster/utils.py +0 -0
  30. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/__init__.py +0 -0
  31. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/_data_cube.py +0 -0
  32. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/cli.py +0 -0
  33. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/config_engine.py +0 -0
  34. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/field_mapper.py +0 -0
  35. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/field_registry.py +0 -0
  36. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/generator.py +0 -0
  37. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/datacube/orchestrator.py +0 -0
  38. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dataset/__init__.py +0 -0
  39. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dataset/_dataset.py +0 -0
  40. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/dataset/hybrid_loader.py +0 -0
  41. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_enricher/__init__.py +0 -0
  42. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_enricher/async_enricher.py +0 -0
  43. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_enricher/attacher.py +0 -0
  44. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_enricher/merger.py +0 -0
  45. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_enricher/specs.py +0 -0
  46. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_enricher/types.py +0 -0
  47. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/__init__.py +0 -0
  48. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/_df_helper.py +0 -0
  49. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/__init__.py +0 -0
  50. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/_params.py +0 -0
  51. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/_strategies.py +0 -0
  52. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/http/__init__.py +0 -0
  53. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/http/_http_config.py +0 -0
  54. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/parquet/__init__.py +0 -0
  55. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/parquet/_parquet_options.py +0 -0
  56. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/sqlalchemy/__init__.py +0 -0
  57. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/sqlalchemy/_db_connection.py +0 -0
  58. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/sqlalchemy/_db_gatekeeper.py +0 -0
  59. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/sqlalchemy/_io_dask.py +0 -0
  60. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/sqlalchemy/_load_from_db.py +0 -0
  61. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/sqlalchemy/_model_registry.py +0 -0
  62. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/sqlalchemy/_sql_model_builder.py +0 -0
  63. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/backends/utils.py +0 -0
  64. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/core/__init__.py +0 -0
  65. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/core/_defaults.py +0 -0
  66. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/core/_filter_handler.py +0 -0
  67. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/core/_params_config.py +0 -0
  68. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_helper/core/_query_config.py +0 -0
  69. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/df_validator/__init__.py +0 -0
  70. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/__init__.py +0 -0
  71. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/core.py +0 -0
  72. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/discovery_updater.py +0 -0
  73. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/env.py +0 -0
  74. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/env_engine.py +0 -0
  75. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/env_generator.py +0 -0
  76. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/rule_generator.py +0 -0
  77. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/templates/__init__.py +0 -0
  78. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/templates/discovery_params.yaml +0 -0
  79. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/templates/gen_dc.py +0 -0
  80. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/init/templates/property_template.yaml +0 -0
  81. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/logger/__init__.py +0 -0
  82. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/logger/_logger.py +0 -0
  83. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/mcp/__init__.py +0 -0
  84. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/mcp/client.py +0 -0
  85. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/mcp/router.py +0 -0
  86. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/orchestration/__init__.py +0 -0
  87. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/orchestration/_artifact_orchestrator.py +0 -0
  88. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/orchestration/_pipeline_executor.py +0 -0
  89. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/osmnx_helper/__init__.py +0 -0
  90. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/osmnx_helper/_pbf_handler.py +0 -0
  91. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/osmnx_helper/graph_loader.py +0 -0
  92. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/osmnx_helper/utils.py +0 -0
  93. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/parquet/__init__.py +0 -0
  94. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/parquet/readers/__init__.py +0 -0
  95. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/parquet/readers/base.py +0 -0
  96. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/parquet/readers/parquet.py +0 -0
  97. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/parquet/saver/__init__.py +0 -0
  98. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/parquet/saver/_parquet_saver.py +0 -0
  99. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/parquet/saver/_write_gatekeeper.py +0 -0
  100. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/pipelines/__init__.py +0 -0
  101. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/pipelines/base.py +0 -0
  102. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/pipelines/template.py +0 -0
  103. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/py.typed +0 -0
  104. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/readers/__init__.py +0 -0
  105. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/readers/base.py +0 -0
  106. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/storage/__init__.py +0 -0
  107. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/storage/_fs_registry.py +0 -0
  108. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/storage/_storage_manager.py +0 -0
  109. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/storage/factory.py +0 -0
  110. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/__init__.py +0 -0
  111. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/clickhouse_writer/__init__.py +0 -0
  112. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/clickhouse_writer/_clickhouse_writer.py +0 -0
  113. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/common.py +0 -0
  114. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/dask_utils.py +0 -0
  115. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/data_utils/__init__.py +0 -0
  116. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/data_utils/_data_utils.py +0 -0
  117. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/dataframe_utils.py +0 -0
  118. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/date_utils/__init__.py +0 -0
  119. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/date_utils/_business_days.py +0 -0
  120. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/date_utils/_date_utils.py +0 -0
  121. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/date_utils/_file_age_checker.py +0 -0
  122. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/file_utils.py +0 -0
  123. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/filepath_generator/__init__.py +0 -0
  124. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/filepath_generator/_filepath_generator.py +0 -0
  125. {sibi_flux-2026.1.3 → sibi_flux-2026.1.4}/src/sibi_flux/utils/retry.py +0 -0
@@ -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>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sibi-flux"
3
- version = "2026.1.3"
3
+ version = "2026.1.4"
4
4
  description = "Sibi Toolkit: A collection of tools for Data Analysis/Engineering."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -117,7 +117,7 @@ uvicorn solutions.main:app
117
117
  --env-file .env.linux
118
118
  --workers 1
119
119
  """
120
- test = { cmd = "pytest tests/"}
120
+ test = { cmd = "pytest tests/", env = { SIBI_FLUX_ROUTER_INTROSPECTION = "false" } }
121
121
  lint = "black src/"
122
122
  build = "uv build"
123
123
  dc-sync = "python solutions/generators/datacubes/gen_dc.py sync"
@@ -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)
File without changes