Comments (4)
I don't understand what you mean. Can you provide an example?
from python-fastjsonschema.
When application users add new items, they have to provide all the properties. But if they are changing an existing item, they may only change one or two properties, so the document being validated will only contain those properties and therefore validation will fail if there are required properties defined in schema. In Cerberus validation library, for example, it is possible to provide update=True argument to validate method, in which case no error is raised if required properties are missing.
from python-fastjsonschema.
I would recommend to have one definition without required
field and then create second one with added required
. So instead of something like that:
DEFINITION = {
'type': 'object',
'required': ['name', 'surname'],
'name': {'type': 'string'},
'surname': {'type': 'string'},
'age': {'type': 'number'},
}
def create(data):
data = fastjsonschema.validate(DEFINITION, data)
# ...
def update(data):
data = fastjsonschema.validate(DEFINITION, data, update=True) # or more clearly ignore_required=True
# ...
You would have:
DEFINITION_UPDATE = {
'type': 'object',
'name': {'type': 'string'},
'surname': {'type': 'string'},
'age': {'type': 'number'},
}
DEFINITION_CREATE = copy.deepcopy(DEFINITION_UPDATE)
DEFINITION_CREATE['required'] = ['name', 'surname']
def create(data):
data = fastjsonschema.validate(DEFINITION_CREATE, data)
# ...
def update(data):
data = fastjsonschema.validate(DEFINITION_UPDATE, data)
# ...
The second version is also better approach because sometimes even during update you would need to require some attributes. It's then more clear what is really needed. It's more explicit. :-)
from python-fastjsonschema.
Yes, you are right. Just ignoring required properties is not enough, there could be properties depending on the value or existence of another property. Thanks for the advice.
from python-fastjsonschema.
Related Issues (20)
- Uniqueness enforced if uniqueItems explicitly set to False HOT 1
- 2.16.1: test_compile_to_code_custom_format fails HOT 3
- 2.16.2 not available on pypi.org HOT 1
- RFC 3339 date month and mday should be two digit HOT 2
- Getting UnboundLocalError HOT 3
- are the compiled validation functions cached? HOT 2
- Datadog's Guarddog detects exec in setup.py and complains HOT 4
- Python 3.10 venv build is failing HOT 1
- sdist is missing tests HOT 1
- Cannot parse int64 types HOT 1
- [Potential bug] not working validation for properties not defined in the schema object HOT 1
- Release request HOT 1
- Wrong tag name for 2.17.0 HOT 1
- 2.17.0 sdist contains "stray" tests/examples/lengths that breaks tests HOT 2
- errors for missing required properties
- Error occurs when fastjsonschema generates empty except block HOT 2
- Feature request: automatically add nested defaults HOT 7
- RFE: is it possible to start making github releases?🤔 HOT 1
- test_pattern_with_escape_no_warnings fails with python 3.12 HOT 2
- unspecified required properties yield unexpected behavior HOT 1
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 python-fastjsonschema.