~mstoll-de/duplicity/duplicity

« back to all changes in this revision

Viewing changes to docs/_build/html/_modules/duplicity/file_naming.html

  • Committer: Kenneth Loafman
  • Date: 2016-08-20 15:00:14 UTC
  • Revision ID: kenneth@loafman.com-20160820150014-tisw9w7cxtlr9qcx
First pass at some Sphinx docs for moving to readthedocs.org

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
2
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
3
 
 
4
 
 
5
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 
6
  <head>
 
7
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
8
    
 
9
    <title>duplicity.file_naming &mdash; duplicity-src8  documentation</title>
 
10
    
 
11
    <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
 
12
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
13
    
 
14
    <script type="text/javascript">
 
15
      var DOCUMENTATION_OPTIONS = {
 
16
        URL_ROOT:    '../../',
 
17
        VERSION:     '',
 
18
        COLLAPSE_INDEX: false,
 
19
        FILE_SUFFIX: '.html',
 
20
        HAS_SOURCE:  true
 
21
      };
 
22
    </script>
 
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" />
 
28
   
 
29
  <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
 
30
  
 
31
  
 
32
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
33
 
 
34
  </head>
 
35
  <body role="document">
 
36
  
 
37
 
 
38
    <div class="document">
 
39
      <div class="documentwrapper">
 
40
        <div class="bodywrapper">
 
41
          <div class="body" role="main">
 
42
            
 
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 &lt;ben@emerose.org&gt;</span>
 
47
<span class="c1"># Copyright 2007 Kenneth Loafman &lt;kenneth@loafman.com&gt;</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>
 
64
 
 
65
<span class="sd">&quot;&quot;&quot;Produce and parse the names of duplicity&#39;s backup files&quot;&quot;&quot;</span>
 
66
 
 
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>
 
70
 
 
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>
 
83
 
 
84
 
 
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>
 
98
 
 
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>
 
102
 
 
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">&quot;^&quot;</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">&quot;duplicity-full&quot;</span>
 
104
                             <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;time&gt;.*?)&quot;</span>
 
105
                             <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.vol(?P&lt;num&gt;[0-9]+)&quot;</span>
 
106
                             <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.difftar&quot;</span>
 
107
                             <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.part))?&quot;</span>
 
108
                             <span class="s2">&quot;($|</span><span class="se">\\</span><span class="s2">.)&quot;</span><span class="p">)</span>
 
109
 
 
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">&quot;^&quot;</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">&quot;df&quot;</span>
 
111
                                   <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;time&gt;[0-9a-z]+?)&quot;</span>
 
112
                                   <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;num&gt;[0-9a-z]+)&quot;</span>
 
113
                                   <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.dt&quot;</span>
 
114
                                   <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.p))?&quot;</span>
 
115
                                   <span class="s2">&quot;($|</span><span class="se">\\</span><span class="s2">.)&quot;</span><span class="p">)</span>
 
116
 
 
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">&quot;^&quot;</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">&quot;duplicity-full&quot;</span>
 
118
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;time&gt;.*?)&quot;</span>
 
119
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.manifest&quot;</span>
 
120
                                  <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.part))?&quot;</span>
 
121
                                  <span class="s2">&quot;($|</span><span class="se">\\</span><span class="s2">.)&quot;</span><span class="p">)</span>
 
122
 
 
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">&quot;^&quot;</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">&quot;df&quot;</span>
 
124
                                        <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;time&gt;[0-9a-z]+?)&quot;</span>
 
125
                                        <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.m&quot;</span>
 
126
                                        <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.p))?&quot;</span>
 
127
                                        <span class="s2">&quot;($|</span><span class="se">\\</span><span class="s2">.)&quot;</span><span class="p">)</span>
 
128
 
 
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">&quot;^&quot;</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">&quot;duplicity-inc&quot;</span>
 
130
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;start_time&gt;.*?)&quot;</span>
 
