/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos-ctl

  • Committer: Teddy Hogeborn
  • Date: 2015-05-31 15:56:58 UTC
  • Revision ID: teddy@recompile.se-20150531155658-l7znu7zlqr2dmuwd
mandos: Generate better messages in exceptions.

mandos (ProxyClient.__init__): Include fingerprint in KeyError().
(rfc3339_duration_to_delta): Include duration in ValueError().

Show diffs side-by-side

added added

removed removed

Lines of Context:
111
111
    # avoid excessive use of external libraries.
112
112
    
113
113
    # New type for defining tokens, syntax, and semantics all-in-one
114
 
    Token = collections.namedtuple("Token", (
115
 
        "regexp",  # To match token; if "value" is not None, must have
116
 
                   # a "group" containing digits
117
 
        "value",   # datetime.timedelta or None
118
 
        "followers"))           # Tokens valid after this token
 
114
    Token = collections.namedtuple("Token",
 
115
                                   ("regexp", # To match token; if
 
116
                                              # "value" is not None,
 
117
                                              # must have a "group"
 
118
                                              # containing digits
 
119
                                    "value",  # datetime.timedelta or
 
120
                                              # None
 
121
                                    "followers")) # Tokens valid after
 
122
                                                  # this token
119
123
    # RFC 3339 "duration" tokens, syntax, and semantics; taken from
120
124
    # the "duration" ABNF definition in RFC 3339, Appendix A.
121
125
    token_end = Token(re.compile(r"$"), None, frozenset())
174
178
                break
175
179
        else:
176
180
            # No currently valid tokens were found
177
 
            raise ValueError("Invalid RFC 3339 duration: {!r}"
178
 
                             .format(duration))
 
181
            raise ValueError("Invalid RFC 3339 duration")
179
182
    # End token found
180
183
    return value
181
184
 
183
186
def string_to_delta(interval):
184
187
    """Parse a string and return a datetime.timedelta
185
188
    
186
 
    >>> string_to_delta('7d')
 
189
    >>> string_to_delta("7d")
187
190
    datetime.timedelta(7)
188
 
    >>> string_to_delta('60s')
 
191
    >>> string_to_delta("60s")
189
192
    datetime.timedelta(0, 60)
190
 
    >>> string_to_delta('60m')
 
193
    >>> string_to_delta("60m")
191
194
    datetime.timedelta(0, 3600)
192
 
    >>> string_to_delta('24h')
 
195
    >>> string_to_delta("24h")
193
196
    datetime.timedelta(1)
194
 
    >>> string_to_delta('1w')
 
197
    >>> string_to_delta("1w")
195
198
    datetime.timedelta(7)
196
 
    >>> string_to_delta('5m 30s')
 
199
    >>> string_to_delta("5m 30s")
197
200
    datetime.timedelta(0, 330)
198
201
    """
199
202