1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
7
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
<title>duplicity.file_naming — duplicity-src8 documentation</title>
11
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
12
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
14
<script type="text/javascript">
15
var DOCUMENTATION_OPTIONS = {
18
COLLAPSE_INDEX: false,
23
<script type="text/javascript" src="../../_static/jquery.js"></script>
24
<script type="text/javascript" src="../../_static/underscore.js"></script>
25
<script type="text/javascript" src="../../_static/doctools.js"></script>
26
<link rel="top" title="duplicity-src8 documentation" href="../../index.html" />
27
<link rel="up" title="Module code" href="../index.html" />
29
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
32
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
35
<body role="document">
38
<div class="document">
39
<div class="documentwrapper">
40
<div class="bodywrapper">
41
<div class="body" role="main">
43
<h1>Source code for duplicity.file_naming</h1><div class="highlight"><pre>
44
<span></span><span class="c1"># -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-</span>
45
<span class="c1">#</span>
46
<span class="c1"># Copyright 2002 Ben Escoto <ben@emerose.org></span>
47
<span class="c1"># Copyright 2007 Kenneth Loafman <kenneth@loafman.com></span>
48
<span class="c1">#</span>
49
<span class="c1"># This file is part of duplicity.</span>
50
<span class="c1">#</span>
51
<span class="c1"># Duplicity is free software; you can redistribute it and/or modify it</span>
52
<span class="c1"># under the terms of the GNU General Public License as published by the</span>
53
<span class="c1"># Free Software Foundation; either version 2 of the License, or (at your</span>
54
<span class="c1"># option) any later version.</span>
55
<span class="c1">#</span>
56
<span class="c1"># Duplicity is distributed in the hope that it will be useful, but</span>
57
<span class="c1"># WITHOUT ANY WARRANTY; without even the implied warranty of</span>
58
<span class="c1"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span>
59
<span class="c1"># General Public License for more details.</span>
60
<span class="c1">#</span>
61
<span class="c1"># You should have received a copy of the GNU General Public License</span>
62
<span class="c1"># along with duplicity; if not, write to the Free Software Foundation,</span>
63
<span class="c1"># Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</span>
65
<span class="sd">"""Produce and parse the names of duplicity's backup files"""</span>
67
<span class="kn">import</span> <span class="nn">re</span>
68
<span class="kn">from</span> <span class="nn">duplicity</span> <span class="k">import</span> <span class="n">dup_time</span>
69
<span class="kn">from</span> <span class="nn">duplicity</span> <span class="k">import</span> <span class="nb">globals</span>
71
<span class="n">full_vol_re</span> <span class="o">=</span> <span class="kc">None</span>
72
<span class="n">full_vol_re_short</span> <span class="o">=</span> <span class="kc">None</span>
73
<span class="n">full_manifest_re</span> <span class="o">=</span> <span class="kc">None</span>
74
<span class="n">full_manifest_re_short</span> <span class="o">=</span> <span class="kc">None</span>
75
<span class="n">inc_vol_re</span> <span class="o">=</span> <span class="kc">None</span>
76
<span class="n">inc_vol_re_short</span> <span class="o">=</span> <span class="kc">None</span>
77
<span class="n">inc_manifest_re</span> <span class="o">=</span> <span class="kc">None</span>
78
<span class="n">inc_manifest_re_short</span> <span class="o">=</span> <span class="kc">None</span>
79
<span class="n">full_sig_re</span> <span class="o">=</span> <span class="kc">None</span>
80
<span class="n">full_sig_re_short</span> <span class="o">=</span> <span class="kc">None</span>
81
<span class="n">new_sig_re</span> <span class="o">=</span> <span class="kc">None</span>
82
<span class="n">new_sig_re_short</span> <span class="o">=</span> <span class="kc">None</span>
85
<div class="viewcode-block" id="prepare_regex"><a class="viewcode-back" href="../../duplicity.file_naming.html#duplicity.file_naming.prepare_regex">[docs]</a><span class="k">def</span> <span class="nf">prepare_regex</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
86
<span class="k">global</span> <span class="n">full_vol_re</span>
87
<span class="k">global</span> <span class="n">full_vol_re_short</span>
88
<span class="k">global</span> <span class="n">full_manifest_re</span>
89
<span class="k">global</span> <span class="n">full_manifest_re_short</span>
90
<span class="k">global</span> <span class="n">inc_vol_re</span>
91
<span class="k">global</span> <span class="n">inc_vol_re_short</span>
92
<span class="k">global</span> <span class="n">inc_manifest_re</span>
93
<span class="k">global</span> <span class="n">inc_manifest_re_short</span>
94
<span class="k">global</span> <span class="n">full_sig_re</span>
95
<span class="k">global</span> <span class="n">full_sig_re_short</span>
96
<span class="k">global</span> <span class="n">new_sig_re</span>
97
<span class="k">global</span> <span class="n">new_sig_re_short</span>
99
<span class="c1"># we force regex re-generation in unit tests because file prefixes might have changed</span>
100
<span class="k">if</span> <span class="n">full_vol_re</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">force</span><span class="p">:</span>
101
<span class="k">return</span>
103
<span class="n">full_vol_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_archive</span> <span class="o">+</span> <span class="s2">"duplicity-full"</span>
104
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<time>.*?)"</span>
105
<span class="s2">"</span><span class="se">\\</span><span class="s2">.vol(?P<num>[0-9]+)"</span>
106
<span class="s2">"</span><span class="se">\\</span><span class="s2">.difftar"</span>
107
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.part))?"</span>
108
<span class="s2">"($|</span><span class="se">\\</span><span class="s2">.)"</span><span class="p">)</span>
110
<span class="n">full_vol_re_short</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_archive</span> <span class="o">+</span> <span class="s2">"df"</span>
111
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<time>[0-9a-z]+?)"</span>
112
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<num>[0-9a-z]+)"</span>
113
<span class="s2">"</span><span class="se">\\</span><span class="s2">.dt"</span>
114
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.p))?"</span>
115
<span class="s2">"($|</span><span class="se">\\</span><span class="s2">.)"</span><span class="p">)</span>
117
<span class="n">full_manifest_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_manifest</span> <span class="o">+</span> <span class="s2">"duplicity-full"</span>
118
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<time>.*?)"</span>
119
<span class="s2">"</span><span class="se">\\</span><span class="s2">.manifest"</span>
120
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.part))?"</span>
121
<span class="s2">"($|</span><span class="se">\\</span><span class="s2">.)"</span><span class="p">)</span>
123
<span class="n">full_manifest_re_short</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_manifest</span> <span class="o">+</span> <span class="s2">"df"</span>
124
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<time>[0-9a-z]+?)"</span>
125
<span class="s2">"</span><span class="se">\\</span><span class="s2">.m"</span>
126
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.p))?"</span>
127
<span class="s2">"($|</span><span class="se">\\</span><span class="s2">.)"</span><span class="p">)</span>
129
<span class="n">inc_vol_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_archive</span> <span class="o">+</span> <span class="s2">"duplicity-inc"</span>
130
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<start_time>.*?)"</span>
131
<span class="s2">"</span><span class="se">\\</span><span class="s2">.to</span><span class="se">\\</span><span class="s2">.(?P<end_time>.*?)"</span>
132
<span class="s2">"</span><span class="se">\\</span><span class="s2">.vol(?P<num>[0-9]+)"</span>
133
<span class="s2">"</span><span class="se">\\</span><span class="s2">.difftar"</span>
134
<span class="s2">"($|</span><span class="se">\\</span><span class="s2">.)"</span><span class="p">)</span>
136
<span class="n">inc_vol_re_short</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_archive</span> <span class="o">+</span> <span class="s2">"di"</span>
137
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<start_time>[0-9a-z]+?)"</span>
138
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<end_time>[0-9a-z]+?)"</span>
139
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<num>[0-9a-z]+)"</span>
140
<span class="s2">"</span><span class="se">\\</span><span class="s2">.dt"</span>
141
<span class="s2">"($|</span><span class="se">\\</span><span class="s2">.)"</span><span class="p">)</span>
143
<span class="n">inc_manifest_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_manifest</span> <span class="o">+</span> <span class="s2">"duplicity-inc"</span>
144
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<start_time>.*?)"</span>
145
<span class="s2">"</span><span class="se">\\</span><span class="s2">.to"</span>
146
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<end_time>.*?)"</span>
147
<span class="s2">"</span><span class="se">\\</span><span class="s2">.manifest"</span>
148
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.part))?"</span>
149
<span class="s2">"(</span><span class="se">\\</span><span class="s2">.|$)"</span><span class="p">)</span>
151
<span class="n">inc_manifest_re_short</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_manifest</span> <span class="o">+</span> <span class="s2">"di"</span>
152
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<start_time>[0-9a-z]+?)"</span>
153
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<end_time>[0-9a-z]+?)"</span>
154
<span class="s2">"</span><span class="se">\\</span><span class="s2">.m"</span>
155
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.p))?"</span>
156
<span class="s2">"(</span><span class="se">\\</span><span class="s2">.|$)"</span><span class="p">)</span>
158
<span class="n">full_sig_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"duplicity-full-signatures"</span>
159
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<time>.*?)"</span>
160
<span class="s2">"</span><span class="se">\\</span><span class="s2">.sigtar"</span>
161
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.part))?"</span>
162
<span class="s2">"(</span><span class="se">\\</span><span class="s2">.|$)"</span><span class="p">)</span>
164
<span class="n">full_sig_re_short</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"dfs"</span>
165
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<time>[0-9a-z]+?)"</span>
166
<span class="s2">"</span><span class="se">\\</span><span class="s2">.st"</span>
167
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.p))?"</span>
168
<span class="s2">"(</span><span class="se">\\</span><span class="s2">.|$)"</span><span class="p">)</span>
170
<span class="n">new_sig_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"duplicity-new-signatures"</span>
171
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<start_time>.*?)"</span>
172
<span class="s2">"</span><span class="se">\\</span><span class="s2">.to"</span>
173
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<end_time>.*?)"</span>
174
<span class="s2">"</span><span class="se">\\</span><span class="s2">.sigtar"</span>
175
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.part))?"</span>
176
<span class="s2">"(</span><span class="se">\\</span><span class="s2">.|$)"</span><span class="p">)</span>
178
<span class="n">new_sig_re_short</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^"</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"dns"</span>
179
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<start_time>[0-9a-z]+?)"</span>
180
<span class="s2">"</span><span class="se">\\</span><span class="s2">.(?P<end_time>[0-9a-z]+?)"</span>
181
<span class="s2">"</span><span class="se">\\</span><span class="s2">.st"</span>
182
<span class="s2">"(?P<partial>(</span><span class="se">\\</span><span class="s2">.p))?"</span>
183
<span class="s2">"(</span><span class="se">\\</span><span class="s2">.|$)"</span><span class="p">)</span></div>
186
<div class="viewcode-block" id="to_base36"><a class="viewcode-back" href="../../duplicity.file_naming.html#duplicity.file_naming.to_base36">[docs]</a><span class="k">def</span> <span class="nf">to_base36</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
187
<span class="sd">"""</span>
188
<span class="sd"> Return string representation of n in base 36 (use 0-9 and a-z)</span>
189
<span class="sd"> """</span>
190
<span class="n">div</span><span class="p">,</span> <span class="n">mod</span> <span class="o">=</span> <span class="nb">divmod</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="mi">36</span><span class="p">)</span>
191
<span class="k">if</span> <span class="n">mod</span> <span class="o"><=</span> <span class="mi">9</span><span class="p">:</span>
192
<span class="n">last_digit</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
193
<span class="k">else</span><span class="p">:</span>
194
<span class="n">last_digit</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="nb">ord</span><span class="p">(</span><span class="s1">'a'</span><span class="p">)</span> <span class="o">+</span> <span class="n">mod</span> <span class="o">-</span> <span class="mi">10</span><span class="p">)</span>
195
<span class="k">if</span> <span class="n">n</span> <span class="o">==</span> <span class="n">mod</span><span class="p">:</span>
196
<span class="k">return</span> <span class="n">last_digit</span>
197
<span class="k">else</span><span class="p">:</span>
198
<span class="k">return</span> <span class="n">to_base36</span><span class="p">(</span><span class="n">div</span><span class="p">)</span> <span class="o">+</span> <span class="n">last_digit</span></div>
201
<div class="viewcode-block" id="from_base36"><a class="viewcode-back" href="../../duplicity.file_naming.html#duplicity.file_naming.from_base36">[docs]</a><span class="k">def</span> <span class="nf">from_base36</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>
202
<span class="sd">"""</span>
203
<span class="sd"> Convert string s in base 36 to long int</span>
204
<span class="sd"> """</span>
205
<span class="n">total</span> <span class="o">=</span> <span class="mi">0</span>
206
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">)):</span>
207
<span class="n">total</span> <span class="o">*=</span> <span class="mi">36</span>
208
<span class="n">digit_ord</span> <span class="o">=</span> <span class="nb">ord</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
209
<span class="k">if</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">'0'</span><span class="p">)</span> <span class="o"><=</span> <span class="n">digit_ord</span> <span class="o"><=</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">'9'</span><span class="p">):</span>
210
<span class="n">total</span> <span class="o">+=</span> <span class="n">digit_ord</span> <span class="o">-</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">'0'</span><span class="p">)</span>
211
<span class="k">elif</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">'a'</span><span class="p">)</span> <span class="o"><=</span> <span class="n">digit_ord</span> <span class="o"><=</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">'z'</span><span class="p">):</span>
212
<span class="n">total</span> <span class="o">+=</span> <span class="n">digit_ord</span> <span class="o">-</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">'a'</span><span class="p">)</span> <span class="o">+</span> <span class="mi">10</span>
213
<span class="k">else</span><span class="p">:</span>
214
<span class="k">assert</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"Digit </span><span class="si">%s</span><span class="s2"> in </span><span class="si">%s</span><span class="s2"> not in proper range"</span> <span class="o">%</span> <span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">s</span><span class="p">)</span>
215
<span class="k">return</span> <span class="n">total</span></div>
218
<div class="viewcode-block" id="get_suffix"><a class="viewcode-back" href="../../duplicity.file_naming.html#duplicity.file_naming.get_suffix">[docs]</a><span class="k">def</span> <span class="nf">get_suffix</span><span class="p">(</span><span class="n">encrypted</span><span class="p">,</span> <span class="n">gzipped</span><span class="p">):</span>
219
<span class="sd">"""</span>
220
<span class="sd"> Return appropriate suffix depending on status of</span>
221
<span class="sd"> encryption, compression, and short_filenames.</span>
222
<span class="sd"> """</span>
223
<span class="k">if</span> <span class="n">encrypted</span><span class="p">:</span>
224
<span class="n">gzipped</span> <span class="o">=</span> <span class="kc">False</span>
225
<span class="k">if</span> <span class="n">encrypted</span><span class="p">:</span>
226
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
227
<span class="n">suffix</span> <span class="o">=</span> <span class="s1">'.g'</span>
228
<span class="k">else</span><span class="p">:</span>
229
<span class="n">suffix</span> <span class="o">=</span> <span class="s2">".gpg"</span>
230
<span class="k">elif</span> <span class="n">gzipped</span><span class="p">:</span>
231
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
232
<span class="n">suffix</span> <span class="o">=</span> <span class="s2">".z"</span>
233
<span class="k">else</span><span class="p">:</span>
234
<span class="n">suffix</span> <span class="o">=</span> <span class="s1">'.gz'</span>
235
<span class="k">else</span><span class="p">:</span>
236
<span class="n">suffix</span> <span class="o">=</span> <span class="s2">""</span>
237
<span class="k">return</span> <span class="n">suffix</span></div>
240
<div class="viewcode-block" id="get"><a class="viewcode-back" href="../../duplicity.file_naming.html#duplicity.file_naming.get">[docs]</a><span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="nb">type</span><span class="p">,</span> <span class="n">volume_number</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">manifest</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
241
<span class="n">encrypted</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">gzipped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">partial</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
242
<span class="sd">"""</span>
243
<span class="sd"> Return duplicity filename of specified type</span>
245
<span class="sd"> type can be "full", "inc", "full-sig", or "new-sig". volume_number</span>
246
<span class="sd"> can be given with the full and inc types. If manifest is true the</span>
247
<span class="sd"> filename is of a full or inc manifest file.</span>
248
<span class="sd"> """</span>
249
<span class="k">assert</span> <span class="n">dup_time</span><span class="o">.</span><span class="n">curtimestr</span>
250
<span class="k">if</span> <span class="n">encrypted</span><span class="p">:</span>
251
<span class="n">gzipped</span> <span class="o">=</span> <span class="kc">False</span>
252
<span class="n">suffix</span> <span class="o">=</span> <span class="n">get_suffix</span><span class="p">(</span><span class="n">encrypted</span><span class="p">,</span> <span class="n">gzipped</span><span class="p">)</span>
253
<span class="n">part_string</span> <span class="o">=</span> <span class="s2">""</span>
254
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
255
<span class="k">if</span> <span class="n">partial</span><span class="p">:</span>
256
<span class="n">part_string</span> <span class="o">=</span> <span class="s2">".p"</span>
257
<span class="k">else</span><span class="p">:</span>
258
<span class="k">if</span> <span class="n">partial</span><span class="p">:</span>
259
<span class="n">part_string</span> <span class="o">=</span> <span class="s2">".part"</span>
261
<span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"full-sig"</span> <span class="ow">or</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"new-sig"</span><span class="p">:</span>
262
<span class="k">assert</span> <span class="ow">not</span> <span class="n">volume_number</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">manifest</span>
263
<span class="k">assert</span> <span class="ow">not</span> <span class="p">(</span><span class="n">volume_number</span> <span class="ow">and</span> <span class="n">part_string</span><span class="p">)</span>
264
<span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"full-sig"</span><span class="p">:</span>
265
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
266
<span class="k">return</span> <span class="p">(</span><span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"dfs.</span><span class="si">%s</span><span class="s2">.st</span><span class="si">%s%s</span><span class="s2">"</span> <span class="o">%</span>
267
<span class="p">(</span><span class="n">to_base36</span><span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">curtime</span><span class="p">),</span> <span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
268
<span class="k">else</span><span class="p">:</span>
269
<span class="k">return</span> <span class="p">(</span><span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"duplicity-full-signatures.</span><span class="si">%s</span><span class="s2">.sigtar</span><span class="si">%s%s</span><span class="s2">"</span> <span class="o">%</span>
270
<span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">curtimestr</span><span class="p">,</span> <span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
271
<span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"new-sig"</span><span class="p">:</span>
272
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
273
<span class="k">return</span> <span class="p">(</span><span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"dns.</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2">.st</span><span class="si">%s%s</span><span class="s2">"</span> <span class="o">%</span>
274
<span class="p">(</span><span class="n">to_base36</span><span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">prevtime</span><span class="p">),</span> <span class="n">to_base36</span><span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">curtime</span><span class="p">),</span>
275
<span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
276
<span class="k">else</span><span class="p">:</span>
277
<span class="k">return</span> <span class="p">(</span><span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span> <span class="o">+</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_signature</span> <span class="o">+</span> <span class="s2">"duplicity-new-signatures.</span><span class="si">%s</span><span class="s2">.to.</span><span class="si">%s</span><span class="s2">.sigtar</span><span class="si">%s%s</span><span class="s2">"</span> <span class="o">%</span>
278
<span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">prevtimestr</span><span class="p">,</span> <span class="n">dup_time</span><span class="o">.</span><span class="n">curtimestr</span><span class="p">,</span>
279
<span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
280
<span class="k">else</span><span class="p">:</span>
281
<span class="k">assert</span> <span class="n">volume_number</span> <span class="ow">or</span> <span class="n">manifest</span>
282
<span class="k">assert</span> <span class="ow">not</span> <span class="p">(</span><span class="n">volume_number</span> <span class="ow">and</span> <span class="n">manifest</span><span class="p">)</span>
284
<span class="n">prefix</span> <span class="o">=</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix</span>
286
<span class="k">if</span> <span class="n">volume_number</span><span class="p">:</span>
287
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
288
<span class="n">vol_string</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">.dt"</span> <span class="o">%</span> <span class="n">to_base36</span><span class="p">(</span><span class="n">volume_number</span><span class="p">)</span>
289
<span class="k">else</span><span class="p">:</span>
290
<span class="n">vol_string</span> <span class="o">=</span> <span class="s2">"vol</span><span class="si">%d</span><span class="s2">.difftar"</span> <span class="o">%</span> <span class="n">volume_number</span>
291
<span class="n">prefix</span> <span class="o">+=</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_archive</span>
292
<span class="k">else</span><span class="p">:</span>
293
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
294
<span class="n">vol_string</span> <span class="o">=</span> <span class="s2">"m"</span>
295
<span class="k">else</span><span class="p">:</span>
296
<span class="n">vol_string</span> <span class="o">=</span> <span class="s2">"manifest"</span>
297
<span class="n">prefix</span> <span class="o">+=</span> <span class="nb">globals</span><span class="o">.</span><span class="n">file_prefix_manifest</span>
299
<span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"full"</span><span class="p">:</span>
300
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
301
<span class="k">return</span> <span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">df.</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s%s%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">to_base36</span><span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">curtime</span><span class="p">),</span>
302
<span class="n">vol_string</span><span class="p">,</span> <span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
303
<span class="k">else</span><span class="p">:</span>
304
<span class="k">return</span> <span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">duplicity-full.</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s%s%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">dup_time</span><span class="o">.</span><span class="n">curtimestr</span><span class="p">,</span>
305
<span class="n">vol_string</span><span class="p">,</span> <span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
306
<span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"inc"</span><span class="p">:</span>
307
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
308
<span class="k">return</span> <span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">di.</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s%s%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">to_base36</span><span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">prevtime</span><span class="p">),</span>
309
<span class="n">to_base36</span><span class="p">(</span><span class="n">dup_time</span><span class="o">.</span><span class="n">curtime</span><span class="p">),</span>
310
<span class="n">vol_string</span><span class="p">,</span> <span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
311
<span class="k">else</span><span class="p">:</span>
312
<span class="k">return</span> <span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">duplicity-inc.</span><span class="si">%s</span><span class="s2">.to.</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s%s%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">dup_time</span><span class="o">.</span><span class="n">prevtimestr</span><span class="p">,</span>
313
<span class="n">dup_time</span><span class="o">.</span><span class="n">curtimestr</span><span class="p">,</span>
314
<span class="n">vol_string</span><span class="p">,</span> <span class="n">part_string</span><span class="p">,</span> <span class="n">suffix</span><span class="p">))</span>
315
<span class="k">else</span><span class="p">:</span>
316
<span class="k">assert</span> <span class="mi">0</span></div>
319
<div class="viewcode-block" id="parse"><a class="viewcode-back" href="../../duplicity.file_naming.html#duplicity.file_naming.parse">[docs]</a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
320
<span class="sd">"""</span>
321
<span class="sd"> Parse duplicity filename, return None or ParseResults object</span>
322
<span class="sd"> """</span>
323
<span class="k">def</span> <span class="nf">str2time</span><span class="p">(</span><span class="n">timestr</span><span class="p">,</span> <span class="n">short</span><span class="p">):</span>
324
<span class="sd">"""</span>
325
<span class="sd"> Return time in seconds if string can be converted, None otherwise</span>
326
<span class="sd"> """</span>
327
<span class="k">if</span> <span class="n">short</span><span class="p">:</span>
328
<span class="n">t</span> <span class="o">=</span> <span class="n">from_base36</span><span class="p">(</span><span class="n">timestr</span><span class="p">)</span>
329
<span class="k">else</span><span class="p">:</span>
330
<span class="k">try</span><span class="p">:</span>
331
<span class="n">t</span> <span class="o">=</span> <span class="n">dup_time</span><span class="o">.</span><span class="n">genstrtotime</span><span class="p">(</span><span class="n">timestr</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
332
<span class="k">except</span> <span class="n">dup_time</span><span class="o">.</span><span class="n">TimeException</span><span class="p">:</span>
333
<span class="k">return</span> <span class="kc">None</span>
334
<span class="k">return</span> <span class="n">t</span>
336
<span class="k">def</span> <span class="nf">get_vol_num</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">short</span><span class="p">):</span>
337
<span class="sd">"""</span>
338
<span class="sd"> Return volume number from volume number string</span>
339
<span class="sd"> """</span>
340
<span class="k">if</span> <span class="n">short</span><span class="p">:</span>
341
<span class="k">return</span> <span class="n">from_base36</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
342
<span class="k">else</span><span class="p">:</span>
343
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
345
<span class="k">def</span> <span class="nf">check_full</span><span class="p">():</span>
346
<span class="sd">"""</span>
347
<span class="sd"> Return ParseResults if file is from full backup, None otherwise</span>
348
<span class="sd"> """</span>
349
<span class="n">prepare_regex</span><span class="p">()</span>
350
<span class="n">short</span> <span class="o">=</span> <span class="kc">True</span>
351
<span class="n">m1</span> <span class="o">=</span> <span class="n">full_vol_re_short</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
352
<span class="n">m2</span> <span class="o">=</span> <span class="n">full_manifest_re_short</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
353
<span class="k">if</span> <span class="ow">not</span> <span class="n">m1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">m2</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
354
<span class="n">short</span> <span class="o">=</span> <span class="kc">False</span>
355
<span class="n">m1</span> <span class="o">=</span> <span class="n">full_vol_re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
356
<span class="n">m2</span> <span class="o">=</span> <span class="n">full_manifest_re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
357
<span class="k">if</span> <span class="n">m1</span> <span class="ow">or</span> <span class="n">m2</span><span class="p">:</span>
358
<span class="n">t</span> <span class="o">=</span> <span class="n">str2time</span><span class="p">((</span><span class="n">m1</span> <span class="ow">or</span> <span class="n">m2</span><span class="p">)</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"time"</span><span class="p">),</span> <span class="n">short</span><span class="p">)</span>
359
<span class="k">if</span> <span class="n">t</span><span class="p">:</span>
360
<span class="k">if</span> <span class="n">m1</span><span class="p">:</span>
361
<span class="k">return</span> <span class="n">ParseResults</span><span class="p">(</span><span class="s2">"full"</span><span class="p">,</span> <span class="n">time</span><span class="o">=</span><span class="n">t</span><span class="p">,</span>
362
<span class="n">volume_number</span><span class="o">=</span><span class="n">get_vol_num</span><span class="p">(</span><span class="n">m1</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"num"</span><span class="p">),</span> <span class="n">short</span><span class="p">))</span>
363
<span class="k">else</span><span class="p">:</span>
364
<span class="k">return</span> <span class="n">ParseResults</span><span class="p">(</span><span class="s2">"full"</span><span class="p">,</span> <span class="n">time</span><span class="o">=</span><span class="n">t</span><span class="p">,</span> <span class="n">manifest</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
365
<span class="n">partial</span><span class="o">=</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"partial"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">))</span>
366
<span class="k">return</span> <span class="kc">None</span>
368
<span class="k">def</span> <span class="nf">check_inc</span><span class="p">():</span>
369
<span class="sd">"""</span>
370
<span class="sd"> Return ParseResults if file is from inc backup, None otherwise</span>
371
<span class="sd"> """</span>
372
<span class="n">prepare_regex</span><span class="p">()</span>
373
<span class="n">short</span> <span class="o">=</span> <span class="kc">True</span>
374
<span class="n">m1</span> <span class="o">=</span> <span class="n">inc_vol_re_short</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
375
<span class="n">m2</span> <span class="o">=</span> <span class="n">inc_manifest_re_short</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
376
<span class="k">if</span> <span class="ow">not</span> <span class="n">m1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">m2</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
377
<span class="n">short</span> <span class="o">=</span> <span class="kc">False</span>
378
<span class="n">m1</span> <span class="o">=</span> <span class="n">inc_vol_re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
379
<span class="n">m2</span> <span class="o">=</span> <span class="n">inc_manifest_re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
380
<span class="k">if</span> <span class="n">m1</span> <span class="ow">or</span> <span class="n">m2</span><span class="p">:</span>
381
<span class="n">t1</span> <span class="o">=</span> <span class="n">str2time</span><span class="p">((</span><span class="n">m1</span> <span class="ow">or</span> <span class="n">m2</span><span class="p">)</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"start_time"</span><span class="p">),</span> <span class="n">short</span><span class="p">)</span>
382
<span class="n">t2</span> <span class="o">=</span> <span class="n">str2time</span><span class="p">((</span><span class="n">m1</span> <span class="ow">or</span> <span class="n">m2</span><span class="p">)</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"end_time"</span><span class="p">),</span> <span class="n">short</span><span class="p">)</span>
383
<span class="k">if</span> <span class="n">t1</span> <span class="ow">and</span> <span class="n">t2</span><span class="p">:</span>
384
<span class="k">if</span> <span class="n">m1</span><span class="p">:</span>
385
<span class="k">return</span> <span class="n">ParseResults</span><span class="p">(</span><span class="s2">"inc"</span><span class="p">,</span> <span class="n">start_time</span><span class="o">=</span><span class="n">t1</span><span class="p">,</span>
386
<span class="n">end_time</span><span class="o">=</span><span class="n">t2</span><span class="p">,</span> <span class="n">volume_number</span><span class="o">=</span><span class="n">get_vol_num</span><span class="p">(</span><span class="n">m1</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"num"</span><span class="p">),</span> <span class="n">short</span><span class="p">))</span>
387
<span class="k">else</span><span class="p">:</span>
388
<span class="k">return</span> <span class="n">ParseResults</span><span class="p">(</span><span class="s2">"inc"</span><span class="p">,</span> <span class="n">start_time</span><span class="o">=</span><span class="n">t1</span><span class="p">,</span> <span class="n">end_time</span><span class="o">=</span><span class="n">t2</span><span class="p">,</span> <span class="n">manifest</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
389
<span class="n">partial</span><span class="o">=</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"partial"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">))</span>
390
<span class="k">return</span> <span class="kc">None</span>
392
<span class="k">def</span> <span class="nf">check_sig</span><span class="p">():</span>
393
<span class="sd">"""</span>
394
<span class="sd"> Return ParseResults if file is a signature, None otherwise</span>
395
<span class="sd"> """</span>
396
<span class="n">prepare_regex</span><span class="p">()</span>
397
<span class="n">short</span> <span class="o">=</span> <span class="kc">True</span>
398
<span class="n">m</span> <span class="o">=</span> <span class="n">full_sig_re_short</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
399
<span class="k">if</span> <span class="ow">not</span> <span class="n">m</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
400
<span class="n">short</span> <span class="o">=</span> <span class="kc">False</span>
401
<span class="n">m</span> <span class="o">=</span> <span class="n">full_sig_re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
402
<span class="k">if</span> <span class="n">m</span><span class="p">:</span>
403
<span class="n">t</span> <span class="o">=</span> <span class="n">str2time</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"time"</span><span class="p">),</span> <span class="n">short</span><span class="p">)</span>
404
<span class="k">if</span> <span class="n">t</span><span class="p">:</span>
405
<span class="k">return</span> <span class="n">ParseResults</span><span class="p">(</span><span class="s2">"full-sig"</span><span class="p">,</span> <span class="n">time</span><span class="o">=</span><span class="n">t</span><span class="p">,</span>
406
<span class="n">partial</span><span class="o">=</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"partial"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">))</span>
407
<span class="k">else</span><span class="p">:</span>
408
<span class="k">return</span> <span class="kc">None</span>
410
<span class="n">short</span> <span class="o">=</span> <span class="kc">True</span>
411
<span class="n">m</span> <span class="o">=</span> <span class="n">new_sig_re_short</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
412
<span class="k">if</span> <span class="ow">not</span> <span class="n">m</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span><span class="p">:</span>
413
<span class="n">short</span> <span class="o">=</span> <span class="kc">False</span>
414
<span class="n">m</span> <span class="o">=</span> <span class="n">new_sig_re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
415
<span class="k">if</span> <span class="n">m</span><span class="p">:</span>
416
<span class="n">t1</span> <span class="o">=</span> <span class="n">str2time</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"start_time"</span><span class="p">),</span> <span class="n">short</span><span class="p">)</span>
417
<span class="n">t2</span> <span class="o">=</span> <span class="n">str2time</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"end_time"</span><span class="p">),</span> <span class="n">short</span><span class="p">)</span>
418
<span class="k">if</span> <span class="n">t1</span> <span class="ow">and</span> <span class="n">t2</span><span class="p">:</span>
419
<span class="k">return</span> <span class="n">ParseResults</span><span class="p">(</span><span class="s2">"new-sig"</span><span class="p">,</span> <span class="n">start_time</span><span class="o">=</span><span class="n">t1</span><span class="p">,</span> <span class="n">end_time</span><span class="o">=</span><span class="n">t2</span><span class="p">,</span>
420
<span class="n">partial</span><span class="o">=</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"partial"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">))</span>
421
<span class="k">return</span> <span class="kc">None</span>
423
<span class="k">def</span> <span class="nf">set_encryption_or_compression</span><span class="p">(</span><span class="n">pr</span><span class="p">):</span>
424
<span class="sd">"""</span>
425
<span class="sd"> Set encryption and compression flags in ParseResults pr</span>
426
<span class="sd"> """</span>
427
<span class="k">if</span> <span class="p">(</span><span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.z'</span><span class="p">)</span> <span class="ow">or</span>
428
<span class="ow">not</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span> <span class="ow">and</span> <span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'gz'</span><span class="p">)):</span>
429
<span class="n">pr</span><span class="o">.</span><span class="n">compressed</span> <span class="o">=</span> <span class="mi">1</span>
430
<span class="k">else</span><span class="p">:</span>
431
<span class="n">pr</span><span class="o">.</span><span class="n">compressed</span> <span class="o">=</span> <span class="kc">None</span>
433
<span class="k">if</span> <span class="p">(</span><span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.g'</span><span class="p">)</span> <span class="ow">or</span>
434
<span class="ow">not</span> <span class="nb">globals</span><span class="o">.</span><span class="n">short_filenames</span> <span class="ow">and</span> <span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.gpg'</span><span class="p">)):</span>
435
<span class="n">pr</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="mi">1</span>
436
<span class="k">else</span><span class="p">:</span>
437
<span class="n">pr</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="kc">None</span>
439
<span class="n">pr</span> <span class="o">=</span> <span class="n">check_full</span><span class="p">()</span>
440
<span class="k">if</span> <span class="ow">not</span> <span class="n">pr</span><span class="p">:</span>
441
<span class="n">pr</span> <span class="o">=</span> <span class="n">check_inc</span><span class="p">()</span>
442
<span class="k">if</span> <span class="ow">not</span> <span class="n">pr</span><span class="p">:</span>
443
<span class="n">pr</span> <span class="o">=</span> <span class="n">check_sig</span><span class="p">()</span>
444
<span class="k">if</span> <span class="ow">not</span> <span class="n">pr</span><span class="p">:</span>
445
<span class="k">return</span> <span class="kc">None</span>
446
<span class="n">set_encryption_or_compression</span><span class="p">(</span><span class="n">pr</span><span class="p">)</span>
447
<span class="k">return</span> <span class="n">pr</span></div>
450
<div class="viewcode-block" id="ParseResults"><a class="viewcode-back" href="../../duplicity.file_naming.html#duplicity.file_naming.ParseResults">[docs]</a><span class="k">class</span> <span class="nc">ParseResults</span><span class="p">:</span>
451
<span class="sd">"""</span>
452
<span class="sd"> Hold information taken from a duplicity filename</span>
453
<span class="sd"> """</span>
454
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">manifest</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">volume_number</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
455
<span class="n">time</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">start_time</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">end_time</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
456
<span class="n">encrypted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">compressed</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">partial</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
458
<span class="k">assert</span> <span class="nb">type</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"full-sig"</span><span class="p">,</span> <span class="s2">"new-sig"</span><span class="p">,</span> <span class="s2">"inc"</span><span class="p">,</span> <span class="s2">"full"</span><span class="p">]</span>
460
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">type</span>
461
<span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"inc"</span> <span class="ow">or</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"full"</span><span class="p">:</span>
462
<span class="k">assert</span> <span class="n">manifest</span> <span class="ow">or</span> <span class="n">volume_number</span>
463
<span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"inc"</span> <span class="ow">or</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"new-sig"</span><span class="p">:</span>
464
<span class="k">assert</span> <span class="n">start_time</span> <span class="ow">and</span> <span class="n">end_time</span>
465
<span class="k">else</span><span class="p">:</span>
466
<span class="k">assert</span> <span class="n">time</span>
468
<span class="bp">self</span><span class="o">.</span><span class="n">manifest</span> <span class="o">=</span> <span class="n">manifest</span>
469
<span class="bp">self</span><span class="o">.</span><span class="n">volume_number</span> <span class="o">=</span> <span class="n">volume_number</span>
470
<span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="n">time</span>
471
<span class="bp">self</span><span class="o">.</span><span class="n">start_time</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">end_time</span> <span class="o">=</span> <span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span>
473
<span class="bp">self</span><span class="o">.</span><span class="n">compressed</span> <span class="o">=</span> <span class="n">compressed</span> <span class="c1"># true if gzip compressed</span>
474
<span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="n">encrypted</span> <span class="c1"># true if gpg encrypted</span>
476
<span class="bp">self</span><span class="o">.</span><span class="n">partial</span> <span class="o">=</span> <span class="n">partial</span></div>
482
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
483
<div class="sphinxsidebarwrapper"><div class="relations">
484
<h3>Related Topics</h3>
486
<li><a href="../../index.html">Documentation overview</a><ul>
487
<li><a href="../index.html">Module code</a><ul>
492
<div id="searchbox" style="display: none" role="search">
493
<h3>Quick search</h3>
494
<form class="search" action="../../search.html" method="get">
495
<div><input type="text" name="q" /></div>
496
<div><input type="submit" value="Go" /></div>
497
<input type="hidden" name="check_keywords" value="yes" />
498
<input type="hidden" name="area" value="default" />
501
<script type="text/javascript">$('#searchbox').show(0);</script>
504
<div class="clearer"></div>
510
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.5</a>
511
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
b'\\ No newline at end of file'