more coherent base types

This commit is contained in:
Remy Moll 2024-07-17 13:22:43 +02:00
parent 4a291a69c9
commit 14a7f555df
3 changed files with 12 additions and 19 deletions

View File

@ -1,6 +1,5 @@
from typing import Optional from typing import Optional, Literal
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from .landmarktype import LandmarkType
from uuid import uuid4 from uuid import uuid4
@ -9,7 +8,7 @@ class Landmark(BaseModel) :
# Properties of the landmark # Properties of the landmark
name : str name : str
type: LandmarkType # De facto mapping depending on how the query was executed with overpass. Should still EXACTLY correspond to the preferences type: Literal['sightseeing', 'nature', 'shopping']
location : tuple location : tuple
osm_type : str osm_type : str
osm_id : int osm_id : int
@ -24,6 +23,7 @@ class Landmark(BaseModel) :
# Additional properties depending on specific tour # Additional properties depending on specific tour
must_do : bool must_do : bool
must_avoid : bool
is_secondary : Optional[bool] = False # TODO future is_secondary : Optional[bool] = False # TODO future
time_to_reach_next : Optional[int] = 0 # TODO fix this in existing code time_to_reach_next : Optional[int] = 0 # TODO fix this in existing code
@ -31,3 +31,7 @@ class Landmark(BaseModel) :
def __hash__(self) -> int: def __hash__(self) -> int:
return self.uuid.int return self.uuid.int
def __str__(self) -> str:
return f'Landmark: [{self.name}, {self.location}, {self.attractiveness}]'

View File

@ -1,4 +0,0 @@
from pydantic import BaseModel
class LandmarkType(BaseModel):
landmark_type: str

View File

@ -1,9 +1,9 @@
from pydantic import BaseModel from pydantic import BaseModel
from .landmarktype import LandmarkType from typing import Optional, Literal
class Preference(BaseModel) : class Preference(BaseModel) :
name: str name: str
type: LandmarkType # should match the attributes of the Preferences class type: Literal['sightseeing', 'nature', 'shopping']
score: int # score could be from 1 to 5 score: int # score could be from 1 to 5
# Input for optimization # Input for optimization
@ -17,12 +17,5 @@ class Preferences(BaseModel) :
# Shopping (diriger plutôt vers des zones / rues commerçantes) # Shopping (diriger plutôt vers des zones / rues commerçantes)
shopping : Preference shopping : Preference
""" # Food (price low or high. Combien on veut dépenser pour manger à midi/soir) max_time_minute: Optional[int] = 6*60
food_budget : Preference detour_tolerance_minute: Optional[int] = 0
# Tolérance au détour (ce qui détermine (+ ou -) le chemin emprunté)
detour_tol : Preference"""