Mercurial > repos > shellac > sam_consensus_v3
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_ |