File: tags.py

package info (click to toggle)
python-testtools 1.8.0-3~bpo8%2B1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-backports
  • size: 1,204 kB
  • sloc: python: 12,239; makefile: 130; sh: 2
file content (34 lines) | stat: -rw-r--r-- 1,070 bytes parent folder | download | duplicates (13)
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()