|
469 | 469 | "def _retr_mdoc(cells):\n", |
470 | 470 | " \"Search for `_doc_` variable, used to create module docstring\"\n", |
471 | 471 | " trees = L(cells).map(NbCell.parsed_).concat()\n", |
472 | | - " r1 = [o for o in trees if isinstance(o, _assign_types)]\n", |
473 | | - " res = [nested_attr(o, 'value.value') for o in r1 if getattr(o.targets[0],'id',None)=='_doc_']\n", |
474 | | - " return f'\"\"\"{res[0]}\"\"\"\\n\\n' if res else \"\"" |
| 472 | + " for o in trees:\n", |
| 473 | + " if isinstance(o, _assign_types) and getattr(o.targets[0],'id',None)=='_doc_':\n", |
| 474 | + " v = try_attrs(o.value, 'value', 's') # py37 uses `ast.Str.s`\n", |
| 475 | + " return f'\"\"\"{v}\"\"\"\\n\\n' \n", |
| 476 | + " return \"\"" |
475 | 477 | ] |
476 | 478 | }, |
477 | 479 | { |
478 | 480 | "cell_type": "code", |
479 | 481 | "execution_count": null, |
480 | 482 | "metadata": {}, |
481 | | - "outputs": [ |
482 | | - { |
483 | | - "ename": "Exception", |
484 | | - "evalue": "([\"Assign(targets=[Name(id='a', ctx=Store())], value=Constant(value='b'))\", \"Assign(targets=[Name(id='_doc_', ctx=Store())], value=Constant(value='hi'))\"], [<ast.Assign object at 0x114aaa6a0>, <ast.Assign object at 0x114aaa610>], [<ast.Assign object at 0x114aaa6a0>, <ast.Assign object at 0x114aaa610>], ['hi'])", |
485 | | - "output_type": "error", |
486 | | - "traceback": [ |
487 | | - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
488 | | - "\u001b[0;31mException\u001b[0m Traceback (most recent call last)", |
489 | | - "Input \u001b[0;32mIn [30]\u001b[0m, in \u001b[0;36m<cell line: 5>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m r1 \u001b[38;5;241m=\u001b[39m [o \u001b[38;5;28;01mfor\u001b[39;00m o \u001b[38;5;129;01min\u001b[39;00m trees \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(o, _assign_types)]\n\u001b[1;32m 4\u001b[0m res \u001b[38;5;241m=\u001b[39m [nested_attr(o, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mvalue.value\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m o \u001b[38;5;129;01min\u001b[39;00m r1 \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(o\u001b[38;5;241m.\u001b[39mtargets[\u001b[38;5;241m0\u001b[39m],\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;28;01mNone\u001b[39;00m)\u001b[38;5;241m==\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_doc_\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m----> 5\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(([ast\u001b[38;5;241m.\u001b[39mdump(o) \u001b[38;5;28;01mfor\u001b[39;00m o \u001b[38;5;129;01min\u001b[39;00m r1], trees, r1, res))\n", |
490 | | - "\u001b[0;31mException\u001b[0m: ([\"Assign(targets=[Name(id='a', ctx=Store())], value=Constant(value='b'))\", \"Assign(targets=[Name(id='_doc_', ctx=Store())], value=Constant(value='hi'))\"], [<ast.Assign object at 0x114aaa6a0>, <ast.Assign object at 0x114aaa610>], [<ast.Assign object at 0x114aaa6a0>, <ast.Assign object at 0x114aaa610>], ['hi'])" |
491 | | - ] |
492 | | - } |
493 | | - ], |
494 | | - "source": [ |
495 | | - "cells = make_code_cells(\"a = 'b'\\n_doc_ = 'hi'\")\n", |
496 | | - "trees = L(cells).map(NbCell.parsed_).concat()\n", |
497 | | - "r1 = [o for o in trees if isinstance(o, _assign_types)]\n", |
498 | | - "res = [nested_attr(o, 'value.value') for o in r1 if getattr(o.targets[0],'id',None)=='_doc_']\n", |
499 | | - "raise Exception(([ast.dump(o) for o in r1], trees, r1, res))" |
500 | | - ] |
501 | | - }, |
502 | | - { |
503 | | - "cell_type": "code", |
504 | | - "execution_count": null, |
505 | | - "metadata": {}, |
506 | | - "outputs": [ |
507 | | - { |
508 | | - "ename": "Exception", |
509 | | - "evalue": "(['a', '_doc_'], [<ast.Assign object at 0x11e5fda60>, <ast.Assign object at 0x1037c4220>], [<ast.Assign object at 0x11e5fda60>, <ast.Assign object at 0x1037c4220>], ['hi'])", |
510 | | - "output_type": "error", |
511 | | - "traceback": [ |
512 | | - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
513 | | - "\u001b[0;31mException\u001b[0m Traceback (most recent call last)", |
514 | | - "Input \u001b[0;32mIn [33]\u001b[0m, in \u001b[0;36m<cell line: 3>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#|hide\u001b[39;00m\n\u001b[1;32m 2\u001b[0m c \u001b[38;5;241m=\u001b[39m make_code_cells(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124ma = \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m_doc_ = \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhi\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 3\u001b[0m test_eq(\u001b[43m_retr_mdoc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mc\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhi\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n", |
515 | | - "Input \u001b[0;32mIn [32]\u001b[0m, in \u001b[0;36m_retr_mdoc\u001b[0;34m(cells)\u001b[0m\n\u001b[1;32m 5\u001b[0m r1 \u001b[38;5;241m=\u001b[39m [o \u001b[38;5;28;01mfor\u001b[39;00m o \u001b[38;5;129;01min\u001b[39;00m trees \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(o, _assign_types)]\n\u001b[1;32m 6\u001b[0m res \u001b[38;5;241m=\u001b[39m [nested_attr(o, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mvalue.value\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m o \u001b[38;5;129;01min\u001b[39;00m r1 \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(o\u001b[38;5;241m.\u001b[39mtargets[\u001b[38;5;241m0\u001b[39m],\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;28;01mNone\u001b[39;00m)\u001b[38;5;241m==\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_doc_\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m----> 7\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(([\u001b[38;5;28mgetattr\u001b[39m(o\u001b[38;5;241m.\u001b[39mtargets[\u001b[38;5;241m0\u001b[39m],\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;28;01mfor\u001b[39;00m o \u001b[38;5;129;01min\u001b[39;00m r1], trees, r1, res))\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mres[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m res \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", |
516 | | - "\u001b[0;31mException\u001b[0m: (['a', '_doc_'], [<ast.Assign object at 0x11e5fda60>, <ast.Assign object at 0x1037c4220>], [<ast.Assign object at 0x11e5fda60>, <ast.Assign object at 0x1037c4220>], ['hi'])" |
517 | | - ] |
518 | | - } |
519 | | - ], |
| 483 | + "outputs": [], |
520 | 484 | "source": [ |
521 | 485 | "#|hide\n", |
522 | 486 | "c = make_code_cells(\"a = 'b'\\n_doc_ = 'hi'\")\n", |
|
0 commit comments