131
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.to</span><span class="se">\\</span><span class="s2">.(?P&lt;end_time&gt;.*?)&quot;</span>
 
132
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.vol(?P&lt;num&gt;[0-9]+)&quot;</span>
 
133
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.difftar&quot;</span>
 
134
                            <span class="s2">&quot;($|</span><span class="se">\\</span><span class="s2">.)&quot;</span><span class="p">)</span>
 
135
 
 
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">&quot;^&quot;</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">&quot;di&quot;</span>
 
137
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;start_time&gt;[0-9a-z]+?)&quot;</span>
 
138
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;end_time&gt;[0-9a-z]+?)&quot;</span>
 
139
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;num&gt;[0-9a-z]+)&quot;</span>
 
140
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.dt&quot;</span>
 
141
                                  <span class="s2">&quot;($|</span><span class="se">\\</span><span class="s2">.)&quot;</span><span class="p">)</span>
 
142
 
 
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">&quot;^&quot;</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">&quot;duplicity-inc&quot;</span>
 
144
                                 <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;start_time&gt;.*?)&quot;</span>
 
145
                                 <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.to&quot;</span>
 
146
                                 <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;end_time&gt;.*?)&quot;</span>
 
147
                                 <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.manifest&quot;</span>
 
148
                                 <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.part))?&quot;</span>
 
149
                                 <span class="s2">&quot;(</span><span class="se">\\</span><span class="s2">.|$)&quot;</span><span class="p">)</span>
 
150
 
 
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">&quot;^&quot;</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">&quot;di&quot;</span>
 
152
                                       <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;start_time&gt;[0-9a-z]+?)&quot;</span>
 
153
                                       <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;end_time&gt;[0-9a-z]+?)&quot;</span>
 
154
                                       <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.m&quot;</span>
 
155
                                       <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.p))?&quot;</span>
 
156
                                       <span class="s2">&quot;(</span><span class="se">\\</span><span class="s2">.|$)&quot;</span><span class="p">)</span>
 
157
 
 
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">&quot;^&quot;</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">&quot;duplicity-full-signatures&quot;</span>
 
159
                             <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;time&gt;.*?)&quot;</span>
 
160
                             <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.sigtar&quot;</span>
 
161
                             <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.part))?&quot;</span>
 
162
                             <span class="s2">&quot;(</span><span class="se">\\</span><span class="s2">.|$)&quot;</span><span class="p">)</span>
 
163
 
 
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">&quot;^&quot;</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">&quot;dfs&quot;</span>
 
165
                                   <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;time&gt;[0-9a-z]+?)&quot;</span>
 
166
                                   <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.st&quot;</span>
 
167
                                   <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.p))?&quot;</span>
 
168
                                   <span class="s2">&quot;(</span><span class="se">\\</span><span class="s2">.|$)&quot;</span><span class="p">)</span>
 
169
 
 
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">&quot;^&quot;</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">&quot;duplicity-new-signatures&quot;</span>
 
171
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;start_time&gt;.*?)&quot;</span>
 
172
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.to&quot;</span>
 
173
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;end_time&gt;.*?)&quot;</span>
 
174
                            <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.sigtar&quot;</span>
 
175
                            <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.part))?&quot;</span>
 
176
                            <span class="s2">&quot;(</span><span class="se">\\</span><span class="s2">.|$)&quot;</span><span class="p">)</span>
 
177
 
 
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">&quot;^&quot;</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">&quot;dns&quot;</span>
 
179
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;start_time&gt;[0-9a-z]+?)&quot;</span>
 
180
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.(?P&lt;end_time&gt;[0-9a-z]+?)&quot;</span>
 
181
                                  <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">.st&quot;</span>
 
182
                                  <span class="s2">&quot;(?P&lt;partial&gt;(</span><span class="se">\\</span><span class="s2">.p))?&quot;</span>
 
183
                                  <span class="s2">&quot;(</span><span class="se">\\</span><span class="s2">.|$)&quot;</span><span class="p">)</span></div>
 
