comparison env/lib/python3.9/site-packages/attr/filters.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 """
2 Commonly useful filters for `attr.asdict`.
3 """
4
5 from __future__ import absolute_import, division, print_function
6
7 from ._compat import isclass
8 from ._make import Attribute
9
10
11 def _split_what(what):
12 """
13 Returns a tuple of `frozenset`s of classes and attributes.
14 """
15 return (
16 frozenset(cls for cls in what if isclass(cls)),
17 frozenset(cls for cls in what if isinstance(cls, Attribute)),
18 )
19
20
21 def include(*what):
22 """
23 Whitelist *what*.
24
25 :param what: What to whitelist.
26 :type what: `list` of `type` or `attr.Attribute`\\ s
27
28 :rtype: `callable`
29 """
30 cls, attrs = _split_what(what)
31
32 def include_(attribute, value):
33 return value.__class__ in cls or attribute in attrs
34
35 return include_
36
37
38 def exclude(*what):
39 """
40 Blacklist *what*.
41
42 :param what: What to blacklist.
43 :type what: `list` of classes or `attr.Attribute`\\ s.
44
45 :rtype: `callable`
46 """
47 cls, attrs = _split_what(what)
48
49 def exclude_(attribute, value):
50 return value.__class__ not in cls and attribute not in attrs
51
52 return exclude_