Dre4m Shell
Server IP : 85.214.239.14  /  Your IP : 18.191.116.61
Web Server : Apache/2.4.62 (Debian)
System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.18
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /proc/2/root/proc/2/cwd/proc/2/root/srv/modoboa/env/lib/python3.5/site-packages/gevent/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /proc/2/root/proc/2/cwd/proc/2/root/srv/modoboa/env/lib/python3.5/site-packages/gevent/local.html
<!DOCTYPE html>
<!-- Generated by Cython 0.29.2 -->
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Cython: local.py</title>
    <style type="text/css">
    
body.cython { font-family: courier; font-size: 12; }

.cython.tag  {  }
.cython.line { margin: 0em }
.cython.code { font-size: 9; color: #444444; display: none; margin: 0px 0px 0px 8px; border-left: 8px none; }

.cython.line .run { background-color: #B0FFB0; }
.cython.line .mis { background-color: #FFB0B0; }
.cython.code.run  { border-left: 8px solid #B0FFB0; }
.cython.code.mis  { border-left: 8px solid #FFB0B0; }

.cython.code .py_c_api  { color: red; }
.cython.code .py_macro_api  { color: #FF7000; }
.cython.code .pyx_c_api  { color: #FF3000; }
.cython.code .pyx_macro_api  { color: #FF7000; }
.cython.code .refnanny  { color: #FFA000; }
.cython.code .trace  { color: #FFA000; }
.cython.code .error_goto  { color: #FFA000; }

.cython.code .coerce  { color: #008000; border: 1px dotted #008000 }
.cython.code .py_attr { color: #FF0000; font-weight: bold; }
.cython.code .c_attr  { color: #0000FF; }
.cython.code .py_call { color: #FF0000; font-weight: bold; }
.cython.code .c_call  { color: #0000FF; }

.cython.score-0 {background-color: #FFFFff;}
.cython.score-1 {background-color: #FFFFe7;}
.cython.score-2 {background-color: #FFFFd4;}
.cython.score-3 {background-color: #FFFFc4;}
.cython.score-4 {background-color: #FFFFb6;}
.cython.score-5 {background-color: #FFFFaa;}
.cython.score-6 {background-color: #FFFF9f;}
.cython.score-7 {background-color: #FFFF96;}
.cython.score-8 {background-color: #FFFF8d;}
.cython.score-9 {background-color: #FFFF86;}
.cython.score-10 {background-color: #FFFF7f;}
.cython.score-11 {background-color: #FFFF79;}
.cython.score-12 {background-color: #FFFF73;}
.cython.score-13 {background-color: #FFFF6e;}
.cython.score-14 {background-color: #FFFF6a;}
.cython.score-15 {background-color: #FFFF66;}
.cython.score-16 {background-color: #FFFF62;}
.cython.score-17 {background-color: #FFFF5e;}
.cython.score-18 {background-color: #FFFF5b;}
.cython.score-19 {background-color: #FFFF57;}
.cython.score-20 {background-color: #FFFF55;}
.cython.score-21 {background-color: #FFFF52;}
.cython.score-22 {background-color: #FFFF4f;}
.cython.score-23 {background-color: #FFFF4d;}
.cython.score-24 {background-color: #FFFF4b;}
.cython.score-25 {background-color: #FFFF48;}
.cython.score-26 {background-color: #FFFF46;}
.cython.score-27 {background-color: #FFFF44;}
.cython.score-28 {background-color: #FFFF43;}
.cython.score-29 {background-color: #FFFF41;}
.cython.score-30 {background-color: #FFFF3f;}
.cython.score-31 {background-color: #FFFF3e;}
.cython.score-32 {background-color: #FFFF3c;}
.cython.score-33 {background-color: #FFFF3b;}
.cython.score-34 {background-color: #FFFF39;}
.cython.score-35 {background-color: #FFFF38;}
.cython.score-36 {background-color: #FFFF37;}
.cython.score-37 {background-color: #FFFF36;}
.cython.score-38 {background-color: #FFFF35;}
.cython.score-39 {background-color: #FFFF34;}
.cython.score-40 {background-color: #FFFF33;}
.cython.score-41 {background-color: #FFFF32;}
.cython.score-42 {background-color: #FFFF31;}
.cython.score-43 {background-color: #FFFF30;}
.cython.score-44 {background-color: #FFFF2f;}
.cython.score-45 {background-color: #FFFF2e;}
.cython.score-46 {background-color: #FFFF2d;}
.cython.score-47 {background-color: #FFFF2c;}
.cython.score-48 {background-color: #FFFF2b;}
.cython.score-49 {background-color: #FFFF2b;}
.cython.score-50 {background-color: #FFFF2a;}
.cython.score-51 {background-color: #FFFF29;}
.cython.score-52 {background-color: #FFFF29;}
.cython.score-53 {background-color: #FFFF28;}
.cython.score-54 {background-color: #FFFF27;}
.cython.score-55 {background-color: #FFFF27;}
.cython.score-56 {background-color: #FFFF26;}
.cython.score-57 {background-color: #FFFF26;}
.cython.score-58 {background-color: #FFFF25;}
.cython.score-59 {background-color: #FFFF24;}
.cython.score-60 {background-color: #FFFF24;}
.cython.score-61 {background-color: #FFFF23;}
.cython.score-62 {background-color: #FFFF23;}
.cython.score-63 {background-color: #FFFF22;}
.cython.score-64 {background-color: #FFFF22;}
.cython.score-65 {background-color: #FFFF22;}
.cython.score-66 {background-color: #FFFF21;}
.cython.score-67 {background-color: #FFFF21;}
.cython.score-68 {background-color: #FFFF20;}
.cython.score-69 {background-color: #FFFF20;}
.cython.score-70 {background-color: #FFFF1f;}
.cython.score-71 {background-color: #FFFF1f;}
.cython.score-72 {background-color: #FFFF1f;}
.cython.score-73 {background-color: #FFFF1e;}
.cython.score-74 {background-color: #FFFF1e;}
.cython.score-75 {background-color: #FFFF1e;}
.cython.score-76 {background-color: #FFFF1d;}
.cython.score-77 {background-color: #FFFF1d;}
.cython.score-78 {background-color: #FFFF1c;}
.cython.score-79 {background-color: #FFFF1c;}
.cython.score-80 {background-color: #FFFF1c;}
.cython.score-81 {background-color: #FFFF1c;}
.cython.score-82 {background-color: #FFFF1b;}
.cython.score-83 {background-color: #FFFF1b;}
.cython.score-84 {background-color: #FFFF1b;}
.cython.score-85 {background-color: #FFFF1a;}
.cython.score-86 {background-color: #FFFF1a;}
.cython.score-87 {background-color: #FFFF1a;}
.cython.score-88 {background-color: #FFFF1a;}
.cython.score-89 {background-color: #FFFF19;}
.cython.score-90 {background-color: #FFFF19;}
.cython.score-91 {background-color: #FFFF19;}
.cython.score-92 {background-color: #FFFF19;}
.cython.score-93 {background-color: #FFFF18;}
.cython.score-94 {background-color: #FFFF18;}
.cython.score-95 {background-color: #FFFF18;}
.cython.score-96 {background-color: #FFFF18;}
.cython.score-97 {background-color: #FFFF17;}
.cython.score-98 {background-color: #FFFF17;}
.cython.score-99 {background-color: #FFFF17;}
.cython.score-100 {background-color: #FFFF17;}
.cython.score-101 {background-color: #FFFF16;}
.cython.score-102 {background-color: #FFFF16;}
.cython.score-103 {background-color: #FFFF16;}
.cython.score-104 {background-color: #FFFF16;}
.cython.score-105 {background-color: #FFFF16;}
.cython.score-106 {background-color: #FFFF15;}
.cython.score-107 {background-color: #FFFF15;}
.cython.score-108 {background-color: #FFFF15;}
.cython.score-109 {background-color: #FFFF15;}
.cython.score-110 {background-color: #FFFF15;}
.cython.score-111 {background-color: #FFFF15;}
.cython.score-112 {background-color: #FFFF14;}
.cython.score-113 {background-color: #FFFF14;}
.cython.score-114 {background-color: #FFFF14;}
.cython.score-115 {background-color: #FFFF14;}
.cython.score-116 {background-color: #FFFF14;}
.cython.score-117 {background-color: #FFFF14;}
.cython.score-118 {background-color: #FFFF13;}
.cython.score-119 {background-color: #FFFF13;}
.cython.score-120 {background-color: #FFFF13;}
.cython.score-121 {background-color: #FFFF13;}
.cython.score-122 {background-color: #FFFF13;}
.cython.score-123 {background-color: #FFFF13;}
.cython.score-124 {background-color: #FFFF13;}
.cython.score-125 {background-color: #FFFF12;}
.cython.score-126 {background-color: #FFFF12;}
.cython.score-127 {background-color: #FFFF12;}
.cython.score-128 {background-color: #FFFF12;}
.cython.score-129 {background-color: #FFFF12;}
.cython.score-130 {background-color: #FFFF12;}
.cython.score-131 {background-color: #FFFF12;}
.cython.score-132 {background-color: #FFFF11;}
.cython.score-133 {background-color: #FFFF11;}
.cython.score-134 {background-color: #FFFF11;}
.cython.score-135 {background-color: #FFFF11;}
.cython.score-136 {background-color: #FFFF11;}
.cython.score-137 {background-color: #FFFF11;}
.cython.score-138 {background-color: #FFFF11;}
.cython.score-139 {background-color: #FFFF11;}
.cython.score-140 {background-color: #FFFF11;}
.cython.score-141 {background-color: #FFFF10;}
.cython.score-142 {background-color: #FFFF10;}
.cython.score-143 {background-color: #FFFF10;}
.cython.score-144 {background-color: #FFFF10;}
.cython.score-145 {background-color: #FFFF10;}
.cython.score-146 {background-color: #FFFF10;}
.cython.score-147 {background-color: #FFFF10;}
.cython.score-148 {background-color: #FFFF10;}
.cython.score-149 {background-color: #FFFF10;}
.cython.score-150 {background-color: #FFFF0f;}
.cython.score-151 {background-color: #FFFF0f;}
.cython.score-152 {background-color: #FFFF0f;}
.cython.score-153 {background-color: #FFFF0f;}
.cython.score-154 {background-color: #FFFF0f;}
.cython.score-155 {background-color: #FFFF0f;}
.cython.score-156 {background-color: #FFFF0f;}
.cython.score-157 {background-color: #FFFF0f;}
.cython.score-158 {background-color: #FFFF0f;}
.cython.score-159 {background-color: #FFFF0f;}
.cython.score-160 {background-color: #FFFF0f;}
.cython.score-161 {background-color: #FFFF0e;}
.cython.score-162 {background-color: #FFFF0e;}
.cython.score-163 {background-color: #FFFF0e;}
.cython.score-164 {background-color: #FFFF0e;}
.cython.score-165 {background-color: #FFFF0e;}
.cython.score-166 {background-color: #FFFF0e;}
.cython.score-167 {background-color: #FFFF0e;}
.cython.score-168 {background-color: #FFFF0e;}
.cython.score-169 {background-color: #FFFF0e;}
.cython.score-170 {background-color: #FFFF0e;}
.cython.score-171 {background-color: #FFFF0e;}
.cython.score-172 {background-color: #FFFF0e;}
.cython.score-173 {background-color: #FFFF0d;}
.cython.score-174 {background-color: #FFFF0d;}
.cython.score-175 {background-color: #FFFF0d;}
.cython.score-176 {background-color: #FFFF0d;}
.cython.score-177 {background-color: #FFFF0d;}
.cython.score-178 {background-color: #FFFF0d;}
.cython.score-179 {background-color: #FFFF0d;}
.cython.score-180 {background-color: #FFFF0d;}
.cython.score-181 {background-color: #FFFF0d;}
.cython.score-182 {background-color: #FFFF0d;}
.cython.score-183 {background-color: #FFFF0d;}
.cython.score-184 {background-color: #FFFF0d;}
.cython.score-185 {background-color: #FFFF0d;}
.cython.score-186 {background-color: #FFFF0d;}
.cython.score-187 {background-color: #FFFF0c;}
.cython.score-188 {background-color: #FFFF0c;}
.cython.score-189 {background-color: #FFFF0c;}
.cython.score-190 {background-color: #FFFF0c;}
.cython.score-191 {background-color: #FFFF0c;}
.cython.score-192 {background-color: #FFFF0c;}
.cython.score-193 {background-color: #FFFF0c;}
.cython.score-194 {background-color: #FFFF0c;}
.cython.score-195 {background-color: #FFFF0c;}
.cython.score-196 {background-color: #FFFF0c;}
.cython.score-197 {background-color: #FFFF0c;}
.cython.score-198 {background-color: #FFFF0c;}
.cython.score-199 {background-color: #FFFF0c;}
.cython.score-200 {background-color: #FFFF0c;}
.cython.score-201 {background-color: #FFFF0c;}
.cython.score-202 {background-color: #FFFF0c;}
.cython.score-203 {background-color: #FFFF0b;}
.cython.score-204 {background-color: #FFFF0b;}
.cython.score-205 {background-color: #FFFF0b;}
.cython.score-206 {background-color: #FFFF0b;}
.cython.score-207 {background-color: #FFFF0b;}
.cython.score-208 {background-color: #FFFF0b;}
.cython.score-209 {background-color: #FFFF0b;}
.cython.score-210 {background-color: #FFFF0b;}
.cython.score-211 {background-color: #FFFF0b;}
.cython.score-212 {background-color: #FFFF0b;}
.cython.score-213 {background-color: #FFFF0b;}
.cython.score-214 {background-color: #FFFF0b;}
.cython.score-215 {background-color: #FFFF0b;}
.cython.score-216 {background-color: #FFFF0b;}
.cython.score-217 {background-color: #FFFF0b;}
.cython.score-218 {background-color: #FFFF0b;}
.cython.score-219 {background-color: #FFFF0b;}
.cython.score-220 {background-color: #FFFF0b;}
.cython.score-221 {background-color: #FFFF0b;}
.cython.score-222 {background-color: #FFFF0a;}
.cython.score-223 {background-color: #FFFF0a;}
.cython.score-224 {background-color: #FFFF0a;}
.cython.score-225 {background-color: #FFFF0a;}
.cython.score-226 {background-color: #FFFF0a;}
.cython.score-227 {background-color: #FFFF0a;}
.cython.score-228 {background-color: #FFFF0a;}
.cython.score-229 {background-color: #FFFF0a;}
.cython.score-230 {background-color: #FFFF0a;}
.cython.score-231 {background-color: #FFFF0a;}
.cython.score-232 {background-color: #FFFF0a;}
.cython.score-233 {background-color: #FFFF0a;}
.cython.score-234 {background-color: #FFFF0a;}
.cython.score-235 {background-color: #FFFF0a;}
.cython.score-236 {background-color: #FFFF0a;}
.cython.score-237 {background-color: #FFFF0a;}
.cython.score-238 {background-color: #FFFF0a;}
.cython.score-239 {background-color: #FFFF0a;}
.cython.score-240 {background-color: #FFFF0a;}
.cython.score-241 {background-color: #FFFF0a;}
.cython.score-242 {background-color: #FFFF0a;}
.cython.score-243 {background-color: #FFFF0a;}
.cython.score-244 {background-color: #FFFF0a;}
.cython.score-245 {background-color: #FFFF0a;}
.cython.score-246 {background-color: #FFFF09;}
.cython.score-247 {background-color: #FFFF09;}
.cython.score-248 {background-color: #FFFF09;}
.cython.score-249 {background-color: #FFFF09;}
.cython.score-250 {background-color: #FFFF09;}
.cython.score-251 {background-color: #FFFF09;}
.cython.score-252 {background-color: #FFFF09;}
.cython.score-253 {background-color: #FFFF09;}
.cython.score-254 {background-color: #FFFF09;}
    </style>
</head>
<body class="cython">
<p><span style="border-bottom: solid 1px grey;">Generated by Cython 0.29.2</span></p>
<p>
    <span style="background-color: #FFFF00">Yellow lines</span> hint at Python interaction.<br />
    Click on a line that starts with a "<code>+</code>" to see the C code that Cython generated for it.
</p>
<p>Raw output: <a href="local.c">local.c</a></p>
<div class="cython"><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">001</span>: # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False</pre>
<pre class='cython code score-8 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_test, __pyx_t_1) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 1, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">002</span>: """</pre>
<pre class="cython line score-0">&#xA0;<span class="">003</span>: Greenlet-local objects.</pre>
<pre class="cython line score-0">&#xA0;<span class="">004</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">005</span>: This module is based on `_threading_local.py`__ from the standard</pre>
<pre class="cython line score-0">&#xA0;<span class="">006</span>: library of Python 3.4.</pre>
<pre class="cython line score-0">&#xA0;<span class="">007</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">008</span>: __ https://github.com/python/cpython/blob/3.4/Lib/_threading_local.py</pre>
<pre class="cython line score-0">&#xA0;<span class="">009</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">010</span>: Greenlet-local objects support the management of greenlet-local data.</pre>
<pre class="cython line score-0">&#xA0;<span class="">011</span>: If you have data that you want to be local to a greenlet, simply create</pre>
<pre class="cython line score-0">&#xA0;<span class="">012</span>: a greenlet-local object and use its attributes:</pre>
<pre class="cython line score-0">&#xA0;<span class="">013</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">014</span>:   &gt;&gt;&gt; mydata = local()</pre>
<pre class="cython line score-0">&#xA0;<span class="">015</span>:   &gt;&gt;&gt; mydata.number = 42</pre>
<pre class="cython line score-0">&#xA0;<span class="">016</span>:   &gt;&gt;&gt; mydata.number</pre>
<pre class="cython line score-0">&#xA0;<span class="">017</span>:   42</pre>
<pre class="cython line score-0">&#xA0;<span class="">018</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">019</span>: You can also access the local-object's dictionary:</pre>
<pre class="cython line score-0">&#xA0;<span class="">020</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">021</span>:   &gt;&gt;&gt; mydata.__dict__</pre>
<pre class="cython line score-0">&#xA0;<span class="">022</span>:   {'number': 42}</pre>
<pre class="cython line score-0">&#xA0;<span class="">023</span>:   &gt;&gt;&gt; mydata.__dict__.setdefault('widgets', [])</pre>
<pre class="cython line score-0">&#xA0;<span class="">024</span>:   []</pre>
<pre class="cython line score-0">&#xA0;<span class="">025</span>:   &gt;&gt;&gt; mydata.widgets</pre>
<pre class="cython line score-0">&#xA0;<span class="">026</span>:   []</pre>
<pre class="cython line score-0">&#xA0;<span class="">027</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">028</span>: What's important about greenlet-local objects is that their data are</pre>
<pre class="cython line score-0">&#xA0;<span class="">029</span>: local to a greenlet. If we access the data in a different greenlet:</pre>
<pre class="cython line score-0">&#xA0;<span class="">030</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">031</span>:   &gt;&gt;&gt; log = []</pre>
<pre class="cython line score-0">&#xA0;<span class="">032</span>:   &gt;&gt;&gt; def f():</pre>
<pre class="cython line score-0">&#xA0;<span class="">033</span>:   ...     items = list(mydata.__dict__.items())</pre>
<pre class="cython line score-0">&#xA0;<span class="">034</span>:   ...     items.sort()</pre>
<pre class="cython line score-0">&#xA0;<span class="">035</span>:   ...     log.append(items)</pre>
<pre class="cython line score-0">&#xA0;<span class="">036</span>:   ...     mydata.number = 11</pre>
<pre class="cython line score-0">&#xA0;<span class="">037</span>:   ...     log.append(mydata.number)</pre>
<pre class="cython line score-0">&#xA0;<span class="">038</span>:   &gt;&gt;&gt; greenlet = gevent.spawn(f)</pre>
<pre class="cython line score-0">&#xA0;<span class="">039</span>:   &gt;&gt;&gt; greenlet.join()</pre>
<pre class="cython line score-0">&#xA0;<span class="">040</span>:   &gt;&gt;&gt; log</pre>
<pre class="cython line score-0">&#xA0;<span class="">041</span>:   [[], 11]</pre>
<pre class="cython line score-0">&#xA0;<span class="">042</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">043</span>: we get different data.  Furthermore, changes made in the other greenlet</pre>
<pre class="cython line score-0">&#xA0;<span class="">044</span>: don't affect data seen in this greenlet:</pre>
<pre class="cython line score-0">&#xA0;<span class="">045</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">046</span>:   &gt;&gt;&gt; mydata.number</pre>
<pre class="cython line score-0">&#xA0;<span class="">047</span>:   42</pre>
<pre class="cython line score-0">&#xA0;<span class="">048</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">049</span>: Of course, values you get from a local object, including a __dict__</pre>
<pre class="cython line score-0">&#xA0;<span class="">050</span>: attribute, are for whatever greenlet was current at the time the</pre>
<pre class="cython line score-0">&#xA0;<span class="">051</span>: attribute was read.  For that reason, you generally don't want to save</pre>
<pre class="cython line score-0">&#xA0;<span class="">052</span>: these values across greenlets, as they apply only to the greenlet they</pre>
<pre class="cython line score-0">&#xA0;<span class="">053</span>: came from.</pre>
<pre class="cython line score-0">&#xA0;<span class="">054</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">055</span>: You can create custom local objects by subclassing the local class:</pre>
<pre class="cython line score-0">&#xA0;<span class="">056</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">057</span>:   &gt;&gt;&gt; class MyLocal(local):</pre>
<pre class="cython line score-0">&#xA0;<span class="">058</span>:   ...     number = 2</pre>
<pre class="cython line score-0">&#xA0;<span class="">059</span>:   ...     initialized = False</pre>
<pre class="cython line score-0">&#xA0;<span class="">060</span>:   ...     def __init__(self, **kw):</pre>
<pre class="cython line score-0">&#xA0;<span class="">061</span>:   ...         if self.initialized:</pre>
<pre class="cython line score-0">&#xA0;<span class="">062</span>:   ...             raise SystemError('__init__ called too many times')</pre>
<pre class="cython line score-0">&#xA0;<span class="">063</span>:   ...         self.initialized = True</pre>
<pre class="cython line score-0">&#xA0;<span class="">064</span>:   ...         self.__dict__.update(kw)</pre>
<pre class="cython line score-0">&#xA0;<span class="">065</span>:   ...     def squared(self):</pre>
<pre class="cython line score-0">&#xA0;<span class="">066</span>:   ...         return self.number ** 2</pre>
<pre class="cython line score-0">&#xA0;<span class="">067</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">068</span>: This can be useful to support default values, methods and</pre>
<pre class="cython line score-0">&#xA0;<span class="">069</span>: initialization.  Note that if you define an __init__ method, it will be</pre>
<pre class="cython line score-0">&#xA0;<span class="">070</span>: called each time the local object is used in a separate greenlet.  This</pre>
<pre class="cython line score-0">&#xA0;<span class="">071</span>: is necessary to initialize each greenlet's dictionary.</pre>
<pre class="cython line score-0">&#xA0;<span class="">072</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">073</span>: Now if we create a local object:</pre>
<pre class="cython line score-0">&#xA0;<span class="">074</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">075</span>:   &gt;&gt;&gt; mydata = MyLocal(color='red')</pre>
<pre class="cython line score-0">&#xA0;<span class="">076</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">077</span>: Now we have a default number:</pre>
<pre class="cython line score-0">&#xA0;<span class="">078</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">079</span>:   &gt;&gt;&gt; mydata.number</pre>
<pre class="cython line score-0">&#xA0;<span class="">080</span>:   2</pre>
<pre class="cython line score-0">&#xA0;<span class="">081</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">082</span>: an initial color:</pre>
<pre class="cython line score-0">&#xA0;<span class="">083</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">084</span>:   &gt;&gt;&gt; mydata.color</pre>
<pre class="cython line score-0">&#xA0;<span class="">085</span>:   'red'</pre>
<pre class="cython line score-0">&#xA0;<span class="">086</span>:   &gt;&gt;&gt; del mydata.color</pre>
<pre class="cython line score-0">&#xA0;<span class="">087</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">088</span>: And a method that operates on the data:</pre>
<pre class="cython line score-0">&#xA0;<span class="">089</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">090</span>:   &gt;&gt;&gt; mydata.squared()</pre>
<pre class="cython line score-0">&#xA0;<span class="">091</span>:   4</pre>
<pre class="cython line score-0">&#xA0;<span class="">092</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">093</span>: As before, we can access the data in a separate greenlet:</pre>
<pre class="cython line score-0">&#xA0;<span class="">094</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">095</span>:   &gt;&gt;&gt; log = []</pre>
<pre class="cython line score-0">&#xA0;<span class="">096</span>:   &gt;&gt;&gt; greenlet = gevent.spawn(f)</pre>
<pre class="cython line score-0">&#xA0;<span class="">097</span>:   &gt;&gt;&gt; greenlet.join()</pre>
<pre class="cython line score-0">&#xA0;<span class="">098</span>:   &gt;&gt;&gt; log</pre>
<pre class="cython line score-0">&#xA0;<span class="">099</span>:   [[('color', 'red'), ('initialized', True)], 11]</pre>
<pre class="cython line score-0">&#xA0;<span class="">100</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">101</span>: without affecting this greenlet's data:</pre>
<pre class="cython line score-0">&#xA0;<span class="">102</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">103</span>:   &gt;&gt;&gt; mydata.number</pre>
<pre class="cython line score-0">&#xA0;<span class="">104</span>:   2</pre>
<pre class="cython line score-0">&#xA0;<span class="">105</span>:   &gt;&gt;&gt; mydata.color</pre>
<pre class="cython line score-0">&#xA0;<span class="">106</span>:   Traceback (most recent call last):</pre>
<pre class="cython line score-0">&#xA0;<span class="">107</span>:   ...</pre>
<pre class="cython line score-0">&#xA0;<span class="">108</span>:   AttributeError: 'MyLocal' object has no attribute 'color'</pre>
<pre class="cython line score-0">&#xA0;<span class="">109</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">110</span>: Note that subclasses can define slots, but they are not greenlet</pre>
<pre class="cython line score-0">&#xA0;<span class="">111</span>: local. They are shared across greenlets::</pre>
<pre class="cython line score-0">&#xA0;<span class="">112</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">113</span>:   &gt;&gt;&gt; class MyLocal(local):</pre>
<pre class="cython line score-0">&#xA0;<span class="">114</span>:   ...     __slots__ = 'number'</pre>
<pre class="cython line score-0">&#xA0;<span class="">115</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">116</span>:   &gt;&gt;&gt; mydata = MyLocal()</pre>
<pre class="cython line score-0">&#xA0;<span class="">117</span>:   &gt;&gt;&gt; mydata.number = 42</pre>
<pre class="cython line score-0">&#xA0;<span class="">118</span>:   &gt;&gt;&gt; mydata.color = 'red'</pre>
<pre class="cython line score-0">&#xA0;<span class="">119</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">120</span>: So, the separate greenlet:</pre>
<pre class="cython line score-0">&#xA0;<span class="">121</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">122</span>:   &gt;&gt;&gt; greenlet = gevent.spawn(f)</pre>
<pre class="cython line score-0">&#xA0;<span class="">123</span>:   &gt;&gt;&gt; greenlet.join()</pre>
<pre class="cython line score-0">&#xA0;<span class="">124</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">125</span>: affects what we see:</pre>
<pre class="cython line score-0">&#xA0;<span class="">126</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">127</span>:   &gt;&gt;&gt; mydata.number</pre>
<pre class="cython line score-0">&#xA0;<span class="">128</span>:   11</pre>
<pre class="cython line score-0">&#xA0;<span class="">129</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">130</span>: &gt;&gt;&gt; del mydata</pre>
<pre class="cython line score-0">&#xA0;<span class="">131</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">132</span>: .. versionchanged:: 1.1a2</pre>
<pre class="cython line score-0">&#xA0;<span class="">133</span>:    Update the implementation to match Python 3.4 instead of Python 2.5.</pre>
<pre class="cython line score-0">&#xA0;<span class="">134</span>:    This results in locals being eligible for garbage collection as soon</pre>
<pre class="cython line score-0">&#xA0;<span class="">135</span>:    as their greenlet exits.</pre>
<pre class="cython line score-0">&#xA0;<span class="">136</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">137</span>: .. versionchanged:: 1.2.3</pre>
<pre class="cython line score-0">&#xA0;<span class="">138</span>:    Use a weak-reference to clear the greenlet link we establish in case</pre>
<pre class="cython line score-0">&#xA0;<span class="">139</span>:    the local object dies before the greenlet does.</pre>
<pre class="cython line score-0">&#xA0;<span class="">140</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">141</span>: .. versionchanged:: 1.3a1</pre>
<pre class="cython line score-0">&#xA0;<span class="">142</span>:    Implement the methods for attribute access directly, handling</pre>
<pre class="cython line score-0">&#xA0;<span class="">143</span>:    descriptors directly here. This allows removing the use of a lock</pre>
<pre class="cython line score-0">&#xA0;<span class="">144</span>:    and facilitates greatly improved performance.</pre>
<pre class="cython line score-0">&#xA0;<span class="">145</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">146</span>: .. versionchanged:: 1.3a1</pre>
<pre class="cython line score-0">&#xA0;<span class="">147</span>:    The ``__init__`` method of subclasses of ``local`` is no longer</pre>
<pre class="cython line score-0">&#xA0;<span class="">148</span>:    called with a lock held. CPython does not use such a lock in its</pre>
<pre class="cython line score-0">&#xA0;<span class="">149</span>:    native implementation. This could potentially show as a difference</pre>
<pre class="cython line score-0">&#xA0;<span class="">150</span>:    if code that uses multiple dependent attributes in ``__slots__``</pre>
<pre class="cython line score-0">&#xA0;<span class="">151</span>:    (which are shared across all greenlets) switches during ``__init__``.</pre>
<pre class="cython line score-0">&#xA0;<span class="">152</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">153</span>: """</pre>
<pre class="cython line score-0">&#xA0;<span class="">154</span>: from __future__ import print_function</pre>
<pre class="cython line score-0">&#xA0;<span class="">155</span>: </pre>
<pre class="cython line score-16" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">156</span>: from copy import copy</pre>
<pre class='cython code score-16 '>  __pyx_t_1 = <span class='py_c_api'>PyList_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_copy_2);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_copy_2);
  <span class='py_macro_api'>PyList_SET_ITEM</span>(__pyx_t_1, 0, __pyx_n_s_copy_2);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_Import</span>(__pyx_n_s_copy_2, __pyx_t_1, 0);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 156, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_ImportFrom</span>(__pyx_t_2, __pyx_n_s_copy_2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_XGOTREF</span>(__pyx_v_6gevent_6_local_copy);
  <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_v_6gevent_6_local_copy, __pyx_t_1);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-16" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">157</span>: from weakref import ref</pre>
<pre class='cython code score-16 '>  __pyx_t_2 = <span class='py_c_api'>PyList_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_ref);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_ref);
  <span class='py_macro_api'>PyList_SET_ITEM</span>(__pyx_t_2, 0, __pyx_n_s_ref);
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Import</span>(__pyx_n_s_weakref, __pyx_t_2, 0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_ImportFrom</span>(__pyx_t_1, __pyx_n_s_ref);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2);
  <span class='refnanny'>__Pyx_XGOTREF</span>(__pyx_v_6gevent_6_local_ref);
  <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_v_6gevent_6_local_ref, __pyx_t_2);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">158</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">159</span>: </pre>
<pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">160</span>: locals()['getcurrent'] = __import__('greenlet').getcurrent</pre>
<pre class='cython code score-19 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin___import__, __pyx_tuple_, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_1, __pyx_n_s_getcurrent);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Globals</span>();<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (unlikely(<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_1, __pyx_n_s_getcurrent, __pyx_t_2) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 160, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple_ = <span class='py_c_api'>PyTuple_Pack</span>(1, __pyx_n_s_greenlet);<span class='error_goto'> if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 160, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple_);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple_);
</pre><pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">161</span>: locals()['greenlet_init'] = lambda: None</pre>
<pre class='cython code score-13 '>/* Python wrapper */
static PyObject *__pyx_pw_6gevent_6_local_4lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_6gevent_6_local_4lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_6_local_4lambda, METH_NOARGS, 0};
static PyObject *__pyx_pw_6gevent_6_local_4lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("lambda (wrapper)", 0);
  __pyx_r = __pyx_lambda_funcdef_6gevent_6_local_lambda(__pyx_self);

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_6gevent_6_local_lambda(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("lambda", 0);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  __pyx_r = Py_None; <span class='pyx_macro_api'>__Pyx_INCREF</span>(Py_None);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_CyFunction_NewEx</span>(&amp;__pyx_mdef_6gevent_6_local_4lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent__local, __pyx_d, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Globals</span>();<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (unlikely(<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_1, __pyx_n_s_greenlet_init, __pyx_t_2) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 161, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">162</span>: </pre>
<pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">163</span>: __all__ = [</pre>
<pre class='cython code score-13 '>  __pyx_t_2 = <span class='py_c_api'>PyList_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_local);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_local);
  <span class='py_macro_api'>PyList_SET_ITEM</span>(__pyx_t_2, 0, __pyx_n_s_local);
  if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_all, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 163, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">164</span>:     "local",</pre>
<pre class="cython line score-0">&#xA0;<span class="">165</span>: ]</pre>
<pre class="cython line score-0">&#xA0;<span class="">166</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">167</span>: # The key used in the Thread objects' attribute dicts.</pre>
<pre class="cython line score-0">&#xA0;<span class="">168</span>: # We keep it a string for speed but make it unlikely to clash with</pre>
<pre class="cython line score-0">&#xA0;<span class="">169</span>: # a "real" attribute.</pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">170</span>: key_prefix = '_gevent_local_localimpl_'</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_gevent_local_localimpl);
  <span class='refnanny'>__Pyx_XGOTREF</span>(__pyx_v_6gevent_6_local_key_prefix);
  <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_v_6gevent_6_local_key_prefix, __pyx_n_s_gevent_local_localimpl);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_gevent_local_localimpl);
</pre><pre class="cython line score-0">&#xA0;<span class="">171</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">172</span>: # The overall structure is as follows:</pre>
<pre class="cython line score-0">&#xA0;<span class="">173</span>: # For each local() object:</pre>
<pre class="cython line score-0">&#xA0;<span class="">174</span>: # greenlet.__dict__[key_prefix + str(id(local))]</pre>
<pre class="cython line score-0">&#xA0;<span class="">175</span>: #    =&gt; _localimpl.dicts[id(greenlet)] =&gt; (ref(greenlet), {})</pre>
<pre class="cython line score-0">&#xA0;<span class="">176</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">177</span>: # That final tuple is actually a localimpl_dict_entry object.</pre>
<pre class="cython line score-0">&#xA0;<span class="">178</span>: </pre>
<pre class="cython line score-34" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">179</span>: def all_local_dicts_for_greenlet(greenlet):</pre>
<pre class='cython code score-34 '>static PyObject *__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet(PyObject *__pyx_self, PyObject *__pyx_v_greenlet); /*proto*/
static PyObject *__pyx_f_6gevent_6_local_all_local_dicts_for_greenlet(PyGreenlet *__pyx_v_greenlet, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_k = 0;
  PyObject *__pyx_v_greenlet_dict = 0;
  struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_local_impl = 0;
  PyObject *__pyx_v_result = 0;
  struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0;
  PyObject *__pyx_v_id_greenlet = NULL;
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("all_local_dicts_for_greenlet", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.all_local_dicts_for_greenlet", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_k);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_greenlet_dict);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_local_impl);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_result);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_entry);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_id_greenlet);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_v);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet(PyObject *__pyx_self, PyObject *__pyx_v_greenlet); /*proto*/
static char __pyx_doc_6gevent_6_local_all_local_dicts_for_greenlet[] = "all_local_dicts_for_greenlet(greenlet greenlet)\n\n    Internal debug helper for getting the local values associated\n    with a greenlet. This is subject to change or removal at any time.\n\n    :return: A list of ((type, id), {}) pairs, where the first element\n      is the type and id of the local object and the second object is its\n      instance dictionary, as seen from this greenlet.\n\n    .. versionadded:: 1.3a2\n    ";
static PyMethodDef __pyx_mdef_6gevent_6_local_1all_local_dicts_for_greenlet = {"all_local_dicts_for_greenlet", (PyCFunction)__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet, METH_O, __pyx_doc_6gevent_6_local_all_local_dicts_for_greenlet};
static PyObject *__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet(PyObject *__pyx_self, PyObject *__pyx_v_greenlet) {
  PyObject *__pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("all_local_dicts_for_greenlet (wrapper)", 0);
  if (unlikely(!<span class='pyx_c_api'>__Pyx_ArgTypeTest</span>(((PyObject *)__pyx_v_greenlet), __pyx_ptype_6gevent_6_local_greenlet, 1, "greenlet", 0))) <span class='error_goto'>__PYX_ERR(0, 179, __pyx_L1_error)</span>
  __pyx_r = __pyx_pf_6gevent_6_local_all_local_dicts_for_greenlet(__pyx_self, ((PyGreenlet *)__pyx_v_greenlet));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static PyObject *__pyx_pf_6gevent_6_local_all_local_dicts_for_greenlet(CYTHON_UNUSED PyObject *__pyx_self, PyGreenlet *__pyx_v_greenlet) {
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("all_local_dicts_for_greenlet", 0);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  __pyx_t_1 = __pyx_f_6gevent_6_local_all_local_dicts_for_greenlet(__pyx_v_greenlet, 0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.all_local_dicts_for_greenlet", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
/* … */
  __pyx_tuple__2 = <span class='py_c_api'>PyTuple_Pack</span>(1, __pyx_n_s_greenlet);<span class='error_goto'> if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 179, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__2);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__2);
/* … */
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_CyFunction_NewEx</span>(&amp;__pyx_mdef_6gevent_6_local_1all_local_dicts_for_greenlet, 0, __pyx_n_s_all_local_dicts_for_greenlet, NULL, __pyx_n_s_gevent__local, __pyx_d, ((PyObject *)__pyx_codeobj__3));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_all_local_dicts_for_greenlet, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 179, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__3 = (PyObject*)<span class='pyx_c_api'>__Pyx_PyCode_New</span>(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_local_py, __pyx_n_s_all_local_dicts_for_greenlet, 179, __pyx_empty_bytes);<span class='error_goto'> if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 179, __pyx_L1_error)</span>
</pre><pre class="cython line score-0">&#xA0;<span class="">180</span>:     """</pre>
<pre class="cython line score-0">&#xA0;<span class="">181</span>:     Internal debug helper for getting the local values associated</pre>
<pre class="cython line score-0">&#xA0;<span class="">182</span>:     with a greenlet. This is subject to change or removal at any time.</pre>
<pre class="cython line score-0">&#xA0;<span class="">183</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">184</span>:     :return: A list of ((type, id), {}) pairs, where the first element</pre>
<pre class="cython line score-0">&#xA0;<span class="">185</span>:       is the type and id of the local object and the second object is its</pre>
<pre class="cython line score-0">&#xA0;<span class="">186</span>:       instance dictionary, as seen from this greenlet.</pre>
<pre class="cython line score-0">&#xA0;<span class="">187</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">188</span>:     .. versionadded:: 1.3a2</pre>
<pre class="cython line score-0">&#xA0;<span class="">189</span>:     """</pre>
<pre class="cython line score-0">&#xA0;<span class="">190</span>: </pre>
<pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">191</span>:     result = []</pre>
<pre class='cython code score-5 '>  __pyx_t_1 = <span class='py_c_api'>PyList_New</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_result = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">192</span>:     id_greenlet = id(greenlet)</pre>
<pre class='cython code score-2 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_id, ((PyObject *)__pyx_v_greenlet));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_id_greenlet = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">193</span>:     greenlet_dict = greenlet.__dict__</pre>
<pre class='cython code score-12 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_greenlet), __pyx_n_s_dict);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (!(likely(<span class='py_c_api'>PyDict_CheckExact</span>(__pyx_t_1))||((__pyx_t_1) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 193, __pyx_L1_error)</span>
  __pyx_v_greenlet_dict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-18" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">194</span>:     for k, v in greenlet_dict.items():</pre>
<pre class='cython code score-18 '>  __pyx_t_2 = 0;
  if (unlikely(__pyx_v_greenlet_dict == Py_None)) {
    <span class='py_c_api'>PyErr_Format</span>(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    <span class='error_goto'>__PYX_ERR(0, 194, __pyx_L1_error)</span>
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_greenlet_dict, 1, __pyx_n_s_items, (&amp;__pyx_t_3), (&amp;__pyx_t_4));<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &amp;__pyx_t_2, &amp;__pyx_t_5, &amp;__pyx_t_6, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) <span class='error_goto'>__PYX_ERR(0, 194, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
    if (!(likely(<span class='py_c_api'>PyString_CheckExact</span>(__pyx_t_5))||((__pyx_t_5) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_5)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 194, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_k, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_v, __pyx_t_6);
    __pyx_t_6 = 0;
</pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">195</span>:         if not k.startswith(key_prefix):</pre>
<pre class='cython code score-7 '>    if (unlikely(__pyx_v_k == Py_None)) {
      <span class='py_c_api'>PyErr_Format</span>(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "startswith");
      <span class='error_goto'>__PYX_ERR(0, 195, __pyx_L1_error)</span>
    }
    __pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyStr_Tailmatch</span>(__pyx_v_k, __pyx_v_6gevent_6_local_key_prefix, 0, PY_SSIZE_T_MAX, -1);<span class='error_goto'> if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 195, __pyx_L1_error)</span>
    __pyx_t_9 = ((!(__pyx_t_8 != 0)) != 0);
    if (__pyx_t_9) {
/* … */
    }
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">196</span>:             continue</pre>
<pre class='cython code score-0 '>      goto __pyx_L3_continue;
</pre><pre class="cython line score-20" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">197</span>:         local_impl = v()</pre>
<pre class='cython code score-20 '>    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_v);
    __pyx_t_5 = __pyx_v_v; __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_5))) {
      __pyx_t_10 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_5);
      if (likely(__pyx_t_10)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_5);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_10);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_5, function);
      }
    }
    __pyx_t_6 = (__pyx_t_10) ? <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_5, __pyx_t_10) : <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_t_5);
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_6)) <span class='error_goto'>__PYX_ERR(0, 197, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(((__pyx_t_6) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_t_6, __pyx_ptype_6gevent_6_local__localimpl))))) <span class='error_goto'>__PYX_ERR(0, 197, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_local_impl, ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_6));
    __pyx_t_6 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">198</span>:         if local_impl is None:</pre>
<pre class='cython code score-0 '>    __pyx_t_9 = (((PyObject *)__pyx_v_local_impl) == Py_None);
    __pyx_t_8 = (__pyx_t_9 != 0);
    if (__pyx_t_8) {
/* … */
    }
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">199</span>:             continue</pre>
<pre class='cython code score-0 '>      goto __pyx_L3_continue;
</pre><pre class="cython line score-10" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">200</span>:         entry = local_impl.dicts.get(id_greenlet)</pre>
<pre class='cython code score-10 '>    if (unlikely(__pyx_v_local_impl-&gt;dicts == Py_None)) {
      <span class='py_c_api'>PyErr_Format</span>(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
      <span class='error_goto'>__PYX_ERR(0, 200, __pyx_L1_error)</span>
    }
    __pyx_t_6 = <span class='pyx_c_api'>__Pyx_PyDict_GetItemDefault</span>(__pyx_v_local_impl-&gt;dicts, __pyx_v_id_greenlet, Py_None);<span class='error_goto'> if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 200, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
    if (!(likely(((__pyx_t_6) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_t_6, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) <span class='error_goto'>__PYX_ERR(0, 200, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_entry, ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_6));
    __pyx_t_6 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">201</span>:         if entry is None:</pre>
<pre class='cython code score-0 '>    __pyx_t_8 = (((PyObject *)__pyx_v_entry) == Py_None);
    __pyx_t_9 = (__pyx_t_8 != 0);
    if (__pyx_t_9) {
/* … */
    }
</pre><pre class="cython line score-0">&#xA0;<span class="">202</span>:             # Not yet used in this greenlet.</pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">203</span>:             continue</pre>
<pre class='cython code score-0 '>      goto __pyx_L3_continue;
</pre><pre class="cython line score-23" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">204</span>:         assert entry.wrgreenlet() is greenlet</pre>
<pre class='cython code score-23 '>    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_entry-&gt;wrgreenlet);
      __pyx_t_5 = __pyx_v_entry-&gt;wrgreenlet; __pyx_t_10 = NULL;
      if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_5))) {
        __pyx_t_10 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_5);
        if (likely(__pyx_t_10)) {
          PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_5);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_10);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
          <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_5, function);
        }
      }
      __pyx_t_6 = (__pyx_t_10) ? <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_5, __pyx_t_10) : <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_t_5);
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_6)) <span class='error_goto'>__PYX_ERR(0, 204, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_9 = (__pyx_t_6 == ((PyObject *)__pyx_v_greenlet));
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!(__pyx_t_9 != 0))) {
        <span class='py_c_api'>PyErr_SetNone</span>(PyExc_AssertionError);
        <span class='error_goto'>__PYX_ERR(0, 204, __pyx_L1_error)</span>
      }
    }
    #endif
</pre><pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">205</span>:         result.append((local_impl.localtypeid, entry.localdict))</pre>
<pre class='cython code score-13 '>    __pyx_t_6 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 205, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_local_impl-&gt;localtypeid);
    <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_local_impl-&gt;localtypeid);
    <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 0, __pyx_v_local_impl-&gt;localtypeid);
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_entry-&gt;localdict);
    <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_entry-&gt;localdict);
    <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 1, __pyx_v_entry-&gt;localdict);
    __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyList_Append</span>(__pyx_v_result, __pyx_t_6);<span class='error_goto'> if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 205, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_L3_continue:;
  }
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">206</span>: </pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">207</span>:     return result</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">208</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">209</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">210</span>: class _wrefdict(dict):</pre>
<pre class="cython line score-0">&#xA0;<span class="">211</span>:     """A dict that can be weak referenced"""</pre>
<pre class="cython line score-0">&#xA0;<span class="">212</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">213</span>: class _greenlet_deleted(object):</pre>
<pre class="cython line score-0">&#xA0;<span class="">214</span>:     """</pre>
<pre class="cython line score-0">&#xA0;<span class="">215</span>:     A weakref callback for when the greenlet</pre>
<pre class="cython line score-0">&#xA0;<span class="">216</span>:     is deleted.</pre>
<pre class="cython line score-0">&#xA0;<span class="">217</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">218</span>:     If the greenlet is a `gevent.greenlet.Greenlet` and</pre>
<pre class="cython line score-0">&#xA0;<span class="">219</span>:     supplies ``rawlink``, that will be used instead of a</pre>
<pre class="cython line score-0">&#xA0;<span class="">220</span>:     weakref.</pre>
<pre class="cython line score-0">&#xA0;<span class="">221</span>:     """</pre>
<pre class="cython line score-15" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">222</span>:     __slots__ = ('idt', 'wrdicts')</pre>
<pre class='cython code score-15 '>  if (<span class='py_c_api'>PyDict_SetItem</span>((PyObject *)__pyx_ptype_6gevent_6_local__greenlet_deleted-&gt;tp_dict, __pyx_n_s_slots, __pyx_tuple__4) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 222, __pyx_L1_error)</span>
  <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_6gevent_6_local__greenlet_deleted);
/* … */
  __pyx_tuple__4 = <span class='py_c_api'>PyTuple_Pack</span>(2, __pyx_n_s_idt, __pyx_n_s_wrdicts);<span class='error_goto'> if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 222, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__4);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__4);
</pre><pre class="cython line score-0">&#xA0;<span class="">223</span>: </pre>
<pre class="cython line score-24" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">224</span>:     def __init__(self, idt, wrdicts):</pre>
<pre class='cython code score-24 '>/* Python wrapper */
static int __pyx_pw_6gevent_6_local_17_greenlet_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6gevent_6_local_17_greenlet_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_idt = 0;
  PyObject *__pyx_v_wrdicts = 0;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_idt,&amp;__pyx_n_s_wrdicts,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = <span class='py_c_api'>PyDict_Size</span>(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_idt)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_wrdicts)) != 0)) kw_args--;
        else {
          <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 2, 2, 1); <span class='error_goto'>__PYX_ERR(0, 224, __pyx_L3_error)</span>
        }
      }
      if (unlikely(kw_args &gt; 0)) {
        if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 224, __pyx_L3_error)</span>
      }
    } else if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
      values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
    }
    __pyx_v_idt = values[0];
    __pyx_v_wrdicts = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 2, 2, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args)); <span class='error_goto'>__PYX_ERR(0, 224, __pyx_L3_error)</span>
  __pyx_L3_error:;
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._greenlet_deleted.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6gevent_6_local_17_greenlet_deleted___init__(((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_v_self), __pyx_v_idt, __pyx_v_wrdicts);

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static int __pyx_pf_6gevent_6_local_17_greenlet_deleted___init__(struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_self, PyObject *__pyx_v_idt, PyObject *__pyx_v_wrdicts) {
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">225</span>:         self.idt = idt</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_idt);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_idt);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;idt);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;idt);
  __pyx_v_self-&gt;idt = __pyx_v_idt;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">226</span>:         self.wrdicts = wrdicts</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_wrdicts);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_wrdicts);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;wrdicts);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;wrdicts);
  __pyx_v_self-&gt;wrdicts = __pyx_v_wrdicts;
</pre><pre class="cython line score-0">&#xA0;<span class="">227</span>: </pre>
<pre class="cython line score-26" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">228</span>:     def __call__(self, _unused):</pre>
<pre class='cython code score-26 '>/* Python wrapper */
static PyObject *__pyx_pw_6gevent_6_local_17_greenlet_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6gevent_6_local_17_greenlet_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v__unused = 0;
  PyObject *__pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__call__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_unused,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = <span class='py_c_api'>PyDict_Size</span>(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_unused)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args &gt; 0)) {
        if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 228, __pyx_L3_error)</span>
      }
    } else if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
    }
    __pyx_v__unused = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__call__", 1, 1, 1, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args)); <span class='error_goto'>__PYX_ERR(0, 228, __pyx_L3_error)</span>
  __pyx_L3_error:;
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._greenlet_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6gevent_6_local_17_greenlet_deleted_2__call__(((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_v_self), __pyx_v__unused);

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static PyObject *__pyx_pf_6gevent_6_local_17_greenlet_deleted_2__call__(struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v__unused) {
  PyObject *__pyx_v_dicts = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__call__", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; <span class='pyx_macro_api'>__Pyx_INCREF</span>(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._greenlet_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dicts);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-17" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">229</span>:         dicts = self.wrdicts()</pre>
<pre class='cython code score-17 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_self-&gt;wrdicts);
  __pyx_t_2 = __pyx_v_self-&gt;wrdicts; __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
    __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
      <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_2, __pyx_t_3) : <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 229, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_dicts = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">230</span>:         if dicts:</pre>
<pre class='cython code score-2 '>  __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_IsTrue</span>(__pyx_v_dicts); if (unlikely(__pyx_t_4 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 230, __pyx_L1_error)</span>
  if (__pyx_t_4) {
/* … */
  }
</pre><pre class="cython line score-40" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">231</span>:             dicts.pop(self.idt, None)</pre>
<pre class='cython code score-40 '>    __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_dicts, __pyx_n_s_pop);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
      __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self-&gt;idt, Py_None};
      __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self-&gt;idt, Py_None};
      __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_6 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_5);<span class='error_goto'> if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 231, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
      if (__pyx_t_3) {
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_3); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_self-&gt;idt);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_self-&gt;idt);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 0+__pyx_t_5, __pyx_v_self-&gt;idt);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(Py_None);
      <span class='refnanny'>__Pyx_GIVEREF</span>(Py_None);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_6, 1+__pyx_t_5, Py_None);
      __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_t_6, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
    }
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">232</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">233</span>: class _local_deleted(object):</pre>
<pre class="cython line score-15" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">234</span>:     __slots__ = ('key', 'wrthread', 'greenlet_deleted')</pre>
<pre class='cython code score-15 '>  if (<span class='py_c_api'>PyDict_SetItem</span>((PyObject *)__pyx_ptype_6gevent_6_local__local_deleted-&gt;tp_dict, __pyx_n_s_slots, __pyx_tuple__5) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 234, __pyx_L1_error)</span>
  <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_6gevent_6_local__local_deleted);
/* … */
  __pyx_tuple__5 = <span class='py_c_api'>PyTuple_Pack</span>(3, __pyx_n_s_key, __pyx_n_s_wrthread, __pyx_n_s_greenlet_deleted);<span class='error_goto'> if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 234, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__5);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__5);
</pre><pre class="cython line score-0">&#xA0;<span class="">235</span>: </pre>
<pre class="cython line score-33" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">236</span>:     def __init__(self, key, wrthread, greenlet_deleted):</pre>
<pre class='cython code score-33 '>/* Python wrapper */
static int __pyx_pw_6gevent_6_local_14_local_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6gevent_6_local_14_local_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_wrthread = 0;
  PyObject *__pyx_v_greenlet_deleted = 0;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_key,&amp;__pyx_n_s_wrthread,&amp;__pyx_n_s_greenlet_deleted,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = <span class='py_c_api'>PyDict_Size</span>(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_wrthread)) != 0)) kw_args--;
        else {
          <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 3, 3, 1); <span class='error_goto'>__PYX_ERR(0, 236, __pyx_L3_error)</span>
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_greenlet_deleted)) != 0)) kw_args--;
        else {
          <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 3, 3, 2); <span class='error_goto'>__PYX_ERR(0, 236, __pyx_L3_error)</span>
        }
      }
      if (unlikely(kw_args &gt; 0)) {
        if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 236, __pyx_L3_error)</span>
      }
    } else if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
      values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
      values[2] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 2);
    }
    __pyx_v_key = values[0];
    __pyx_v_wrthread = values[1];
    __pyx_v_greenlet_deleted = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 3, 3, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args)); <span class='error_goto'>__PYX_ERR(0, 236, __pyx_L3_error)</span>
  __pyx_L3_error:;
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local_deleted.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6gevent_6_local_14_local_deleted___init__(((struct __pyx_obj_6gevent_6_local__local_deleted *)__pyx_v_self), __pyx_v_key, __pyx_v_wrthread, __pyx_v_greenlet_deleted);

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static int __pyx_pf_6gevent_6_local_14_local_deleted___init__(struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_wrthread, PyObject *__pyx_v_greenlet_deleted) {
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local_deleted.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">237</span>:         self.key = key</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PyString_CheckExact</span>(__pyx_v_key))||((__pyx_v_key) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_key)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 237, __pyx_L1_error)</span>
  __pyx_t_1 = __pyx_v_key;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;key);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;key);
  __pyx_v_self-&gt;key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">238</span>:         self.wrthread = wrthread</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_wrthread);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_wrthread);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;wrthread);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;wrthread);
  __pyx_v_self-&gt;wrthread = __pyx_v_wrthread;
</pre><pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">239</span>:         self.greenlet_deleted = greenlet_deleted</pre>
<pre class='cython code score-4 '>  if (!(likely(((__pyx_v_greenlet_deleted) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_v_greenlet_deleted, __pyx_ptype_6gevent_6_local__greenlet_deleted))))) <span class='error_goto'>__PYX_ERR(0, 239, __pyx_L1_error)</span>
  __pyx_t_1 = __pyx_v_greenlet_deleted;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;greenlet_deleted);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_v_self-&gt;greenlet_deleted));
  __pyx_v_self-&gt;greenlet_deleted = ((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">240</span>: </pre>
<pre class="cython line score-26" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">241</span>:     def __call__(self, _unused):</pre>
<pre class='cython code score-26 '>/* Python wrapper */
static PyObject *__pyx_pw_6gevent_6_local_14_local_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6gevent_6_local_14_local_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v__unused = 0;
  PyObject *__pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__call__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_unused,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = <span class='py_c_api'>PyDict_Size</span>(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_unused)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args &gt; 0)) {
        if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 241, __pyx_L3_error)</span>
      }
    } else if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
    }
    __pyx_v__unused = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__call__", 1, 1, 1, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args)); <span class='error_goto'>__PYX_ERR(0, 241, __pyx_L3_error)</span>
  __pyx_L3_error:;
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6gevent_6_local_14_local_deleted_2__call__(((struct __pyx_obj_6gevent_6_local__local_deleted *)__pyx_v_self), __pyx_v__unused);

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static PyObject *__pyx_pf_6gevent_6_local_14_local_deleted_2__call__(struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v__unused) {
  PyObject *__pyx_v_thread = NULL;
  PyObject *__pyx_v_unlink = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__call__", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; <span class='pyx_macro_api'>__Pyx_INCREF</span>(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_thread);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_unlink);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-17" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">242</span>:         thread = self.wrthread()</pre>
<pre class='cython code score-17 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_self-&gt;wrthread);
  __pyx_t_2 = __pyx_v_self-&gt;wrthread; __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
    __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
      <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_2, __pyx_t_3) : <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 242, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_thread = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">243</span>:         if thread is not None:</pre>
<pre class='cython code score-0 '>  __pyx_t_4 = (__pyx_v_thread != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {
/* … */
  }
</pre><pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">244</span>:             try:</pre>
<pre class='cython code score-4 '>    {
      /*try:*/ {
/* … */
      }
/* … */
      <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_6);
      <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_7);
      <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_8);
      <span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_6);
      <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_7);
      <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_8);
      <span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L9_try_end:;
    }
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">245</span>:                 unlink = thread.unlink</pre>
<pre class='cython code score-2 '>        __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_thread, __pyx_n_s_unlink);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L4_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
        __pyx_v_unlink = __pyx_t_1;
        __pyx_t_1 = 0;
</pre><pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">246</span>:             except AttributeError:</pre>
<pre class='cython code score-4 '>      __pyx_t_9 = <span class='pyx_c_api'>__Pyx_PyErr_ExceptionMatches</span>(__pyx_builtin_AttributeError);
      if (__pyx_t_9) {
        <span class='pyx_c_api'>__Pyx_ErrRestore</span>(0,0,0);
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;
      __pyx_L6_except_error:;
</pre><pre class="cython line score-0">&#xA0;<span class="">247</span>:                 pass</pre>
<pre class="cython line score-0">&#xA0;<span class="">248</span>:             else:</pre>
<pre class="cython line score-22" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">249</span>:                 unlink(self.greenlet_deleted)</pre>
<pre class='cython code score-22 '>      /*else:*/ {
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_unlink);
        __pyx_t_2 = __pyx_v_unlink; __pyx_t_3 = NULL;
        if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
          __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
          if (likely(__pyx_t_3)) {
            PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
            <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
            <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
            <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
          }
        }
        __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_v_self-&gt;greenlet_deleted)) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_2, ((PyObject *)__pyx_v_self-&gt;greenlet_deleted));
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 249, __pyx_L6_except_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
      }
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">250</span>:             del thread.__dict__[self.key]</pre>
<pre class='cython code score-8 '>    __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_thread, __pyx_n_s_dict);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
    if (unlikely(<span class='py_c_api'>PyObject_DelItem</span>(__pyx_t_1, __pyx_v_self-&gt;key) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 250, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">251</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">252</span>: class _localimpl(object):</pre>
<pre class="cython line score-0">&#xA0;<span class="">253</span>:     """A class managing thread-local dicts"""</pre>
<pre class="cython line score-15" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">254</span>:     __slots__ = ('key', 'dicts',</pre>
<pre class='cython code score-15 '>  if (<span class='py_c_api'>PyDict_SetItem</span>((PyObject *)__pyx_ptype_6gevent_6_local__localimpl-&gt;tp_dict, __pyx_n_s_slots, __pyx_tuple__6) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 254, __pyx_L1_error)</span>
  <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_6gevent_6_local__localimpl);
/* … */
  __pyx_tuple__6 = <span class='py_c_api'>PyTuple_Pack</span>(6, __pyx_n_s_key, __pyx_n_s_dicts, __pyx_n_s_localargs, __pyx_n_s_localkwargs, __pyx_n_s_localtypeid, __pyx_n_s_weakref_2);<span class='error_goto'> if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 254, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__6);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__6);
</pre><pre class="cython line score-0">&#xA0;<span class="">255</span>:                  'localargs', 'localkwargs',</pre>
<pre class="cython line score-0">&#xA0;<span class="">256</span>:                  'localtypeid',</pre>
<pre class="cython line score-0">&#xA0;<span class="">257</span>:                  '__weakref__',)</pre>
<pre class="cython line score-0">&#xA0;<span class="">258</span>: </pre>
<pre class="cython line score-41" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">259</span>:     def __init__(self, args, kwargs, local_type, id_local):</pre>
<pre class='cython code score-41 '>/* Python wrapper */
static int __pyx_pw_6gevent_6_local_10_localimpl_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6gevent_6_local_10_localimpl_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  PyObject *__pyx_v_local_type = 0;
  PyObject *__pyx_v_id_local = 0;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_args,&amp;__pyx_n_s_kwargs,&amp;__pyx_n_s_local_type,&amp;__pyx_n_s_id_local,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = <span class='py_c_api'>PyDict_Size</span>(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_kwargs)) != 0)) kw_args--;
        else {
          <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 4, 4, 1); <span class='error_goto'>__PYX_ERR(0, 259, __pyx_L3_error)</span>
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_local_type)) != 0)) kw_args--;
        else {
          <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 4, 4, 2); <span class='error_goto'>__PYX_ERR(0, 259, __pyx_L3_error)</span>
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_id_local)) != 0)) kw_args--;
        else {
          <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 4, 4, 3); <span class='error_goto'>__PYX_ERR(0, 259, __pyx_L3_error)</span>
        }
      }
      if (unlikely(kw_args &gt; 0)) {
        if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 259, __pyx_L3_error)</span>
      }
    } else if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
      values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
      values[2] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 2);
      values[3] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 3);
    }
    __pyx_v_args = values[0];
    __pyx_v_kwargs = values[1];
    __pyx_v_local_type = values[2];
    __pyx_v_id_local = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 4, 4, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args)); <span class='error_goto'>__PYX_ERR(0, 259, __pyx_L3_error)</span>
  __pyx_L3_error:;
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._localimpl.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6gevent_6_local_10_localimpl___init__(((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs, __pyx_v_local_type, __pyx_v_id_local);

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static int __pyx_pf_6gevent_6_local_10_localimpl___init__(struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, PyObject *__pyx_v_local_type, PyObject *__pyx_v_id_local) {
  PyGreenlet *__pyx_v_greenlet = NULL;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._localimpl.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_greenlet);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-22" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">260</span>:         self.key = key_prefix + str(id(self))</pre>
<pre class='cython code score-22 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_id, ((PyObject *)__pyx_v_self));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(((PyObject *)(&amp;PyString_Type)), __pyx_t_1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = <span class='py_c_api'>PyNumber_Add</span>(__pyx_v_6gevent_6_local_key_prefix, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(<span class='py_c_api'>PyString_CheckExact</span>(__pyx_t_1))||((__pyx_t_1) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 260, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;key);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;key);
  __pyx_v_self-&gt;key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">261</span>:         # { id(greenlet) -&gt; _localimpl_dict_entry(ref(greenlet), greenlet-local dict) }</pre>
<pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">262</span>:         self.dicts = _wrefdict()</pre>
<pre class='cython code score-3 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(((PyObject *)__pyx_ptype_6gevent_6_local__wrefdict));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;dicts);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;dicts);
  __pyx_v_self-&gt;dicts = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">263</span>:         self.localargs = args</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PyTuple_CheckExact</span>(__pyx_v_args))||((__pyx_v_args) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_args)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 263, __pyx_L1_error)</span>
  __pyx_t_1 = __pyx_v_args;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;localargs);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;localargs);
  __pyx_v_self-&gt;localargs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">264</span>:         self.localkwargs = kwargs</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PyDict_CheckExact</span>(__pyx_v_kwargs))||((__pyx_v_kwargs) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_kwargs)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 264, __pyx_L1_error)</span>
  __pyx_t_1 = __pyx_v_kwargs;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;localkwargs);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;localkwargs);
  __pyx_v_self-&gt;localkwargs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-10" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">265</span>:         self.localtypeid = local_type, id_local</pre>
<pre class='cython code score-10 '>  __pyx_t_1 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_local_type);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_local_type);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 0, __pyx_v_local_type);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_id_local);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_id_local);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 1, __pyx_v_id_local);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;localtypeid);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;localtypeid);
  __pyx_v_self-&gt;localtypeid = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">266</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">267</span>:         # We need to create the thread dict in anticipation of</pre>
<pre class="cython line score-0">&#xA0;<span class="">268</span>:         # __init__ being called, to make sure we don't call it</pre>
<pre class="cython line score-0">&#xA0;<span class="">269</span>:         # again ourselves. MUST do this before setting any attributes.</pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">270</span>:         greenlet = getcurrent() # pylint:disable=undefined-variable</pre>
<pre class='cython code score-0 '>  __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent());<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_greenlet = ((PyGreenlet *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">271</span>:         _localimpl_create_dict(self, greenlet, id(greenlet))</pre>
<pre class='cython code score-4 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_id, ((PyObject *)__pyx_v_greenlet));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 271, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6gevent_6_local__localimpl_create_dict(__pyx_v_self, __pyx_v_greenlet, __pyx_t_1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 271, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">272</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">273</span>: class _localimpl_dict_entry(object):</pre>
<pre class="cython line score-0">&#xA0;<span class="">274</span>:     """</pre>
<pre class="cython line score-0">&#xA0;<span class="">275</span>:     The object that goes in the ``dicts`` of ``_localimpl``</pre>
<pre class="cython line score-0">&#xA0;<span class="">276</span>:     object for each thread.</pre>
<pre class="cython line score-0">&#xA0;<span class="">277</span>:     """</pre>
<pre class="cython line score-0">&#xA0;<span class="">278</span>:     # This is a class, not just a tuple, so that cython can optimize</pre>
<pre class="cython line score-0">&#xA0;<span class="">279</span>:     # attribute access</pre>
<pre class="cython line score-15" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">280</span>:     __slots__ = ('wrgreenlet', 'localdict')</pre>
<pre class='cython code score-15 '>  if (<span class='py_c_api'>PyDict_SetItem</span>((PyObject *)__pyx_ptype_6gevent_6_local__localimpl_dict_entry-&gt;tp_dict, __pyx_n_s_slots, __pyx_tuple__7) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 280, __pyx_L1_error)</span>
  <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_6gevent_6_local__localimpl_dict_entry);
/* … */
  __pyx_tuple__7 = <span class='py_c_api'>PyTuple_Pack</span>(2, __pyx_n_s_wrgreenlet, __pyx_n_s_localdict);<span class='error_goto'> if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 280, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__7);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__7);
</pre><pre class="cython line score-0">&#xA0;<span class="">281</span>: </pre>
<pre class="cython line score-27" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">282</span>:     def __init__(self, wrgreenlet, localdict):</pre>
<pre class='cython code score-27 '>/* Python wrapper */
static int __pyx_pw_6gevent_6_local_21_localimpl_dict_entry_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6gevent_6_local_21_localimpl_dict_entry_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_wrgreenlet = 0;
  PyObject *__pyx_v_localdict = 0;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_wrgreenlet,&amp;__pyx_n_s_localdict,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = <span class='py_c_api'>PyDict_Size</span>(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_wrgreenlet)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_localdict)) != 0)) kw_args--;
        else {
          <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 2, 2, 1); <span class='error_goto'>__PYX_ERR(0, 282, __pyx_L3_error)</span>
        }
      }
      if (unlikely(kw_args &gt; 0)) {
        if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 282, __pyx_L3_error)</span>
      }
    } else if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
      values[1] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 1);
    }
    __pyx_v_wrgreenlet = values[0];
    __pyx_v_localdict = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 2, 2, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args)); <span class='error_goto'>__PYX_ERR(0, 282, __pyx_L3_error)</span>
  __pyx_L3_error:;
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._localimpl_dict_entry.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6gevent_6_local_21_localimpl_dict_entry___init__(((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_v_self), __pyx_v_wrgreenlet, __pyx_v_localdict);

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static int __pyx_pf_6gevent_6_local_21_localimpl_dict_entry___init__(struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_self, PyObject *__pyx_v_wrgreenlet, PyObject *__pyx_v_localdict) {
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._localimpl_dict_entry.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">283</span>:         self.wrgreenlet = wrgreenlet</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_wrgreenlet);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_wrgreenlet);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;wrgreenlet);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;wrgreenlet);
  __pyx_v_self-&gt;wrgreenlet = __pyx_v_wrgreenlet;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">284</span>:         self.localdict = localdict</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PyDict_CheckExact</span>(__pyx_v_localdict))||((__pyx_v_localdict) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_localdict)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 284, __pyx_L1_error)</span>
  __pyx_t_1 = __pyx_v_localdict;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;localdict);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;localdict);
  __pyx_v_self-&gt;localdict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">285</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">286</span>: # We use functions instead of methods so that they can be cdef'd in</pre>
<pre class="cython line score-0">&#xA0;<span class="">287</span>: # local.pxd; if they were cdef'd as methods, they would cause</pre>
<pre class="cython line score-0">&#xA0;<span class="">288</span>: # the creation of a pointer and a vtable. This happens</pre>
<pre class="cython line score-0">&#xA0;<span class="">289</span>: # even if we declare the class @cython.final. functions thus save memory overhead</pre>
<pre class="cython line score-0">&#xA0;<span class="">290</span>: # (but not pointer chasing overhead; the vtable isn't used when we declare</pre>
<pre class="cython line score-0">&#xA0;<span class="">291</span>: # the class final).</pre>
<pre class="cython line score-0">&#xA0;<span class="">292</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">293</span>: </pre>
<pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">294</span>: def _localimpl_create_dict(self, greenlet, id_greenlet):</pre>
<pre class='cython code score-14 '>static PyObject *__pyx_f_6gevent_6_local__localimpl_create_dict(struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_self, PyGreenlet *__pyx_v_greenlet, PyObject *__pyx_v_id_greenlet) {
  struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_greenlet_deleted = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_localdict = 0;
  struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_local_deleted = 0;
  PyObject *__pyx_v_wrdicts = NULL;
  PyObject *__pyx_v_rawlink = NULL;
  PyObject *__pyx_v_wrthread = NULL;
  PyObject *__pyx_v_wrlocal = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("_localimpl_create_dict", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._localimpl_create_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_greenlet_deleted);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_key);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_localdict);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_local_deleted);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_wrdicts);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_rawlink);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_wrthread);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_wrlocal);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">295</span>:     """Create a new dict for the current thread, and return it."""</pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">296</span>:     localdict = {}</pre>
<pre class='cython code score-2 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_localdict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">297</span>:     key = self.key</pre>
<pre class='cython code score-1 '>  __pyx_t_1 = __pyx_v_self-&gt;key;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  __pyx_v_key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">298</span>: </pre>
<pre class="cython line score-15" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">299</span>:     wrdicts = ref(self.dicts)</pre>
<pre class='cython code score-15 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_6gevent_6_local_ref);
  __pyx_t_2 = __pyx_v_6gevent_6_local_ref; __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
    __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
      <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_self-&gt;dicts) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_2, __pyx_v_self-&gt;dicts);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 299, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_wrdicts = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">300</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">301</span>:     # When the greenlet is deleted, remove the local dict.</pre>
<pre class="cython line score-0">&#xA0;<span class="">302</span>:     # Note that this is suboptimal if the greenlet object gets</pre>
<pre class="cython line score-0">&#xA0;<span class="">303</span>:     # caught in a reference loop. We would like to be called</pre>
<pre class="cython line score-0">&#xA0;<span class="">304</span>:     # as soon as the OS-level greenlet ends instead.</pre>
<pre class="cython line score-0">&#xA0;<span class="">305</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">306</span>:     # If we are working with a gevent.greenlet.Greenlet, we</pre>
<pre class="cython line score-0">&#xA0;<span class="">307</span>:     # can pro-actively clear out with a link, avoiding the</pre>
<pre class="cython line score-0">&#xA0;<span class="">308</span>:     # issue described above. Use rawlink to avoid spawning any</pre>
<pre class="cython line score-0">&#xA0;<span class="">309</span>:     # more greenlets.</pre>
<pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">310</span>:     greenlet_deleted = _greenlet_deleted(id_greenlet, wrdicts)</pre>
<pre class='cython code score-12 '>  __pyx_t_1 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_id_greenlet);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_id_greenlet);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 0, __pyx_v_id_greenlet);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_wrdicts);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_wrdicts);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 1, __pyx_v_wrdicts);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(((PyObject *)__pyx_ptype_6gevent_6_local__greenlet_deleted), __pyx_t_1, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_greenlet_deleted = ((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_t_2);
  __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">311</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">312</span>:     rawlink = getattr(greenlet, 'rawlink', None)</pre>
<pre class='cython code score-0 '>  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_greenlet), __pyx_n_s_rawlink, Py_None);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  __pyx_v_rawlink = __pyx_t_2;
  __pyx_t_2 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">313</span>:     if rawlink is not None:</pre>
<pre class='cython code score-0 '>  __pyx_t_4 = (__pyx_v_rawlink != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {
/* … */
    goto __pyx_L3;
  }
</pre><pre class="cython line score-16" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">314</span>:         rawlink(greenlet_deleted)</pre>
<pre class='cython code score-16 '>    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_rawlink);
    __pyx_t_1 = __pyx_v_rawlink; __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_1))) {
      __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_1);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, ((PyObject *)__pyx_v_greenlet_deleted)) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_1, ((PyObject *)__pyx_v_greenlet_deleted));
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) <span class='error_goto'>__PYX_ERR(0, 314, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-15" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">315</span>:         wrthread = ref(greenlet)</pre>
<pre class='cython code score-15 '>    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_6gevent_6_local_ref);
    __pyx_t_1 = __pyx_v_6gevent_6_local_ref; __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_1))) {
      __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_1);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, ((PyObject *)__pyx_v_greenlet)) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_1, ((PyObject *)__pyx_v_greenlet));
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) <span class='error_goto'>__PYX_ERR(0, 315, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_wrthread = __pyx_t_2;
    __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">316</span>:     else:</pre>
<pre class="cython line score-38" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">317</span>:         wrthread = ref(greenlet, greenlet_deleted)</pre>
<pre class='cython code score-38 '>  /*else*/ {
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_6gevent_6_local_ref);
    __pyx_t_1 = __pyx_v_6gevent_6_local_ref; __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_1))) {
      __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_1);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_1, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_1)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_greenlet), ((PyObject *)__pyx_v_greenlet_deleted)};
      __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_1)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_greenlet), ((PyObject *)__pyx_v_greenlet_deleted)};
      __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
      if (__pyx_t_3) {
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_3); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_greenlet));
      <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_greenlet));
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_greenlet));
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_greenlet_deleted));
      <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_greenlet_deleted));
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)__pyx_v_greenlet_deleted));
      __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_1, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
    }
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_wrthread = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;
</pre><pre class="cython line score-0">&#xA0;<span class="">318</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">319</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">320</span>:     # When the localimpl is deleted, remove the thread attribute.</pre>
<pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">321</span>:     local_deleted = _local_deleted(key, wrthread, greenlet_deleted)</pre>
<pre class='cython code score-14 '>  __pyx_t_2 = <span class='py_c_api'>PyTuple_New</span>(3);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_key);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_key);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_2, 0, __pyx_v_key);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_wrthread);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_wrthread);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_2, 1, __pyx_v_wrthread);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_greenlet_deleted));
  <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_greenlet_deleted));
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_2, 2, ((PyObject *)__pyx_v_greenlet_deleted));
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(((PyObject *)__pyx_ptype_6gevent_6_local__local_deleted), __pyx_t_2, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_local_deleted = ((struct __pyx_obj_6gevent_6_local__local_deleted *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">322</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">323</span>: </pre>
<pre class="cython line score-38" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">324</span>:     wrlocal = ref(self, local_deleted)</pre>
<pre class='cython code score-38 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_6gevent_6_local_ref);
  __pyx_t_2 = __pyx_v_6gevent_6_local_ref; __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
    __pyx_t_7 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_7);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
      <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_local_deleted)};
    __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_local_deleted)};
    __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    if (__pyx_t_7) {
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_7); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
    <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
    <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_local_deleted));
    <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_local_deleted));
    <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 1+__pyx_t_6, ((PyObject *)__pyx_v_local_deleted));
    __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_t_3, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  }
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_wrlocal = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">325</span>:     greenlet.__dict__[key] = wrlocal</pre>
<pre class='cython code score-8 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_greenlet), __pyx_n_s_dict);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (unlikely(<span class='py_c_api'>PyObject_SetItem</span>(__pyx_t_1, __pyx_v_key, __pyx_v_wrlocal) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 325, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">326</span>: </pre>
<pre class="cython line score-23" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">327</span>:     self.dicts[id_greenlet] = _localimpl_dict_entry(wrthread, localdict)</pre>
<pre class='cython code score-23 '>  __pyx_t_1 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_wrthread);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_wrthread);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 0, __pyx_v_wrthread);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_localdict);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_localdict);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 1, __pyx_v_localdict);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(((PyObject *)__pyx_ptype_6gevent_6_local__localimpl_dict_entry), __pyx_t_1, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(__pyx_v_self-&gt;dicts == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
    <span class='error_goto'>__PYX_ERR(0, 327, __pyx_L1_error)</span>
  }
  if (unlikely(<span class='py_c_api'>PyDict_SetItem</span>(__pyx_v_self-&gt;dicts, __pyx_v_id_greenlet, __pyx_t_2) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 327, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">328</span>:     return localdict</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_localdict);
  __pyx_r = __pyx_v_localdict;
  goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">329</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">330</span>: </pre>
<pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">331</span>: _marker = object()</pre>
<pre class='cython code score-3 '>  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_builtin_object);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='refnanny'>__Pyx_XGOTREF</span>(__pyx_v_6gevent_6_local__marker);
  <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_v_6gevent_6_local__marker, __pyx_t_2);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_2);
  __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">332</span>: </pre>
<pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">333</span>: def _local_get_dict(self):</pre>
<pre class='cython code score-12 '>static CYTHON_INLINE PyObject *__pyx_f_6gevent_6_local__local_get_dict(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self) {
  PyObject *__pyx_v_dct = 0;
  struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl = 0;
  struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0;
  PyGreenlet *__pyx_v_greenlet = NULL;
  PyObject *__pyx_v_idg = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("_local_get_dict", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_9);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local_get_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dct);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_impl);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_entry);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_greenlet);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_idg);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">334</span>:     impl = self._local__impl</pre>
<pre class='cython code score-1 '>  __pyx_t_1 = ((PyObject *)__pyx_v_self-&gt;_local__impl);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  __pyx_v_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">335</span>:     # Cython can optimize dict[], but not dict.get()</pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">336</span>:     greenlet = getcurrent() # pylint:disable=undefined-variable</pre>
<pre class='cython code score-0 '>  __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent());<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_greenlet = ((PyGreenlet *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">337</span>:     idg = id(greenlet)</pre>
<pre class='cython code score-2 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_id, ((PyObject *)__pyx_v_greenlet));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_idg = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">338</span>:     try:</pre>
<pre class='cython code score-8 '>  {
    /*try:*/ {
/* … */
    }
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
/* … */
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_2);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_3);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_4);
    <span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_2);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_3);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_4);
    <span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }
</pre><pre class="cython line score-9" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">339</span>:         entry = impl.dicts[idg]</pre>
<pre class='cython code score-9 '>      if (unlikely(__pyx_v_impl-&gt;dicts == Py_None)) {
        <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
        <span class='error_goto'>__PYX_ERR(0, 339, __pyx_L3_error)</span>
      }
      __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_impl-&gt;dicts, __pyx_v_idg);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L3_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
      if (!(likely(((__pyx_t_1) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) <span class='error_goto'>__PYX_ERR(0, 339, __pyx_L3_error)</span>
      __pyx_v_entry = ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_1);
      __pyx_t_1 = 0;
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">340</span>:         dct = entry.localdict</pre>
<pre class='cython code score-1 '>      __pyx_t_1 = __pyx_v_entry-&gt;localdict;
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
      __pyx_v_dct = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">341</span>:     except KeyError:</pre>
<pre class='cython code score-6 '>    __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyErr_ExceptionMatches</span>(__pyx_builtin_KeyError);
    if (__pyx_t_5) {
      <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local_get_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (<span class='pyx_c_api'>__Pyx_GetException</span>(&amp;__pyx_t_1, &amp;__pyx_t_6, &amp;__pyx_t_7) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 341, __pyx_L5_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">342</span>:         dct = _localimpl_create_dict(impl, greenlet, idg)</pre>
<pre class='cython code score-1 '>      __pyx_t_8 = __pyx_f_6gevent_6_local__localimpl_create_dict(__pyx_v_impl, __pyx_v_greenlet, __pyx_v_idg);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 342, __pyx_L5_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
      <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_dct, ((PyObject*)__pyx_t_8));
      __pyx_t_8 = 0;
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">343</span>:         self.__init__(*impl.localargs, **impl.localkwargs)</pre>
<pre class='cython code score-19 '>      __pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_self), __pyx_n_s_init);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 343, __pyx_L5_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
      if (unlikely(__pyx_v_impl-&gt;localargs == Py_None)) {
        <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
        <span class='error_goto'>__PYX_ERR(0, 343, __pyx_L5_except_error)</span>
      }
      if (unlikely(__pyx_v_impl-&gt;localkwargs == Py_None)) {
        <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
        <span class='error_goto'>__PYX_ERR(0, 343, __pyx_L5_except_error)</span>
      }
      __pyx_t_9 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_8, __pyx_v_impl-&gt;localargs, __pyx_v_impl-&gt;localkwargs);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 343, __pyx_L5_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">344</span>:     return dct</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_dct);
  __pyx_r = __pyx_v_dct;
  goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">345</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">346</span>: def _init():</pre>
<pre class='cython code score-0 '>static void __pyx_f_6gevent_6_local__init(void) {
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("_init", 0);
/* … */
  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">347</span>:     greenlet_init() # pylint:disable=undefined-variable</pre>
<pre class='cython code score-0 '>  __pyx_f_6gevent_6_local_greenlet_init();
</pre><pre class="cython line score-0">&#xA0;<span class="">348</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">349</span>: _local_attrs = {</pre>
<pre class="cython line score-51" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">350</span>:     '_local__impl',</pre>
<pre class='cython code score-51 '>  __pyx_t_2 = <span class='py_c_api'>PySet_New</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_local__impl) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_local_type_get_descriptors) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_local_type_set_or_del_descripto) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_local_type_del_descriptors) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_local_type_set_descriptors) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_local_type_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_local_type_vars) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_class) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_cinit) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 350, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_XGOTREF</span>(__pyx_v_6gevent_6_local__local_attrs);
  <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_v_6gevent_6_local__local_attrs, ((PyObject*)__pyx_t_2));
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_2);
  __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">351</span>:     '_local_type_get_descriptors',</pre>
<pre class="cython line score-0">&#xA0;<span class="">352</span>:     '_local_type_set_or_del_descriptors',</pre>
<pre class="cython line score-0">&#xA0;<span class="">353</span>:     '_local_type_del_descriptors',</pre>
<pre class="cython line score-0">&#xA0;<span class="">354</span>:     '_local_type_set_descriptors',</pre>
<pre class="cython line score-0">&#xA0;<span class="">355</span>:     '_local_type',</pre>
<pre class="cython line score-0">&#xA0;<span class="">356</span>:     '_local_type_vars',</pre>
<pre class="cython line score-0">&#xA0;<span class="">357</span>:     '__class__',</pre>
<pre class="cython line score-0">&#xA0;<span class="">358</span>:     '__cinit__',</pre>
<pre class="cython line score-0">&#xA0;<span class="">359</span>: }</pre>
<pre class="cython line score-0">&#xA0;<span class="">360</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">361</span>: class local(object):</pre>
<pre class='cython code score-0 '>struct __pyx_vtabstruct_6gevent_6_local_local {
  struct __pyx_obj_6gevent_6_local_local *(*__pyx___copy__)(struct __pyx_obj_6gevent_6_local_local *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_6gevent_6_local_local *__pyx_vtabptr_6gevent_6_local_local;
</pre><pre class="cython line score-0">&#xA0;<span class="">362</span>:     """</pre>
<pre class="cython line score-0">&#xA0;<span class="">363</span>:     An object whose attributes are greenlet-local.</pre>
<pre class="cython line score-0">&#xA0;<span class="">364</span>:     """</pre>
<pre class="cython line score-35" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">365</span>:     __slots__ = tuple(_local_attrs - {'__class__', '__cinit__'})</pre>
<pre class='cython code score-35 '>  __pyx_t_2 = <span class='py_c_api'>PySet_New</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 365, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_class) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 365, __pyx_L1_error)</span>
  if (<span class='py_c_api'>PySet_Add</span>(__pyx_t_2, __pyx_n_s_cinit) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 365, __pyx_L1_error)</span>
  __pyx_t_1 = <span class='py_c_api'>PyNumber_Subtract</span>(__pyx_v_6gevent_6_local__local_attrs, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PySequence_Tuple</span>(__pyx_t_1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 365, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  if (<span class='py_c_api'>PyDict_SetItem</span>((PyObject *)__pyx_ptype_6gevent_6_local_local-&gt;tp_dict, __pyx_n_s_slots, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 365, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_6gevent_6_local_local);
</pre><pre class="cython line score-0">&#xA0;<span class="">366</span>: </pre>
<pre class="cython line score-27" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">367</span>:     def __cinit__(self, *args, **kw):</pre>
<pre class='cython code score-27 '>/* Python wrapper */
static int __pyx_pw_6gevent_6_local_5local_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6gevent_6_local_5local_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kw = 0;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__cinit__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) &amp;&amp; unlikely(!<span class='pyx_c_api'>__Pyx_CheckKeywordStrings</span>(__pyx_kwds, "__cinit__", 1))) return -1;
  __pyx_v_kw = (__pyx_kwds) ? <span class='py_c_api'>PyDict_Copy</span>(__pyx_kwds) : <span class='py_c_api'>PyDict_New</span>(); if (unlikely(!__pyx_v_kw)) return -1;
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_kw);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_6gevent_6_local_5local___cinit__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), __pyx_v_args, __pyx_v_kw);

  /* function exit code */
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_args);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_kw);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static int __pyx_pf_6gevent_6_local_5local___cinit__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kw) {
  struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl = NULL;
  PyObject *__pyx_v_get = NULL;
  PyObject *__pyx_v_dels = NULL;
  PyObject *__pyx_v_sets_or_dels = NULL;
  PyObject *__pyx_v_sets = NULL;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__cinit__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.local.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_impl);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_get);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dels);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_sets_or_dels);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_sets);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">368</span>:         if args or kw:</pre>
<pre class='cython code score-3 '>  __pyx_t_2 = (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_v_args) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_IsTrue</span>(__pyx_v_kw); if (unlikely(__pyx_t_2 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 368, __pyx_L1_error)</span>
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
</pre><pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">369</span>:             if type(self).__init__ == object.__init__:</pre>
<pre class='cython code score-14 '>    __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_init);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_builtin_object, __pyx_n_s_init);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
    __pyx_t_5 = <span class='py_c_api'>PyObject_RichCompare</span>(__pyx_t_3, __pyx_t_4, Py_EQ); <span class='refnanny'>__Pyx_XGOTREF</span>(__pyx_t_5);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 369, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_IsTrue</span>(__pyx_t_5); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 369, __pyx_L1_error)</span>
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_t_1)) {
/* … */
    }
</pre><pre class="cython line score-17" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">370</span>:                 raise TypeError("Initialization arguments are not supported", args, kw)</pre>
<pre class='cython code score-17 '>      __pyx_t_5 = <span class='py_c_api'>PyTuple_New</span>(3);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_kp_s_Initialization_arguments_are_not);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_kp_s_Initialization_arguments_are_not);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0, __pyx_kp_s_Initialization_arguments_are_not);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_args);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_args);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 1, __pyx_v_args);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_kw);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_kw);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 2, __pyx_v_kw);
      __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_TypeError, __pyx_t_5, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
      <span class='pyx_c_api'>__Pyx_Raise</span>(__pyx_t_4, 0, 0, 0);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
      <span class='error_goto'>__PYX_ERR(0, 370, __pyx_L1_error)</span>
</pre><pre class="cython line score-17" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">371</span>:         impl = _localimpl(args, kw, type(self), id(self))</pre>
<pre class='cython code score-17 '>  __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_id, ((PyObject *)__pyx_v_self));<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
  __pyx_t_5 = <span class='py_c_api'>PyTuple_New</span>(4);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 371, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_args);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_args);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0, __pyx_v_args);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_kw);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_kw);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 1, __pyx_v_kw);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 2, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 3, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(((PyObject *)__pyx_ptype_6gevent_6_local__localimpl), __pyx_t_5, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_4);
  __pyx_t_4 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">372</span>:         # pylint:disable=attribute-defined-outside-init</pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">373</span>:         self._local__impl = impl</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_impl));
  <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_impl));
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;_local__impl);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_v_self-&gt;_local__impl));
  __pyx_v_self-&gt;_local__impl = __pyx_v_impl;
</pre><pre class="cython line score-18" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">374</span>:         get, dels, sets_or_dels, sets = _local_find_descriptors(self)</pre>
<pre class='cython code score-18 '>  __pyx_t_4 = __pyx_f_6gevent_6_local__local_find_descriptors(__pyx_v_self);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 374, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
  if (likely(__pyx_t_4 != Py_None)) {
    PyObject* sequence = __pyx_t_4;
    Py_ssize_t size = <span class='pyx_c_api'>__Pyx_PySequence_SIZE</span>(sequence);
    if (unlikely(size != 4)) {
      if (size &gt; 4) <span class='pyx_c_api'>__Pyx_RaiseTooManyValuesError</span>(4);
      else if (size &gt;= 0) <span class='pyx_c_api'>__Pyx_RaiseNeedMoreValuesError</span>(size);
      <span class='error_goto'>__PYX_ERR(0, 374, __pyx_L1_error)</span>
    }
    #if CYTHON_ASSUME_SAFE_MACROS &amp;&amp; !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(sequence, 0); 
    __pyx_t_3 = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(sequence, 1); 
    __pyx_t_6 = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(sequence, 2); 
    __pyx_t_7 = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(sequence, 3); 
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_5);
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_6);
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_7);
    #else
    {
      Py_ssize_t i;
      PyObject** temps[4] = {&amp;__pyx_t_5,&amp;__pyx_t_3,&amp;__pyx_t_6,&amp;__pyx_t_7};
      for (i=0; i &lt; 4; i++) {
        PyObject* item = <span class='py_macro_api'>PySequence_ITEM</span>(sequence, i);<span class='error_goto'> if (unlikely(!item)) __PYX_ERR(0, 374, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(item);
        *(temps[i]) = item;
      }
    }
    #endif
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    <span class='pyx_c_api'>__Pyx_RaiseNoneNotIterableError</span>(); <span class='error_goto'>__PYX_ERR(0, 374, __pyx_L1_error)</span>
  }
  __pyx_v_get = __pyx_t_5;
  __pyx_t_5 = 0;
  __pyx_v_dels = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_sets_or_dels = __pyx_t_6;
  __pyx_t_6 = 0;
  __pyx_v_sets = __pyx_t_7;
  __pyx_t_7 = 0;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">375</span>:         self._local_type_get_descriptors = get</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PySet_CheckExact</span>(__pyx_v_get))||((__pyx_v_get) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_get)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 375, __pyx_L1_error)</span>
  __pyx_t_4 = __pyx_v_get;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;_local_type_get_descriptors);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;_local_type_get_descriptors);
  __pyx_v_self-&gt;_local_type_get_descriptors = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">376</span>:         self._local_type_set_or_del_descriptors = sets_or_dels</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PySet_CheckExact</span>(__pyx_v_sets_or_dels))||((__pyx_v_sets_or_dels) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_sets_or_dels)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 376, __pyx_L1_error)</span>
  __pyx_t_4 = __pyx_v_sets_or_dels;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;_local_type_set_or_del_descriptors);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;_local_type_set_or_del_descriptors);
  __pyx_v_self-&gt;_local_type_set_or_del_descriptors = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">377</span>:         self._local_type_del_descriptors = dels</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PySet_CheckExact</span>(__pyx_v_dels))||((__pyx_v_dels) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_dels)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 377, __pyx_L1_error)</span>
  __pyx_t_4 = __pyx_v_dels;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;_local_type_del_descriptors);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;_local_type_del_descriptors);
  __pyx_v_self-&gt;_local_type_del_descriptors = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
</pre><pre class="cython line score-12" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">378</span>:         self._local_type_set_descriptors = sets</pre>
<pre class='cython code score-12 '>  if (!(likely(<span class='py_c_api'>PySet_CheckExact</span>(__pyx_v_sets))||((__pyx_v_sets) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_sets)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 378, __pyx_L1_error)</span>
  __pyx_t_4 = __pyx_v_sets;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;_local_type_set_descriptors);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;_local_type_set_descriptors);
  __pyx_v_self-&gt;_local_type_set_descriptors = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">379</span>:         self._local_type = type(self)</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;_local_type);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(((PyObject *)__pyx_v_self-&gt;_local_type));
  __pyx_v_self-&gt;_local_type = ((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
</pre><pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">380</span>:         self._local_type_vars = set(dir(self._local_type))</pre>
<pre class='cython code score-14 '>  __pyx_t_4 = ((PyObject *)__pyx_v_self-&gt;_local_type);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
  __pyx_t_7 = <span class='py_c_api'>PyObject_Dir</span>(__pyx_t_4);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 380, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = <span class='py_c_api'>PySet_New</span>(__pyx_t_7);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 380, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_self-&gt;_local_type_vars);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_self-&gt;_local_type_vars);
  __pyx_v_self-&gt;_local_type_vars = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">381</span>: </pre>
<pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">382</span>:     def __getattribute__(self, name): # pylint:disable=too-many-return-statements</pre>
<pre class='cython code score-13 '>/* Python wrapper */
static PyObject *__pyx_pw_6gevent_6_local_5local_3__getattribute__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_6gevent_6_local_5local_3__getattribute__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__getattribute__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6gevent_6_local_5local_2__getattribute__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static PyObject *__pyx_pf_6gevent_6_local_5local_2__getattribute__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_dct = NULL;
  PyObject *__pyx_v_type_attr = NULL;
  PyObject *__pyx_v_base = NULL;
  PyObject *__pyx_v_bd = NULL;
  PyObject *__pyx_v_attr_on_type = NULL;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__getattribute__", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.local.__getattribute__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dct);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_type_attr);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_base);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_bd);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_attr_on_type);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_result);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">383</span>:         if name in _local_attrs:</pre>
<pre class='cython code score-7 '>  if (unlikely(__pyx_v_6gevent_6_local__local_attrs == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
    <span class='error_goto'>__PYX_ERR(0, 383, __pyx_L1_error)</span>
  }
  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_6gevent_6_local__local_attrs, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 383, __pyx_L1_error)</span>
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
</pre><pre class="cython line score-0">&#xA0;<span class="">384</span>:             # The _local__impl,  __cinit__, etc, won't be hit by the</pre>
<pre class="cython line score-0">&#xA0;<span class="">385</span>:             # Cython version, if we've done things right. If we haven't,</pre>
<pre class="cython line score-0">&#xA0;<span class="">386</span>:             # they will be, and this will produce an error.</pre>
<pre class="cython line score-40" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">387</span>:             return object.__getattribute__(self, name)</pre>
<pre class='cython code score-40 '>    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
    __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_builtin_object, __pyx_n_s_getattribute);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 387, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_4))) {
      __pyx_t_5 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_4);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_5);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name};
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 387, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name};
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 387, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 387, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
      if (__pyx_t_5) {
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_5); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
      <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_name);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_name);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 1+__pyx_t_6, __pyx_v_name);
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_4, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 387, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
    }
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">388</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">389</span>:         dct = _local_get_dict(self)</pre>
<pre class='cython code score-0 '>  __pyx_t_3 = __pyx_f_6gevent_6_local__local_get_dict(__pyx_v_self);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 389, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
  __pyx_v_dct = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">390</span>: </pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">391</span>:         if name == '__dict__':</pre>
<pre class='cython code score-2 '>  __pyx_t_2 = (<span class='pyx_c_api'>__Pyx_PyString_Equals</span>(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_2 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 391, __pyx_L1_error)</span>
  if (__pyx_t_2) {
/* … */
  }
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">392</span>:             return dct</pre>
<pre class='cython code score-2 '>    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
    <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_dct);
    __pyx_r = __pyx_v_dct;
    goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">393</span>:         # If there's no possible way we can switch, because this</pre>
<pre class="cython line score-0">&#xA0;<span class="">394</span>:         # attribute is *not* found in the class where it might be a</pre>
<pre class="cython line score-0">&#xA0;<span class="">395</span>:         # data descriptor (property), and it *is* in the dict</pre>
<pre class="cython line score-0">&#xA0;<span class="">396</span>:         # then we don't need to swizzle the dict and take the lock.</pre>
<pre class="cython line score-0">&#xA0;<span class="">397</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">398</span>:         # We don't have to worry about people overriding __getattribute__</pre>
<pre class="cython line score-0">&#xA0;<span class="">399</span>:         # because if they did, the dict-swizzling would only last as</pre>
<pre class="cython line score-0">&#xA0;<span class="">400</span>:         # long as we were in here anyway.</pre>
<pre class="cython line score-0">&#xA0;<span class="">401</span>:         # Similarly, a __getattr__ will still be called by _oga() if needed</pre>
<pre class="cython line score-0">&#xA0;<span class="">402</span>:         # if it's not in the dict.</pre>
<pre class="cython line score-0">&#xA0;<span class="">403</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">404</span>:         # Optimization: If we're not subclassed, then</pre>
<pre class="cython line score-0">&#xA0;<span class="">405</span>:         # there can be no descriptors except for methods, which will</pre>
<pre class="cython line score-0">&#xA0;<span class="">406</span>:         # never need to use __dict__.</pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">407</span>:         if self._local_type is local:</pre>
<pre class='cython code score-0 '>  __pyx_t_2 = (__pyx_v_self-&gt;_local_type == __pyx_ptype_6gevent_6_local_local);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {
/* … */
  }
</pre><pre class="cython line score-54" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">408</span>:             return dct[name] if name in dct else object.__getattribute__(self, name)</pre>
<pre class='cython code score-54 '>    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
    if (unlikely(__pyx_v_dct == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
      <span class='error_goto'>__PYX_ERR(0, 408, __pyx_L1_error)</span>
    }
    __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PyDict_ContainsTF</span>(__pyx_v_name, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 408, __pyx_L1_error)</span>
    if ((__pyx_t_1 != 0)) {
      if (unlikely(__pyx_v_dct == Py_None)) {
        <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
        <span class='error_goto'>__PYX_ERR(0, 408, __pyx_L1_error)</span>
      }
      __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_dct, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      __pyx_t_3 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_builtin_object, __pyx_n_s_getattribute);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 408, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_7))) {
        __pyx_t_5 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_7);
        if (likely(__pyx_t_5)) {
          PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_7);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_5);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
          <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_7, function);
          __pyx_t_6 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name};
        __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name};
        __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      } else
      #endif
      {
        __pyx_t_8 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 408, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
        if (__pyx_t_5) {
          <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_5); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
        <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_8, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_name);
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_name);
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_8, 1+__pyx_t_6, __pyx_v_name);
        __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_7, __pyx_t_8, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
      }
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_3 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">409</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">410</span>:         # NOTE: If this is a descriptor, this will invoke its __get__.</pre>
<pre class="cython line score-0">&#xA0;<span class="">411</span>:         # A broken descriptor that doesn't return itself when called with</pre>
<pre class="cython line score-0">&#xA0;<span class="">412</span>:         # a None for the instance argument could mess us up here.</pre>
<pre class="cython line score-0">&#xA0;<span class="">413</span>:         # But this is faster than a loop over mro() checking each class __dict__</pre>
<pre class="cython line score-0">&#xA0;<span class="">414</span>:         # manually.</pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">415</span>:         if name in dct:</pre>
<pre class='cython code score-7 '>  if (unlikely(__pyx_v_dct == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
    <span class='error_goto'>__PYX_ERR(0, 415, __pyx_L1_error)</span>
  }
  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PyDict_ContainsTF</span>(__pyx_v_name, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 415, __pyx_L1_error)</span>
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
</pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">416</span>:             if name not in self._local_type_vars:</pre>
<pre class='cython code score-7 '>    if (unlikely(__pyx_v_self-&gt;_local_type_vars == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
      <span class='error_goto'>__PYX_ERR(0, 416, __pyx_L1_error)</span>
    }
    __pyx_t_2 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_vars, Py_NE)); if (unlikely(__pyx_t_2 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 416, __pyx_L1_error)</span>
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {
/* … */
    }
</pre><pre class="cython line score-0">&#xA0;<span class="">417</span>:                 # If there is a dict value, and nothing in the type,</pre>
<pre class="cython line score-0">&#xA0;<span class="">418</span>:                 # it can't possibly be a descriptor, so it is just returned.</pre>
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">419</span>:                 return dct[name]</pre>
<pre class='cython code score-8 '>      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
      if (unlikely(__pyx_v_dct == Py_None)) {
        <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
        <span class='error_goto'>__PYX_ERR(0, 419, __pyx_L1_error)</span>
      }
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_dct, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 419, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">420</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">421</span>:             # It's in the type *and* in the dict. If the type value is</pre>
<pre class="cython line score-0">&#xA0;<span class="">422</span>:             # a data descriptor (defines __get__ *and* either __set__ or</pre>
<pre class="cython line score-0">&#xA0;<span class="">423</span>:             # __delete__), then the type wins. If it's a non-data descriptor</pre>
<pre class="cython line score-0">&#xA0;<span class="">424</span>:             # (defines just __get__), then the instance wins. If it's not a</pre>
<pre class="cython line score-0">&#xA0;<span class="">425</span>:             # descriptor at all (doesn't have __get__), the instance wins.</pre>
<pre class="cython line score-0">&#xA0;<span class="">426</span>:             # NOTE that the docs for descriptors say that these methods must be</pre>
<pre class="cython line score-0">&#xA0;<span class="">427</span>:             # defined on the *class* of the object in the type.</pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">428</span>:             if name not in self._local_type_get_descriptors:</pre>
<pre class='cython code score-7 '>    if (unlikely(__pyx_v_self-&gt;_local_type_get_descriptors == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
      <span class='error_goto'>__PYX_ERR(0, 428, __pyx_L1_error)</span>
    }
    __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_get_descriptors, Py_NE)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 428, __pyx_L1_error)</span>
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (__pyx_t_2) {
/* … */
    }
</pre><pre class="cython line score-0">&#xA0;<span class="">429</span>:                 # Entirely not a descriptor. Instance wins.</pre>
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">430</span>:                 return dct[name]</pre>
<pre class='cython code score-8 '>      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
      if (unlikely(__pyx_v_dct == Py_None)) {
        <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
        <span class='error_goto'>__PYX_ERR(0, 430, __pyx_L1_error)</span>
      }
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_dct, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
</pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">431</span>:             if name in self._local_type_set_or_del_descriptors:</pre>
<pre class='cython code score-7 '>    if (unlikely(__pyx_v_self-&gt;_local_type_set_or_del_descriptors == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
      <span class='error_goto'>__PYX_ERR(0, 431, __pyx_L1_error)</span>
    }
    __pyx_t_2 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_set_or_del_descriptors, Py_EQ)); if (unlikely(__pyx_t_2 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 431, __pyx_L1_error)</span>
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {
/* … */
    }
</pre><pre class="cython line score-0">&#xA0;<span class="">432</span>:                 # A data descriptor.</pre>
<pre class="cython line score-0">&#xA0;<span class="">433</span>:                 # arbitrary code execution while these run. If they touch self again,</pre>
<pre class="cython line score-0">&#xA0;<span class="">434</span>:                 # they'll call back into us and we'll repeat the dance.</pre>
<pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">435</span>:                 type_attr = getattr(self._local_type, name)</pre>
<pre class='cython code score-4 '>      __pyx_t_3 = ((PyObject *)__pyx_v_self-&gt;_local_type);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      __pyx_t_4 = <span class='pyx_c_api'>__Pyx_GetAttr</span>(__pyx_t_3, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 435, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_type_attr = __pyx_t_4;
      __pyx_t_4 = 0;
</pre><pre class="cython line score-42" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">436</span>:                 return type(type_attr).__get__(type_attr, self, self._local_type)</pre>
<pre class='cython code score-42 '>      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)Py_TYPE(__pyx_v_type_attr)), __pyx_n_s_get);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      __pyx_t_7 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_3))) {
        __pyx_t_7 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_3);
        if (likely(__pyx_t_7)) {
          PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_3);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_7);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
          <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_3)) {
        PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self-&gt;_local_type)};
        __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_3)) {
        PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self-&gt;_local_type)};
        __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      } else
      #endif
      {
        __pyx_t_8 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 436, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
        if (__pyx_t_7) {
          <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_7); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_type_attr);
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_type_attr);
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_8, 0+__pyx_t_6, __pyx_v_type_attr);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
        <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_8, 1+__pyx_t_6, ((PyObject *)__pyx_v_self));
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self-&gt;_local_type));
        <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self-&gt;_local_type));
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_8, 2+__pyx_t_6, ((PyObject *)__pyx_v_self-&gt;_local_type));
        __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_3, __pyx_t_8, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
      }
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">437</span>:             # Last case is a non-data descriptor. Instance wins.</pre>
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">438</span>:             return dct[name]</pre>
<pre class='cython code score-8 '>    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
    if (unlikely(__pyx_v_dct == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
      <span class='error_goto'>__PYX_ERR(0, 438, __pyx_L1_error)</span>
    }
    __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_dct, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">439</span>: </pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">440</span>:         if name in self._local_type_vars:</pre>
<pre class='cython code score-7 '>  if (unlikely(__pyx_v_self-&gt;_local_type_vars == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
    <span class='error_goto'>__PYX_ERR(0, 440, __pyx_L1_error)</span>
  }
  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_vars, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 440, __pyx_L1_error)</span>
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
</pre><pre class="cython line score-0">&#xA0;<span class="">441</span>:             # Not in the dictionary, but is found in the type. It could be</pre>
<pre class="cython line score-0">&#xA0;<span class="">442</span>:             # a non-data descriptor still. Some descriptors, like @staticmethod,</pre>
<pre class="cython line score-0">&#xA0;<span class="">443</span>:             # return objects (functions, in this case), that are *themselves*</pre>
<pre class="cython line score-0">&#xA0;<span class="">444</span>:             # descriptors, which when invoked, again, would do the wrong thing.</pre>
<pre class="cython line score-0">&#xA0;<span class="">445</span>:             # So we can't rely on getattr() on the type for them, we have to</pre>
<pre class="cython line score-0">&#xA0;<span class="">446</span>:             # look through the MRO dicts ourself.</pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">447</span>:             if name not in self._local_type_get_descriptors:</pre>
<pre class='cython code score-7 '>    if (unlikely(__pyx_v_self-&gt;_local_type_get_descriptors == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
      <span class='error_goto'>__PYX_ERR(0, 447, __pyx_L1_error)</span>
    }
    __pyx_t_2 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_get_descriptors, Py_NE)); if (unlikely(__pyx_t_2 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 447, __pyx_L1_error)</span>
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {
/* … */
    }
</pre><pre class="cython line score-0">&#xA0;<span class="">448</span>:                 # Not a descriptor, can't execute code. So all we need is</pre>
<pre class="cython line score-0">&#xA0;<span class="">449</span>:                 # the return value of getattr() on our type.</pre>
<pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">450</span>:                 return getattr(self._local_type, name)</pre>
<pre class='cython code score-5 '>      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
      __pyx_t_4 = ((PyObject *)__pyx_v_self-&gt;_local_type);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_GetAttr</span>(__pyx_t_4, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">451</span>: </pre>
<pre class="cython line score-62" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">452</span>:             for base in self._local_type.mro():</pre>
<pre class='cython code score-62 '>    __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_self-&gt;_local_type), __pyx_n_s_mro);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_4))) {
      __pyx_t_8 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_4);
      if (likely(__pyx_t_8)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_4);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_8);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_8) ? <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_4, __pyx_t_8) : <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_t_4);
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_3)) <span class='error_goto'>__PYX_ERR(0, 452, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
    if (likely(<span class='py_c_api'>PyList_CheckExact</span>(__pyx_t_3)) || <span class='py_c_api'>PyTuple_CheckExact</span>(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_4 = <span class='py_c_api'>PyObject_GetIter</span>(__pyx_t_3);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      __pyx_t_10 = Py_TYPE(__pyx_t_4)-&gt;tp_iternext;<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 452, __pyx_L1_error)</span>
    }
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(<span class='py_c_api'>PyList_CheckExact</span>(__pyx_t_4))) {
          if (__pyx_t_9 &gt;= <span class='py_macro_api'>PyList_GET_SIZE</span>(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS &amp;&amp; !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = <span class='py_macro_api'>PyList_GET_ITEM</span>(__pyx_t_4, __pyx_t_9); <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3); __pyx_t_9++; if (unlikely(0 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 452, __pyx_L1_error)</span>
          #else
          __pyx_t_3 = <span class='py_macro_api'>PySequence_ITEM</span>(__pyx_t_4, __pyx_t_9); __pyx_t_9++;<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error)</span>
          <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_9 &gt;= <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS &amp;&amp; !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_t_4, __pyx_t_9); <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3); __pyx_t_9++; if (unlikely(0 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 452, __pyx_L1_error)</span>
          #else
          __pyx_t_3 = <span class='py_macro_api'>PySequence_ITEM</span>(__pyx_t_4, __pyx_t_9); __pyx_t_9++;<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error)</span>
          <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_10(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = <span class='py_c_api'>PyErr_Occurred</span>();
          if (exc_type) {
            if (likely(<span class='pyx_c_api'>__Pyx_PyErr_GivenExceptionMatches</span>(exc_type, PyExc_StopIteration))) <span class='py_c_api'>PyErr_Clear</span>();
            else <span class='error_goto'>__PYX_ERR(0, 452, __pyx_L1_error)</span>
          }
          break;
        }
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      }
      <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_base, __pyx_t_3);
      __pyx_t_3 = 0;
/* … */
    }
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
</pre><pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">453</span>:                 bd = base.__dict__</pre>
<pre class='cython code score-3 '>      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_base, __pyx_n_s_dict);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_bd, __pyx_t_3);
      __pyx_t_3 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">454</span>:                 if name in bd:</pre>
<pre class='cython code score-2 '>      __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PySequence_ContainsTF</span>(__pyx_v_name, __pyx_v_bd, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 454, __pyx_L1_error)</span>
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
/* … */
      }
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">455</span>:                     attr_on_type = bd[name]</pre>
<pre class='cython code score-2 '>        __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetItem</span>(__pyx_v_bd, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
        __pyx_v_attr_on_type = __pyx_t_3;
        __pyx_t_3 = 0;
</pre><pre class="cython line score-41" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">456</span>:                     result = type(attr_on_type).__get__(attr_on_type, self, self._local_type)</pre>
<pre class='cython code score-41 '>        __pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)Py_TYPE(__pyx_v_attr_on_type)), __pyx_n_s_get);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 456, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
        __pyx_t_7 = NULL;
        __pyx_t_6 = 0;
        if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_8))) {
          __pyx_t_7 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_8);
          if (likely(__pyx_t_7)) {
            PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_8);
            <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_7);
            <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
            <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_8, function);
            __pyx_t_6 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_8)) {
          PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_attr_on_type, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self-&gt;_local_type)};
          __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)</span>
          <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
          <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_8)) {
          PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_attr_on_type, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self-&gt;_local_type)};
          __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)</span>
          <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
          <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
        } else
        #endif
        {
          __pyx_t_5 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 456, __pyx_L1_error)</span>
          <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
          if (__pyx_t_7) {
            <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_7); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
          }
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_attr_on_type);
          <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_attr_on_type);
          <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0+__pyx_t_6, __pyx_v_attr_on_type);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
          <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
          <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 1+__pyx_t_6, ((PyObject *)__pyx_v_self));
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self-&gt;_local_type));
          <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self-&gt;_local_type));
          <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 2+__pyx_t_6, ((PyObject *)__pyx_v_self-&gt;_local_type));
          __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_8, __pyx_t_5, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)</span>
          <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
          <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
        }
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_result = __pyx_t_3;
        __pyx_t_3 = 0;
