Projekt

Obecné

Profil

Stáhnout (12.5 KB) Statistiky
| Větev: | Tag: | Revize:
1
<!doctype html>
2
<html lang="en">
3
<head>
4
<meta charset="utf-8">
5
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
6
<meta name="generator" content="pdoc 0.10.0" />
7
<title>config_manager API documentation</title>
8
<meta name="description" content="" />
9
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
10
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
11
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
12
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;margin:25px 0 10px 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;font-size:.8em;line-height:1.4em}code{background:#f2f2f1;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-weight:bold;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style>
13
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
14
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
15
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
16
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
17
</head>
18
<body>
19
<main>
20
<article id="content">
21
<header>
22
<h1 class="title">Module <code>config_manager</code></h1>
23
</header>
24
<section id="section-intro">
25
<details class="source">
26
<summary>
27
<span>Expand source code</span>
28
</summary>
29
<pre><code class="python">from sys import exit
30
from configparser import RawConfigParser
31

    
32

    
33
class Config:
34
    &#34;&#34;&#34;This class holds the configuration values of the application.
35

    
36
    It reads the configuration file passed in through the constructor
37
    and stores the values into class variables.
38
    &#34;&#34;&#34;
39

    
40
    def __init__(self, filepath):
41
        &#34;&#34;&#34;Constructor of the class.
42

    
43
        It instantiates the class, reads the configuration file,
44
        and parses all sections defined in it.
45

    
46
        :param filepath: path to the configuration file
47
        &#34;&#34;&#34;
48
        # Create a new ConfigParser
49
        self.config = RawConfigParser()
50

    
51
        # Try to parse the configuration file. If it fails,
52
        # terminate the application.
53
        if not self.config.read(filepath):
54
            print(f&#34;Failed to parse the config file {filepath}. Make sure you entered a valid path.&#34;)
55
            exit(1)
56

    
57
        # Parse the &#39;usb detector&#39; section.
58
        self._parse_usb_detector_section()
59

    
60
        # Parse the &#39;server&#39; section (API).
61
        self._parse_server_section()
62

    
63
        # Parse the &#39;logger&#39; section.
64
        self._parse_logger_section()
65

    
66
        # Parse the &#39;cache&#39; section.
67
        self._parse_cache_section()
68

    
69
    def _parse_usb_detector_section(self):
70
        &#34;&#34;&#34;Parse the &#39;usb detector&#39; section of the configuration file.
71
        &#34;&#34;&#34;
72
        section_name = &#34;usb_detector&#34;
73
        self.scan_period_seconds = float(self.config[section_name][&#34;scan_period_seconds&#34;])
74
        self.connected_devices_filename = self.config[section_name][&#34;connected_devices_filename&#34;]
75

    
76
    def _parse_server_section(self):
77
        &#34;&#34;&#34;Parse the &#39;server&#39; section of the configuration file.
78
        &#34;&#34;&#34;
79
        section_name = &#34;server&#34;
80
        self.server_url = self.config[section_name][&#34;url&#34;]
81
        self.server_port = self.config[section_name][&#34;port&#34;]
82
        self.server_endpoint = self.config[section_name][&#34;end_point&#34;]
83

    
84
    def _parse_logger_section(self):
85
        &#34;&#34;&#34;Parse the &#39;logger&#39; section of the configuration file.
86
        &#34;&#34;&#34;
87
        section_name = &#34;logger&#34;
88
        self.logger_config_file = self.config[section_name][&#34;config_file&#34;]
89

    
90
    def _parse_cache_section(self):
91
        &#34;&#34;&#34;Parse the &#39;cache&#39; section of the configuration file.
92
        &#34;&#34;&#34;
93
        section_name = &#34;cache&#34;
94
        self.cache_dir = self.config[section_name][&#34;directory&#34;]
95
        self.cache_max_entries = int(self.config[section_name][&#34;max_entries&#34;])
96
        self.cache_max_retries = int(self.config[section_name][&#34;max_retries&#34;])
97
        self.cache_retry_period_seconds = float(self.config[section_name][&#34;retry_period_seconds&#34;])</code></pre>
98
</details>
99
</section>
100
<section>
101
</section>
102
<section>
103
</section>
104
<section>
105
</section>
106
<section>
107
<h2 class="section-title" id="header-classes">Classes</h2>
108
<dl>
109
<dt id="config_manager.Config"><code class="flex name class">
110
<span>class <span class="ident">Config</span></span>
111
<span>(</span><span>filepath)</span>
112
</code></dt>
113
<dd>
114
<div class="desc"><p>This class holds the configuration values of the application.</p>
115
<p>It reads the configuration file passed in through the constructor
116
and stores the values into class variables.</p>
117
<p>Constructor of the class.</p>
118
<p>It instantiates the class, reads the configuration file,
119
and parses all sections defined in it.</p>
120
<p>:param filepath: path to the configuration file</p></div>
121
<details class="source">
122
<summary>
123
<span>Expand source code</span>
124
</summary>
125
<pre><code class="python">class Config:
126
    &#34;&#34;&#34;This class holds the configuration values of the application.
127

    
128
    It reads the configuration file passed in through the constructor
129
    and stores the values into class variables.
130
    &#34;&#34;&#34;
131

    
132
    def __init__(self, filepath):
133
        &#34;&#34;&#34;Constructor of the class.
134

    
135
        It instantiates the class, reads the configuration file,
136
        and parses all sections defined in it.
137

    
138
        :param filepath: path to the configuration file
139
        &#34;&#34;&#34;
140
        # Create a new ConfigParser
141
        self.config = RawConfigParser()
142

    
143
        # Try to parse the configuration file. If it fails,
144
        # terminate the application.
145
        if not self.config.read(filepath):
146
            print(f&#34;Failed to parse the config file {filepath}. Make sure you entered a valid path.&#34;)
147
            exit(1)
148

    
149
        # Parse the &#39;usb detector&#39; section.
150
        self._parse_usb_detector_section()
151

    
152
        # Parse the &#39;server&#39; section (API).
153
        self._parse_server_section()
154

    
155
        # Parse the &#39;logger&#39; section.
156
        self._parse_logger_section()
157

    
158
        # Parse the &#39;cache&#39; section.
159
        self._parse_cache_section()
160

    
161
    def _parse_usb_detector_section(self):
162
        &#34;&#34;&#34;Parse the &#39;usb detector&#39; section of the configuration file.
163
        &#34;&#34;&#34;
164
        section_name = &#34;usb_detector&#34;
165
        self.scan_period_seconds = float(self.config[section_name][&#34;scan_period_seconds&#34;])
166
        self.connected_devices_filename = self.config[section_name][&#34;connected_devices_filename&#34;]
167

    
168
    def _parse_server_section(self):
169
        &#34;&#34;&#34;Parse the &#39;server&#39; section of the configuration file.
170
        &#34;&#34;&#34;
171
        section_name = &#34;server&#34;
172
        self.server_url = self.config[section_name][&#34;url&#34;]
173
        self.server_port = self.config[section_name][&#34;port&#34;]
174
        self.server_endpoint = self.config[section_name][&#34;end_point&#34;]
175

    
176
    def _parse_logger_section(self):
177
        &#34;&#34;&#34;Parse the &#39;logger&#39; section of the configuration file.
178
        &#34;&#34;&#34;
179
        section_name = &#34;logger&#34;
180
        self.logger_config_file = self.config[section_name][&#34;config_file&#34;]
181

    
182
    def _parse_cache_section(self):
183
        &#34;&#34;&#34;Parse the &#39;cache&#39; section of the configuration file.
184
        &#34;&#34;&#34;
185
        section_name = &#34;cache&#34;
186
        self.cache_dir = self.config[section_name][&#34;directory&#34;]
187
        self.cache_max_entries = int(self.config[section_name][&#34;max_entries&#34;])
188
        self.cache_max_retries = int(self.config[section_name][&#34;max_retries&#34;])
189
        self.cache_retry_period_seconds = float(self.config[section_name][&#34;retry_period_seconds&#34;])</code></pre>
190
</details>
191
</dd>
192
</dl>
193
</section>
194
</article>
195
<nav id="sidebar">
196
<h1>Index</h1>
197
<div class="toc">
198
<ul></ul>
199
</div>
200
<ul id="index">
201
<li><h3><a href="#header-classes">Classes</a></h3>
202
<ul>
203
<li>
204
<h4><code><a title="config_manager.Config" href="#config_manager.Config">Config</a></code></h4>
205
</li>
206
</ul>
207
</li>
208
</ul>
209
</nav>
210
</main>
211
<footer id="footer">
212
<p>Generated by <a href="https://pdoc3.github.io/pdoc" title="pdoc: Python API documentation generator"><cite>pdoc</cite> 0.10.0</a>.</p>
213
</footer>
214
</body>
215
</html>
(1-1/2)