Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use build_key(key, namespace) consistently across modules and classes #570

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

padraic-shafer
Copy link
Contributor

  • See build_key(key, namespace) is missing from some modules/classes #569 for more information
  • Use namespace for decorators get/set
    • Include build_key(key, namespace) in decorators.cached:
      • get_from_cache()
    • set_in_cache()
  • Use namespace for HitMissRatioPlugin key
    • Use namespace, if available, to build key that is passed
      to plugins.HitMissRatioPlugin.post_get()
  • Introduce key_filter for confirming key is in namespace
    • BaseCache.key_filter(key, namespace) returns True
      if key is in the namespace
    • backends.memory.SimpleMemoryBackend uses this to seleectively
      clear its cache for the given namespace

What do these changes do?

Keys with namespaces now work throughout the aiocache package

  • Use namespace for decorators get/set
  • Use namespace for HitMissRatioPlugin key
  • Introduce key_filter for confirming key is in namespace

Are there changes in behavior for the user?

Keys with namespaces now work throughout the aiocache package.
This includes using:

  • the @cached() decorator
  • the HitMissRatioPlugin plugin
  • the SimpleMemoryCache.clear() member

Related issue number

#569: build_key(key, namespace) is missing from some modules/classes

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes
  • Add a new news fragment into the CHANGES folder
    • name it <issue_id>.<type> (e.g. 588.bugfix)
    • if you don't have an issue_id change it to the pr id after creating the PR
    • ensure type is one of the following:
      • .feature: Signifying a new feature.
      • .bugfix: Signifying a bug fix.
      • .doc: Signifying a documentation improvement.
      • .removal: Signifying a deprecation or removal of public API.
      • .misc: A ticket has been closed, but it is not of interest to users.
    • Make sure to use full sentences with correct case and punctuation, for example: Fix issue with non-ascii contents in doctest text files.

* See aio-libs#473: Deprecate using cache specific constructors
  * aio-libs#473
  * `Cache` class was introduced as a proxy for instantiating the different
    backends. There should be only one way of doing things and `Cache` is
    the preferred way of doing that so will deprecate the others.
* This is now applied to `cached._get_cache()`
* Include build_key(key, namespace) in decorators.cached:
    * get_from_cache()
    * set_in_cache()
* Use namespace, if available, to build key that is passed
  to plugins.HitMissRatioPlugin.post_get()
* `BaseCache.key_filter(key, namespace)` returns True
  if key is in the namespace
* `backends.memory.SimpleMemoryBackend` uses this to seleectively
  clear its cache for the given namespace
@padraic-shafer
Copy link
Contributor Author

Hi, do you have an feedback for this PR?

@Dreamsorcerer
Copy link
Member

Thanks, but will need a test that shows the incorrect behaviour.

Also, please update to latest master, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants