Skip to content

Commit cb1e9c9

Browse files
authored
Merge pull request piccolo-orm#24 from piccolo-orm/callable_column_defaults
updating type annotations for column default values
2 parents c034dc6 + a015b09 commit cb1e9c9

File tree

1 file changed

+35
-8
lines changed

1 file changed

+35
-8
lines changed

piccolo/columns/column_types.py

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,10 @@ class Band(Table):
148148
concat_delegate: ConcatDelegate = ConcatDelegate()
149149

150150
def __init__(
151-
self, length: int = 255, default: t.Union[str, None] = "", **kwargs
151+
self,
152+
length: int = 255,
153+
default: t.Union[str, t.Callable[[], str], None] = "",
154+
**kwargs,
152155
) -> None:
153156
self._validate_default(default, (str, None))
154157

@@ -167,7 +170,9 @@ def column_type(self):
167170
def __add__(self, value: t.Union[str, Varchar, Text]) -> QueryString:
168171
engine_type = self._meta.table._meta.db.engine_type
169172
return self.concat_delegate.get_querystring(
170-
column_name=self._meta.name, value=value, engine_type=engine_type,
173+
column_name=self._meta.name,
174+
value=value,
175+
engine_type=engine_type,
171176
)
172177

173178
def __radd__(self, value: t.Union[str, Varchar, Text]) -> QueryString:
@@ -232,7 +237,9 @@ class Band(Table):
232237
value_type = str
233238
concat_delegate: ConcatDelegate = ConcatDelegate()
234239

235-
def __init__(self, default: t.Union[str, None] = "", **kwargs) -> None:
240+
def __init__(
241+
self, default: t.Union[str, None, t.Callable[[], str]] = "", **kwargs
242+
) -> None:
236243
self._validate_default(default, (str, None))
237244
self.default = default
238245
kwargs.update({"default": default})
@@ -312,7 +319,9 @@ class Band(Table):
312319

313320
math_delegate = MathDelegate()
314321

315-
def __init__(self, default: t.Union[int, None] = 0, **kwargs) -> None:
322+
def __init__(
323+
self, default: t.Union[int, t.Callable[[], int], None] = 0, **kwargs
324+
) -> None:
316325
self._validate_default(default, (int, None))
317326
self.default = default
318327
kwargs.update({"default": default})
@@ -690,7 +699,11 @@ class Band(Table):
690699

691700
value_type = bool
692701

693-
def __init__(self, default: t.Union[bool, None] = False, **kwargs) -> None:
702+
def __init__(
703+
self,
704+
default: t.Union[bool, t.Callable[[], bool], None] = False,
705+
**kwargs,
706+
) -> None:
694707
self._validate_default(default, (bool, None))
695708
self.default = default
696709
kwargs.update({"default": default})
@@ -757,7 +770,9 @@ def scale(self):
757770
def __init__(
758771
self,
759772
digits: t.Optional[t.Tuple[int, int]] = None,
760-
default: t.Union[decimal.Decimal, None] = decimal.Decimal(0.0),
773+
default: t.Union[
774+
decimal.Decimal, t.Callable[[], decimal.Decimal], None
775+
] = decimal.Decimal(0.0),
761776
**kwargs,
762777
) -> None:
763778
if isinstance(digits, tuple):
@@ -810,7 +825,11 @@ class Concert(Table):
810825

811826
value_type = float
812827

813-
def __init__(self, default: t.Union[float, None] = 0.0, **kwargs) -> None:
828+
def __init__(
829+
self,
830+
default: t.Union[float, t.Callable[[], float], None] = 0.0,
831+
**kwargs,
832+
) -> None:
814833
self._validate_default(default, (float, None))
815834
self.default = default
816835
kwargs.update({"default": default})
@@ -1060,7 +1079,15 @@ class JSON(Column): # lgtm[py/missing-equals]
10601079
value_type = str
10611080

10621081
def __init__(
1063-
self, default: t.Union[str, t.List, t.Dict, None] = "{}", **kwargs
1082+
self,
1083+
default: t.Union[
1084+
str,
1085+
t.List,
1086+
t.Dict,
1087+
t.Callable[[], t.Union[str, t.List, t.Dict]],
1088+
None,
1089+
] = "{}",
1090+
**kwargs,
10641091
) -> None:
10651092
self._validate_default(default, (str, list, dict, None))
10661093

0 commit comments

Comments
 (0)