-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhtml_source_content.html
More file actions
139 lines (139 loc) · 40.7 KB
/
html_source_content.html
File metadata and controls
139 lines (139 loc) · 40.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<summary>Source code in <code>workspaces/python/klaw-core/src/klaw_core/_core.py</code></summary> <div class="language-python highlight"><pre id="__code_9"><span></span><nav class="md-code__nav"><button class="md-code__button" title="Copy to clipboard" data-clipboard-target="#__code_9 > code" data-md-type="copy"></button></nav><code class="md-code__content"><span id="__span-0-152"><a id="__codelineno-0-152" name="__codelineno-0-152"></a><a href="#__codelineno-0-152"><span class="linenos" data-linenos="152 "></span></a><span class="k" data-keyword="class">class</span><span class="w"> </span><span class="nc">Result</span><span class="p">[</span><span class="n">T</span><span class="p">,</span> <span class="n">E</span><span class="p">]:</span>
</span><div class="docstring-fold docstring-expanded"><a id="__codelineno-0-153" name="__codelineno-0-153" href="#__codelineno-0-153"></a><span id="docstring-preview-1" class="docstring-preview"><a id="__codelineno-0-153" name="__codelineno-0-153"></a><a href="#__codelineno-0-153"><span class="linenos fold-indicator" data-linenos="153 " style="cursor: pointer; user-select: none;" title="Click to toggle docstring"> </span></a><span class="w"> </span><span class="sd">"""A container for operations that may succeed or fail.</span>
</span><div class="docstring-content" style="max-height: 4000px; opacity: 1; overflow: visible;"><span id="docstring-line-2" class="docstring-line"><a id="__codelineno-0-154" name="__codelineno-0-154"></a><a href="#__codelineno-0-154"><span class="linenos" data-linenos="154 "></span></a>
</span><span id="docstring-line-3" class="docstring-line"><a id="__codelineno-0-155" name="__codelineno-0-155"></a><a href="#__codelineno-0-155"><span class="linenos" data-linenos="155 "></span></a><span class="sd"> This class represents the result of an operation that can either succeed</span>
</span><span id="docstring-line-4" class="docstring-line"><a id="__codelineno-0-156" name="__codelineno-0-156"></a><a href="#__codelineno-0-156"><span class="linenos" data-linenos="156 "></span></a><span class="sd"> with a value or fail with an error. It's inspired by functional programming</span>
</span><span id="docstring-line-5" class="docstring-line"><a id="__codelineno-0-157" name="__codelineno-0-157"></a><a href="#__codelineno-0-157"><span class="linenos" data-linenos="157 "></span></a><span class="sd"> patterns and provides a type-safe way to handle operations that might fail,</span>
</span><span id="docstring-line-6" class="docstring-line"><a id="__codelineno-0-158" name="__codelineno-0-158"></a><a href="#__codelineno-0-158"><span class="linenos" data-linenos="158 "></span></a><span class="sd"> as outlined in modern generics approaches. It uses two type variables to</span>
</span><span id="docstring-line-7" class="docstring-line"><a id="__codelineno-0-159" name="__codelineno-0-159"></a><a href="#__codelineno-0-159"><span class="linenos" data-linenos="159 "></span></a><span class="sd"> track success and error types separately.</span>
</span><span id="docstring-line-8" class="docstring-line"><a id="__codelineno-0-160" name="__codelineno-0-160"></a><a href="#__codelineno-0-160"><span class="linenos" data-linenos="160 "></span></a>
</span><span id="docstring-line-9" class="docstring-line"><a id="__codelineno-0-161" name="__codelineno-0-161"></a><a href="#__codelineno-0-161"><span class="linenos" data-linenos="161 "></span></a><span class="sd"> Attributes:</span>
</span><span id="docstring-line-10" class="docstring-line"><a id="__codelineno-0-162" name="__codelineno-0-162"></a><a href="#__codelineno-0-162"><span class="linenos" data-linenos="162 "></span></a><span class="sd"> _value (T | None): The success value (if operation succeeded).</span>
</span><span id="docstring-line-11" class="docstring-line"><a id="__codelineno-0-163" name="__codelineno-0-163"></a><a href="#__codelineno-0-163"><span class="linenos" data-linenos="163 "></span></a><span class="sd"> _error (E | None): The error value (if operation failed).</span>
</span><span id="docstring-line-12" class="docstring-line"><a id="__codelineno-0-164" name="__codelineno-0-164"></a><a href="#__codelineno-0-164"><span class="linenos" data-linenos="164 "></span></a>
</span><span id="docstring-line-13" class="docstring-line"><a id="__codelineno-0-165" name="__codelineno-0-165"></a><a href="#__codelineno-0-165"><span class="linenos" data-linenos="165 "></span></a><span class="sd"> Example:</span>
</span><span id="docstring-line-14" class="docstring-line"><a id="__codelineno-0-166" name="__codelineno-0-166"></a><a href="#__codelineno-0-166"><span class="linenos" data-linenos="166 "></span></a><span class="sd"> ```python</span>
</span><span id="docstring-line-15" class="docstring-line"><a id="__codelineno-0-167" name="__codelineno-0-167"></a><a href="#__codelineno-0-167"><span class="linenos" data-linenos="167 "></span></a><span class="sd"> from klaw_core import Result</span>
</span><span id="docstring-line-16" class="docstring-line"><a id="__codelineno-0-168" name="__codelineno-0-168"></a><a href="#__codelineno-0-168"><span class="linenos" data-linenos="168 "></span></a>
</span><span id="docstring-line-17" class="docstring-line"><a id="__codelineno-0-169" name="__codelineno-0-169"></a><a href="#__codelineno-0-169"><span class="linenos" data-linenos="169 "></span></a><span class="sd"> def divide(a: float, b: float) -> Result[float, str]:</span>
</span><span id="docstring-line-18" class="docstring-line"><a id="__codelineno-0-170" name="__codelineno-0-170"></a><a href="#__codelineno-0-170"><span class="linenos" data-linenos="170 "></span></a><span class="sd"> if b == 0:</span>
</span><span id="docstring-line-19" class="docstring-line"><a id="__codelineno-0-171" name="__codelineno-0-171"></a><a href="#__codelineno-0-171"><span class="linenos" data-linenos="171 "></span></a><span class="sd"> return Result(error="Division by zero")</span>
</span><span id="docstring-line-20" class="docstring-line"><a id="__codelineno-0-172" name="__codelineno-0-172"></a><a href="#__codelineno-0-172"><span class="linenos" data-linenos="172 "></span></a><span class="sd"> return Result(value=a / b)</span>
</span><span id="docstring-line-21" class="docstring-line"><a id="__codelineno-0-173" name="__codelineno-0-173"></a><a href="#__codelineno-0-173"><span class="linenos" data-linenos="173 "></span></a>
</span><span id="docstring-line-22" class="docstring-line"><a id="__codelineno-0-174" name="__codelineno-0-174"></a><a href="#__codelineno-0-174"><span class="linenos" data-linenos="174 "></span></a><span class="sd"> result = divide(10, 2)</span>
</span><span id="docstring-line-23" class="docstring-line"><a id="__codelineno-0-175" name="__codelineno-0-175"></a><a href="#__codelineno-0-175"><span class="linenos" data-linenos="175 "></span></a><span class="sd"> if result.ok():</span>
</span><span id="docstring-line-24" class="docstring-line"><a id="__codelineno-0-176" name="__codelineno-0-176"></a><a href="#__codelineno-0-176"><span class="linenos" data-linenos="176 "></span></a><span class="sd"> print(f"Result: {result.unwrap()}")</span>
</span><span id="docstring-line-25" class="docstring-line"><a id="__codelineno-0-177" name="__codelineno-0-177"></a><a href="#__codelineno-0-177"><span class="linenos" data-linenos="177 "></span></a><span class="sd"> else:</span>
</span><span id="docstring-line-26" class="docstring-line"><a id="__codelineno-0-178" name="__codelineno-0-178"></a><a href="#__codelineno-0-178"><span class="linenos" data-linenos="178 "></span></a><span class="sd"> print(f"Error: {result.unwrap_err()}")</span>
</span><span id="docstring-line-27" class="docstring-line"><a id="__codelineno-0-179" name="__codelineno-0-179"></a><a href="#__codelineno-0-179"><span class="linenos" data-linenos="179 "></span></a>
</span><span id="docstring-line-28" class="docstring-line"><a id="__codelineno-0-180" name="__codelineno-0-180"></a><a href="#__codelineno-0-180"><span class="linenos" data-linenos="180 "></span></a><span class="sd"> # Error case</span>
</span><span id="docstring-line-29" class="docstring-line"><a id="__codelineno-0-181" name="__codelineno-0-181"></a><a href="#__codelineno-0-181"><span class="linenos" data-linenos="181 "></span></a><span class="sd"> error_result = divide(10, 0)</span>
</span><span id="docstring-line-30" class="docstring-line"><a id="__codelineno-0-182" name="__codelineno-0-182"></a><a href="#__codelineno-0-182"><span class="linenos" data-linenos="182 "></span></a><span class="sd"> print(f"Error: {error_result.unwrap_err()}")</span>
</span><span id="docstring-line-31" class="docstring-line"><a id="__codelineno-0-183" name="__codelineno-0-183"></a><a href="#__codelineno-0-183"><span class="linenos" data-linenos="183 "></span></a><span class="sd"> ```</span>
</span><span id="docstring-line-32" class="docstring-line"><a id="__codelineno-0-184" name="__codelineno-0-184"></a><a href="#__codelineno-0-184"><span class="linenos" data-linenos="184 "></span></a>
</span><span id="docstring-line-33" class="docstring-line"><a id="__codelineno-0-185" name="__codelineno-0-185"></a><a href="#__codelineno-0-185"><span class="linenos" data-linenos="185 "></span></a><span class="sd"> ??? note "A few notes about Result"</span>
</span><span id="docstring-line-34" class="docstring-line"><a id="__codelineno-0-186" name="__codelineno-0-186"></a><a href="#__codelineno-0-186"><span class="linenos" data-linenos="186 "></span></a><span class="sd"> This class is inspired by functional programming patterns and provides a type-safe way to handle operations that might fail,</span>
</span><span id="docstring-line-35" class="docstring-line"><a id="__codelineno-0-187" name="__codelineno-0-187"></a><a href="#__codelineno-0-187"><span class="linenos" data-linenos="187 "></span></a><span class="sd"> as outlined in modern generics approaches. It uses two type variables to track success and error types separately.</span>
</span><span id="docstring-line-36" class="docstring-line"><a id="__codelineno-0-188" name="__codelineno-0-188"></a><a href="#__codelineno-0-188"><span class="linenos" data-linenos="188 "></span></a>
</span><span id="docstring-line-37" class="docstring-line"><a id="__codelineno-0-189" name="__codelineno-0-189"></a><a href="#__codelineno-0-189"><span class="linenos" data-linenos="189 "></span></a><span class="sd"> ??? abstract</span>
</span><span id="docstring-line-38" class="docstring-line"><a id="__codelineno-0-190" name="__codelineno-0-190"></a><a href="#__codelineno-0-190"><span class="linenos" data-linenos="190 "></span></a><span class="sd"> Some other notes about this class</span>
</span><span id="docstring-line-39" class="docstring-line"><a id="__codelineno-0-191" name="__codelineno-0-191"></a><a href="#__codelineno-0-191"><span class="linenos" data-linenos="191 "></span></a>
</span><span id="docstring-line-40" class="docstring-line"><a id="__codelineno-0-192" name="__codelineno-0-192"></a><a href="#__codelineno-0-192"><span class="linenos" data-linenos="192 "></span></a><span class="sd"> ??? info "Useful things"</span>
</span><span id="docstring-line-41" class="docstring-line"><a id="__codelineno-0-193" name="__codelineno-0-193"></a><a href="#__codelineno-0-193"><span class="linenos" data-linenos="193 "></span></a><span class="sd"> - This is a useful thing</span>
</span><span id="docstring-line-42" class="docstring-line"><a id="__codelineno-0-194" name="__codelineno-0-194"></a><a href="#__codelineno-0-194"><span class="linenos" data-linenos="194 "></span></a>
</span><span id="docstring-line-43" class="docstring-line"><a id="__codelineno-0-195" name="__codelineno-0-195"></a><a href="#__codelineno-0-195"><span class="linenos" data-linenos="195 "></span></a><span class="sd"> ??? tip "Useful tips"</span>
</span><span id="docstring-line-44" class="docstring-line"><a id="__codelineno-0-196" name="__codelineno-0-196"></a><a href="#__codelineno-0-196"><span class="linenos" data-linenos="196 "></span></a><span class="sd"> - This is a useful tip</span>
</span><span id="docstring-line-45" class="docstring-line"><a id="__codelineno-0-197" name="__codelineno-0-197"></a><a href="#__codelineno-0-197"><span class="linenos" data-linenos="197 "></span></a>
</span><span id="docstring-line-46" class="docstring-line"><a id="__codelineno-0-198" name="__codelineno-0-198"></a><a href="#__codelineno-0-198"><span class="linenos" data-linenos="198 "></span></a><span class="sd"> ??? success "Success"</span>
</span><span id="docstring-line-47" class="docstring-line"><a id="__codelineno-0-199" name="__codelineno-0-199"></a><a href="#__codelineno-0-199"><span class="linenos" data-linenos="199 "></span></a><span class="sd"> - This is a success</span>
</span><span id="docstring-line-48" class="docstring-line"><a id="__codelineno-0-200" name="__codelineno-0-200"></a><a href="#__codelineno-0-200"><span class="linenos" data-linenos="200 "></span></a>
</span><span id="docstring-line-49" class="docstring-line"><a id="__codelineno-0-201" name="__codelineno-0-201"></a><a href="#__codelineno-0-201"><span class="linenos" data-linenos="201 "></span></a><span class="sd"> ??? question "Question"</span>
</span><span id="docstring-line-50" class="docstring-line"><a id="__codelineno-0-202" name="__codelineno-0-202"></a><a href="#__codelineno-0-202"><span class="linenos" data-linenos="202 "></span></a><span class="sd"> - This is a question</span>
</span><span id="docstring-line-51" class="docstring-line"><a id="__codelineno-0-203" name="__codelineno-0-203"></a><a href="#__codelineno-0-203"><span class="linenos" data-linenos="203 "></span></a>
</span><span id="docstring-line-52" class="docstring-line"><a id="__codelineno-0-204" name="__codelineno-0-204"></a><a href="#__codelineno-0-204"><span class="linenos" data-linenos="204 "></span></a><span class="sd"> ??? warning "Warning"</span>
</span><span id="docstring-line-53" class="docstring-line"><a id="__codelineno-0-205" name="__codelineno-0-205"></a><a href="#__codelineno-0-205"><span class="linenos" data-linenos="205 "></span></a><span class="sd"> - This is a warning</span>
</span><span id="docstring-line-54" class="docstring-line"><a id="__codelineno-0-206" name="__codelineno-0-206"></a><a href="#__codelineno-0-206"><span class="linenos" data-linenos="206 "></span></a>
</span><span id="docstring-line-55" class="docstring-line"><a id="__codelineno-0-207" name="__codelineno-0-207"></a><a href="#__codelineno-0-207"><span class="linenos" data-linenos="207 "></span></a><span class="sd"> ??? failure "Failure"</span>
</span><span id="docstring-line-56" class="docstring-line"><a id="__codelineno-0-208" name="__codelineno-0-208"></a><a href="#__codelineno-0-208"><span class="linenos" data-linenos="208 "></span></a><span class="sd"> - This is a failure</span>
</span><span id="docstring-line-57" class="docstring-line"><a id="__codelineno-0-209" name="__codelineno-0-209"></a><a href="#__codelineno-0-209"><span class="linenos" data-linenos="209 "></span></a>
</span><span id="docstring-line-58" class="docstring-line"><a id="__codelineno-0-210" name="__codelineno-0-210"></a><a href="#__codelineno-0-210"><span class="linenos" data-linenos="210 "></span></a><span class="sd"> ??? danger "Danger"</span>
</span><span id="docstring-line-59" class="docstring-line"><a id="__codelineno-0-211" name="__codelineno-0-211"></a><a href="#__codelineno-0-211"><span class="linenos" data-linenos="211 "></span></a><span class="sd"> - This is a danger</span>
</span><span id="docstring-line-60" class="docstring-line"><a id="__codelineno-0-212" name="__codelineno-0-212"></a><a href="#__codelineno-0-212"><span class="linenos" data-linenos="212 "></span></a>
</span><span id="docstring-line-61" class="docstring-line"><a id="__codelineno-0-213" name="__codelineno-0-213"></a><a href="#__codelineno-0-213"><span class="linenos" data-linenos="213 "></span></a><span class="sd"> ??? bug "Bug"</span>
</span><span id="docstring-line-62" class="docstring-line"><a id="__codelineno-0-214" name="__codelineno-0-214"></a><a href="#__codelineno-0-214"><span class="linenos" data-linenos="214 "></span></a><span class="sd"> - This is a bug</span>
</span><span id="docstring-line-63" class="docstring-line"><a id="__codelineno-0-215" name="__codelineno-0-215"></a><a href="#__codelineno-0-215"><span class="linenos" data-linenos="215 "></span></a>
</span><span id="docstring-line-64" class="docstring-line"><a id="__codelineno-0-216" name="__codelineno-0-216"></a><a href="#__codelineno-0-216"><span class="linenos" data-linenos="216 "></span></a><span class="sd"> ??? quote "Quote"</span>
</span><span id="docstring-line-65" class="docstring-line"><a id="__codelineno-0-217" name="__codelineno-0-217"></a><a href="#__codelineno-0-217"><span class="linenos" data-linenos="217 "></span></a><span class="sd"> - This is a quote</span>
</span><span id="docstring-line-66" class="docstring-line"><a id="__codelineno-0-218" name="__codelineno-0-218"></a><a href="#__codelineno-0-218"><span class="linenos" data-linenos="218 "></span></a><span class="sd"> """</span>
</span></div></div><span id="__span-0-219"><a id="__codelineno-0-219" name="__codelineno-0-219"></a><a href="#__codelineno-0-219"><span class="linenos" data-linenos="219 "></span></a>
</span><span id="__span-0-220"><a id="__codelineno-0-220" name="__codelineno-0-220"></a><a href="#__codelineno-0-220"><span class="linenos" data-linenos="220 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n" data-parameter="true">value</span><span class="p">:</span> <span class="n" data-type-annotation="true">T</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n" data-parameter="true">error</span><span class="p">:</span> <span class="n" data-type-annotation="true">E</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
</span><span id="__span-0-221"><a id="__codelineno-0-221" name="__codelineno-0-221"></a><a href="#__codelineno-0-221"><span class="linenos" data-linenos="221 "></span></a><span class="w"> </span><span class="sd">"""Initialize a Result. Use Result.success() or Result.error() instead."""</span>
</span><span id="__span-0-222"><a id="__codelineno-0-222" name="__codelineno-0-222"></a><a href="#__codelineno-0-222"><span class="linenos" data-linenos="222 "></span></a> <span class="k">if</span> <span class="p">(</span><span class="n" data-parameter="true">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n" data-parameter="true">error</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
</span><span id="__span-0-223"><a id="__codelineno-0-223" name="__codelineno-0-223"></a><a href="#__codelineno-0-223"><span class="linenos" data-linenos="223 "></span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'Result cannot have both a value and an error'</span><span class="p">)</span>
</span><span id="__span-0-224"><a id="__codelineno-0-224" name="__codelineno-0-224"></a><a href="#__codelineno-0-224"><span class="linenos" data-linenos="224 "></span></a> <span class="k">if</span> <span class="p">(</span><span class="n" data-parameter="true">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n" data-parameter="true">error</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
</span><span id="__span-0-225"><a id="__codelineno-0-225" name="__codelineno-0-225"></a><a href="#__codelineno-0-225"><span class="linenos" data-linenos="225 "></span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'Result must have either a value or an error'</span><span class="p">)</span>
</span><span id="__span-0-226"><a id="__codelineno-0-226" name="__codelineno-0-226"></a><a href="#__codelineno-0-226"><span class="linenos" data-linenos="226 "></span></a>
</span><span id="__span-0-227"><a id="__codelineno-0-227" name="__codelineno-0-227"></a><a href="#__codelineno-0-227"><span class="linenos" data-linenos="227 "></span></a> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_value</span> <span class="o">=</span> <span class="n" data-parameter="true">value</span>
</span><span id="__span-0-228"><a id="__codelineno-0-228" name="__codelineno-0-228"></a><a href="#__codelineno-0-228"><span class="linenos" data-linenos="228 "></span></a> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_error</span> <span class="o">=</span> <span class="n" data-parameter="true">error</span>
</span><span id="__span-0-229"><a id="__codelineno-0-229" name="__codelineno-0-229"></a><a href="#__codelineno-0-229"><span class="linenos" data-linenos="229 "></span></a>
</span><span id="__span-0-230"><a id="__codelineno-0-230" name="__codelineno-0-230"></a><a href="#__codelineno-0-230"><span class="linenos" data-linenos="230 "></span></a> <span class="nd">@classmethod</span>
</span><span id="__span-0-231"><a id="__codelineno-0-231" name="__codelineno-0-231"></a><a href="#__codelineno-0-231"><span class="linenos" data-linenos="231 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">success</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n" data-parameter="true">value</span><span class="p">:</span> <span class="n" data-type-annotation="true">T</span><span class="p">)</span> <span class="o">-></span> <span class="n" data-return-type="true">Self</span><span class="p">:</span>
</span><div class="docstring-fold docstring-collapsed"><a id="__codelineno-0-232" name="__codelineno-0-232" href="#__codelineno-0-232"></a><span id="docstring-preview-80" class="docstring-preview"><a id="__codelineno-0-232" name="__codelineno-0-232"></a><a href="#__codelineno-0-232"><span class="linenos fold-indicator" data-linenos="232 " style="cursor: pointer; user-select: none;" title="Click to toggle docstring"> </span></a><span class="w"> </span><span class="sd">"""Create a successful result with a value.</span>
</span><div class="docstring-content" style="max-height: 0px; opacity: 0; overflow: hidden;"><span id="docstring-line-81" class="docstring-line"><a id="__codelineno-0-233" name="__codelineno-0-233"></a><a href="#__codelineno-0-233"><span class="linenos" data-linenos="233 "></span></a>
</span><span id="docstring-line-82" class="docstring-line"><a id="__codelineno-0-234" name="__codelineno-0-234"></a><a href="#__codelineno-0-234"><span class="linenos" data-linenos="234 "></span></a><span class="sd"> Args:</span>
</span><span id="docstring-line-83" class="docstring-line"><a id="__codelineno-0-235" name="__codelineno-0-235"></a><a href="#__codelineno-0-235"><span class="linenos" data-linenos="235 "></span></a><span class="sd"> value: The success value.</span>
</span><span id="docstring-line-84" class="docstring-line"><a id="__codelineno-0-236" name="__codelineno-0-236"></a><a href="#__codelineno-0-236"><span class="linenos" data-linenos="236 "></span></a>
</span><span id="docstring-line-85" class="docstring-line"><a id="__codelineno-0-237" name="__codelineno-0-237"></a><a href="#__codelineno-0-237"><span class="linenos" data-linenos="237 "></span></a><span class="sd"> Returns:</span>
</span><span id="docstring-line-86" class="docstring-line"><a id="__codelineno-0-238" name="__codelineno-0-238"></a><a href="#__codelineno-0-238"><span class="linenos" data-linenos="238 "></span></a><span class="sd"> A Result representing a successful operation.</span>
</span><span id="docstring-line-87" class="docstring-line"><a id="__codelineno-0-239" name="__codelineno-0-239"></a><a href="#__codelineno-0-239"><span class="linenos" data-linenos="239 "></span></a><span class="sd"> """</span>
</span></div></div><span id="__span-0-240"><a id="__codelineno-0-240" name="__codelineno-0-240"></a><a href="#__codelineno-0-240"><span class="linenos" data-linenos="240 "></span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="n" data-parameter="true">value</span><span class="p">)</span>
</span><span id="__span-0-241"><a id="__codelineno-0-241" name="__codelineno-0-241"></a><a href="#__codelineno-0-241"><span class="linenos" data-linenos="241 "></span></a>
</span><span id="__span-0-242"><a id="__codelineno-0-242" name="__codelineno-0-242"></a><a href="#__codelineno-0-242"><span class="linenos" data-linenos="242 "></span></a> <span class="nd">@classmethod</span>
</span><span id="__span-0-243"><a id="__codelineno-0-243" name="__codelineno-0-243"></a><a href="#__codelineno-0-243"><span class="linenos" data-linenos="243 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">error</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n" data-parameter="true">error</span><span class="p">:</span> <span class="n" data-type-annotation="true">E</span><span class="p">)</span> <span class="o">-></span> <span class="n" data-return-type="true" data-type-annotation="true">Result</span><span class="p">[</span><span class="n" data-return-type="true" data-type-annotation="true">T</span><span class="p">,</span> <span class="n" data-return-type="true">E</span><span class="p">]:</span>
</span><div class="docstring-fold docstring-collapsed"><a id="__codelineno-0-244" name="__codelineno-0-244" href="#__codelineno-0-244"></a><span id="docstring-preview-92" class="docstring-preview"><a id="__codelineno-0-244" name="__codelineno-0-244"></a><a href="#__codelineno-0-244"><span class="linenos fold-indicator" data-linenos="244 " style="cursor: pointer; user-select: none;" title="Click to toggle docstring"> </span></a><span class="w"> </span><span class="sd">"""Create a failed result with an error.</span>
</span><div class="docstring-content" style="max-height: 0px; opacity: 0; overflow: hidden;"><span id="docstring-line-93" class="docstring-line"><a id="__codelineno-0-245" name="__codelineno-0-245"></a><a href="#__codelineno-0-245"><span class="linenos" data-linenos="245 "></span></a>
</span><span id="docstring-line-94" class="docstring-line"><a id="__codelineno-0-246" name="__codelineno-0-246"></a><a href="#__codelineno-0-246"><span class="linenos" data-linenos="246 "></span></a><span class="sd"> Args:</span>
</span><span id="docstring-line-95" class="docstring-line"><a id="__codelineno-0-247" name="__codelineno-0-247"></a><a href="#__codelineno-0-247"><span class="linenos" data-linenos="247 "></span></a><span class="sd"> error: A description of what went wrong.</span>
</span><span id="docstring-line-96" class="docstring-line"><a id="__codelineno-0-248" name="__codelineno-0-248"></a><a href="#__codelineno-0-248"><span class="linenos" data-linenos="248 "></span></a>
</span><span id="docstring-line-97" class="docstring-line"><a id="__codelineno-0-249" name="__codelineno-0-249"></a><a href="#__codelineno-0-249"><span class="linenos" data-linenos="249 "></span></a><span class="sd"> Returns:</span>
</span><span id="docstring-line-98" class="docstring-line"><a id="__codelineno-0-250" name="__codelineno-0-250"></a><a href="#__codelineno-0-250"><span class="linenos" data-linenos="250 "></span></a><span class="sd"> A Result representing a failed operation.</span>
</span><span id="docstring-line-99" class="docstring-line"><a id="__codelineno-0-251" name="__codelineno-0-251"></a><a href="#__codelineno-0-251"><span class="linenos" data-linenos="251 "></span></a><span class="sd"> """</span>
</span></div></div><span id="__span-0-252"><a id="__codelineno-0-252" name="__codelineno-0-252"></a><a href="#__codelineno-0-252"><span class="linenos" data-linenos="252 "></span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">error</span><span class="o">=</span><span class="n" data-parameter="true">error</span><span class="p">)</span>
</span><span id="__span-0-253"><a id="__codelineno-0-253" name="__codelineno-0-253"></a><a href="#__codelineno-0-253"><span class="linenos" data-linenos="253 "></span></a>
</span><span id="__span-0-254"><a id="__codelineno-0-254" name="__codelineno-0-254"></a><a href="#__codelineno-0-254"><span class="linenos" data-linenos="254 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">ok</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb" data-return-type="true">bool</span><span class="p">:</span>
</span><span id="__span-0-255"><a id="__codelineno-0-255" name="__codelineno-0-255"></a><a href="#__codelineno-0-255"><span class="linenos" data-linenos="255 "></span></a><span class="w"> </span><span class="sd">"""Check if the result represents a successful operation."""</span>
</span><span id="__span-0-256"><a id="__codelineno-0-256" name="__codelineno-0-256"></a><a href="#__codelineno-0-256"><span class="linenos" data-linenos="256 "></span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_error</span> <span class="ow">is</span> <span class="kc">None</span>
</span><span id="__span-0-257"><a id="__codelineno-0-257" name="__codelineno-0-257"></a><a href="#__codelineno-0-257"><span class="linenos" data-linenos="257 "></span></a>
</span><span id="__span-0-258"><a id="__codelineno-0-258" name="__codelineno-0-258"></a><a href="#__codelineno-0-258"><span class="linenos" data-linenos="258 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">err</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb" data-return-type="true">bool</span><span class="p">:</span>
</span><span id="__span-0-259"><a id="__codelineno-0-259" name="__codelineno-0-259"></a><a href="#__codelineno-0-259"><span class="linenos" data-linenos="259 "></span></a><span class="w"> </span><span class="sd">"""Check if the result represents a failed operation."""</span>
</span><span id="__span-0-260"><a id="__codelineno-0-260" name="__codelineno-0-260"></a><a href="#__codelineno-0-260"><span class="linenos" data-linenos="260 "></span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_value</span> <span class="ow">is</span> <span class="kc">None</span>
</span><span id="__span-0-261"><a id="__codelineno-0-261" name="__codelineno-0-261"></a><a href="#__codelineno-0-261"><span class="linenos" data-linenos="261 "></span></a>
</span><span id="__span-0-262"><a id="__codelineno-0-262" name="__codelineno-0-262"></a><a href="#__codelineno-0-262"><span class="linenos" data-linenos="262 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">unwrap</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n" data-return-type="true">T</span><span class="p">:</span>
</span><span id="__span-0-263"><a id="__codelineno-0-263" name="__codelineno-0-263"></a><a href="#__codelineno-0-263"><span class="linenos" data-linenos="263 "></span></a><span class="w"> </span><span class="sd">"""Get the success value. Raises an exception if the result is an error."""</span>
</span><span id="__span-0-264"><a id="__codelineno-0-264" name="__codelineno-0-264"></a><a href="#__codelineno-0-264"><span class="linenos" data-linenos="264 "></span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="__span-0-265"><a id="__codelineno-0-265" name="__codelineno-0-265"></a><a href="#__codelineno-0-265"><span class="linenos" data-linenos="265 "></span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_value</span>
</span><span id="__span-0-266"><a id="__codelineno-0-266" name="__codelineno-0-266"></a><a href="#__codelineno-0-266"><span class="linenos" data-linenos="266 "></span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Tried to unwrap Result error: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_error</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
</span><span id="__span-0-267"><a id="__codelineno-0-267" name="__codelineno-0-267"></a><a href="#__codelineno-0-267"><span class="linenos" data-linenos="267 "></span></a>
</span><span id="__span-0-268"><a id="__codelineno-0-268" name="__codelineno-0-268"></a><a href="#__codelineno-0-268"><span class="linenos" data-linenos="268 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">unwrap_err</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n" data-return-type="true">E</span><span class="p">:</span>
</span><span id="__span-0-269"><a id="__codelineno-0-269" name="__codelineno-0-269"></a><a href="#__codelineno-0-269"><span class="linenos" data-linenos="269 "></span></a><span class="w"> </span><span class="sd">"""Get the error value. Raises an exception if the result is a success."""</span>
</span><span id="__span-0-270"><a id="__codelineno-0-270" name="__codelineno-0-270"></a><a href="#__codelineno-0-270"><span class="linenos" data-linenos="270 "></span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_error</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="__span-0-271"><a id="__codelineno-0-271" name="__codelineno-0-271"></a><a href="#__codelineno-0-271"><span class="linenos" data-linenos="271 "></span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_error</span>
</span><span id="__span-0-272"><a id="__codelineno-0-272" name="__codelineno-0-272"></a><a href="#__codelineno-0-272"><span class="linenos" data-linenos="272 "></span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Expected error, found value: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_value</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
</span><span id="__span-0-273"><a id="__codelineno-0-273" name="__codelineno-0-273"></a><a href="#__codelineno-0-273"><span class="linenos" data-linenos="273 "></span></a>
</span><span id="__span-0-274"><a id="__codelineno-0-274" name="__codelineno-0-274"></a><a href="#__codelineno-0-274"><span class="linenos" data-linenos="274 "></span></a> <span class="c1"># Legacy properties for backward compatibility (removed conflicting 'error' property)</span>
</span><span id="__span-0-275"><a id="__codelineno-0-275" name="__codelineno-0-275"></a><a href="#__codelineno-0-275"><span class="linenos" data-linenos="275 "></span></a> <span class="nd">@property</span>
</span><span id="__span-0-276"><a id="__codelineno-0-276" name="__codelineno-0-276"></a><a href="#__codelineno-0-276"><span class="linenos" data-linenos="276 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">is_success</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb" data-return-type="true">bool</span><span class="p">:</span>
</span><span id="__span-0-277"><a id="__codelineno-0-277" name="__codelineno-0-277"></a><a href="#__codelineno-0-277"><span class="linenos" data-linenos="277 "></span></a><span class="w"> </span><span class="sd">"""Check if the result represents a successful operation (legacy alias for ok())."""</span>
</span><span id="__span-0-278"><a id="__codelineno-0-278" name="__codelineno-0-278"></a><a href="#__codelineno-0-278"><span class="linenos" data-linenos="278 "></span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-function="true">ok</span><span class="p">()</span>
</span><span id="__span-0-279"><a id="__codelineno-0-279" name="__codelineno-0-279"></a><a href="#__codelineno-0-279"><span class="linenos" data-linenos="279 "></span></a>
</span><span id="__span-0-280"><a id="__codelineno-0-280" name="__codelineno-0-280"></a><a href="#__codelineno-0-280"><span class="linenos" data-linenos="280 "></span></a> <span class="nd">@property</span>
</span><span id="__span-0-281"><a id="__codelineno-0-281" name="__codelineno-0-281"></a><a href="#__codelineno-0-281"><span class="linenos" data-linenos="281 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="nf" data-function="true">value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n" data-return-type="true">T</span><span class="p">:</span>
</span><span id="__span-0-282"><a id="__codelineno-0-282" name="__codelineno-0-282"></a><a href="#__codelineno-0-282"><span class="linenos" data-linenos="282 "></span></a><span class="w"> </span><span class="sd">"""Get the success value (legacy alias for unwrap())."""</span>
</span><span id="__span-0-283"><a id="__codelineno-0-283" name="__codelineno-0-283"></a><a href="#__codelineno-0-283"><span class="linenos" data-linenos="283 "></span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-function="true">unwrap</span><span class="p">()</span>
</span><span id="__span-0-284"><a id="__codelineno-0-284" name="__codelineno-0-284"></a><a href="#__codelineno-0-284"><span class="linenos" data-linenos="284 "></span></a>
</span><span id="__span-0-285"><a id="__codelineno-0-285" name="__codelineno-0-285"></a><a href="#__codelineno-0-285"><span class="linenos" data-linenos="285 "></span></a> <span class="k" data-keyword="def">def</span><span class="w"> </span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb" data-return-type="true">str</span><span class="p">:</span>
</span><span id="__span-0-286"><a id="__codelineno-0-286" name="__codelineno-0-286"></a><a href="#__codelineno-0-286"><span class="linenos" data-linenos="286 "></span></a><span class="w"> </span><span class="sd">"""Return a string representation of the result."""</span>
</span><span id="__span-0-287"><a id="__codelineno-0-287" name="__codelineno-0-287"></a><a href="#__codelineno-0-287"><span class="linenos" data-linenos="287 "></span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n" data-function="true">ok</span><span class="p">():</span>
</span><span id="__span-0-288"><a id="__codelineno-0-288" name="__codelineno-0-288"></a><a href="#__codelineno-0-288"><span class="linenos" data-linenos="288 "></span></a> <span class="k">return</span> <span class="sa">f</span><span class="s1">'Result.success(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_value</span><span class="si">!r}</span><span class="s1">)'</span>
</span><span id="__span-0-289"><a id="__codelineno-0-289" name="__codelineno-0-289"></a><a href="#__codelineno-0-289"><span class="linenos" data-linenos="289 "></span></a> <span class="k">return</span> <span class="sa">f</span><span class="s1">'Result.error(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n" data-attribute="true">_error</span><span class="si">!r}</span><span class="s1">)'</span>
</span></code></pre></div>