"""Module to handle features that are not implemented yet.""" _IGNORED_FEATURES = { 'array_filters': False, 'collation': False, 'let': False, 'session': False, } def _ensure_ignorable_feature(feature): if feature not in _IGNORED_FEATURES: raise KeyError( '%s is not an error that can be ignored: maybe it has been implemented in Mongomock. ' 'Here is the list of features that can be ignored: %s' % ( feature, _IGNORED_FEATURES.keys())) def ignore_feature(feature): """Ignore a feature instead of raising a NotImplementedError.""" _ensure_ignorable_feature(feature) _IGNORED_FEATURES[feature] = True def warn_on_feature(feature): """Rasie a NotImplementedError the next times a feature is used.""" _ensure_ignorable_feature(feature) _IGNORED_FEATURES[feature] = False def raise_for_feature(feature, reason): _ensure_ignorable_feature(feature) if _IGNORED_FEATURES[feature]: return False raise NotImplementedError(reason)