184
 
 
185
 
 
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">&quot;&quot;&quot;</span>
 
188
<span class="sd">    Return string representation of n in base 36 (use 0-9 and a-z)</span>
 
189
<span class="sd">    &quot;&quot;&quot;</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">&lt;=</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">&#39;a&#39;</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>
 
199
 
 
200
 
 
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">&quot;&quot;&quot;</span>
 
203
<span class="sd">    Convert string s in base 36 to long int</span>
 
204
<span class="sd">    &quot;&quot;&quot;</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">&#39;0&#39;</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">digit_ord</span> <span class="o">&lt;=</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">&#39;9&#39;</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">&#39;0&#39;</span><span class="p">)</span>
 
211
        <span class="k">elif</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">digit_ord</span> <span class="o">&lt;=</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">&#39;z&#39;</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">&#39;a&#39;</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">&quot;Digit </span><span class="si">%s</span><span class="s2"> in </span><span class="si">%s</span><span class="s2"> not in proper range&quot;</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>
 
216
 
 
217
 
 
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">&quot;&quot;&quot;</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">    &quot;&quot;&quot;</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">&#39;.g&#39;</span>
 
228
        <span class="k">else</span><span class="p">:</span>
 
229
            <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;.gpg&quot;</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">&quot;.z&quot;</span>
 
233
        <span class="k">else</span><span class="p">:</span>
 
234
            <span class="n">suffix</span> <span class="o">=</span> <span class="s1">&#39;.gz&#39;</span>
 
235
    <span class="k">else</span><span class="p">:</span>
 
236
        <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
 
237
    <span class="k">return</span> <span class="n">suffix</span></div>
 
238
 
 
239
 
 
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">&quot;&quot;&quot;</span>
 
243
<span class="sd">    Return duplicity filename of specified type</span>
 
244
 
 
245
<span class="sd">    type can be &quot;full&quot;, &quot;inc&quot;, &quot;full-sig&quot;, or &quot;new-sig&quot;. 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">    &quot;&quot;&quot;</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">&quot;&quot;</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">&quot;.p&quot;</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">&quot;.part&quot;</span>
 
260
 
 
261
    <span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">&quot;full-sig&quot;</span> <span class="ow">or</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">&quot;new-sig&quot;</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">&quot;full-sig&quot;</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">&quot;dfs.</span><span class="si">%s</span><span class="s2">.st</span><span class="si">%s%s</span><span class="s2">&quot;</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">&quot;duplicity-full-signatures.</span><span class="si">%s</span><span class="s2">.sigtar</span><span class="si">%s%s</span><span class="s2">&quot;</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">&quot;new-sig&quot;</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">&quot;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">&quot;</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">&quot;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">&quot;</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>
 
283
 
 
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>
 
285
 
 
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">&quot;</span><span class="si">%s</span><span class="s2">.dt&quot;</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">&quot;vol</span><span class="si">%d</span><span class="s2">.difftar&quot;</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">&quot;m&quot;</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">&quot;manifest&quot;</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>
 
298
 
 
299
        <span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">&quot;full&quot;</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">&quot;</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">&quot;</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">&quot;</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">&quot;</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">&quot;inc&quot;</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">&quot;</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">&quot;</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">&quot;</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">&quot;</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>
 
317
 
 
318
 
 
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">&quot;&quot;&quot;</span>
 
321
<span class="sd">    Parse duplicity filename, return None or ParseResults object</span>
 
322
<span class="sd">    &quot;&quot;&quot;</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">&quot;&quot;&quot;</span>
 
325
<span class="sd">        Return time in seconds if string can be converted, None otherwise</span>
 
326
<span class="sd">        &quot;&quot;&quot;</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>
 
335
 
 
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">&quot;&quot;&quot;</span>
 
338
<span class="sd">        Return volume number from volume number string</span>
 
339
<span class="sd">        &quot;&quot;&quot;</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>
 
344
 
 
345
    <span class="k">def</span> <span class="nf">check_full</span><span class="p">():</span>
 
