import re
from typing import Any, Callable, List, Optional, Set, Sequence
+from overrides import overrides
+
# This module is commonly used by others in here and should avoid
# taking any unnecessary dependencies back on them.
self.allow_set = allow_set
self.deny_set = deny_set
+ @overrides
def check_allowed(self, x: Any) -> bool:
if self.allow_set is None:
return False
return x in self.allow_set
+ @overrides
def check_denied(self, x: Any) -> bool:
if self.deny_set is None:
return False
class AllowListACL(SetBasedACL):
"""Convenience subclass for a list that only allows known items.
- i.e. a 'whitelist'
+ i.e. a 'allowlist'
"""
def __init__(self,
*,
class DenyListACL(SetBasedACL):
"""Convenience subclass for a list that only disallows known items.
- i.e. a 'blacklist'
+ i.e. a 'blocklist'
+ """
+ def __init__(self,
+ *,
+ deny_set: Optional[Set[Any]]) -> None:
+ super().__init__(
+ deny_set = deny_set,
+ order_to_check_allow_deny = Order.ALLOW_DENY,
+ default_answer = True)
+
+
+class BlockListACL(SetBasedACL):
+ """Convenience subclass for a list that only disallows known items.
+ i.e. a 'blocklist'
"""
def __init__(self,
*,
self.allow_predicate_list = allow_predicate_list
self.deny_predicate_list = deny_predicate_list
+ @overrides
def check_allowed(self, x: Any) -> bool:
if self.allow_predicate_list is None:
return False
return any(predicate(x) for predicate in self.allow_predicate_list)
+ @overrides
def check_denied(self, x: Any) -> bool:
if self.deny_predicate_list is None:
return False
)
self.subacls = subacls
+ @overrides
def check_allowed(self, x: Any) -> bool:
if self.subacls is None:
return False
return any(acl(x) for acl in self.subacls)
+ @overrides
def check_denied(self, x: Any) -> bool:
if self.subacls is None:
return False
)
self.subacls = subacls
+ @overrides
def check_allowed(self, x: Any) -> bool:
if self.subacls is None:
return False
return all(acl(x) for acl in self.subacls)
+ @overrides
def check_denied(self, x: Any) -> bool:
if self.subacls is None:
return False