Releases: dymmond/esmerald
Releases · dymmond/esmerald
Version 3.3.5
This was missed from the release 3.3.4 and it was supposed to be included.
Added
- Native types for Esmerald transformer models/
- Hashing list internally for the signature allowing lists to be declared for OpenAPI representation.
Changed
- Query parameters when declared as
list
,List
,dict
andDict
automatically parses the values
to the declared type. - OpenAPI understands the native types, objects and lists (arrays).
Version 3.3.4
Added
- Missing documentation for
Query Parameters
andPath Parameters
.
Changed
- Documentation for
Extra, Advanced && Useful
is now renamedAdvanced & Useful
and its located in theFeatures
section. - Removed unused internal functions for validations now used by Esmerald encoders.
Fixed
- Regression caused by the introduction of the dynamic encoders when diplaying the query parameters in the OpenAPI
documentation. - Annotation discovery for the Signature.
Version 3.3.3
Changed
- Internal implementation of the exceptions.
- Removed redundant exception declaration and delegate the internals to Lilya.
- Internal code cleaning.
Added
ValidationError
for custom independent raising exceptions within any Esmerald application
Fixed
is_server_error
for dependencies was causing an exception to be raised in aloc[-1]
.
Version 3.3.2
Changed
- Update the internals of contrib for Asyncz to match the new Asyncz specifications and API.
Version 3.3.1
Changed
- Automatic detection of a response for a default status code when using OpenAPI documentation.
- Addressing
from __future__ import annotation
when using the dependency injection defaulting to Any.
Version 3.3.0
Fixed
- Fixes
PydanticEncoder
when checking for subclasses ofBaseModel
causing the dependency injection to fail
for those specific types
Added
- Esmerald is ow using
python-slugify
instead ofawesome-slugify
for internals. - OpenAPI Schemas Pydantic is now fully integrated with Esmerald OpenAPI.
- Esmerald now supports
app
as decorator prodiving another way of declaring the routing.
Example
#!/usr/bin/env python
import uvicorn
from esmerald import Esmerald, Gateway, JSONResponse, Request, get
app = Esmerald()
@app.get("/esmerald")
def welcome() -> JSONResponse:
return JSONResponse({"message": "Welcome to Esmerald"})
@app.get("/esmerald/{user}")
def user(user: str) -> JSONResponse:
return JSONResponse({"message": f"Welcome to Esmerald, {user}"})
@app.get("/esmerald/in-request/{user}")
def user_in_request(request: Request) -> JSONResponse:
user = request.path_params["user"]
return JSONResponse({"message": f"Welcome to Esmerald, {user}"})
if __name__ == "__main__":
uvicorn.run(app, port=8000)
The same is also applied to the Router
object.
Version 3.2.7
Changed
- Removed unused middleware.
- Updated AppSettingsMiddleware for lazy loading
- Updated
globalise_settings
.
Fixed
- Performance issues caused by
AppSettingsModule
.
Version 3.2.6
Added
XFrameOptionsMiddleware
to handle with options headers.SecurityMiddleware
adding various security headers to the request/response lifecycle.override_settings
as new decorator that allows to override the Lilya settings in any given test.- New
--simple
flag forcreateproject
directive generating simple structured projects. - Integration with new
rapidoc
as another alternative to display the OpenAPI docs.
Changed
- Internal
asyncz
decorator inside a wrapper. - Updated pydantic an lilya requirements.
Version 3.2.5
Fixed
- Added missing options into get_scheduler of AsynczConfig.
Version 3.2.4
Added
!!! danger
This new version deprecates an old style declaring the scheduler for Esmerald.
There is a new SchedulerConfig.
- New SchedulerConfig interface for Esmerald schedulers and
custom schedulers. - New AsynczConfig that implements the configuration for Asyncz scheduler.
- New
scheduler_config
parameter to Esmerald and EsmeraldAPISettings.
Changed
- Deprecate
scheduler_class
,scheduler_configurations
andscheduler_tasks
in favour of the new SchedulerConfig approach. - Deprecate the use of the
EsmeraldScheduler
. - Creation of multilingual documentation by @DJWOMS in #339
Breaking changes
You must update the imports to be:
From:
from asyncz.contrib.esmerald.decorator import scheduler
To:
from esmerald.contrib.schedulers.asyncz.decorator import scheduler
Check the documentation about the Scheduler, handlers and the SchedulerConfig to
see how to update your current project to the new version with the minimum disruption.
This change should not break existing functionality, instead, its just an update to make it more modular.
There is an example how to simply use this.
Fixed
- Added missing options
--settings
into therunserver
directive.