Commit Graph

171 Commits

Author SHA1 Message Date
long2ice 4d67e0c464 Merge pull request #124 from mjpieters/type_refinement
key_builder type; args and kwargs are always given
2023-05-09 18:16:37 +08:00
long2ice 276c7c725f Merge pull request #125 from mjpieters/update_lock
Refresh poetry lock
2023-05-09 18:16:13 +08:00
long2ice da9a03ede8 Merge pull request #127 from mjpieters/exported_names
Explicitly list what names are exported
2023-05-09 18:15:57 +08:00
long2ice eece971f0a Merge pull request #128 from mjpieters/namespaced_injection
Inject dependencies using a namespace
2023-05-09 18:15:32 +08:00
Martijn Pieters e09ede2e4c Inject dependencies using a namespace
Instead of assuming that the Request and Response injected keyword
arguments can be named `request` and `response`, use namespaced
keyword names starting with a double underscore.

By default the parameter names now start with `__fastapi_cache_` and so
are a) clearly marked as internal, and b) highly unlikely to clash with
existing keyword arguments. The prefix is configurable in the unlikely
event that the names would clash in specific cases.
2023-05-09 11:09:29 +01:00
long2ice 2788006b8c Merge pull request #130 from mjpieters/non_get_requests
Fix handling non-GET requests
2023-05-09 18:03:24 +08:00
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
long2ice 1ded0ed50e Merge pull request #131 from mjpieters/json_decoder_pydantic
Decode cache data to the correct endpoint type
2023-05-09 10:16:17 +08: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
Martijn Pieters b1dc05a89a key_builder type; args and kwargs are always given
These arguments are never set to None so don't need to be optional. They
are always a tuple and a dict but can be empty.
2023-04-28 16:50:30 +01:00
Martijn Pieters 416a4ec850 Explicitly list what names are exported
This signals to automated tools what names usually can be imported from
the package, as otherwise you'd get warnings like `"default_key_builder"
is not exported from module "fastapi_cache"`.
2023-04-28 14:40:31 +01:00
Martijn Pieters 3a3964db1b Refresh poetry lock
The older releases in the lock can cause the CI build to fail with
more recent Poetry versions, see python-poetry/poetry#7611. Updating
the lock should remedy this.
2023-04-28 12:27:52 +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
long2ice b26059b654 Merge pull request #122 from mjpieters/type-hinting
Complete type hints
2023-04-28 14:28:49 +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 ee58f979d4 ci: fix workflows 2023-02-15 10:53:24 +08:00
long2ice 38ddd063c3 test: add httpx for test 2023-02-15 10:49:35 +08:00
long2ice 27acce3160 ci: fix poetry 2023-02-15 10:45:19 +08:00
long2ice d04be274e9 feat: upgrade deps v0.2.1 2023-02-15 10:43:01 +08:00
long2ice 80563fd6e7 Merge pull request #118 from naoki-jarvisml/var_keyword
Support functions with VAR_KEYWORD parameter
2023-02-15 10:30:12 +08:00
Naoki Shima 98cf8a78a1 adding test coverage 2023-02-15 10:35:41 +09: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 e3b08dda2c Merge pull request #114 from hackjammer/feature/redisCluster
Add RedisCluster Support
2023-02-01 15:33:11 +08: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
long2ice 7a89f28b54 Merge pull request #112 from schmocker/main
add cache-control and etag to header of fist response
2023-01-15 12:27:56 +08:00
Tobias Schmocker 334b829a80 Merge branch 'master'
# Conflicts:
#	fastapi_cache/decorator.py
2023-01-14 19:11:42 +01:00
long2ice 62ef8bed37 Merge pull request #109 from Mrreadiness/fix/piclke-coder
Fix Piclke Coder
2023-01-11 21:31:02 +08: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 v0.2.0 2023-01-11 21:20:41 +08:00
long2ice 09361a7d4f Merge pull request #98 from vvanglro/feat/cache_response_obj
Feat/cache response obj
2023-01-11 17:23:47 +08:00
vvanglro ed101595f7 fix: merge master 2023-01-11 16:43:36 +08:00
long2ice 0c73777930 Merge pull request #108 from hackjammer/master
Transparent passthrough in the event of cache backend connection issues
2023-01-11 10:45:11 +08:00
vvanglro 0d964fcf9f fix: remove unused 2023-01-07 13:55:41 +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
long2ice 91e6e51ec7 Merge pull request #101 from mkdir700/fix-ci-errors-on-python3.11
Fix ci errors on python3.11
2022-11-07 16:33:45 +08:00