1+ from __future__ import annotations
2+
13from decimal import Decimal
24
35from pydantic import BaseModel , Field
@@ -15,9 +17,6 @@ class StageItemInputBase(BaseModelORM):
1517
1618
1719class StageItemInputGeneric (BaseModel ):
18- team_id : TeamId | None = None
19- winner_from_stage_item_id : StageItemId | None = None
20- winner_position : int | None = None
2120 points : Decimal = Decimal ("0.0" )
2221 wins : int = 0
2322 draws : int = 0
@@ -30,12 +29,15 @@ def elo(self) -> Decimal:
3029 """
3130 return self .points
3231
33- def __hash__ (self ) -> int :
34- return (
35- self .team_id ,
36- self .winner_from_stage_item_id ,
37- self .winner_position ,
38- ).__hash__ ()
32+
33+ def hash_stage_item_input (
34+ self : StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty ,
35+ ) -> int :
36+ return (
37+ self .team_id ,
38+ self .winner_from_stage_item_id ,
39+ self .winner_position ,
40+ ).__hash__ ()
3941
4042
4143class StageItemInputTentative (StageItemInputBase , StageItemInputGeneric ):
@@ -46,17 +48,25 @@ class StageItemInputTentative(StageItemInputBase, StageItemInputGeneric):
4648 def get_lookup_key (self ) -> tuple [StageItemId , int ]:
4749 return self .winner_from_stage_item_id , self .winner_position
4850
51+ __hash__ = hash_stage_item_input
52+
4953
5054class StageItemInputFinal (StageItemInputBase , StageItemInputGeneric ):
5155 team_id : TeamId
56+ winner_from_stage_item_id : StageItemId | None = None
57+ winner_position : int | None = None
5258 team : Team
5359
60+ __hash__ = hash_stage_item_input
61+
5462
5563class StageItemInputEmpty (StageItemInputBase , StageItemInputGeneric ):
5664 team_id : None = None
5765 winner_from_stage_item_id : None = None
5866 winner_position : None = None
5967
68+ __hash__ = hash_stage_item_input
69+
6070
6171StageItemInput = StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty
6272
0 commit comments