use pydantic.conlist to define coordinate arrays #44
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What I am changing
Use
pydantic.conlist
to type coordinate arrays because it allows specifyingmin_items
. The arguments toconlist
appear in the auto-generated JSON schema which makes it a better representation of the geojson spec. OnlyLineString
implemented this before this change, now all the geometry types have length constraints on their coordinate arrays.I noticed this while using
hypothesis-jsonschema
to autogenerate fake data against the JSON schema created bygeojson-pydantic
. Hypothesis would generate coordinates arrays with invalid number of members (ex. a linear ring with one coordinate).How I did it
Because the coordinates members for different geometries build off of eachother I decided to define types for each coordinates type in
types.py
and reference those types in the pydantic models.How you can test it
Run pytest!