</pre><pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">457</span>:                     return result</pre>
<pre class='cython code score-3 '>        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_result);
        __pyx_r = __pyx_v_result;
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">458</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">459</span>:         # It wasn't in the dict and it wasn't in the type.</pre>
<pre class="cython line score-0">&#xA0;<span class="">460</span>:         # So the next step is to invoke type(self)__getattr__, if it</pre>
<pre class="cython line score-0">&#xA0;<span class="">461</span>:         # exists, otherwise raise an AttributeError.</pre>
<pre class="cython line score-0">&#xA0;<span class="">462</span>:         # we will invoke type(self).__getattr__ or raise an attribute error.</pre>
<pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">463</span>:         if hasattr(self._local_type, '__getattr__'):</pre>
<pre class='cython code score-4 '>  __pyx_t_4 = ((PyObject *)__pyx_v_self-&gt;_local_type);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_HasAttr</span>(__pyx_t_4, __pyx_n_s_getattr);<span class='error_goto'> if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 463, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {
/* … */
  }
</pre><pre class="cython line score-40" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">464</span>:             return self._local_type.__getattr__(self, name)</pre>
<pre class='cython code score-40 '>    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
    __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_self-&gt;_local_type), __pyx_n_s_getattr);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    __pyx_t_8 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_3))) {
      __pyx_t_8 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_3);
      if (likely(__pyx_t_8)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_3);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_8);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_self), __pyx_v_name};
      __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_self), __pyx_v_name};
      __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
    } else
    #endif
    {
      __pyx_t_5 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 464, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
      if (__pyx_t_8) {
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_8); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
      <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_name);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_name);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 1+__pyx_t_6, __pyx_v_name);
      __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_3, __pyx_t_5, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
    }
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">465</span>:         raise AttributeError("%r object has no attribute '%s'"</pre>
<pre class='cython code score-6 '>  __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_AttributeError, __pyx_t_4);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
  <span class='pyx_c_api'>__Pyx_Raise</span>(__pyx_t_3, 0, 0, 0);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  <span class='error_goto'>__PYX_ERR(0, 465, __pyx_L1_error)</span>
