|
235 | 235 | <div class="pytorch-left-menu-search">
|
236 | 236 |
|
237 | 237 | <div class="version">
|
238 |
| - <a href='https://pytorch.org/docs/versions.html'>master (2.1.0a0+gita7a09ad ) ▼</a> |
| 238 | + <a href='https://pytorch.org/docs/versions.html'>master (2.1.0a0+git99efe3e ) ▼</a> |
239 | 239 | </div>
|
240 | 240 |
|
241 | 241 |
|
@@ -1242,12 +1242,52 @@ <h1>Source code for torch._dynamo.eval_frame</h1><div class="highlight"><pre>
|
1242 | 1242 | <span class="n">graph</span><span class="p">,</span>
|
1243 | 1243 | <span class="p">)</span><span class="o">.</span><span class="n">transform</span><span class="p">()</span>
|
1244 | 1244 |
|
| 1245 | + <span class="k">def</span> <span class="nf">signature_to_fullargspec</span><span class="p">(</span><span class="n">sig</span><span class="p">:</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Signature</span><span class="p">):</span> |
| 1246 | + <span class="c1"># Get a list of Parameter objects from the Signature object</span> |
| 1247 | + <span class="n">params</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">sig</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> |
| 1248 | + <span class="c1"># Separate positional arguments, keyword-only arguments and varargs/varkw</span> |
| 1249 | + <span class="n">args</span> <span class="o">=</span> <span class="p">[</span> |
| 1250 | + <span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">params</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">POSITIONAL_OR_KEYWORD</span> |
| 1251 | + <span class="p">]</span> |
| 1252 | + <span class="n">kwonlyargs</span> <span class="o">=</span> <span class="p">[</span> |
| 1253 | + <span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">params</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">KEYWORD_ONLY</span> |
| 1254 | + <span class="p">]</span> |
| 1255 | + <span class="n">varargs</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span> |
| 1256 | + <span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">params</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">VAR_POSITIONAL</span><span class="p">),</span> <span class="kc">None</span> |
| 1257 | + <span class="p">)</span> |
| 1258 | + <span class="n">varkw</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span> |
| 1259 | + <span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">params</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">VAR_KEYWORD</span><span class="p">),</span> <span class="kc">None</span> |
| 1260 | + <span class="p">)</span> |
| 1261 | + <span class="c1"># Get default values for positional arguments and keyword-only arguments</span> |
| 1262 | + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span> |
| 1263 | + <span class="n">p</span><span class="o">.</span><span class="n">default</span> |
| 1264 | + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">params</span> |
| 1265 | + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">POSITIONAL_OR_KEYWORD</span> |
| 1266 | + <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">empty</span> |
| 1267 | + <span class="p">)</span> |
| 1268 | + <span class="n">kwonlydefaults</span> <span class="o">=</span> <span class="p">{</span> |
| 1269 | + <span class="n">p</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">p</span><span class="o">.</span><span class="n">default</span> |
| 1270 | + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">params</span> |
| 1271 | + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">KEYWORD_ONLY</span> |
| 1272 | + <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">empty</span> |
| 1273 | + <span class="p">}</span> |
| 1274 | + <span class="c1"># Get annotations for parameters and return value</span> |
| 1275 | + <span class="n">annotations</span> <span class="o">=</span> <span class="p">{}</span> |
| 1276 | + <span class="k">if</span> <span class="n">sig</span><span class="o">.</span><span class="n">return_annotation</span><span class="p">:</span> |
| 1277 | + <span class="n">annotations</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"return"</span><span class="p">:</span> <span class="n">sig</span><span class="o">.</span><span class="n">return_annotation</span><span class="p">}</span> |
| 1278 | + <span class="k">for</span> <span class="n">parameter</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span> |
| 1279 | + <span class="n">annotations</span><span class="p">[</span><span class="n">parameter</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">parameter</span><span class="o">.</span><span class="n">annotation</span> |
| 1280 | + <span class="c1"># Return a FullArgSpec object with the extracted attributes</span> |
| 1281 | + <span class="k">return</span> <span class="n">inspect</span><span class="o">.</span><span class="n">FullArgSpec</span><span class="p">(</span> |
| 1282 | + <span class="n">args</span><span class="p">,</span> <span class="n">varargs</span><span class="p">,</span> <span class="n">varkw</span><span class="p">,</span> <span class="n">defaults</span><span class="p">,</span> <span class="n">kwonlyargs</span><span class="p">,</span> <span class="n">kwonlydefaults</span><span class="p">,</span> <span class="n">annotations</span> |
| 1283 | + <span class="p">)</span> |
| 1284 | + |
1245 | 1285 | <span class="c1"># Make dynamo graph to have same input/output spec as user code</span>
|
1246 | 1286 | <span class="k">def</span> <span class="nf">argument_names</span><span class="p">(</span><span class="n">f</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
1247 | 1287 | <span class="n">call_to_inspect</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">forward</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">)</span> <span class="k">else</span> <span class="n">f</span>
|
1248 |
| - <span class="n">fullargspec</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getfullargspec</span><span class="p">(</span><span class="n">call_to_inspect</span><span class="p">)</span> |
1249 |
| - <span class="k">if</span> <span class="n">inspect</span><span class="o">.</span><span class="n">ismethod</span><span class="p">(</span><span class="n">call_to_inspect</span><span class="p">):</span> |
1250 |
| - <span class="n">fullargspec</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> |
| 1288 | + |
| 1289 | + <span class="n">sig</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">signature</span><span class="p">(</span><span class="n">call_to_inspect</span><span class="p">)</span> |
| 1290 | + <span class="n">fullargspec</span> <span class="o">=</span> <span class="n">signature_to_fullargspec</span><span class="p">(</span><span class="n">sig</span><span class="p">)</span> |
1251 | 1291 |
|
1252 | 1292 | <span class="c1"># 1. Map `args` 1-to-1 to positional arguments in original signature.</span>
|
1253 | 1293 | <span class="n">input_strs</span> <span class="o">=</span> <span class="n">fullargspec</span><span class="o">.</span><span class="n">args</span><span class="p">[:</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)]</span>
|
|
0 commit comments