Show More
@@ -3460,4 +3460,76 b' Defaulting color scheme to \'NoColor\'"""' | |||||
3460 | See %xmode for changing exception reporting modes.""" |
|
3460 | See %xmode for changing exception reporting modes.""" | |
3461 | self.shell.showtraceback() |
|
3461 | self.shell.showtraceback() | |
3462 |
|
3462 | |||
|
3463 | @testdec.skip_doctest | |||
|
3464 | def magic_precision(self, s=''): | |||
|
3465 | """Set floating point precision for pretty printing. | |||
|
3466 | ||||
|
3467 | Can set either integer precision or a format string. | |||
|
3468 | ||||
|
3469 | If numpy has been imported and precision is an int, | |||
|
3470 | numpy display precision will also be set, via ``numpy.set_printoptions``. | |||
|
3471 | ||||
|
3472 | If no argument is given, defaults will be restored. | |||
|
3473 | ||||
|
3474 | Examples | |||
|
3475 | -------- | |||
|
3476 | :: | |||
|
3477 | ||||
|
3478 | In [1]: from math import pi | |||
|
3479 | ||||
|
3480 | In [2]: %precision 3 | |||
|
3481 | ||||
|
3482 | In [3]: pi | |||
|
3483 | Out[3]: 3.142 | |||
|
3484 | ||||
|
3485 | In [4]: %precision %i | |||
|
3486 | ||||
|
3487 | In [5]: pi | |||
|
3488 | Out[5]: 3 | |||
|
3489 | ||||
|
3490 | In [6]: %precision %e | |||
|
3491 | ||||
|
3492 | In [7]: pi**10 | |||
|
3493 | Out[7]: 9.364805e+04 | |||
|
3494 | ||||
|
3495 | In [8]: %precision | |||
|
3496 | ||||
|
3497 | In [9]: pi**10 | |||
|
3498 | Out[9]: 93648.047476082982 | |||
|
3499 | ||||
|
3500 | """ | |||
|
3501 | ||||
|
3502 | if '%' in s: | |||
|
3503 | # got explicit format string | |||
|
3504 | fmt = s | |||
|
3505 | try: | |||
|
3506 | fmt%3.14159 | |||
|
3507 | except: | |||
|
3508 | raise TypeError("Precision must be int or format string, not %r"%s) | |||
|
3509 | elif s: | |||
|
3510 | # otherwise, should be an int | |||
|
3511 | try: | |||
|
3512 | i = int(s) | |||
|
3513 | assert i >= 0 | |||
|
3514 | except: | |||
|
3515 | raise TypeError("Precision must be non-negative int or format string, not %r"%s) | |||
|
3516 | ||||
|
3517 | fmt = '%%.%if'%i | |||
|
3518 | if 'numpy' in sys.modules: | |||
|
3519 | import numpy | |||
|
3520 | numpy.set_printoptions(precision=i) | |||
|
3521 | else: | |||
|
3522 | # default back to repr | |||
|
3523 | fmt = '%r' | |||
|
3524 | if 'numpy' in sys.modules: | |||
|
3525 | import numpy | |||
|
3526 | # numpy default is 8 | |||
|
3527 | numpy.set_printoptions(precision=8) | |||
|
3528 | ||||
|
3529 | def _pretty_float(obj,p,cycle): | |||
|
3530 | p.text(fmt%obj) | |||
|
3531 | ||||
|
3532 | ptformatter = self.shell.display_formatter.formatters['text/plain'] | |||
|
3533 | ptformatter.for_type(float, _pretty_float) | |||
|
3534 | ||||
3463 | # end Magic |
|
3535 | # end Magic |
General Comments 0
You need to be logged in to leave comments.
Login now