Comments (7)
Yes my bad it's only with a plain validator that nothing gets called after the plain validator!
from pydantic.
Oke perfect, thanks :)
from pydantic.
This is the expected behavior of the before (model) validator, the input is untouched. You probably want to use an after model validator: in this case, value["a"]
will be a Decimal
instance. If you need more flexibility, you can also use a wrap validator
from pydantic.
Please note, that I am not doing any validation. I am using the BeforeValidator as simple hook, to do something else before the validation starts.
From my POV a noop BeforeValidator should not break the validation.
From the docs i would expect that a, b and c are strings at the before validation stage.
Also decimal seems to have another problem with lossy data, which may or may not be related to the data being passed as float instead of a string.
from pydantic.
After thinking some more about it, i guess that pydantic is switching from json validation to python validation, when a BeforeValidator exists. This would be quite strange behaviour.
On the data type in the BeforeValidator side note: probably everything should be a string at this stage. For ints it is no problem, but floats have already lost precision at this point (I can not get it back at this stage), if i want to do my own validation.
from pydantic.
Hmm, I would still expect this to work with a before validator. I'll chat with the team first thing tomorrow and solidify whether or not this is expected behavior.
Thanks for reporting this issue!
from pydantic.
Indeed, this is a bug!
from pydantic.
Related Issues (20)
- Reading pickled model with new schema does not initialise defaults HOT 1
- Allow for model discrimination without the creation of another BaseModel HOT 3
- ambiguous union discrimination when multiple models correspond to the input arguments HOT 1
- Random fails in field serialization HOT 1
- Validation issue with alias fields and init args
- "in-congruent" format validation behavior when exported to jsonschema HOT 2
- Failed to create model with two generic parameters when Typevar.default is set
- Discriminator on non-Union types HOT 1
- Write new feature pattern docs HOT 1
- `AnyUrl` requires host for validation but `.host` is typed `None | str` HOT 3
- Increase tests coverage for new pipeline API HOT 2
- `model_json_schema()` fails to include annotated third-party types: "Default value is not JSON serializable [non-serializable-default]" HOT 1
- Dynamically include/exclude fields from dumps HOT 1
- `TypeAdapter` with Union has `Any` type hint argument starting with Pydantic 2.7.0+ HOT 4
- "NameError: name 'T' is not defined" when using "from __future__ import annotations" with generic function HOT 3
- Allow schema() to respect PlainSerializer annotations to fully enable using Enum names HOT 1
- `include` and `exclude` are not passed to field serializer contexts HOT 3
- @field_validator not working when wrapped with @classmethod HOT 1
- Attributes declared as iterables are replaced in the instances by `pydantic-core` `ValidatorIterator` instance HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pydantic.