-
Notifications
You must be signed in to change notification settings - Fork 49
Open
Labels
Description
The latest releases of decorate changed the handling of positional args in some cases, see micheles/decorator@04bb645. This is triggering failures in some consumers, e.g. openstacksdk, see https://storyboard.openstack.org/#!/story/2009114 and micheles/decorator#127. What works for me in local unit testing is adding the kwsyntax=True option like
diff --git a/dogpile/cache/region.py b/dogpile/cache/region.py
index ef0dbc4..561e208 100644
--- a/dogpile/cache/region.py
+++ b/dogpile/cache/region.py
@@ -1619,7 +1619,7 @@ class CacheRegion:
# Use `decorate` to preserve the signature of :param:`user_func`.
return decorate(
- user_func, partial(get_or_create_for_user_func, key_generator)
+ user_func, partial(get_or_create_for_user_func, key_generator), kwsyntax=True
)
return cache_decorator
@@ -1859,7 +1859,7 @@ class CacheRegion:
# Use `decorate` to preserve the signature of :param:`user_func`.
return decorate(
- user_func, partial(get_or_create_for_user_func, key_generator)
+ user_func, partial(get_or_create_for_user_func, key_generator), kwsyntax=True
)
return cache_decorator
But maybe there is also a way to adopt to the new behaviour more smoothly. The above patch will break when using an old version of decorate and I don't know whether there's a better solution then wrapping in a try block and repeating the call without the added option if necessary.