</pre><pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">466</span>:                              % (self._local_type.__name__, name))</pre>
<pre class='cython code score-13 '>  __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_self-&gt;_local_type), __pyx_n_s_name);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 466, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
  __pyx_t_3 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 466, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 0, __pyx_t_4);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_name);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_name);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_3, 1, __pyx_v_name);
  __pyx_t_4 = 0;
  __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyString_Format</span>(__pyx_kp_s_r_object_has_no_attribute_s, __pyx_t_3);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 466, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">467</span>: </pre>
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">468</span>:     def __setattr__(self, name, value):</pre>
<pre class='cython code score-8 '>/* Python wrapper */
static int __pyx_pw_6gevent_6_local_5local_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6gevent_6_local_5local_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__setattr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6gevent_6_local_5local_4__setattr__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_value));

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static int __pyx_pf_6gevent_6_local_5local_4__setattr__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_dct = NULL;
  PyObject *__pyx_v_type_attr = NULL;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__setattr__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.local.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dct);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_type_attr);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">469</span>:         if name == '__dict__':</pre>
<pre class='cython code score-2 '>  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PyString_Equals</span>(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 469, __pyx_L1_error)</span>
  if (unlikely(__pyx_t_1)) {
/* … */
  }
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">470</span>:             raise AttributeError(</pre>
<pre class='cython code score-6 '>    __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_AttributeError, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 470, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
    <span class='pyx_c_api'>__Pyx_Raise</span>(__pyx_t_3, 0, 0, 0);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    <span class='error_goto'>__PYX_ERR(0, 470, __pyx_L1_error)</span>
