Comments (3)
Thanks for your feedback.
Refer to the code
Lines 345 to 356 in 3d5f31a
It's possible to remove the duplicate schema. Let's you can guarantee that there is no Schema with the same name. Then you can change the key format in definitions
to f'{key}'
and change the value in the properties.xxx.items.$ref
.
This time you should be able to inherit and override the behavior.
from spectree.
Hi, thanks for the quick reply. I'm going to try for this refactor. I had already been looking a bit at the code to try and figure out where I would need to change things. From my tests I need to change where you said and here:
Lines 232 to 244 in 3d5f31a
But given this last change is in the utils.py
I don't think I can define this behavior as a staticmethod
in the Spectree
class. Otherwise, when I import Spectree
in utils to use the method Spectree.new_behavior_static_method
it'll cause a circular import because spec.py
imports utils.py
.
from spectree.
I made another strategy implementation and you can check the merge here #305
If you want to test the example above with my branch this is how it works with the change:
from pydantic import BaseModel
from falcon.asgi import App
from spectree import SpecTree, Response
app = App(
cors_enable=True
)
spec = SpecTree(
'falcon-asgi',
title = 'DEMO',
version = 'v0.1',
naming_strategy=lambda model: f"{model.__name__}",
nested_naming_strategy=lambda _, child: child
)
class Pet(BaseModel):
name: str
class Person(BaseModel):
pets: list[Pet]
class People(BaseModel):
people: list[Person]
class Pets(BaseModel):
pets: list[Pet]
class PeopleResource:
@spec.validate(resp=Response(HTTP_200=People))
async def on_get(self):
pass
class PetsResource:
@spec.validate(resp=Response(HTTP_200=Pets))
async def on_get(self):
pass
app.add_route('/people', PeopleResource())
app.add_route('/pets', PetsResource())
spec.register(app)
This removes the hash from the root models and removes the parent from the nested models.
from spectree.
Related Issues (20)
- [Question] It's possible to use marshmallow instead of pydantic to define schemas? HOT 1
- [BUG] Spectree flask plugin is logging request validation errors twice HOT 2
- [Question] Is it possible to specify a BaseModel class as a Redoc Model? HOT 1
- Potentially leaky tests HOT 1
- Falcon: before in validate decorator not working?
- [Question] Skip validation for real? HOT 8
- Key appended to Schema Component HOT 5
- Exclude routes from OpenAPI spec HOT 1
- feat: support `msgspec` as another schema definition
- feat: Disable publishing of /apidoc route HOT 1
- bug: annotations NameError issue caused by python bug HOT 1
- bug: spectree doesn't support pydantic 2.x but doesn't restrict in pyproject.toml HOT 1
- bug: don't support pydantic v2 HOT 5
- feat: add an abstract layer to support pydantic[v1]/pydantic[v2]/msgspec
- bug: Flask Response Validation Error Results in Exception, Unintended 500 content HOT 1
- bug: An empty request is not validated / the content type is not enforced HOT 1
- bug: SecuritySchemeData root_validator conflicts with alias HOT 2
- bug: field alias no longer respected (regression) HOT 6
- bug: List[int] in query params does not accept a list of size 1 in flask app HOT 2
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 spectree.