|
274 | 274 | "text/plain": [ |
275 | 275 | "[{'name': 'stdout',\n", |
276 | 276 | " 'output_type': 'stream',\n", |
277 | | - " 'text': ['CPU times: user 3 us, sys: 0 ns, total: 3 us\\n',\n", |
278 | | - " 'Wall time: 5.72 us\\n']},\n", |
| 277 | + " 'text': ['CPU times: user 1e+03 ns, sys: 1 us, total: 2 us\\n',\n", |
| 278 | + " 'Wall time: 3.1 us\\n']},\n", |
279 | 279 | " {'data': {'text/plain': ['2']},\n", |
280 | 280 | " 'metadata': {},\n", |
281 | 281 | " 'output_type': 'execute_result',\n", |
|
359 | 359 | "outputs": [ |
360 | 360 | { |
361 | 361 | "data": { |
362 | | - "image/png": "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", |
| 362 | + "image/png": "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", |
363 | 363 | "text/plain": [ |
364 | | - "<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=84x87>" |
| 364 | + "<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=117x122>" |
365 | 365 | ] |
366 | 366 | }, |
367 | 367 | "execution_count": null, |
|
401 | 401 | } |
402 | 402 | ], |
403 | 403 | "source": [ |
404 | | - "s.run('raise Exception(\"Oops\")')\n", |
| 404 | + "err_res = s.run('raise Exception(\"Oops\")')\n", |
405 | 405 | "typ,obj,st = s.exc\n", |
406 | 406 | "typ,obj" |
407 | 407 | ] |
|
417 | 417 | "text": [ |
418 | 418 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n", |
419 | 419 | "\u001b[0;31mException\u001b[0m Traceback (most recent call last)\n", |
420 | | - "Input \u001b[0;32mIn [1]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n", |
| 420 | + "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n", |
421 | 421 | "\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mOops\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", |
422 | 422 | "\n", |
423 | 423 | "\u001b[0;31mException\u001b[0m: Oops\n" |
|
499 | 499 | " {'data': {'text/plain': ['2']},\n", |
500 | 500 | " 'metadata': {},\n", |
501 | 501 | " 'output_type': 'execute_result',\n", |
502 | | - " 'execution_count': 3}]" |
| 502 | + " 'execution_count': 4}]" |
503 | 503 | ] |
504 | 504 | }, |
505 | 505 | "execution_count": null, |
|
512 | 512 | "c.outputs" |
513 | 513 | ] |
514 | 514 | }, |
| 515 | + { |
| 516 | + "cell_type": "code", |
| 517 | + "execution_count": null, |
| 518 | + "metadata": {}, |
| 519 | + "outputs": [], |
| 520 | + "source": [ |
| 521 | + "#| export\n", |
| 522 | + "def find_output(outp, # Output from `run`\n", |
| 523 | + " ot='execute_result' # Output_type to find\n", |
| 524 | + " ):\n", |
| 525 | + " \"Find first output of type `ot` in `CaptureShell.run` output\"\n", |
| 526 | + " return first(o for o in outp if o['output_type']==ot)" |
| 527 | + ] |
| 528 | + }, |
| 529 | + { |
| 530 | + "cell_type": "code", |
| 531 | + "execution_count": null, |
| 532 | + "metadata": {}, |
| 533 | + "outputs": [ |
| 534 | + { |
| 535 | + "data": { |
| 536 | + "text/markdown": [ |
| 537 | + "```json\n", |
| 538 | + "{'text/plain': ['2']}\n", |
| 539 | + "```" |
| 540 | + ], |
| 541 | + "text/plain": [ |
| 542 | + "{'text/plain': ['2']}" |
| 543 | + ] |
| 544 | + }, |
| 545 | + "execution_count": null, |
| 546 | + "metadata": {}, |
| 547 | + "output_type": "execute_result" |
| 548 | + } |
| 549 | + ], |
| 550 | + "source": [ |
| 551 | + "find_output(c.outputs)['data']" |
| 552 | + ] |
| 553 | + }, |
| 554 | + { |
| 555 | + "cell_type": "code", |
| 556 | + "execution_count": null, |
| 557 | + "metadata": {}, |
| 558 | + "outputs": [ |
| 559 | + { |
| 560 | + "data": { |
| 561 | + "text/plain": [ |
| 562 | + "['1\\n']" |
| 563 | + ] |
| 564 | + }, |
| 565 | + "execution_count": null, |
| 566 | + "metadata": {}, |
| 567 | + "output_type": "execute_result" |
| 568 | + } |
| 569 | + ], |
| 570 | + "source": [ |
| 571 | + "find_output(c.outputs, 'stream')['text']" |
| 572 | + ] |
| 573 | + }, |
| 574 | + { |
| 575 | + "cell_type": "code", |
| 576 | + "execution_count": null, |
| 577 | + "metadata": {}, |
| 578 | + "outputs": [], |
| 579 | + "source": [ |
| 580 | + "#| export\n", |
| 581 | + "def out_exec(outp):\n", |
| 582 | + " \"Get data from execution result in `outp`.\"\n", |
| 583 | + " out = find_output(outp)\n", |
| 584 | + " if out: return '\\n'.join(first(out['data'].values()))" |
| 585 | + ] |
| 586 | + }, |
| 587 | + { |
| 588 | + "cell_type": "code", |
| 589 | + "execution_count": null, |
| 590 | + "metadata": {}, |
| 591 | + "outputs": [ |
| 592 | + { |
| 593 | + "data": { |
| 594 | + "text/plain": [ |
| 595 | + "'2'" |
| 596 | + ] |
| 597 | + }, |
| 598 | + "execution_count": null, |
| 599 | + "metadata": {}, |
| 600 | + "output_type": "execute_result" |
| 601 | + } |
| 602 | + ], |
| 603 | + "source": [ |
| 604 | + "out_exec(c.outputs)" |
| 605 | + ] |
| 606 | + }, |
| 607 | + { |
| 608 | + "cell_type": "code", |
| 609 | + "execution_count": null, |
| 610 | + "metadata": {}, |
| 611 | + "outputs": [], |
| 612 | + "source": [ |
| 613 | + "#| export\n", |
| 614 | + "def out_stream(outp):\n", |
| 615 | + " \"Get text from stream in `outp`.\"\n", |
| 616 | + " out = find_output(outp, 'stream')\n", |
| 617 | + " if out: return ('\\n'.join(out['text'])).strip()" |
| 618 | + ] |
| 619 | + }, |
| 620 | + { |
| 621 | + "cell_type": "code", |
| 622 | + "execution_count": null, |
| 623 | + "metadata": {}, |
| 624 | + "outputs": [ |
| 625 | + { |
| 626 | + "data": { |
| 627 | + "text/plain": [ |
| 628 | + "'1'" |
| 629 | + ] |
| 630 | + }, |
| 631 | + "execution_count": null, |
| 632 | + "metadata": {}, |
| 633 | + "output_type": "execute_result" |
| 634 | + } |
| 635 | + ], |
| 636 | + "source": [ |
| 637 | + "out_stream(c.outputs)" |
| 638 | + ] |
| 639 | + }, |
| 640 | + { |
| 641 | + "cell_type": "code", |
| 642 | + "execution_count": null, |
| 643 | + "metadata": {}, |
| 644 | + "outputs": [], |
| 645 | + "source": [ |
| 646 | + "#| export\n", |
| 647 | + "def out_error(outp):\n", |
| 648 | + " \"Get traceback from error in `outp`.\"\n", |
| 649 | + " out = find_output(outp, 'error')\n", |
| 650 | + " if out: return '\\n'.join(out['traceback'])" |
| 651 | + ] |
| 652 | + }, |
| 653 | + { |
| 654 | + "cell_type": "code", |
| 655 | + "execution_count": null, |
| 656 | + "metadata": {}, |
| 657 | + "outputs": [ |
| 658 | + { |
| 659 | + "name": "stdout", |
| 660 | + "output_type": "stream", |
| 661 | + "text": [ |
| 662 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n", |
| 663 | + "\u001b[0;31mException\u001b[0m Traceback (most recent call last)\n", |
| 664 | + "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n", |
| 665 | + "\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mOops\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", |
| 666 | + "\n", |
| 667 | + "\u001b[0;31mException\u001b[0m: Oops\n" |
| 668 | + ] |
| 669 | + } |
| 670 | + ], |
| 671 | + "source": [ |
| 672 | + "print(out_error(err_res))" |
| 673 | + ] |
| 674 | + }, |
515 | 675 | { |
516 | 676 | "cell_type": "markdown", |
517 | 677 | "metadata": {}, |
|
0 commit comments