346
        <span class="sd">&quot;&quot;&quot;</span>
 
347
<span class="sd">        Return ParseResults if file is from full backup, None otherwise</span>
 
348
<span class="sd">        &quot;&quot;&quot;</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">&quot;time&quot;</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">&quot;full&quot;</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">&quot;num&quot;</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">&quot;full&quot;</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">&quot;partial&quot;</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>
 
367
 
 
368
    <span class="k">def</span> <span class="nf">check_inc</span><span class="p">():</span>
 
369
        <span class="sd">&quot;&quot;&quot;</span>
 
370
<span class="sd">        Return ParseResults if file is from inc backup, None otherwise</span>
 
371
<span class="sd">        &quot;&quot;&quot;</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">&quot;start_time&quot;</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">&quot;end_time&quot;</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">&quot;inc&quot;</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">&quot;num&quot;</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">&quot;inc&quot;</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">&quot;partial&quot;</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>
 
391
 
 
392
    <span class="k">def</span> <span class="nf">check_sig</span><span class="p">():</span>
 
393
        <span class="sd">&quot;&quot;&quot;</span>
 
394
<span class="sd">        Return ParseResults if file is a signature, None otherwise</span>
 
395
<span class="sd">        &quot;&quot;&quot;</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">&quot;time&quot;</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">&quot;full-sig&quot;</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">&quot;partial&quot;</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>
 
409
 
 
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">&quot;start_time&quot;</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">&quot;end_time&quot;</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">&quot;new-sig&quot;</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">&quot;partial&quot;</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>
 
422
 
 
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">&quot;&quot;&quot;</span>
 
425
<span class="sd">        Set encryption and compression flags in ParseResults pr</span>
 
426
<span class="sd">        &quot;&quot;&quot;</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">&#39;.z&#39;</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">&#39;gz&#39;</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>
 
432
 
 
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">&#39;.g&#39;</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">&#39;.gpg&#39;</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>
 
438
 
 
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>
 
448
 
 
449
 
 
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">&quot;&quot;&quot;</span>
 
452
<span class="sd">    Hold information taken from a duplicity filename</span>
 
453
<span class="sd">    &quot;&quot;&quot;</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>
 
457
 
 
458
        <span class="k">assert</span> <span class="nb">type</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;full-sig&quot;</span><span class="p">,</span> <span class="s2">&quot;new-sig&quot;</span><span class="p">,</span> <span class="s2">&quot;inc&quot;</span><span class="p">,</span> <span class="s2">&quot;full&quot;</span><span class="p">]</span>
 
459
 
 
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">&quot;inc&quot;</span> <span class="ow">or</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">&quot;full&quot;</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">&quot;inc&quot;</span> <span class="ow">or</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">&quot;new-sig&quot;</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>
 
467
 
 
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>
 
472
 
 
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>
 
475
 
 
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>
 
477
</pre></div>
 
478
 
 
479
          </div>
 
480
        </div>
 
481
      </div>
 
482
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
 
483
        <div class="sphinxsidebarwrapper"><div class="relations">
 
484
<h3>Related Topics</h3>
 
485
<ul>
 
486
  <li><a href="../../index.html">Documentation overview</a><ul>
 
487
  <li><a href="../index.html">Module code</a><ul>
 
488
  </ul></li>
 
489
  </ul></li>
 
490
</ul>
 
491
</div>
 
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" />
 
499
    </form>
 
500
</div>
 
501
<script type="text/javascript">$('#searchbox').show(0);</script>
 
502
        </div>
 
503
      </div>
 
504
      <div class="clearer"></div>
 
505
    </div>
 
506
    <div class="footer">
 
507
      &copy;2016, Author.
 
508
      
 
509
      |
 
510
      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.5</a>
 
511
      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
 
512
      
 
513
    </div>
 
514
 
 
515
    
 
516
 
 
517
    
 
518
  </body>
 
519
</html>
 
 
b'\\ No newline at end of file'