-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HH-127328 argument validation improvement #502
Conversation
Дефолт вместо пустой строки — это не совсем то, чего ожидаешь, и отличается от поведения |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ок, только какой-то лишний пробел перед kwargs
71f489a
to
c022cc5
Compare
|
||
try: | ||
validator = validation.value | ||
params = {validator: value} | ||
validated_value = self._validation_model(**params).dict().get(validator) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Просто для истории, что тут происходит (очевидно же).
Вместо полей модели pydantic у нас типы аргументов: string
, integer
, etc, по дефолту всё None
.
Соответственно, для строкового аргумента создаём модель с единственным полем string
, для числового — с полем integer
и т.д.
self._validation_model(**params).dict().get(validator)
Превращается в это:
>>> BaseValidationModel(**{Validators.STRING.value: '123'}).dict().get(Validators.STRING.value)
'123'
Или, после сокращений:
>>> BaseValidationModel(string='123').dict().get('string')
'123'
Получаем обработанное значение по тем же именам типов-полей:
>>> BaseValidationModel(string='123').dict().get('string')
'123'
>>> BaseValidationModel(string='123').dict().get('integer')
None
>>> BaseValidationModel(string=123).dict().get('integer')
None
>>> BaseValidationModel(integer=123).dict().get('integer')
123
>>> BaseValidationModel(integer=123).dict().get('string')
None
e88d798
to
6ce121a
Compare
8300a33
to
b9f8b03
Compare
https://jira.hh.ru/browse/HH-127328
Решаю проблему ,когда
get_validated_argument()
вызывается на квере следующего вида:some_value=123&empty_value=
, в текущей реализации empty_value будет иметь значение''
, что не позволит использовать дефолт, но не пройдет валидацию наint()