-
Notifications
You must be signed in to change notification settings - Fork 73
Expand file tree
/
Copy pathformencode.util.threadinglocal.html
More file actions
65 lines (64 loc) · 4.75 KB
/
formencode.util.threadinglocal.html
File metadata and controls
65 lines (64 loc) · 4.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<html>
<head>
<title>formencode.util.threadinglocal</title>
</head>
<body>
formencode.util.threadinglocal
<style>
.coverage pre {float: left; margin: 0px 1em; border: none;
padding: 0px; }
.num pre { margin: 0px }
.nocov, .nocov pre {background-color: #faa}
.cov, .cov pre {background-color: #cfc}
div.coverage div { clear: both; height: 1.1em}
</style>
<div class="stats">
Covered: 5 lines<br/>
Missed: 24 lines<br/>
Skipped 11 lines<br/>
Percent: 17 %<br/>
</div>
<div class="coverage">
<div class="skip"><span class="num"><pre> 1</pre></span><pre># (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)</pre></div>
<div class="skip"><span class="num"><pre> 2</pre></span><pre># Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php</pre></div>
<div class="skip"><span class="num"><pre> 3</pre></span><pre></pre></div>
<div class="cov"><span class="num"><pre> 4</pre></span><pre>try:</pre></div>
<div class="cov"><span class="num"><pre> 5</pre></span><pre> import threading</pre></div>
<div class="nocov"><span class="num"><pre> 6</pre></span><pre>except ImportError:</pre></div>
<div class="skip"><span class="num"><pre> 7</pre></span><pre> # No threads, so "thread local" means process-global</pre></div>
<div class="nocov"><span class="num"><pre> 8</pre></span><pre> class local(object):</pre></div>
<div class="nocov"><span class="num"><pre> 9</pre></span><pre> pass</pre></div>
<div class="cov"><span class="num"><pre>10</pre></span><pre>else:</pre></div>
<div class="cov"><span class="num"><pre>11</pre></span><pre> try:</pre></div>
<div class="cov"><span class="num"><pre>12</pre></span><pre> local = threading.local</pre></div>
<div class="nocov"><span class="num"><pre>13</pre></span><pre> except AttributeError:</pre></div>
<div class="skip"><span class="num"><pre>14</pre></span><pre> # Added in 2.4, but now we'll have to define it ourselves</pre></div>
<div class="nocov"><span class="num"><pre>15</pre></span><pre> import thread</pre></div>
<div class="nocov"><span class="num"><pre>16</pre></span><pre> class local(object):</pre></div>
<div class="skip"><span class="num"><pre>17</pre></span><pre></pre></div>
<div class="nocov"><span class="num"><pre>18</pre></span><pre> def __init__(self):</pre></div>
<div class="nocov"><span class="num"><pre>19</pre></span><pre> self.__dict__['__objs'] = {}</pre></div>
<div class="skip"><span class="num"><pre>20</pre></span><pre></pre></div>
<div class="nocov"><span class="num"><pre>21</pre></span><pre> def __getattr__(self, attr, g=thread.get_ident):</pre></div>
<div class="nocov"><span class="num"><pre>22</pre></span><pre> try:</pre></div>
<div class="nocov"><span class="num"><pre>23</pre></span><pre> return self.__dict__['__objs'][g()][attr]</pre></div>
<div class="nocov"><span class="num"><pre>24</pre></span><pre> except KeyError:</pre></div>
<div class="nocov"><span class="num"><pre>25</pre></span><pre> raise AttributeError(</pre></div>
<div class="nocov"><span class="num"><pre>26</pre></span><pre> "No variable %s defined for the thread %s"</pre></div>
<div class="nocov"><span class="num"><pre>27</pre></span><pre> % (attr, g()))</pre></div>
<div class="skip"><span class="num"><pre>28</pre></span><pre></pre></div>
<div class="nocov"><span class="num"><pre>29</pre></span><pre> def __setattr__(self, attr, value, g=thread.get_ident):</pre></div>
<div class="nocov"><span class="num"><pre>30</pre></span><pre> self.__dict__['__objs'].setdefault(g(), {})[attr] = value</pre></div>
<div class="skip"><span class="num"><pre>31</pre></span><pre></pre></div>
<div class="nocov"><span class="num"><pre>32</pre></span><pre> def __delattr__(self, attr, g=thread.get_ident):</pre></div>
<div class="nocov"><span class="num"><pre>33</pre></span><pre> try:</pre></div>
<div class="nocov"><span class="num"><pre>34</pre></span><pre> del self.__dict__['__objs'][g()][attr]</pre></div>
<div class="nocov"><span class="num"><pre>35</pre></span><pre> except KeyError:</pre></div>
<div class="nocov"><span class="num"><pre>36</pre></span><pre> raise AttributeError(</pre></div>
<div class="nocov"><span class="num"><pre>37</pre></span><pre> "No variable %s defined for thread %s"</pre></div>
<div class="nocov"><span class="num"><pre>38</pre></span><pre> % (attr, g()))</pre></div>
<div class="skip"><span class="num"><pre>39</pre></span><pre></pre></div>
<div class="skip"><span class="num"><pre>40</pre></span><pre></pre></div>
</div>
</body>
</html>