</pre><pre class="cython line score-0">&#xA0;<span class="">471</span>:                 "%r object attribute '__dict__' is read-only"</pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">472</span>:                 % type(self))</pre>
<pre class='cython code score-2 '>    __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyString_FormatSafe</span>(__pyx_kp_s_r_object_attribute___dict___is, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
</pre><pre class="cython line score-0">&#xA0;<span class="">473</span>: </pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">474</span>:         if name in _local_attrs:</pre>
<pre class='cython code score-7 '>  if (unlikely(__pyx_v_6gevent_6_local__local_attrs == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
    <span class='error_goto'>__PYX_ERR(0, 474, __pyx_L1_error)</span>
  }
  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_6gevent_6_local__local_attrs, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 474, __pyx_L1_error)</span>
  __pyx_t_4 = (__pyx_t_1 != 0);
  if (__pyx_t_4) {
/* … */
  }
</pre><pre class="cython line score-42" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">475</span>:             object.__setattr__(self, name, value)</pre>
<pre class='cython code score-42 '>    __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_builtin_object, __pyx_n_s_setattr);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
      __pyx_t_5 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_5);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
        <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name, __pyx_v_value};
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name, __pyx_v_value};
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error)</span>
      <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 475, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
      if (__pyx_t_5) {
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_5); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
      <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_name);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_name);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 1+__pyx_t_6, __pyx_v_name);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_value);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_value);
      <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 2+__pyx_t_6, __pyx_v_value);
      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
    }
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">476</span>:             return</pre>
<pre class='cython code score-0 '>    __pyx_r = 0;
    goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">477</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">478</span>:         dct = _local_get_dict(self)</pre>
