adamchainz / django-perf-rec

Keep detailed records of the performance of your Django code.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Current django_perf_rec implementation is not compatible with the usage of named "key" parameter to set_cache function

trasfract opened this issue · comments

Python Version

3.9.16

Django Version

3.2.16

Package Version

4.21.0

Description

The django.core.cache definition of set_cache allows the naming of all parameters.
cache.set(key="key", value="value") is therefore acceptable

See https://docs.djangoproject.com/en/3.2/topics/cache/#django.core.caches.cache.set

However, django_perf_rec's current implementation is incompatible with this approach as it directly accesses args[0] and considers it as the "key" parameter.

In cache.py, the line which I believe is faulty is the following: key_or_keys = args[0]
This should be replaced with a more robust approach: key_or_keys = args[0] if args else kwargs['key'] or, better yet(?) declare key as a named parameter directly in the parameters of the function overload.

Happy to accept a PR here, even if you can only get part way adding a test.

I have opened a PR for this issue.
Don't hesitate and review it :-)
Happy to get some feedback

@adamchainz Hello!
Did you get a chance to have a look at the PR I have opened to solve this issue?
#545

Please don't make such "nudge" comments, they aren't helpful. I do open source when I can.