Some experimental code that may lead to predicates underpinning the
entirety of reg.
Rename ANY to FALLBACK and add a lot more tests.
Improve coverage.
Remove unused get_key parameter.
A plan for refactoring Reg to use neopredicates everywhere.
This will break compatibility for anything below the generic
function API, but it will make everything a lot better.
Introduce an argextract module. The ArgDict class turns arguments to a
function into a dictionary.
Some more ideas for the plan.
Implement a clever key extractor.
Test a few errors that can happen with the key extractor.
Remove name argument from predicates; it's not really necessary -- could
change the indexing strategy in MultiPredicate to use simple list
indexes.
Add get_key functionality to the predicate.
Some more thinking.
Whitespace.
Generic function calls that are predicate based are starting to work.
Consider an optimization. It's not as easy to implement as it is seems,
though, as it needs to obey Python's complex function signature
rules.
Get rid of the fallback mechanism in permutations. This should make for
less permutations so that's faster. Instead allow the specification of
a fallback value per predicate, and a way to find it for a key that
isn't found in the indexes. Use this in the call implementation.
We do need to be aware of permutations when we look for a fallback. Fix
this now.
Use zip instead of enumerate.
Only use predicate when actually constructing a new index, preventing
a zip.
Simplify add dramatically, as we can construct indexes when we
create the multi index instead.