<pre class='cython code score-0 '>  __pyx_t_3 = __pyx_f_6gevent_6_local__local_get_dict(__pyx_v_self);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 478, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
  __pyx_v_dct = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">479</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">480</span>:         if self._local_type is local:</pre>
<pre class='cython code score-0 '>  __pyx_t_4 = (__pyx_v_self-&gt;_local_type == __pyx_ptype_6gevent_6_local_local);
  __pyx_t_1 = (__pyx_t_4 != 0);
  if (__pyx_t_1) {
/* … */
  }
</pre><pre class="cython line score-0">&#xA0;<span class="">481</span>:             # Optimization: If we're not subclassed, we can't</pre>
<pre class="cython line score-0">&#xA0;<span class="">482</span>:             # have data descriptors, so this goes right in the dict.</pre>
<pre class="cython line score-10" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">483</span>:             dct[name] = value</pre>
<pre class='cython code score-10 '>    if (unlikely(__pyx_v_dct == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
      <span class='error_goto'>__PYX_ERR(0, 483, __pyx_L1_error)</span>
    }
    if (unlikely(<span class='py_c_api'>PyDict_SetItem</span>(__pyx_v_dct, __pyx_v_name, __pyx_v_value) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 483, __pyx_L1_error)</span>
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">484</span>:             return</pre>
<pre class='cython code score-0 '>    __pyx_r = 0;
    goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">485</span>: </pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">486</span>:         if name in self._local_type_vars:</pre>
<pre class='cython code score-7 '>  if (unlikely(__pyx_v_self-&gt;_local_type_vars == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
    <span class='error_goto'>__PYX_ERR(0, 486, __pyx_L1_error)</span>
  }
  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_vars, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 486, __pyx_L1_error)</span>
  __pyx_t_4 = (__pyx_t_1 != 0);
  if (__pyx_t_4) {
/* … */
  }
</pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">487</span>:             if name in self._local_type_set_descriptors:</pre>
<pre class='cython code score-7 '>    if (unlikely(__pyx_v_self-&gt;_local_type_set_descriptors == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
      <span class='error_goto'>__PYX_ERR(0, 487, __pyx_L1_error)</span>
    }
    __pyx_t_4 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_set_descriptors, Py_EQ)); if (unlikely(__pyx_t_4 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 487, __pyx_L1_error)</span>
    __pyx_t_1 = (__pyx_t_4 != 0);
    if (__pyx_t_1) {
/* … */
    }
</pre><pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">488</span>:                 type_attr = getattr(self._local_type, name, _marker)</pre>
<pre class='cython code score-4 '>      __pyx_t_3 = ((PyObject *)__pyx_v_self-&gt;_local_type);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      __pyx_t_2 = __pyx_v_6gevent_6_local__marker;
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2);
      __pyx_t_7 = __Pyx_GetAttr3(__pyx_t_3, __pyx_v_name, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 488, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_type_attr = __pyx_t_7;
      __pyx_t_7 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">489</span>:                 # A data descriptor, like a property or a slot.</pre>
<pre class="cython line score-42" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">490</span>:                 type(type_attr).__set__(type_attr, self, value)</pre>
<pre class='cython code score-42 '>      __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)Py_TYPE(__pyx_v_type_attr)), __pyx_n_s_set);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 490, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      __pyx_t_3 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
        __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
          <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
          __pyx_t_6 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_2)) {
        PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), __pyx_v_value};
        __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_2)) {
        PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), __pyx_v_value};
        __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
      } else
      #endif
      {
        __pyx_t_5 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 490, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
        if (__pyx_t_3) {
          <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_3); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
        }
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_type_attr);
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_type_attr);
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 0+__pyx_t_6, __pyx_v_type_attr);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
        <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 1+__pyx_t_6, ((PyObject *)__pyx_v_self));
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_value);
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_value);
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_5, 2+__pyx_t_6, __pyx_v_value);
        __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_t_5, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
      }
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">491</span>:                 return</pre>
<pre class='cython code score-0 '>      __pyx_r = 0;
      goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">492</span>:         # Otherwise it goes directly in the dict</pre>
