sibi-flux 2026.1.2__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.
- sibi_flux/__init__.py +0 -1
- sibi_flux/cli.py +29 -6
- sibi_flux/config/settings.py +20 -1
- sibi_flux/datacube/_data_cube.py +1 -0
- sibi_flux/datacube/cli.py +1637 -415
- sibi_flux/datacube/config_engine.py +36 -18
- sibi_flux/datacube/field_factory.py +72 -28
- sibi_flux/datacube/field_mapper.py +93 -69
- sibi_flux/datacube/field_registry.py +1 -1
- sibi_flux/datacube/generator.py +255 -181
- sibi_flux/datacube/orchestrator.py +309 -37
- sibi_flux/datacube/router.py +5 -0
- sibi_flux/df_helper/backends/__init__.py +0 -1
- sibi_flux/df_validator/_df_validator.py +1 -0
- sibi_flux/init/core.py +93 -41
- sibi_flux/init/discovery_updater.py +80 -26
- sibi_flux/init/env.py +63 -36
- sibi_flux/init/env_engine.py +83 -42
- sibi_flux/init/env_generator.py +336 -183
- sibi_flux/init/rule_generator.py +171 -0
- sibi_flux/init/templates/discovery_params.yaml +9 -10
- sibi_flux/init/templates/gen_dc.py +74 -23
- sibi_flux/orchestration/__init__.py +0 -1
- sibi_flux/storage/_storage_manager.py +0 -1
- sibi_flux/utils/date_utils/__init__.py +0 -1
- sibi_flux/utils/date_utils/_business_days.py +0 -1
- {sibi_flux-2026.1.2.dist-info → sibi_flux-2026.1.4.dist-info}/METADATA +2 -4
- {sibi_flux-2026.1.2.dist-info → sibi_flux-2026.1.4.dist-info}/RECORD +30 -29
- {sibi_flux-2026.1.2.dist-info → sibi_flux-2026.1.4.dist-info}/WHEEL +0 -0
- {sibi_flux-2026.1.2.dist-info → sibi_flux-2026.1.4.dist-info}/entry_points.txt +0 -0
sibi_flux/__init__.py
CHANGED
sibi_flux/cli.py
CHANGED
|
@@ -7,39 +7,62 @@ from sibi_flux.init.core import initialize_project
|
|
|
7
7
|
app = typer.Typer(help="Sibi Flux CLI")
|
|
8
8
|
console = Console()
|
|
9
9
|
|
|
10
|
+
|
|
10
11
|
@app.callback()
|
|
11
12
|
def callback():
|
|
12
13
|
"""
|
|
13
14
|
Sibi Flux CLI
|
|
14
15
|
"""
|
|
15
16
|
|
|
17
|
+
|
|
16
18
|
@app.command()
|
|
17
19
|
def init(
|
|
18
20
|
project_name: str = typer.Argument(..., help="Name of the project to create"),
|
|
19
|
-
lib: bool = typer.Option(
|
|
20
|
-
|
|
21
|
+
lib: bool = typer.Option(
|
|
22
|
+
False, "--lib", help="Initialize as a library project (passed to uv init)"
|
|
23
|
+
),
|
|
24
|
+
app: bool = typer.Option(
|
|
25
|
+
False, "--app", help="Initialize as an application project (passed to uv init)"
|
|
26
|
+
),
|
|
21
27
|
):
|
|
22
28
|
"""
|
|
23
29
|
Initialize a new Sibi Flux project.
|
|
24
|
-
|
|
30
|
+
|
|
25
31
|
Creates a new directory <project_name>, initializes it with 'uv',
|
|
26
32
|
and adds 'sibi-flux' as a dependency.
|
|
27
33
|
"""
|
|
28
34
|
initialize_project(project_name, lib, app)
|
|
29
35
|
|
|
36
|
+
|
|
30
37
|
@app.command()
|
|
31
38
|
def env(
|
|
32
39
|
project_path: Path = typer.Argument(Path("."), help="Project root directory"),
|
|
33
|
-
env_file: Optional[Path] = typer.Option(
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
env_file: Optional[Path] = typer.Option(
|
|
41
|
+
None, "--env-file", "-e", help="Path to environment file (defaults to .env)"
|
|
42
|
+
),
|
|
43
|
+
cleanup: bool = typer.Option(
|
|
44
|
+
False, "--cleanup", help="Remove existing configuration files"
|
|
45
|
+
),
|
|
46
|
+
production: bool = typer.Option(
|
|
47
|
+
False,
|
|
48
|
+
"--production",
|
|
49
|
+
"-p",
|
|
50
|
+
help="Generate production skeleton (no hardcoded values)",
|
|
51
|
+
),
|
|
36
52
|
):
|
|
37
53
|
"""
|
|
38
54
|
Initialize configuration files (settings.py, credentials) based on .env
|
|
39
55
|
"""
|
|
40
56
|
from sibi_flux.init.env import init_env
|
|
57
|
+
|
|
41
58
|
init_env(project_path, env_file, cleanup=cleanup, production_mode=production)
|
|
42
59
|
|
|
43
60
|
|
|
61
|
+
# Mount Datacube CLI
|
|
62
|
+
from sibi_flux.datacube.cli import app as dc_app
|
|
63
|
+
|
|
64
|
+
app.add_typer(dc_app, name="dc", help="Datacube generation and management commands")
|
|
65
|
+
|
|
66
|
+
|
|
44
67
|
if __name__ == "__main__":
|
|
45
68
|
app()
|
sibi_flux/config/settings.py
CHANGED
|
@@ -9,7 +9,7 @@ class SibiBaseSettings(BaseSettings):
|
|
|
9
9
|
model_config = SettingsConfigDict(
|
|
10
10
|
env_file=".env", env_file_encoding="utf-8", extra="ignore"
|
|
11
11
|
)
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
conf_name: ClassVar[str] = ""
|
|
14
14
|
|
|
15
15
|
|
|
@@ -103,6 +103,25 @@ 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
|
+
}
|
|
106
125
|
|
|
107
126
|
|
|
108
127
|
class RedisBaseSettings(SibiBaseSettings):
|
sibi_flux/datacube/_data_cube.py
CHANGED