Skip to content
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

Do not ignore unexpected openapi attributes anymore #315

Merged
merged 1 commit into from
Aug 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [26.0.0] - 2024-08-12
- Do not ignore unexpected openapi attributes anymore

## [25.0.2] - 2024-08-01
- Fix openapi schema sharing for Page types

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "winter"
version = "25.0.2"
version = "26.0.0"
homepage = "https://github.com/WinterFramework/winter"
description = "Web Framework with focus on python typing, dataclasses and modular design"
authors = ["Alexander Egorov <mofr@zond.org>"]
Expand Down
114 changes: 0 additions & 114 deletions winter_openapi/__init__.py
Original file line number Diff line number Diff line change
@@ -1,57 +1,3 @@
from openapi_pydantic import Components as Components310
from openapi_pydantic import Contact as Contact310
from openapi_pydantic import Discriminator as Discriminator310
from openapi_pydantic import Encoding as Encoding310
from openapi_pydantic import Example as Example310
from openapi_pydantic import ExternalDocumentation as ExternalDocumentation310
from openapi_pydantic import Header as Header310
from openapi_pydantic import Info as Info310
from openapi_pydantic import License as License310
from openapi_pydantic import Link as Link310
from openapi_pydantic import MediaType as MediaType310
from openapi_pydantic import OAuthFlow as OAuthFlow310
from openapi_pydantic import OAuthFlows as OAuthFlows310
from openapi_pydantic import OpenAPI as OpenAPI310
from openapi_pydantic import Operation as Operation310
from openapi_pydantic import Parameter as Parameter310
from openapi_pydantic import PathItem as PathItem310
from openapi_pydantic import Reference as Reference310
from openapi_pydantic import RequestBody as RequestBody310
from openapi_pydantic import Response as Response310
from openapi_pydantic import Schema as Schema310
from openapi_pydantic import SecurityScheme as SecurityScheme310
from openapi_pydantic import Server as Server310
from openapi_pydantic import ServerVariable as ServerVariable310
from openapi_pydantic import Tag as Tag310
from openapi_pydantic import XML as XML310
from openapi_pydantic.v3.v3_0_3 import Components as Components303
from openapi_pydantic.v3.v3_0_3 import Contact as Contact303
from openapi_pydantic.v3.v3_0_3 import Discriminator as Discriminator303
from openapi_pydantic.v3.v3_0_3 import Encoding as Encoding303
from openapi_pydantic.v3.v3_0_3 import Example as Example303
from openapi_pydantic.v3.v3_0_3 import ExternalDocumentation as ExternalDocumentation303
from openapi_pydantic.v3.v3_0_3 import Header as Header303
from openapi_pydantic.v3.v3_0_3 import Info as Info303
from openapi_pydantic.v3.v3_0_3 import License as License303
from openapi_pydantic.v3.v3_0_3 import Link as Link303
from openapi_pydantic.v3.v3_0_3 import MediaType as MediaType303
from openapi_pydantic.v3.v3_0_3 import OAuthFlow as OAuthFlow303
from openapi_pydantic.v3.v3_0_3 import OAuthFlows as OAuthFlows303
from openapi_pydantic.v3.v3_0_3 import OpenAPI as OpenAPI303
from openapi_pydantic.v3.v3_0_3 import Operation as Operation303
from openapi_pydantic.v3.v3_0_3 import Parameter as Parameter303
from openapi_pydantic.v3.v3_0_3 import PathItem as PathItem303
from openapi_pydantic.v3.v3_0_3 import Reference as Reference303
from openapi_pydantic.v3.v3_0_3 import RequestBody as RequestBody303
from openapi_pydantic.v3.v3_0_3 import Response as Response303
from openapi_pydantic.v3.v3_0_3 import Schema as Schema303
from openapi_pydantic.v3.v3_0_3 import SecurityScheme as SecurityScheme303
from openapi_pydantic.v3.v3_0_3 import Server as Server303
from openapi_pydantic.v3.v3_0_3 import ServerVariable as ServerVariable303
from openapi_pydantic.v3.v3_0_3 import Tag as Tag303
from openapi_pydantic.v3.v3_0_3 import XML as XML303
from pydantic import Extra

from winter.data.pagination import Page
from winter.web.exceptions import RequestDataDecodeException
from winter.web.exceptions import ThrottleException
Expand All @@ -75,8 +21,6 @@


