| | |
| | | from difflib import get_close_matches |
| | | from hashlib import md5 |
| | | import inspect |
| | | |
| | |
| | | |
| | | config.add_view( |
| | | 'mypackage.views.my_view', |
| | | route_name='ok', |
| | | route_name='ok', |
| | | request_method=not_('POST') |
| | | ) |
| | | |
| | |
| | | # if the underlying predicate doesnt return a value, it's not really |
| | | # a predicate, it's just something pretending to be a predicate, |
| | | # so dont update the hash |
| | | if val: |
| | | if val: |
| | | val = '!' + val |
| | | return val |
| | | |
| | |
| | | # over = before |
| | | |
| | | class PredicateList(object): |
| | | |
| | | |
| | | def __init__(self): |
| | | self.sorter = TopologicalSorter() |
| | | self.last_added = None |
| | |
| | | weights.append(1 << n + 1) |
| | | preds.append(pred) |
| | | if kw: |
| | | raise ConfigurationError('Unknown predicate values: %r' % (kw,)) |
| | | closest = [] |
| | | names = [ name for name, _ in ordered ] |
| | | for name in kw: |
| | | closest.extend(get_close_matches(name, names, 3)) |
| | | |
| | | raise ConfigurationError( |
| | | 'Unknown predicate values: %r (did you mean %s)' |
| | | % (kw, ','.join(closest)) |
| | | ) |
| | | # A "order" is computed for the predicate list. An order is |
| | | # a scoring. |
| | | # |