summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/3rdparty/testtools-0.9.34/testtools/tags.py
blob: b55bd38667b2b57581a17070061c5e25fbe8c688 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Copyright (c) 2012 testtools developers. See LICENSE for details.

"""Tag support."""


class TagContext(object):
    """A tag context."""

    def __init__(self, parent=None):
        """Create a new TagContext.

        :param parent: If provided, uses this as the parent context.  Any tags
            that are current on the parent at the time of construction are
            current in this context.
        """
        self.parent = parent
        self._tags = set()
        if parent:
            self._tags.update(parent.get_current_tags())

    def get_current_tags(self):
        """Return any current tags."""
        return set(self._tags)

    def change_tags(self, new_tags, gone_tags):
        """Change the tags on this context.

        :param new_tags: A set of tags to add to this context.
        :param gone_tags: A set of tags to remove from this context.
        :return: The tags now current on this context.
        """
        self._tags.update(new_tags)
        self._tags.difference_update(gone_tags)
        return self.get_current_tags()