<pre class="cython line score-10" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">493</span>:         dct[name] = value</pre>
<pre class='cython code score-10 '>  if (unlikely(__pyx_v_dct == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
    <span class='error_goto'>__PYX_ERR(0, 493, __pyx_L1_error)</span>
  }
  if (unlikely(<span class='py_c_api'>PyDict_SetItem</span>(__pyx_v_dct, __pyx_v_name, __pyx_v_value) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 493, __pyx_L1_error)</span>
</pre><pre class="cython line score-0">&#xA0;<span class="">494</span>: </pre>
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">495</span>:     def __delattr__(self, name):</pre>
<pre class='cython code score-8 '>/* Python wrapper */
static int __pyx_pw_6gevent_6_local_5local_7__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static int __pyx_pw_6gevent_6_local_5local_7__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__delattr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6gevent_6_local_5local_6__delattr__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), ((PyObject *)__pyx_v_name));

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static int __pyx_pf_6gevent_6_local_5local_6__delattr__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_type_attr = NULL;
  PyObject *__pyx_v_dct = NULL;
  int __pyx_r;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__delattr__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.local.__delattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_type_attr);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dct);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">496</span>:         if name == '__dict__':</pre>
<pre class='cython code score-2 '>  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PyString_Equals</span>(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 496, __pyx_L1_error)</span>
  if (unlikely(__pyx_t_1)) {
/* … */
  }
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">497</span>:             raise AttributeError(</pre>
<pre class='cython code score-6 '>    __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_AttributeError, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 497, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
    <span class='pyx_c_api'>__Pyx_Raise</span>(__pyx_t_3, 0, 0, 0);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    <span class='error_goto'>__PYX_ERR(0, 497, __pyx_L1_error)</span>
