Код: Выделить всё
from pydantic import BaseModel, Field
from pydantic.dataclasses import dataclass
@dataclass(frozen=True)
class Location(BaseModel):
longitude: float = Field(None, ge=-180, le=180)
latitude: float = Field(None, ge=-90, le=90)
Location(longitude=1.0, latitude=1.0)
< /code>
Когда я запускаю это локально, я получаю следующую ошибку: < /p>
Input should be a valid dictionary or instance of Location [type=model_type, input_value=ArgsKwargs((), {'longitud...: 1.0, 'latitude': 1.0}), input_type=ArgsKwargs]
For further information visit https://errors.pydantic.dev/2.4/v/model_type
< /code>
Я уже пытался следовать пидантской документации, которая дается ошибкой, но, к сожалению, не ясна и на самом деле не дает никакой информации о том, что изменить и что делать по -другому. < /p>
Я также попытался создать словарь Python, чтобы увидеть, может ли ошибка была решена, но она все еще дала такую же ошибку. < /p>
Честно говоря, у меня есть Понятия не имею, что делать дальше и как решить эту проблему, так как я проверил ее в нескольких файлах (в том числе в том же файле, чтобы убедиться, что она не имеет никакого отношения к каким -либо импорту). < /p>
Есть идеи о том, почему возникает ошибка? экземпляр обработки данных в том же файле, который он работает. Теперь я создаю различные модульные тесты, чтобы проверить, работают ли валидаторы
При создании модульного теста и запуска такого теста: < /p>
Код: Выделить всё
def test_when_location_is_not_in_range_then_print_exception(self):
invalid_location = Location(latitude=200.0, longitude=300.0)
with self.assertRaises(ValueError) as context:
location = Location(latitude=invalid_location.latitude, longitude=invalid_location.longitude)
self.assertEqual(
str(context.exception), "Location is out of range", "Expected exception message: 'Location is out of range'"
)
После запуска тест появляется новая ошибка:
Код: Выделить всё
longitude
Input should be less than or equal to 180 [type=less_than_equal, input_value=300.0, input_type=float]
For further information visit https://errors.pydantic.dev/2.4/v/less_than_equal
latitude
Input should be less than or equal to 90 [type=less_than_equal, input_value=200.0, input_type=float]
For further information visit https://errors.pydantic.dev/2.4/v/less_than_equal
Подробнее здесь: https://stackoverflow.com/questions/774 ... r-instance