Better gestion of privates variables.

Add a forgotten f for f-strings.
This commit is contained in:
Oscar Plaisant 2024-06-27 17:24:33 +02:00
parent b13f8ab039
commit f84aec4456

View File

@ -7,6 +7,7 @@ from abc import ABC, abstractmethod
class QueryGenerator(ABC):
"""Abstract class to define what methods should a query generator have."""
@abstractmethod
def __init__(self): ...
@ -14,18 +15,23 @@ class QueryGenerator(ABC):
def __str__(self) -> str: ...
class QueryWithParameter(QueryGenerator):
# DEFAULT_AUTHORIZED_PARAMETER_VALUES: tuple[str, ...] = ("foo", "bar")
class QueryWithParameter(QueryGenerator, ABC):
"""Abstract class for query generators with our 3 parameters.
This class implements the gestion of 3 attributes : `parameter`,
`authorized_parameter_values` and `summed_attribute`. They are managed so
that there is no typing error, and using default values. Importantly, the
default value of authorized_parameter_values (when not given or set to
None) is the the value of `self.DEFAULT_AUTHORIZED_PARAMETER_VALUES`.
"""
def __init__(self, parameter: str|None =None,
authorized_parameter_values: tuple[str, ...] | None = None,
summed_attribute: str|None =None):
if parameter is None: raise ValueError
self.parameter = str(parameter)
self.__parameter = str(parameter)
if authorized_parameter_values is None:
authorized_parameter_values = self.DEFAULT_AUTHORIZED_PARAMETER_VALUES
self.authorized_parameter_values = authorized_parameter_values
self.__authorized_parameter_values = authorized_parameter_values
self.__force_typing_on_authorized_parameter_values()
if summed_attribute is None: raise ValueError
self.summed_attribute = str(summed_attribute)
@ -39,6 +45,8 @@ class QueryWithParameter(QueryGenerator):
self.__parameter = str(value)
def __force_typing_on_authorized_parameter_values(self):
if self.__authorized_parameter_values is None:
self.__authorized_parameter_values = self.DEFAULT_AUTHORIZED_PARAMETER_VALUES
self.__authorized_parameter_values = tuple(
map(str, self.__authorized_parameter_values))
@ -54,6 +62,8 @@ class QueryWithParameter(QueryGenerator):
class QueryWithParameterGroupedByCriteria(QueryWithParameter):
"""Similar to QueryWithParameter, but with an addtional parameter : `criteria`.
The results are grouped by criteria, and values of `summed_attribute` are summed for each `parameter`, to give an order on `parameter`'s values"""
def __init__(self, parameter: str|None =None,
authorized_parameter_values: tuple[str, ...] | None =None,
@ -67,7 +77,7 @@ class QueryWithParameterGroupedByCriteria(QueryWithParameter):
authorized_parameter_values = self.DEFAULT_AUTHORIZED_PARAMETER_VALUES
self.authorized_parameter_values = authorized_parameter_values
self.criteria = criteria
self.__criteria = str(criteria)
if summed_attribute is None: raise ValueError
self.summed_attribute = str(summed_attribute)
@ -162,7 +172,7 @@ class QuerySSBWithParameterGroupedByCriteria(QueryWithParameterGroupedByCriteria
res += "INNER JOIN date ON lo_orderdate = D_DATEKEY\n"
if self.authorized_parameter_values is not None:
res += "WHERE {self.parameter} IN {self.authorized_parameter_values}\n"
res += f"WHERE {self.parameter} IN {self.authorized_parameter_values}\n"
res += f"""