</pre><pre class="cython line score-0">&#xA0;<span class="">498</span>:                 "%r object attribute '__dict__' is read-only"</pre>
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">499</span>:                 % self.__class__.__name__)</pre>
<pre class='cython code score-8 '>    __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_self), __pyx_n_s_class);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_2, __pyx_n_s_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyString_FormatSafe</span>(__pyx_kp_s_r_object_attribute___dict___is, __pyx_t_3);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">500</span>: </pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">501</span>:         if name in self._local_type_vars:</pre>
<pre class='cython code score-7 '>  if (unlikely(__pyx_v_self-&gt;_local_type_vars == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
    <span class='error_goto'>__PYX_ERR(0, 501, __pyx_L1_error)</span>
  }
  __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_vars, Py_EQ)); if (unlikely(__pyx_t_1 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 501, __pyx_L1_error)</span>
  __pyx_t_4 = (__pyx_t_1 != 0);
  if (__pyx_t_4) {
/* … */
  }
</pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">502</span>:             if name in self._local_type_del_descriptors:</pre>
<pre class='cython code score-7 '>    if (unlikely(__pyx_v_self-&gt;_local_type_del_descriptors == Py_None)) {
      <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
      <span class='error_goto'>__PYX_ERR(0, 502, __pyx_L1_error)</span>
    }
    __pyx_t_4 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_name, __pyx_v_self-&gt;_local_type_del_descriptors, Py_EQ)); if (unlikely(__pyx_t_4 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 502, __pyx_L1_error)</span>
    __pyx_t_1 = (__pyx_t_4 != 0);
    if (__pyx_t_1) {
/* … */
    }
</pre><pre class="cython line score-0">&#xA0;<span class="">503</span>:                 # A data descriptor, like a property or a slot.</pre>
<pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">504</span>:                 type_attr = getattr(self._local_type, name, _marker)</pre>
<pre class='cython code score-4 '>      __pyx_t_3 = ((PyObject *)__pyx_v_self-&gt;_local_type);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      __pyx_t_2 = __pyx_v_6gevent_6_local__marker;
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2);
      __pyx_t_5 = __Pyx_GetAttr3(__pyx_t_3, __pyx_v_name, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_type_attr = __pyx_t_5;
      __pyx_t_5 = 0;
</pre><pre class="cython line score-40" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">505</span>:                 type(type_attr).__delete__(type_attr, self)</pre>
<pre class='cython code score-40 '>      __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)Py_TYPE(__pyx_v_type_attr)), __pyx_n_s_delete);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      __pyx_t_3 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
        __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
          <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
          <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
          __pyx_t_6 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self)};
        __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self)};
        __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)</span>
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
      } else
      #endif
      {
        __pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 505, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
        if (__pyx_t_3) {
          <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_3); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
        }
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_type_attr);
        <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_type_attr);
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0+__pyx_t_6, __pyx_v_type_attr);
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_self));
        <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_self));
        <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)__pyx_v_self));
        __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
      }
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">506</span>:                 return</pre>
<pre class='cython code score-0 '>      __pyx_r = 0;
      goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">507</span>:         # Otherwise it goes directly in the dict</pre>
<pre class="cython line score-0">&#xA0;<span class="">508</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">509</span>:         # Begin inlined function _get_dict()</pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">510</span>:         dct = _local_get_dict(self)</pre>
<pre class='cython code score-0 '>  __pyx_t_5 = __pyx_f_6gevent_6_local__local_get_dict(__pyx_v_self);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 510, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
  __pyx_v_dct = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">511</span>: </pre>
<pre class="cython line score-9" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">512</span>:         try:</pre>
<pre class='cython code score-9 '>  {
    /*try:*/ {
/* … */
    }
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
    goto __pyx_L11_try_end;
    __pyx_L6_error:;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
/* … */
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_8);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_9);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_10);
    <span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    goto __pyx_L1_error;
    __pyx_L11_try_end:;
  }
</pre><pre class="cython line score-10" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">513</span>:             del dct[name]</pre>
<pre class='cython code score-10 '>      if (unlikely(__pyx_v_dct == Py_None)) {
        <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
        <span class='error_goto'>__PYX_ERR(0, 513, __pyx_L6_error)</span>
      }
      if (unlikely(<span class='py_c_api'>PyDict_DelItem</span>(__pyx_v_dct, __pyx_v_name) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 513, __pyx_L6_error)</span>
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">514</span>:         except KeyError:</pre>
<pre class='cython code score-6 '>    __pyx_t_6 = <span class='pyx_c_api'>__Pyx_PyErr_ExceptionMatches</span>(__pyx_builtin_KeyError);
    if (__pyx_t_6) {
      <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.local.__delattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (<span class='pyx_c_api'>__Pyx_GetException</span>(&amp;__pyx_t_5, &amp;__pyx_t_2, &amp;__pyx_t_7) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 514, __pyx_L8_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">515</span>:             raise AttributeError(name)</pre>
<pre class='cython code score-5 '>      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_AttributeError, __pyx_v_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 515, __pyx_L8_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      <span class='pyx_c_api'>__Pyx_Raise</span>(__pyx_t_3, 0, 0, 0);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='error_goto'>__PYX_ERR(0, 515, __pyx_L8_except_error)</span>
    }
    goto __pyx_L8_except_error;
    __pyx_L8_except_error:;
</pre><pre class="cython line score-0">&#xA0;<span class="">516</span>: </pre>
<pre class="cython line score-70" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">517</span>:     def __copy__(self):</pre>
<pre class='cython code score-70 '>static PyObject *__pyx_pw_6gevent_6_local_5local_9__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static struct __pyx_obj_6gevent_6_local_local *__pyx_f_6gevent_6_local_5local___copy__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, int __pyx_skip_dispatch) {
  struct __pyx_obj_6gevent_6_local_local *__pyx_v_instance = 0;
  PyObject *__pyx_v_duplicate = 0;
  PyObject *__pyx_v_dct = 0;
  struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0;
  struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl = NULL;
  PyTypeObject *__pyx_v_cls = NULL;
  struct __pyx_obj_6gevent_6_local_local *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__copy__", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_flags &amp; (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS &amp;&amp; CYTHON_USE_PYTYPE_LOOKUP
    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dict &amp;&amp; tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dict) &amp;&amp; (!Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_<span class='py_c_api'>PyObject_GetDictPtr</span>(((PyObject *)__pyx_v_self))))));
    else {
      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dict) : 0;
      #endif
      __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_self), __pyx_n_s_copy);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6gevent_6_local_5local_9__copy__)) {
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(((PyObject *)__pyx_r));
        <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_3))) {
          __pyx_t_4 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_3);
            <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_4);
            <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
            <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_3, __pyx_t_4) : <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_t_3);
        <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) <span class='error_goto'>__PYX_ERR(0, 517, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
        if (!(likely(((__pyx_t_2) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_t_2, __pyx_ptype_6gevent_6_local_local))))) <span class='error_goto'>__PYX_ERR(0, 517, __pyx_L1_error)</span>
        __pyx_r = ((struct __pyx_obj_6gevent_6_local_local *)__pyx_t_2);
        __pyx_t_2 = 0;
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS &amp;&amp; CYTHON_USE_PYTYPE_LOOKUP
      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dict) : 0;
      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))-&gt;tp_dictoffset) ? __PYX_GET_DICT_VERSION(_<span class='py_c_api'>PyObject_GetDictPtr</span>(((PyObject *)__pyx_v_self))) : 0;
      if (unlikely(type_dict_guard != tp_dict_version)) {
        tp_dict_version = obj_dict_version = 0;
      }
      #endif
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS &amp;&amp; CYTHON_USE_PYTYPE_LOOKUP
    }
    #endif
  }
/* … */
  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.local.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_instance);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_duplicate);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dct);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_entry);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_impl);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_cls);
  <span class='refnanny'>__Pyx_XGIVEREF</span>((PyObject *)__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6gevent_6_local_5local_9__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_6gevent_6_local_5local_8__copy__[] = "local.__copy__(self) -&gt; local";
static PyMethodDef __pyx_mdef_6gevent_6_local_5local_9__copy__ = {"__copy__", (PyCFunction)__pyx_pw_6gevent_6_local_5local_9__copy__, METH_NOARGS, __pyx_doc_6gevent_6_local_5local_8__copy__};
static PyObject *__pyx_pw_6gevent_6_local_5local_9__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__copy__ (wrapper)", 0);
  __pyx_r = __pyx_pf_6gevent_6_local_5local_8__copy__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self));

  /* function exit code */
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static PyObject *__pyx_pf_6gevent_6_local_5local_8__copy__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__copy__", 0);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_5local___copy__(__pyx_v_self, 1));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.local.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
/* … */
  __pyx_tuple__8 = <span class='py_c_api'>PyTuple_Pack</span>(1, __pyx_n_s_self);<span class='error_goto'> if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 517, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__8);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__8);
/* … */
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_CyFunction_NewEx</span>(&amp;__pyx_mdef_6gevent_6_local_5local_9__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_local___copy, NULL, __pyx_n_s_gevent__local, __pyx_d, ((PyObject *)__pyx_codeobj__9));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  if (<span class='py_c_api'>PyDict_SetItem</span>((PyObject *)__pyx_ptype_6gevent_6_local_local-&gt;tp_dict, __pyx_n_s_copy, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 517, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_6gevent_6_local_local);
  __pyx_codeobj__9 = (PyObject*)<span class='pyx_c_api'>__Pyx_PyCode_New</span>(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_local_py, __pyx_n_s_copy, 517, __pyx_empty_bytes);<span class='error_goto'> if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 517, __pyx_L1_error)</span>
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">518</span>:         impl = self._local__impl</pre>
<pre class='cython code score-1 '>  __pyx_t_1 = ((PyObject *)__pyx_v_self-&gt;_local__impl);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  __pyx_v_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">519</span>:         entry = impl.dicts[id(getcurrent())]  # pylint:disable=undefined-variable</pre>
<pre class='cython code score-13 '>  if (unlikely(__pyx_v_impl-&gt;dicts == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
    <span class='error_goto'>__PYX_ERR(0, 519, __pyx_L1_error)</span>
  }
  __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent());<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_id, __pyx_t_1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 519, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_impl-&gt;dicts, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) <span class='error_goto'>__PYX_ERR(0, 519, __pyx_L1_error)</span>
  __pyx_v_entry = ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">520</span>: </pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">521</span>:         dct = entry.localdict</pre>
<pre class='cython code score-1 '>  __pyx_t_1 = __pyx_v_entry-&gt;localdict;
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  __pyx_v_dct = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-25" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">522</span>:         duplicate = copy(dct)</pre>
<pre class='cython code score-25 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_6gevent_6_local_copy);
  __pyx_t_2 = __pyx_v_6gevent_6_local_copy; __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
    __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
      <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_dct) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_2, __pyx_v_dct);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 522, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(<span class='py_c_api'>PyDict_CheckExact</span>(__pyx_t_1))||((__pyx_t_1) == Py_None)||(<span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)-&gt;tp_name), 0))) <span class='error_goto'>__PYX_ERR(0, 522, __pyx_L1_error)</span>
  __pyx_v_duplicate = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">523</span>: </pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">524</span>:         cls = type(self)</pre>
<pre class='cython code score-1 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __pyx_v_cls = ((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
</pre><pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">525</span>:         instance = cls(*impl.localargs, **impl.localkwargs)</pre>
<pre class='cython code score-14 '>  if (unlikely(__pyx_v_impl-&gt;localargs == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
    <span class='error_goto'>__PYX_ERR(0, 525, __pyx_L1_error)</span>
  }
  if (unlikely(__pyx_v_impl-&gt;localkwargs == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
    <span class='error_goto'>__PYX_ERR(0, 525, __pyx_L1_error)</span>
  }
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(((PyObject *)__pyx_v_cls), __pyx_v_impl-&gt;localargs, __pyx_v_impl-&gt;localkwargs);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_t_1, __pyx_ptype_6gevent_6_local_local))))) <span class='error_goto'>__PYX_ERR(0, 525, __pyx_L1_error)</span>
  __pyx_v_instance = ((struct __pyx_obj_6gevent_6_local_local *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">526</span>:         _local__copy_dict_from(instance, impl, duplicate)</pre>
<pre class='cython code score-1 '>  __pyx_t_1 = __pyx_f_6gevent_6_local__local__copy_dict_from(__pyx_v_instance, __pyx_v_impl, __pyx_v_duplicate);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">527</span>:         return instance</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(((PyObject *)__pyx_r));
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_instance));
  __pyx_r = __pyx_v_instance;
  goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">528</span>: </pre>
<pre class="cython line score-9" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">529</span>: def _local__copy_dict_from(self, impl, duplicate):</pre>
<pre class='cython code score-9 '>static PyObject *__pyx_f_6gevent_6_local__local__copy_dict_from(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl, PyObject *__pyx_v_duplicate) {
  struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0;
  PyGreenlet *__pyx_v_current = NULL;
  PyObject *__pyx_v_currentId = NULL;
  struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_new_impl = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("_local__copy_dict_from", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; <span class='pyx_macro_api'>__Pyx_INCREF</span>(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local__copy_dict_from", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_entry);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_current);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_currentId);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_new_impl);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">530</span>:     current = getcurrent() # pylint:disable=undefined-variable</pre>
<pre class='cython code score-0 '>  __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent());<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_current = ((PyGreenlet *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">531</span>:     currentId = id(current)</pre>
<pre class='cython code score-2 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_id, ((PyObject *)__pyx_v_current));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_currentId = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">532</span>:     new_impl = self._local__impl</pre>
<pre class='cython code score-1 '>  __pyx_t_1 = ((PyObject *)__pyx_v_self-&gt;_local__impl);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
  __pyx_v_new_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">533</span>:     assert new_impl is not impl</pre>
<pre class='cython code score-5 '>  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_2 = (__pyx_v_new_impl != __pyx_v_impl);
    if (unlikely(!(__pyx_t_2 != 0))) {
      <span class='py_c_api'>PyErr_SetNone</span>(PyExc_AssertionError);
      <span class='error_goto'>__PYX_ERR(0, 533, __pyx_L1_error)</span>
    }
  }
  #endif
</pre><pre class="cython line score-9" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">534</span>:     entry = new_impl.dicts[currentId]</pre>
<pre class='cython code score-9 '>  if (unlikely(__pyx_v_new_impl-&gt;dicts == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
    <span class='error_goto'>__PYX_ERR(0, 534, __pyx_L1_error)</span>
  }
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_new_impl-&gt;dicts, __pyx_v_currentId);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(<span class='pyx_c_api'>__Pyx_TypeTest</span>(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) <span class='error_goto'>__PYX_ERR(0, 534, __pyx_L1_error)</span>
  __pyx_v_entry = ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-23" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">535</span>:     new_impl.dicts[currentId] = _localimpl_dict_entry(entry.wrgreenlet, duplicate)</pre>
<pre class='cython code score-23 '>  __pyx_t_1 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_entry-&gt;wrgreenlet);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_entry-&gt;wrgreenlet);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 0, __pyx_v_entry-&gt;wrgreenlet);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_duplicate);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_duplicate);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 1, __pyx_v_duplicate);
  __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(((PyObject *)__pyx_ptype_6gevent_6_local__localimpl_dict_entry), __pyx_t_1, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 535, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(__pyx_v_new_impl-&gt;dicts == Py_None)) {
    <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
    <span class='error_goto'>__PYX_ERR(0, 535, __pyx_L1_error)</span>
  }
  if (unlikely(<span class='py_c_api'>PyDict_SetItem</span>(__pyx_v_new_impl-&gt;dicts, __pyx_v_currentId, __pyx_t_3) &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 535, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">536</span>: </pre>
<pre class="cython line score-16" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">537</span>: def _local_find_descriptors(self):</pre>
<pre class='cython code score-16 '>static PyObject *__pyx_f_6gevent_6_local__local_find_descriptors(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self) {
  PyObject *__pyx_v_dels = 0;
  PyObject *__pyx_v_sets = 0;
  PyTypeObject *__pyx_v_type_attr = 0;
  PyObject *__pyx_v_mro = 0;
  PyObject *__pyx_v_gets = 0;
  PyObject *__pyx_v_set_or_del = 0;
  PyTypeObject *__pyx_v_type_self = 0;
  PyObject *__pyx_v_attr_name = NULL;
  PyObject *__pyx_v_base = NULL;
  PyObject *__pyx_v_bd = NULL;
  PyObject *__pyx_v_attr = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("_local_find_descriptors", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local._local_find_descriptors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_dels);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_sets);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_type_attr);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_mro);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_gets);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_set_or_del);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_type_self);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_attr_name);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_base);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_bd);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_attr);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">538</span>:     type_self = type(self)</pre>
