Skip to content

Releases: python-ellar/ellar

0.4.0

29 May 23:22
39f9ef7
Compare
Choose a tag to compare

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'}
@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

11 May 21:01
941b3d0
Compare
Choose a tag to compare

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 in ellar.common

Full Changelog: 0.3.6...0.3.8

0.3.6

10 Apr 20:00
817e32a
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.3.4...0.3.6

0.3.4

26 Mar 09:03
3911aa1
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.3.2...0.3.4

0.3.2

09 Feb 06:53
7bfb304
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.3.0...0.3.2

0.3.0

07 Feb 15:14
3ca0fb2
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.2.8...0.3.0

0.2.8

08 Jan 07:49
4565e60
Compare
Choose a tag to compare

What's Changed

  • Separated IHostContext from IExecutionContext and added factory class that manages their creation by @eadwinCode in #51
  • Made Guards classes Injectable by @eadwinCode in #52
  • Switched from thread.local to ContextVar to manage request_scopes properly by @eadwinCode in #52
  • Added Documentation for ExecutionContext.
  • Increased test coverage.

Full Changelog: 0.2.6...0.2.8

0.2.6

01 Jan 10:06
81d250a
Compare
Choose a tag to compare

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 a FunctionBasedMiddleware by @eadwinCode in #47
  • Added file decorator for FileResponseModel and StreamingResponseModel 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

07 Nov 18:06
b959a17
Compare
Choose a tag to compare

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

25 Oct 01:40
70ac31b
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.2.0...0.2.2