File: environment.py

package info (click to toggle)
python-changelog 0.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 196 kB
  • sloc: python: 1,000; makefile: 2
file content (115 lines) | stat: -rw-r--r-- 3,027 bytes parent folder | download | duplicates (2)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import logging
import sys

LOG = logging.getLogger(__name__)


class Environment(object):
    __slots__ = ()

    env_classes = ()

    @classmethod
    def register(cls, env_class):
        cls.env_classes = (env_class,) + cls.env_classes

    @classmethod
    def from_document_settings(cls, settings):
        for cls in cls.env_classes:
            e = cls.from_document_settings(settings)
            if e is not None:
                return e

        raise NotImplementedError("TODO")

    @property
    def temp_data(self):
        raise NotImplementedError()

    @property
    def changelog_sections(self):
        raise NotImplementedError()

    @property
    def changelog_caption_class(self):
        raise NotImplementedError()

    @property
    def changelog_inner_tag_sort(self):
        raise NotImplementedError()

    @property
    def changelog_hide_sections_from_tags(self):
        raise NotImplementedError()

    @property
    def changelog_render_ticket(self):
        raise NotImplementedError()

    @property
    def changelog_render_pullreq(self):
        raise NotImplementedError()

    @property
    def changelog_render_changeset(self):
        raise NotImplementedError()

    def status_iterator(self, elements, message):
        raise NotImplementedError()


class DefaultEnvironment(Environment):
    @classmethod
    def from_document_settings(cls, settings):
        return settings.changelog_env

    def __init__(self, config_filename=None):
        self._temp_data = {}
        self.config = {}
        if config_filename is not None:
            exec(open(config_filename).read(), self.config)

    def log_debug(self, msg, *args):
        LOG.debug(msg, *args)

    @property
    def temp_data(self):
        return self._temp_data

    @property
    def changelog_sections(self):
        return self.config.get("changelog_sections", [])

    @property
    def changelog_caption_class(self):
        return self.config.get("changelog_caption_class", "caption")

    @property
    def changelog_inner_tag_sort(self):
        return self.config.get("changelog_inner_tag_sort", [])

    @property
    def changelog_hide_sections_from_tags(self):
        return self.config.get("changelog_hide_sections_from_tags", [])

    @property
    def changelog_hide_tags_in_entry(self):
        return self.config.get("changelog_hide_tags_in_entry", [])

    @property
    def changelog_render_ticket(self):
        return self.config.get("changelog_render_ticket", "ticket:%s")

    @property
    def changelog_render_pullreq(self):
        return self.config.get("changelog_render_pullreq", "pullreq:%s")

    @property
    def changelog_render_changeset(self):
        return self.config.get("changelog_render_changeset", "changeset:%s")

    def status_iterator(self, elements, message):
        for i, element in enumerate(elements, 1):
            percent = (i / len(elements)) * 100
            sys.stderr.write(message + "...[%d%%] %s\n" % (percent, element))
            yield element