def setup(allow_missing_raises_annotation: bool = False):
__ignore_extra_openapi_pydantic_303()
__ignore_extra_openapi_pydantic_310()
register_global_exception(MaximumLimitValueExceeded)
register_global_exception(ThrottleException)
register_global_exception(RequestDataDecodeException)
Expand All @@ -87,61 +31,3 @@ def setup(allow_missing_raises_annotation: bool = False):
register_route_parameters_inspector(PagePositionArgumentsInspector(PagePositionArgumentResolver()))
if not allow_missing_raises_annotation: # pragma: no cover
validate_missing_raises_annotations()


def __ignore_extra_openapi_pydantic_303():
XML303.Config.extra = Extra.ignore
Components303.Config.extra = Extra.ignore
Contact303.Config.extra = Extra.ignore
Discriminator303.Config.extra = Extra.ignore
Encoding303.Config.extra = Extra.ignore
Example303.Config.extra = Extra.ignore
ExternalDocumentation303.Config.extra = Extra.ignore
Header303.Config.extra = Extra.ignore
Info303.Config.extra = Extra.ignore
License303.Config.extra = Extra.ignore
Link303.Config.extra = Extra.ignore
MediaType303.Config.extra = Extra.ignore
OAuthFlow303.Config.extra = Extra.ignore
OAuthFlows303.Config.extra = Extra.ignore
OpenAPI303.Config.extra = Extra.ignore
Operation303.Config.extra = Extra.ignore
Parameter303.Config.extra = Extra.ignore
PathItem303.Config.extra = Extra.ignore
Reference303.Config.extra = Extra.ignore
RequestBody303.Config.extra = Extra.ignore
Response303.Config.extra = Extra.ignore
Schema303.Config.extra = Extra.ignore
SecurityScheme303.Config.extra = Extra.ignore
Server303.Config.extra = Extra.ignore
ServerVariable303.Config.extra = Extra.ignore
Tag303.Config.extra = Extra.ignore


def __ignore_extra_openapi_pydantic_310():
XML310.Config.extra = Extra.ignore
Components310.Config.extra = Extra.ignore
Contact310.Config.extra = Extra.ignore
Discriminator310.Config.extra = Extra.ignore
Encoding310.Config.extra = Extra.ignore
Example310.Config.extra = Extra.ignore
ExternalDocumentation310.Config.extra = Extra.ignore
Header310.Config.extra = Extra.ignore
Info310.Config.extra = Extra.ignore
License310.Config.extra = Extra.ignore
Link310.Config.extra = Extra.ignore
MediaType310.Config.extra = Extra.ignore
OAuthFlow310.Config.extra = Extra.ignore
OAuthFlows310.Config.extra = Extra.ignore
OpenAPI310.Config.extra = Extra.ignore
Operation310.Config.extra = Extra.ignore
Parameter310.Config.extra = Extra.ignore
PathItem310.Config.extra = Extra.ignore
Reference310.Config.extra = Extra.ignore
RequestBody310.Config.extra = Extra.ignore
Response310.Config.extra = Extra.ignore
Schema310.Config.extra = Extra.ignore
SecurityScheme310.Config.extra = Extra.ignore
Server310.Config.extra = Extra.ignore
ServerVariable310.Config.extra = Extra.ignore
Tag310.Config.extra = Extra.ignore
2 changes: 0 additions & 2 deletions winter_openapi/inspectors/page_position_argument_inspector.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,13 @@ def __init__(self, page_position_argument_resolver: PagePositionArgumentResolver
description='Number of results to return per page',
required=False,
param_in="query",
type=DataTypes.INTEGER,
param_schema=Schema(type=DataTypes.INTEGER),
)
self.offset_parameter = Parameter(
name=page_position_argument_resolver.offset_name,
description='The initial index from which to return the results',
required=False,
param_in="query",
type=DataTypes.INTEGER,
param_schema=Schema(type=DataTypes.INTEGER)
)

Expand Down
1 change: 0 additions & 1 deletion winter_openapi/inspectors/query_parameters_inspector.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ def _convert_dataclass_field_to_openapi_parameter(
description='',
required=field.default is dataclasses.MISSING,
param_in='query',
default=field.default,
param_schema=schema,
explode=query_parameter.explode,
)
Expand Down
Loading