<pre class='cython code score-1 '>  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __pyx_v_type_self = ((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">539</span>:     gets = set()</pre>
<pre class='cython code score-5 '>  __pyx_t_1 = <span class='py_c_api'>PySet_New</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_gets = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">540</span>:     dels = set()</pre>
<pre class='cython code score-5 '>  __pyx_t_1 = <span class='py_c_api'>PySet_New</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_dels = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">541</span>:     set_or_del = set()</pre>
<pre class='cython code score-5 '>  __pyx_t_1 = <span class='py_c_api'>PySet_New</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_set_or_del = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">542</span>:     sets = set()</pre>
<pre class='cython code score-5 '>  __pyx_t_1 = <span class='py_c_api'>PySet_New</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_v_sets = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
</pre><pre class="cython line score-24" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">543</span>:     mro = list(type_self.mro())</pre>
<pre class='cython code score-24 '>  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(((PyObject *)__pyx_v_type_self), __pyx_n_s_mro);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
    __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
      <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_2, __pyx_t_3) : <span class='pyx_c_api'>__Pyx_PyObject_CallNoArg</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 543, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = <span class='py_c_api'>PySequence_List</span>(__pyx_t_1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_mro = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">544</span>: </pre>
<pre class="cython line score-49" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">545</span>:     for attr_name in dir(type_self):</pre>
<pre class='cython code score-49 '>  __pyx_t_2 = <span class='py_c_api'>PyObject_Dir</span>(((PyObject *)__pyx_v_type_self));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  if (likely(<span class='py_c_api'>PyList_CheckExact</span>(__pyx_t_2)) || <span class='py_c_api'>PyTuple_CheckExact</span>(__pyx_t_2)) {
    __pyx_t_1 = __pyx_t_2; <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_1 = <span class='py_c_api'>PyObject_GetIter</span>(__pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)</span>
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
    __pyx_t_5 = Py_TYPE(__pyx_t_1)-&gt;tp_iternext;<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 545, __pyx_L1_error)</span>
  }
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(<span class='py_c_api'>PyList_CheckExact</span>(__pyx_t_1))) {
        if (__pyx_t_4 &gt;= <span class='py_macro_api'>PyList_GET_SIZE</span>(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS &amp;&amp; !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = <span class='py_macro_api'>PyList_GET_ITEM</span>(__pyx_t_1, __pyx_t_4); <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2); __pyx_t_4++; if (unlikely(0 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 545, __pyx_L1_error)</span>
        #else
        __pyx_t_2 = <span class='py_macro_api'>PySequence_ITEM</span>(__pyx_t_1, __pyx_t_4); __pyx_t_4++;<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_4 &gt;= <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS &amp;&amp; !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_t_1, __pyx_t_4); <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2); __pyx_t_4++; if (unlikely(0 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 545, __pyx_L1_error)</span>
        #else
        __pyx_t_2 = <span class='py_macro_api'>PySequence_ITEM</span>(__pyx_t_1, __pyx_t_4); __pyx_t_4++;<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_1);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = <span class='py_c_api'>PyErr_Occurred</span>();
        if (exc_type) {
          if (likely(<span class='pyx_c_api'>__Pyx_PyErr_GivenExceptionMatches</span>(exc_type, PyExc_StopIteration))) <span class='py_c_api'>PyErr_Clear</span>();
          else <span class='error_goto'>__PYX_ERR(0, 545, __pyx_L1_error)</span>
        }
        break;
      }
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
    }
    <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_attr_name, __pyx_t_2);
    __pyx_t_2 = 0;
/* … */
  }
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">546</span>:         # Conventionally, descriptors when called on a class</pre>
<pre class="cython line score-0">&#xA0;<span class="">547</span>:         # return themself, but not all do. Notable exceptions are</pre>
<pre class="cython line score-0">&#xA0;<span class="">548</span>:         # in the zope.interface package, where things like __provides__</pre>
<pre class="cython line score-0">&#xA0;<span class="">549</span>:         # return other class attributes. So we can't use getattr, and instead</pre>
<pre class="cython line score-0">&#xA0;<span class="">550</span>:         # walk up the dicts</pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">551</span>:         for base in mro:</pre>
<pre class='cython code score-7 '>    __pyx_t_2 = __pyx_v_mro; <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2); __pyx_t_6 = 0;
    for (;;) {
      if (__pyx_t_6 &gt;= <span class='py_macro_api'>PyList_GET_SIZE</span>(__pyx_t_2)) break;
      #if CYTHON_ASSUME_SAFE_MACROS &amp;&amp; !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_3 = <span class='py_macro_api'>PyList_GET_ITEM</span>(__pyx_t_2, __pyx_t_6); <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3); __pyx_t_6++; if (unlikely(0 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 551, __pyx_L1_error)</span>
      #else
      __pyx_t_3 = <span class='py_macro_api'>PySequence_ITEM</span>(__pyx_t_2, __pyx_t_6); __pyx_t_6++;<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      #endif
      <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_base, __pyx_t_3);
      __pyx_t_3 = 0;
/* … */
    }
    /*else*/ {
/* … */
    __pyx_L6_break:;
    <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">552</span>:             bd = base.__dict__</pre>
<pre class='cython code score-3 '>      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_base, __pyx_n_s_dict);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 552, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_bd, __pyx_t_3);
      __pyx_t_3 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">553</span>:             if attr_name in bd:</pre>
<pre class='cython code score-2 '>      __pyx_t_7 = (<span class='pyx_c_api'>__Pyx_PySequence_ContainsTF</span>(__pyx_v_attr_name, __pyx_v_bd, Py_EQ)); if (unlikely(__pyx_t_7 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 553, __pyx_L1_error)</span>
      __pyx_t_8 = (__pyx_t_7 != 0);
      if (__pyx_t_8) {
/* … */
      }
</pre><pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">554</span>:                 attr = bd[attr_name]</pre>
<pre class='cython code score-3 '>        __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetItem</span>(__pyx_v_bd, __pyx_v_attr_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 554, __pyx_L1_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
        <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_attr, __pyx_t_3);
        __pyx_t_3 = 0;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">555</span>:                 break</pre>
<pre class='cython code score-0 '>        goto __pyx_L6_break;
</pre><pre class="cython line score-0">&#xA0;<span class="">556</span>:         else:</pre>
<pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">557</span>:             raise AttributeError(attr_name)</pre>
<pre class='cython code score-5 '>      __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_AttributeError, __pyx_v_attr_name);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 557, __pyx_L1_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
      <span class='pyx_c_api'>__Pyx_Raise</span>(__pyx_t_3, 0, 0, 0);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
      <span class='error_goto'>__PYX_ERR(0, 557, __pyx_L1_error)</span>
    }
</pre><pre class="cython line score-0">&#xA0;<span class="">558</span>: </pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">559</span>:         type_attr = type(attr)</pre>
<pre class='cython code score-2 '>    <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)Py_TYPE(__pyx_v_attr)));
    <span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_type_attr, ((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_attr))));
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">560</span>:         if hasattr(type_attr, '__get__'):</pre>
<pre class='cython code score-2 '>    __pyx_t_8 = <span class='pyx_c_api'>__Pyx_HasAttr</span>(((PyObject *)__pyx_v_type_attr), __pyx_n_s_get);<span class='error_goto'> if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 560, __pyx_L1_error)</span>
    __pyx_t_7 = (__pyx_t_8 != 0);
    if (__pyx_t_7) {
/* … */
    }
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">561</span>:             gets.add(attr_name)</pre>
<pre class='cython code score-5 '>      __pyx_t_9 = <span class='py_c_api'>PySet_Add</span>(__pyx_v_gets, __pyx_v_attr_name);<span class='error_goto'> if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 561, __pyx_L1_error)</span>
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">562</span>:         if hasattr(type_attr, '__delete__'):</pre>
<pre class='cython code score-2 '>    __pyx_t_7 = <span class='pyx_c_api'>__Pyx_HasAttr</span>(((PyObject *)__pyx_v_type_attr), __pyx_n_s_delete);<span class='error_goto'> if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 562, __pyx_L1_error)</span>
    __pyx_t_8 = (__pyx_t_7 != 0);
    if (__pyx_t_8) {
/* … */
    }
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">563</span>:             dels.add(attr_name)</pre>
<pre class='cython code score-5 '>      __pyx_t_9 = <span class='py_c_api'>PySet_Add</span>(__pyx_v_dels, __pyx_v_attr_name);<span class='error_goto'> if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 563, __pyx_L1_error)</span>
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">564</span>:             set_or_del.add(attr_name)</pre>
<pre class='cython code score-5 '>      __pyx_t_9 = <span class='py_c_api'>PySet_Add</span>(__pyx_v_set_or_del, __pyx_v_attr_name);<span class='error_goto'> if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 564, __pyx_L1_error)</span>
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">565</span>:         if hasattr(type_attr, '__set__'):</pre>
<pre class='cython code score-2 '>    __pyx_t_8 = <span class='pyx_c_api'>__Pyx_HasAttr</span>(((PyObject *)__pyx_v_type_attr), __pyx_n_s_set);<span class='error_goto'> if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 565, __pyx_L1_error)</span>
    __pyx_t_7 = (__pyx_t_8 != 0);
    if (__pyx_t_7) {
/* … */
    }
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">566</span>:             sets.add(attr_name)</pre>
<pre class='cython code score-5 '>      __pyx_t_9 = <span class='py_c_api'>PySet_Add</span>(__pyx_v_sets, __pyx_v_attr_name);<span class='error_goto'> if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 566, __pyx_L1_error)</span>
</pre><pre class="cython line score-0">&#xA0;<span class="">567</span>: </pre>
<pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">568</span>:     return (gets, dels, set_or_del, sets)</pre>
<pre class='cython code score-14 '>  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  __pyx_t_1 = <span class='py_c_api'>PyTuple_New</span>(4);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_gets);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_gets);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 0, __pyx_v_gets);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_dels);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_dels);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 1, __pyx_v_dels);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_set_or_del);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_set_or_del);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 2, __pyx_v_set_or_del);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_sets);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_sets);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_1, 3, __pyx_v_sets);
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">569</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">570</span>: # Cython doesn't let us use __new__, it requires</pre>
<pre class="cython line score-0">&#xA0;<span class="">571</span>: # __cinit__. But we need __new__ if we're not compiled</pre>
<pre class="cython line score-0">&#xA0;<span class="">572</span>: # (e.g., on PyPy). So we set it at runtime. Cython</pre>
<pre class="cython line score-0">&#xA0;<span class="">573</span>: # will raise an error if we're compiled.</pre>
<pre class="cython line score-55" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">574</span>: def __new__(cls, *args, **kw):</pre>
<pre class='cython code score-55 '>/* Python wrapper */
static PyObject *__pyx_pw_6gevent_6_local_3__new__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6gevent_6_local_2__new__[] = "__new__(cls, *args, **kw)";
static PyMethodDef __pyx_mdef_6gevent_6_local_3__new__ = {"__new__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6gevent_6_local_3__new__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_local_2__new__};
static PyObject *__pyx_pw_6gevent_6_local_3__new__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kw = 0;
  PyObject *__pyx_r = 0;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__new__ (wrapper)", 0);
  __pyx_v_kw = <span class='py_c_api'>PyDict_New</span>(); if (unlikely(!__pyx_v_kw)) return NULL;
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_kw);
  if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) &gt; 1) {
    __pyx_v_args = <span class='py_c_api'>PyTuple_GetSlice</span>(__pyx_args, 1, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_kw); __pyx_v_kw = 0;
      <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
      return NULL;
    }
    <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_cls,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
      switch (pos_args) {
        default:
        case  1: values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
      }
      kw_args = <span class='py_c_api'>PyDict_Size</span>(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = <span class='pyx_c_api'>__Pyx_PyDict_GetItemStr</span>(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args &gt; 0)) {
        const Py_ssize_t used_pos_args = (pos_args &lt; 1) ? pos_args : 1;
        if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_pyargnames, __pyx_v_kw, values, used_pos_args, "__new__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 574, __pyx_L3_error)</span>
      }
    } else if (<span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args) &lt; 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = <span class='py_macro_api'>PyTuple_GET_ITEM</span>(__pyx_args, 0);
    }
    __pyx_v_cls = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__new__", 0, 1, 1, <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args)); <span class='error_goto'>__PYX_ERR(0, 574, __pyx_L3_error)</span>
  __pyx_L3_error:;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_args); __pyx_v_args = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_kw); __pyx_v_kw = 0;
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.__new__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6gevent_6_local_2__new__(__pyx_self, __pyx_v_cls, __pyx_v_args, __pyx_v_kw);

  /* function exit code */
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_args);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_kw);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}

static PyObject *__pyx_pf_6gevent_6_local_2__new__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_args, PyObject *__pyx_v_kw) {
  PyObject *__pyx_v_self = NULL;
  PyObject *__pyx_r = NULL;
  <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
  <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__new__", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
  <span class='pyx_c_api'>__Pyx_AddTraceback</span>("gevent._local.__new__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_self);
  <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
  <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
  return __pyx_r;
}
/* … */
  __pyx_tuple__10 = <span class='py_c_api'>PyTuple_Pack</span>(4, __pyx_n_s_cls, __pyx_n_s_args, __pyx_n_s_kw, __pyx_n_s_self);<span class='error_goto'> if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 574, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__10);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__10);
/* … */
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_CyFunction_NewEx</span>(&amp;__pyx_mdef_6gevent_6_local_3__new__, 0, __pyx_n_s_new, NULL, __pyx_n_s_gevent__local, __pyx_d, ((PyObject *)__pyx_codeobj__11));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_new, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 574, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-29" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">575</span>:     self = super(local, cls).__new__(cls)</pre>
<pre class='cython code score-29 '>  __pyx_t_2 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_ptype_6gevent_6_local_local));
  <span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_ptype_6gevent_6_local_local));
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6gevent_6_local_local));
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_cls);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_cls);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_2, 1, __pyx_v_cls);
  __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_super, __pyx_t_2, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 575, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_3, __pyx_n_s_new);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS &amp;&amp; likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
    __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
      <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cls) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_2, __pyx_v_cls);
  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 575, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_self = __pyx_t_1;
  __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">576</span>:     # We get the cls in *args for some reason</pre>
<pre class="cython line score-0">&#xA0;<span class="">577</span>:     # too when we do it this way....except on PyPy3, which does</pre>
<pre class="cython line score-0">&#xA0;<span class="">578</span>:     # not *unless* it's wrapped in a classmethod (which it is)</pre>
<pre class="cython line score-9" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">579</span>:     self.__cinit__(*args[1:], **kw)</pre>
<pre class='cython code score-9 '>  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_self, __pyx_n_s_cinit);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyTuple_GetSlice</span>(__pyx_v_args, 1, PY_SSIZE_T_MAX);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 579, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_1, __pyx_t_2, __pyx_v_kw);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 579, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
</pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">580</span>:     return self</pre>
<pre class='cython code score-2 '>  <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;
</pre><pre class="cython line score-0">&#xA0;<span class="">581</span>: </pre>
<pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">582</span>: try:</pre>
<pre class='cython code score-4 '>  {
    /*try:*/ {
/* … */
    }
/* … */
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_3);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_4);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_5);
    <span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_3);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_4);
    <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_5);
    <span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L7_try_end:;
  }
</pre><pre class="cython line score-0">&#xA0;<span class="">583</span>:     # PyPy2/3 and CPython handle adding a __new__ to the class</pre>
<pre class="cython line score-0">&#xA0;<span class="">584</span>:     # in different ways. In CPython and PyPy3, it must be wrapped with classmethod;</pre>
<pre class="cython line score-0">&#xA0;<span class="">585</span>:     # in PyPy2, it must not. In either case, the args that get passed to</pre>
<pre class="cython line score-0">&#xA0;<span class="">586</span>:     # it are stil wrong.</pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">587</span>:     local.__new__ = 'None'</pre>
<pre class='cython code score-2 '>      if (<span class='pyx_c_api'>__Pyx_PyObject_SetAttrStr</span>(((PyObject *)__pyx_ptype_6gevent_6_local_local), __pyx_n_s_new, __pyx_n_s_None) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 587, __pyx_L2_error)</span>
</pre><pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">588</span>: except TypeError: # pragma: no cover</pre>
<pre class='cython code score-4 '>    __pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyErr_ExceptionMatches</span>(__pyx_builtin_TypeError);
    if (__pyx_t_8) {
      <span class='pyx_c_api'>__Pyx_ErrRestore</span>(0,0,0);
      goto __pyx_L3_exception_handled;
    }
    goto __pyx_L4_except_error;
    __pyx_L4_except_error:;
</pre><pre class="cython line score-0">&#xA0;<span class="">589</span>:     # Must be compiled</pre>
<pre class="cython line score-0">&#xA0;<span class="">590</span>:     pass</pre>
<pre class="cython line score-0">&#xA0;<span class="">591</span>: else:</pre>
<pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">592</span>:     from gevent._compat import PYPY</pre>
<pre class='cython code score-19 '>    /*else:*/ {
      __pyx_t_2 = <span class='py_c_api'>PyList_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_PYPY_2);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_PYPY_2);
      <span class='py_macro_api'>PyList_SET_ITEM</span>(__pyx_t_2, 0, __pyx_n_s_PYPY_2);
      __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Import</span>(__pyx_n_s_gevent__compat, __pyx_t_2, 0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = <span class='pyx_c_api'>__Pyx_ImportFrom</span>(__pyx_t_1, __pyx_n_s_PYPY_2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_PYPY_2, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 592, __pyx_L4_except_error)</span>
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">593</span>:     from gevent._compat import PY2</pre>
<pre class='cython code score-19 '>      __pyx_t_1 = <span class='py_c_api'>PyList_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
      <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_PY2);
      <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_PY2);
      <span class='py_macro_api'>PyList_SET_ITEM</span>(__pyx_t_1, 0, __pyx_n_s_PY2);
      __pyx_t_2 = <span class='pyx_c_api'>__Pyx_Import</span>(__pyx_n_s_gevent__compat, __pyx_t_1, 0);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = <span class='pyx_c_api'>__Pyx_ImportFrom</span>(__pyx_t_2, __pyx_n_s_PY2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
      if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_PY2, __pyx_t_1) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 593, __pyx_L4_except_error)</span>
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-10" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">594</span>:     if PYPY and PY2:</pre>
<pre class='cython code score-10 '>      <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_2, __pyx_n_s_PYPY_2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyObject_IsTrue</span>(__pyx_t_2); if (unlikely(__pyx_t_7 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 594, __pyx_L4_except_error)</span>
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_7) {
      } else {
        __pyx_t_6 = __pyx_t_7;
        goto __pyx_L9_bool_binop_done;
      }
      <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_2, __pyx_n_s_PY2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L4_except_error)</span>
      <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
      __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyObject_IsTrue</span>(__pyx_t_2); if (unlikely(__pyx_t_7 &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 594, __pyx_L4_except_error)</span>
      <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_6 = __pyx_t_7;
      __pyx_L9_bool_binop_done:;
      if (__pyx_t_6) {
/* … */
        goto __pyx_L8;
      }
</pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">595</span>:         local.__new__ = __new__</pre>
<pre class='cython code score-5 '>        <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_2, __pyx_n_s_new);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L4_except_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
        if (<span class='pyx_c_api'>__Pyx_PyObject_SetAttrStr</span>(((PyObject *)__pyx_ptype_6gevent_6_local_local), __pyx_n_s_new, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 595, __pyx_L4_except_error)</span>
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">596</span>:     else:</pre>
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">597</span>:         local.__new__ = classmethod(__new__)</pre>
<pre class='cython code score-8 '>      /*else*/ {
        <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_2, __pyx_n_s_new);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L4_except_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
        __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_builtin_classmethod, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L4_except_error)</span>
        <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
        if (<span class='pyx_c_api'>__Pyx_PyObject_SetAttrStr</span>(((PyObject *)__pyx_ptype_6gevent_6_local_local), __pyx_n_s_new, __pyx_t_1) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 597, __pyx_L4_except_error)</span>
        <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
      }
      __pyx_L8:;
</pre><pre class="cython line score-0">&#xA0;<span class="">598</span>: </pre>
<pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">599</span>:     del PYPY</pre>
<pre class='cython code score-2 '>      if (<span class='pyx_c_api'>__Pyx_PyObject_DelAttrStr</span>(__pyx_m, __pyx_n_s_PYPY_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 599, __pyx_L4_except_error)</span>
</pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">600</span>:     del PY2</pre>
<pre class='cython code score-7 '>      if (<span class='pyx_c_api'>__Pyx_PyObject_DelAttrStr</span>(__pyx_m, __pyx_n_s_PY2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 600, __pyx_L4_except_error)</span>
    }
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L7_try_end;
    __pyx_L2_error:;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
    <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">601</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">602</span>: _init()</pre>
<pre class='cython code score-0 '>  __pyx_f_6gevent_6_local__init();
</pre><pre class="cython line score-0">&#xA0;<span class="">603</span>: </pre>
<pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">604</span>: from gevent._util import import_c_accel</pre>
<pre class='cython code score-19 '>  __pyx_t_1 = <span class='py_c_api'>PyList_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_import_c_accel);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_import_c_accel);
  <span class='py_macro_api'>PyList_SET_ITEM</span>(__pyx_t_1, 0, __pyx_n_s_import_c_accel);
  __pyx_t_2 = <span class='pyx_c_api'>__Pyx_Import</span>(__pyx_n_s_gevent__util, __pyx_t_1, 0);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_ImportFrom</span>(__pyx_t_2, __pyx_n_s_import_c_accel);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_1) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 604, __pyx_L1_error)</span>
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-17" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">605</span>: import_c_accel(globals(), 'gevent._local')</pre>
<pre class='cython code score-17 '>  <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_2, __pyx_n_s_import_c_accel);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Globals</span>();<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  __pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 605, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_n_s_gevent__local);
  <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_n_s_gevent__local);
  <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_9, 1, __pyx_n_s_gevent__local);
  __pyx_t_1 = 0;
  __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_t_9, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)</span>
  <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
  <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre></div></body></html>

Anon7 - 2022
AnonSec Team