Add kwargs and caching of commonly computed condition values state.

Review Request #8344 — Created Aug. 25, 2016 and submitted

Information

Djblets
release-0.10.x
2d2fdc4...

Reviewers

Condition choices may need to hit the database or perform some other
expensive computation in order to make a match determination. Sometimes
these conditions need the same information, or sometimes a condition
will be used more than once. In these cases, it can be handy for the
implementations of those choices to be able to cache some common state,
like the results of the database queries.

This adds a new, optional value_state_cache keyword argument to the
get_match_value() methods, which can be used to populate that cache. The
cache is local to a ConditionSet match run, and does not otherwise
persist.

Along with this, BaseConditionChoice.get_match_value() and
BaseConditionOperator.matches() now take a **kwargs, in order to allow
for future expansion (and to swallow the new value_state_cache argument
for methods that don't need to use it).

Unit tests pass.

Made use of the new caching in an implementation.

reviewbot
  1. Tool: Pyflakes
    Processed Files:
        djblets/conditions/conditions.py
        djblets/conditions/choices.py
        djblets/conditions/operators.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        djblets/conditions/conditions.py
        djblets/conditions/choices.py
        djblets/conditions/operators.py
    
    
  2. 
      
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-0.10.x (eaa01dd)