Releases: python-ellar/ellar
Releases · python-ellar/ellar
0.4.0
What's Changed
- [BREAKING] Renamed Guards decorator to UseGuards decorator by @eadwinCode in #93
New Features
- Background Task Feature by @eadwinCode in #91
You can inject BackgroundTasks instance to you route handler
async def send_welcome_email(email):
print(f'Send Welcome Email Task Called with "{email}"')
@router.post('/signup')
def sign_up(username: str, password: str, email: str, tasks: BackgroundTasks):
tasks.add_task(send_welcome_email, email=email)
return {'status': 'Signup successful'}
- EllarInterceptors by @eadwinCode in #92
Use of interceptors to add more custom implementation to your route handlers and controller as define by Aspect Oriented Programming (AOP) technique
@injectable
class ResponseModifierInterceptor(EllarInterceptor):
async def intercept(
self, context: IExecutionContext, next_interceptor: t.Callable[..., t.Coroutine]
) -> t.Any:
data = await next_interceptor()
if data:
data.update(ResponseModifierInterceptor="ResponseModifierInterceptor modified returned resulted")
return data
@Controller("")
class InterceptorControllerTest(ControllerBase):
@UseInterceptors(ResponseModifierInterceptor)
@get("/interceptor-1")
async def interceptor_1(self):
return {"message": "intercepted okay"}
Full Changelog: 0.3.8...0.4.0
0.3.8
What's Changed
- Socket IO integration and Websocket documentation by @eadwinCode in #82
- Bump codecov/codecov-action from 3.1.1 to 3.1.3 by @dependabot in #83
- Update email-validator requirement from <2.0.0,>=1.1.1 to >=1.1.1,<3.0.0 by @dependabot in #84
- Update mkdocs-material requirement from <9.0.0,>=7.1.9 to >=7.1.9,<10.0.0 by @dependabot in #86
- Bump types-ujson from 5.7.0.1 to 5.7.0.5 by @dependabot in #88
- ellar package dependency refactor by @eadwinCode in #89
- 0.3.8 by @eadwinCode in #90
- Breaking: any missing import from
ellar.core
can be found inellar.common
Full Changelog: 0.3.6...0.3.8
0.3.6
What's Changed
- Added doc on rate limiting by @eadwinCode in #74
- Guard Documentation by @eadwinCode in #64
- Dynamic Setup Fix by @eadwinCode in #75
- Versioning Documentation by @eadwinCode in #79
- Update python-multipart requirement from <0.0.6,>=0.0.5 to >=0.0.5,<0.0.7 by @dependabot in #66
- Bump types-ujson from 5.7.0.0 to 5.7.0.1 by @dependabot in #68
- Testing Documentation by @eadwinCode in #80
- Starlette Upgrade by @eadwinCode in #81
Full Changelog: 0.3.4...0.3.6
0.3.4
What's Changed
- Caching Featuring by @eadwinCode in #65
- Cache attributes update by @eadwinCode in #71
- Module Setup Feature by @eadwinCode in #73
Full Changelog: 0.3.2...0.3.4
0.3.2
What's Changed
- fix itsdangerous bug in session middleware by @eadwinCode in #63
Full Changelog: 0.3.0...0.3.2
0.3.0
What's Changed
- Bump black from 22.8.0 to 22.12.0 by @dependabot in #50
- Bump types-ujson from 0.1.1 to 5.6.0.0 by @dependabot in #49
- Update typer requirement from <0.7.0,>=0.6.1 to >=0.6.1,<0.8.0 by @dependabot in #40
- Removed ASGI args from contextvar by @eadwinCode in #53
- Document updates Jan 2023 by @eadwinCode in #54
- Injectable Class should be resolved at runtime without errors by @eadwinCode in #60
- More Doc Updates by @eadwinCode in #55
- Guards Refactor by @eadwinCode in #59
- restored commented tests by @eadwinCode in #61
- Bump starlette from 0.21.0 to 0.23.1 by @dependabot in #48
- Bump types-ujson from 5.6.0.0 to 5.7.0.0 by @dependabot in #58
- Bump types-dataclasses from 0.1.7 to 0.6.6 by @dependabot in #57
- Update flake8 requirement from <4.0.0,>=3.8.3 to >=3.8.3,<7.0.0 by @dependabot in #56
Full Changelog: 0.2.8...0.3.0
0.2.8
What's Changed
- Separated
IHostContext
fromIExecutionContext
and added factory class that manages their creation by @eadwinCode in #51 - Made Guards classes Injectable by @eadwinCode in #52
- Switched from
thread.local
toContextVar
to managerequest_scopes
properly by @eadwinCode in #52 - Added Documentation for
ExecutionContext
. - Increased test coverage.
Full Changelog: 0.2.6...0.2.8
0.2.6
What's Changed
- Documentation Updates by @eadwinCode in #43
- Reverted building routes from a single list to a list of routers with a well-managed route not found cross routes @eadwinCode in #43
- Python 3.11 Support by @eadwinCode in #44
- Changed ASCII drawing to the image by @eadwinCode in #45
- Added an
IExceptionHandler
contract for defining custom exception handler by @eadwinCode in #46. Doc - Dropped use for
BaseHTTPMiddleware
from Starlette and added aFunctionBasedMiddleware
by @eadwinCode in #47 - Added
file
decorator forFileResponseModel
andStreamingResponseModel
by @eadwinCode in #47
import asyncio
from ellar.common import ModuleRouter, file
async def slow_numbers(minimum: int, maximum: int):
yield ("<html><body><ul>")
for number in range(minimum, maximum + 1):
yield "<li>%d</li>" % number
await asyncio.sleep(0.01)
yield ("</ul></body></html>")
router = ModuleRouter('/file')
@router.get()
@file(media_type='text/html')
def file_download():
return {'path': 'path/to/file.html', 'filename': 'code.html', 'content_disposition_type': 'attachment'}
@router.get('/stream')
@file(media_type='text/html', streaming=True)
def file_stream():
return slow_numbers(1, 4)
Full Changelog: 0.2.4...0.2.6
0.2.4
What's Changed
- Update mkdocs-material requirement from <8.0.0,>=7.1.9 to >=7.1.9,<9.0.0 by @dependabot in #37
- Update pytest-cov requirement from <4.0.0,>=2.12.0 to >=2.12.0,<5.0.0 by @dependabot in #35
- Pydependencies upgrade by @eadwinCode in #32
- Bump types-orjson from 3.6.0 to 3.6.2 by @dependabot in #34
- Made CLI tool an optional requirement by @eadwinCode in #38
Full Changelog: 0.2.2...0.2.4
0.2.2
What's Changed
- update readme by @areski in #30
- Cli help command fix by @eadwinCode in #31
Full Changelog: 0.2.0...0.2.2