From 7aef7acd3480cbf5023c09d2d4cfa6dc4063a502 Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Sun, 19 Apr 2026 23:49:02 +0200 Subject: [PATCH] Petits ajustements (cache => utils, noms de variables) --- src/app.py | 2 +- src/pages/observatoire.py | 12 +++++++----- src/{ => utils}/cache.py | 0 src/utils/table.py | 6 +++--- tests/test_table.py | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) rename src/{ => utils}/cache.py (100%) diff --git a/src/app.py b/src/app.py index eb3b332..cf4f2e3 100644 --- a/src/app.py +++ b/src/app.py @@ -7,8 +7,8 @@ from dash import Dash, Input, Output, State, dcc, html, page_container, page_reg from dotenv import load_dotenv from flask import Response -from src.cache import cache from src.utils import DEVELOPMENT +from utils.cache import cache load_dotenv() diff --git a/src/pages/observatoire.py b/src/pages/observatoire.py index b3afc84..c77c506 100644 --- a/src/pages/observatoire.py +++ b/src/pages/observatoire.py @@ -16,7 +16,6 @@ from dash import ( register_page, ) -from src.cache import cache from src.db import query_marches, schema from src.figures import ( DataTable, @@ -40,6 +39,7 @@ from src.utils.data import ( from src.utils.frontend import get_enum_values_as_dict from src.utils.seo import META_CONTENT from src.utils.table import COLUMNS, get_default_hidden_columns, prepare_table_data +from utils.cache import cache NAME = "Observatoire" @@ -658,9 +658,11 @@ def _normalize_filter_params(filter_params: dict) -> tuple: @cache.memoize() -def _compute_dashboard_children(cache_key: tuple): +def _compute_dashboard_children(filter_params_normalized: tuple): logger.debug("Cache miss — computing dashboard") - filter_params = {k: (list(v) if isinstance(v, tuple) else v) for k, v in cache_key} + filter_params = { + k: (list(v) if isinstance(v, tuple) else v) for k, v in filter_params_normalized + } lff: pl.LazyFrame = query_marches().lazy() lff = prepare_dashboard_data(lff=lff, **filter_params) @@ -772,8 +774,8 @@ def update_dashboard_cards(*filter_values): ): filter_params[input_id] = value - cache_key = _normalize_filter_params(filter_params) - children = _compute_dashboard_children(cache_key) + filter_params_normalized = _normalize_filter_params(filter_params) + children = _compute_dashboard_children(filter_params_normalized) return dbc.Row(children=children), filter_params diff --git a/src/cache.py b/src/utils/cache.py similarity index 100% rename from src/cache.py rename to src/utils/cache.py diff --git a/src/utils/table.py b/src/utils/table.py index 9a5a09b..2d80dc3 100644 --- a/src/utils/table.py +++ b/src/utils/table.py @@ -5,12 +5,12 @@ import polars as pl from dash import no_update from polars import selectors as cs -from src.cache import cache from src.db import query_marches, schema from src.utils import logger from src.utils.data import DATA_SCHEMA from src.utils.frontend import get_button_properties from src.utils.tracking import track_search +from utils.cache import cache def split_filter_part(filter_part): @@ -150,7 +150,7 @@ def dates_to_strings(lff: pl.LazyFrame, column: str) -> pl.LazyFrame: def normalize_sort_by(sort_by) -> tuple: if not sort_by: return () - return tuple((entry["column_id"], entry["direction"]) for entry in sort_by) + return tuple(sorted((entry["column_id"], entry["direction"]) for entry in sort_by)) def format_number(number) -> str: @@ -167,7 +167,7 @@ def unformat_montant(number: str) -> float: def format_values(dff: pl.DataFrame) -> pl.DataFrame: - def format_montant(expr, scale=None): + def format_montant(expr): # https://stackoverflow.com/a/78636786 expr = expr.cast(pl.String) expr = expr.str.splitn(".", 2) diff --git a/tests/test_table.py b/tests/test_table.py index d15daa7..5aef7b1 100644 --- a/tests/test_table.py +++ b/tests/test_table.py @@ -85,7 +85,7 @@ def flask_app(): """Minimal Flask app with SimpleCache so @cache.memoize() works in tests.""" from flask import Flask - from src.cache import cache + from utils.cache import cache app = Flask(__name__) cache.init_app(app, config={"CACHE_TYPE": "SimpleCache"}) @@ -97,7 +97,7 @@ def reset_cache(flask_app): """Ensure the flask-caching backend is empty between tests so that cache-hit assertions are meaningful. Falls back to no-op when no Flask app context is active (NullCache).""" - from src.cache import cache + from utils.cache import cache with flask_app.app_context(): try: