Commit Graph

89 Commits

Author SHA1 Message Date
Martijn Pieters 4cc946eb00 Fix handling non-GET requests
The `request` parameter being passed in was just a hold-over from an
earlier refactoring. Added tests to ensure that this edge case keeps
working.
2023-05-09 10:58:37 +01:00
Martijn Pieters f78a599bbc Decode cache data to the correct endpoint type
Use the return annotation to decode cached data to the correct type.
This follows the same logic FastAPI uses to JSON request bodies.

For the PickleCoder, this is a no-op as pickle already stores type
information in the serialised data.
2023-05-08 16:55:05 +01:00
long2ice 550ba76df4 Merge pull request #123 from mjpieters/method_signature
Attach updated endpoint signature to inner
2023-04-28 14:29:06 +08:00
Martijn Pieters 832650347b Attach updated endpoint signature to inner
Not all endpoints accept a __signature__ attribute, nor should the
cache decorator modify the decorated endpoint. Attach the signature
to the returned inner function instead.

While here, refactor the signature updating code, and extract it to
a separate function.
2023-04-27 18:14:59 +01:00
Martijn Pieters 72c42325ab The backend needs an async redis client with a pipeline method
The Abstract* classes lack the pipeline method so are not sufficient.
2023-04-27 16:33:43 +01:00
Martijn Pieters 6af14be049 Provide annotation for the session attribute 2023-04-27 16:32:07 +01:00
Martijn Pieters 9c966286b4 Use complete type hints with all generic parameters filled
This makes the core fastapi_cache pass all strict type checker tests.
2023-04-27 16:31:42 +01:00
Martijn Pieters a52f6b1406 Simplify key_builder calling
The keybuilder is either returning a string, or a coroutine or other
awaitable. If the latter, await on the return value to get the string.
2023-04-27 16:29:10 +01:00
Martijn Pieters 255f40117b Define keybuilder protocol
This lets others create key builders that are type checked fully.
2023-04-27 16:26:41 +01:00
Martijn Pieters d4cd787527 JSONResponse.body is UTF-8 bytes and must be decoded 2023-04-27 16:20:12 +01:00
Martijn Pieters 059793d585 Remove a type: ignore comment
GIve the type checker more information about the converters instead.
2023-04-27 16:19:02 +01:00
Martijn Pieters 0d0fe1f0d0 Mark up the class variables as such
There is never an instance of this class, so these are not instance attributes.
2023-04-27 16:15:06 +01:00
Martijn Pieters 32acafa5e0 Correct type hint: namespace is not optional
The namespace argument is positional and will never be `None` so should
not be marked as Optional. It is always a string, and the default is
to pass in an empty string.
2023-04-27 16:11:59 +01:00
long2ice 27acce3160 ci: fix poetry 2023-02-15 10:45:19 +08:00
Naoki Shima 01c895dbbb Support functions with VAR_KEYWORD parameter
decorating function with **kwargs parameter with @cache causes ValueError.

ValueError: wrong parameter order: variadic keyword parameter before keyword-only parameter

We need to inject request / response parameters before VAR_KEYWORD parameter.
2023-02-09 15:14:20 +09:00
long2ice 552a7695e8 Update fastapi_cache/decorator.py
Co-authored-by: mkdir700 <56359329+mkdir700@users.noreply.github.com>
2023-02-01 15:33:04 +08:00
hackjammer ea1ffcd7b4 Add logging to decorator.py on backend failures 2023-01-17 12:15:53 +00:00
hackjammer e8193b5c22 enabled redis in cluster mode 2023-01-15 21:54:16 +00:00
hackjammer ab26fad604 passthrough for any type of backend exception 2023-01-15 17:07:37 +00:00
Tobias Schmocker 334b829a80 Merge branch 'master'
# Conflicts:
#	fastapi_cache/decorator.py
2023-01-14 19:11:42 +01:00
Ivan Moiseev 9a39db7a73 Merge branch 'long2ice:main' into fix/piclke-coder 2023-01-11 16:26:05 +03:00
long2ice 59a47b7fae chore: set version 0.2.0 2023-01-11 21:20:41 +08:00
vvanglro ed101595f7 fix: merge master 2023-01-11 16:43:36 +08:00
vvanglro 614ee25d0d feat: merge master 2023-01-07 13:46:48 +08:00
hackjammer b420f26e9b transparent passthrough in the event of backend connection issues 2023-01-05 18:44:40 +00:00
Ivan Moiseev e23289fcbf Merge branch 'main' into fix/piclke-coder 2022-12-08 00:23:39 +04:00
long2ice 8f0920d0d7 ci: fix 2022-11-07 16:39:17 +08:00
Ivan Moiseev cb9fe5c065 fix: PickleCoder and add tests for it. 2022-11-05 13:45:16 +04:00
vvanglro 4cb4afeff0 feat: support cache JSONResponse 2022-11-04 17:31:37 +08:00
vvanglro a8fbf2b340 fix: request / router KeyError 2022-11-04 16:56:43 +08:00
long2ice 73f000a565 Merge pull request #93 from Mrreadiness/feat/type-hints-covering
Feat/type hints covering
2022-11-04 08:51:21 +08:00
long2ice cda720f534 Merge pull request #74 from Genius-Voice/feature/support-async-keybuilder
Add ability to use async function for key_builder
2022-11-03 20:25:27 +08:00
Ivan Moiseev 5881bb9122 Merge branch 'main' into feat/type-hints-covering
# Conflicts:
#	fastapi_cache/coder.py
#	fastapi_cache/decorator.py
2022-11-03 15:53:22 +04:00
Ivan Moiseev 10f819483c fix: replace pipe for Optional 2022-11-03 15:49:58 +04:00
long2ice 566d30b790 Merge pull request #88 from vvanglro/feat/cache_html
feat: support cache jinja2 template response
2022-11-03 19:42:47 +08:00
long2ice 671af52aea Merge pull request #33 from DevLucca/master
add `no-cache` to cache exclusion
2022-10-31 21:51:35 +08:00
Ivan Moiseev 71a77f6b39 fix: request and response type hints 2022-10-30 11:03:16 +04:00
Ivan Moiseev e555d5e9be Merge remote-tracking branch 'main/master' into feat/type-hints-covering
# Conflicts:
#	fastapi_cache/decorator.py
2022-10-30 10:58:02 +04:00
squaresmile f3f134a318 Added typing to the decorator 2022-10-25 08:58:44 +07:00
squaresmile 5781593829 Added py.typed 2022-10-25 08:50:56 +07:00
Ivan Moiseev c6bd8483a4 feat: fix tests and add FastAPICache init in tests. 2022-10-22 21:12:04 +04:00
Ivan Moiseev e842d6408e feat: make PickleCoder compatible with backends 2022-10-22 21:06:38 +04:00
Ivan Moiseev 68ef94f2db feat: add more asserts for FastAPICache init 2022-10-22 21:05:43 +04:00
Ivan Moiseev 4c6abcf786 feat: add more type hints 2022-10-22 20:59:37 +04:00
Charl P. Botha ceb70426f3 Factor out support for optional request / response 2022-10-14 21:58:34 +02:00
Charl P. Botha d123ec4bfa Add extra required await 2022-10-14 14:09:31 +02:00
Charl P. Botha 2822ab5d71 Factor out sync handling and use everywhere 2022-10-14 13:44:49 +02:00
vvanglro 7e64cd6490 feat: support cache jinja2 template response 2022-09-28 17:37:05 +08:00
long2ice cb9259807e feat: make request and response optional 2022-09-10 20:06:37 +08:00
Yurii Karabas f310ef5b2d Use run_in_threadpool instead of asyncio run_in_executor 2022-09-09 19:35:48 +03:00