Mercurial > hg
annotate mercurial/thirdparty/attr/filters.py @ 46779:49fd21f32695
revlog: guarantee that p1 != null if a non-null parent exists
This change does not affect the hashing (which already did this
transformation), but can change the log output in the rare case where
this behavior was observed in repositories. The change can simplify
iteration code where regular changesets and merges are distinct
branches.
Differential Revision: https://phab.mercurial-scm.org/D10150
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Wed, 10 Mar 2021 18:09:21 +0100 |
parents | a5493a251ad3 |
children | e1c586b9a43c |
rev | line source |
---|---|
34397 | 1 """ |
2 Commonly useful filters for :func:`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): | |
41564
a5493a251ad3
attr: make some docstrings raw strings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34397
diff
changeset
|
22 r""" |
34397 | 23 Whitelist *what*. |
24 | |
25 :param what: What to whitelist. | |
26 :type what: :class:`list` of :class:`type` or :class:`attr.Attribute`\ s | |
27 | |
28 :rtype: :class:`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): | |
41564
a5493a251ad3
attr: make some docstrings raw strings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34397
diff
changeset
|
39 r""" |
34397 | 40 Blacklist *what*. |
41 | |
42 :param what: What to blacklist. | |
43 :type what: :class:`list` of classes or :class:`attr.Attribute`\ s. | |
44 | |
45 :rtype: :class:`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_ |