Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Eliminate Str and CStr trait types except in IPython.parallel

  • Loading branch information...
commit 0784a05ac8a663dcbde27968ff5643ac13c5f762 1 parent a00541c
Thomas Kluyver authored
8 IPython/config/tests/test_configurable.py
@@ -28,7 +28,7 @@
28 28 )
29 29
30 30 from IPython.utils.traitlets import (
31   - Int, Float, Str
  31 + Int, Float, Unicode
32 32 )
33 33
34 34 from IPython.config.loader import Config
@@ -42,7 +42,7 @@
42 42 class MyConfigurable(Configurable):
43 43 a = Int(1, config=True, help="The integer a.")
44 44 b = Float(1.0, config=True, help="The integer b.")
45   - c = Str('no config')
  45 + c = Unicode('no config')
46 46
47 47
48 48 mc_help=u"""MyConfigurable options
@@ -56,11 +56,11 @@ class MyConfigurable(Configurable):
56 56
57 57 class Foo(Configurable):
58 58 a = Int(0, config=True, help="The integer a.")
59   - b = Str('nope', config=True)
  59 + b = Unicode('nope', config=True)
60 60
61 61
62 62 class Bar(Foo):
63   - b = Str('gotit', config=False, help="The string b.")
  63 + b = Unicode('gotit', config=False, help="The string b.")
64 64 c = Float(config=True, help="The string c.")
65 65
66 66
40 IPython/core/formatters.py
@@ -28,7 +28,7 @@
28 28 # Our own imports
29 29 from IPython.config.configurable import Configurable
30 30 from IPython.lib import pretty
31   -from IPython.utils.traitlets import Bool, Dict, Int, Str, CStr
  31 +from IPython.utils.traitlets import Bool, Dict, Int, Unicode, CUnicode
32 32
33 33
34 34 #-----------------------------------------------------------------------------
@@ -191,11 +191,11 @@ class BaseFormatter(Configurable):
191 191 returned and this format type is not used.
192 192 """
193 193
194   - format_type = Str('text/plain')
  194 + format_type = Unicode('text/plain')
195 195
196 196 enabled = Bool(True, config=True)
197 197
198   - print_method = Str('__repr__')
  198 + print_method = Unicode('__repr__')
199 199
200 200 # The singleton printers.
201 201 # Maps the IDs of the builtin singleton objects to the format functions.
@@ -337,14 +337,14 @@ def dtype_pprinter(obj, p, cycle):
337 337 """
338 338
339 339 # The format type of data returned.
340   - format_type = Str('text/plain')
  340 + format_type = Unicode('text/plain')
341 341
342 342 # This subclass ignores this attribute as it always need to return
343 343 # something.
344 344 enabled = Bool(True, config=False)
345 345
346 346 # Look for a _repr_pretty_ methods to use for pretty printing.
347   - print_method = Str('_repr_pretty_')
  347 + print_method = Unicode('_repr_pretty_')
348 348
349 349 # Whether to pretty-print or not.
350 350 pprint = Bool(True, config=True)
@@ -356,12 +356,12 @@ def dtype_pprinter(obj, p, cycle):
356 356 max_width = Int(79, config=True)
357 357
358 358 # The newline character.
359   - newline = Str('\n', config=True)
  359 + newline = Unicode('\n', config=True)
360 360
361 361 # format-string for pprinting floats
362   - float_format = Str('%r')
  362 + float_format = Unicode('%r')
363 363 # setter for float precision, either int or direct format-string
364   - float_precision = CStr('', config=True)
  364 + float_precision = CUnicode('', config=True)
365 365
366 366 def _float_precision_changed(self, name, old, new):
367 367 """float_precision changed, set float_format accordingly.
@@ -454,9 +454,9 @@ class HTMLFormatter(BaseFormatter):
454 454 could be injected into an existing DOM. It should *not* include the
455 455 ```<html>`` or ```<body>`` tags.
456 456 """
457   - format_type = Str('text/html')
  457 + format_type = Unicode('text/html')
458 458
459   - print_method = Str('_repr_html_')
  459 + print_method = Unicode('_repr_html_')
460 460
461 461
462 462 class SVGFormatter(BaseFormatter):
@@ -471,9 +471,9 @@ class SVGFormatter(BaseFormatter):
471 471 ```<svg>``` tags, that could be injected into an existing DOM. It should
472 472 *not* include the ```<html>`` or ```<body>`` tags.
473 473 """
474   - format_type = Str('image/svg+xml')
  474 + format_type = Unicode('image/svg+xml')
475 475
476   - print_method = Str('_repr_svg_')
  476 + print_method = Unicode('_repr_svg_')
477 477
478 478
479 479 class PNGFormatter(BaseFormatter):
@@ -487,9 +487,9 @@ class PNGFormatter(BaseFormatter):
487 487 The return value of this formatter should be raw PNG data, *not*
488 488 base64 encoded.
489 489 """
490   - format_type = Str('image/png')
  490 + format_type = Unicode('image/png')
491 491
492   - print_method = Str('_repr_png_')
  492 + print_method = Unicode('_repr_png_')
493 493
494 494
495 495 class LatexFormatter(BaseFormatter):
@@ -503,9 +503,9 @@ class LatexFormatter(BaseFormatter):
503 503 The return value of this formatter should be a valid LaTeX equation,
504 504 enclosed in either ```$``` or ```$$```.
505 505 """
506   - format_type = Str('text/latex')
  506 + format_type = Unicode('text/latex')
507 507
508   - print_method = Str('_repr_latex_')
  508 + print_method = Unicode('_repr_latex_')
509 509
510 510
511 511 class JSONFormatter(BaseFormatter):
@@ -518,9 +518,9 @@ class JSONFormatter(BaseFormatter):
518 518
519 519 The return value of this formatter should be a valid JSON string.
520 520 """
521   - format_type = Str('application/json')
  521 + format_type = Unicode('application/json')
522 522
523   - print_method = Str('_repr_json_')
  523 + print_method = Unicode('_repr_json_')
524 524
525 525
526 526 class JavascriptFormatter(BaseFormatter):
@@ -534,9 +534,9 @@ class JavascriptFormatter(BaseFormatter):
534 534 The return value of this formatter should be valid Javascript code and
535 535 should *not* be enclosed in ```<script>``` tags.
536 536 """
537   - format_type = Str('application/javascript')
  537 + format_type = Unicode('application/javascript')
538 538
539   - print_method = Str('_repr_javascript_')
  539 + print_method = Unicode('_repr_javascript_')
540 540
541 541 FormatterABC.register(BaseFormatter)
542 542 FormatterABC.register(PlainTextFormatter)
27 IPython/core/interactiveshell.py
@@ -70,7 +70,7 @@
70 70 from IPython.utils.strdispatch import StrDispatch
71 71 from IPython.utils.syspathcontext import prepended_to_syspath
72 72 from IPython.utils.text import num_ini_spaces, format_screen, LSString, SList
73   -from IPython.utils.traitlets import (Int, Str, CBool, CaselessStrEnum, Enum,
  73 +from IPython.utils.traitlets import (Int, CBool, CaselessStrEnum, Enum,
74 74 List, Unicode, Instance, Type)
75 75 from IPython.utils.warn import warn, error, fatal
76 76 import IPython.core.hooks
@@ -122,16 +122,16 @@ def get_default_colors():
122 122 return 'Linux'
123 123
124 124
125   -class SeparateStr(Str):
126   - """A Str subclass to validate separate_in, separate_out, etc.
  125 +class SeparateUnicode(Unicode):
  126 + """A Unicode subclass to validate separate_in, separate_out, etc.
127 127
128   - This is a Str based trait that converts '0'->'' and '\\n'->'\n'.
  128 + This is a Unicode based trait that converts '0'->'' and '\\n'->'\n'.
129 129 """
130 130
131 131 def validate(self, obj, value):
132 132 if value == '0': value = ''
133 133 value = value.replace('\\n','\n')
134   - return super(SeparateStr, self).validate(obj, value)
  134 + return super(SeparateUnicode, self).validate(obj, value)
135 135
136 136
137 137 class ReadlineNoRecord(object):
@@ -294,9 +294,9 @@ def _exiter_default(self):
294 294 """
295 295 )
296 296
297   - prompt_in1 = Str('In [\\#]: ', config=True)
298   - prompt_in2 = Str(' .\\D.: ', config=True)
299   - prompt_out = Str('Out[\\#]: ', config=True)
  297 + prompt_in1 = Unicode('In [\\#]: ', config=True)
  298 + prompt_in2 = Unicode(' .\\D.: ', config=True)
  299 + prompt_out = Unicode('Out[\\#]: ', config=True)
300 300 prompts_pad_left = CBool(True, config=True)
301 301 quiet = CBool(False, config=True)
302 302
@@ -307,7 +307,7 @@ def _exiter_default(self):
307 307 readline_use = CBool(True, config=True)
308 308 readline_merge_completions = CBool(True, config=True)
309 309 readline_omit__names = Enum((0,1,2), default_value=2, config=True)
310   - readline_remove_delims = Str('-/~', config=True)
  310 + readline_remove_delims = Unicode('-/~', config=True)
311 311 # don't use \M- bindings by default, because they
312 312 # conflict with 8-bit encodings. See gh-58,gh-88
313 313 readline_parse_and_bind = List([
@@ -327,9 +327,9 @@ def _exiter_default(self):
327 327
328 328 # TODO: this part of prompt management should be moved to the frontends.
329 329 # Use custom TraitTypes that convert '0'->'' and '\\n'->'\n'
330   - separate_in = SeparateStr('\n', config=True)
331   - separate_out = SeparateStr('', config=True)
332   - separate_out2 = SeparateStr('', config=True)
  330 + separate_in = SeparateUnicode('\n', config=True)
  331 + separate_out = SeparateUnicode('', config=True)
  332 + separate_out2 = SeparateUnicode('', config=True)
333 333 wildcards_case_sensitive = CBool(True, config=True)
334 334 xmode = CaselessStrEnum(('Context','Plain', 'Verbose'),
335 335 default_value='Context', config=True)
@@ -1670,7 +1670,8 @@ def init_readline(self):
1670 1670 # Remove some chars from the delimiters list. If we encounter
1671 1671 # unicode chars, discard them.
1672 1672 delims = readline.get_completer_delims().encode("ascii", "ignore")
1673   - delims = delims.translate(None, self.readline_remove_delims)
  1673 + for d in self.readline_remove_delims:
  1674 + delims = delims.replace(d, "")
1674 1675 delims = delims.replace(ESC_MAGIC, '')
1675 1676 readline.set_completer_delims(delims)
1676 1677 # otherwise we end up with a monster history after a while:
8 IPython/core/magic.py
@@ -3472,25 +3472,25 @@ def magic_precision(self, s=''):
3472 3472 In [1]: from math import pi
3473 3473
3474 3474 In [2]: %precision 3
3475   - Out[2]: '%.3f'
  3475 + Out[2]: u'%.3f'
3476 3476
3477 3477 In [3]: pi
3478 3478 Out[3]: 3.142
3479 3479
3480 3480 In [4]: %precision %i
3481   - Out[4]: '%i'
  3481 + Out[4]: u'%i'
3482 3482
3483 3483 In [5]: pi
3484 3484 Out[5]: 3
3485 3485
3486 3486 In [6]: %precision %e
3487   - Out[6]: '%e'
  3487 + Out[6]: u'%e'
3488 3488
3489 3489 In [7]: pi**10
3490 3490 Out[7]: 9.364805e+04
3491 3491
3492 3492 In [8]: %precision
3493   - Out[8]: '%r'
  3493 + Out[8]: u'%r'
3494 3494
3495 3495 In [9]: pi**10
3496 3496 Out[9]: 93648.047476082982
18 IPython/core/prefilter.py
@@ -36,7 +36,7 @@
36 36 from IPython.core.splitinput import split_user_input
37 37 from IPython.core import page
38 38
39   -from IPython.utils.traitlets import List, Int, Any, Str, CBool, Bool, Instance
  39 +from IPython.utils.traitlets import List, Int, Any, Unicode, CBool, Bool, Instance
40 40 from IPython.utils.text import make_quoted_expr
41 41 from IPython.utils.autoattr import auto_attr
42 42
@@ -756,7 +756,7 @@ def check(self, line_info):
756 756
757 757 class PrefilterHandler(Configurable):
758 758
759   - handler_name = Str('normal')
  759 + handler_name = Unicode('normal')
760 760 esc_strings = List([])
761 761 shell = Instance('IPython.core.interactiveshell.InteractiveShellABC')
762 762 prefilter_manager = Instance('IPython.core.prefilter.PrefilterManager')
@@ -797,7 +797,7 @@ def __str__(self):
797 797
798 798 class AliasHandler(PrefilterHandler):
799 799
800   - handler_name = Str('alias')
  800 + handler_name = Unicode('alias')
801 801
802 802 def handle(self, line_info):
803 803 """Handle alias input lines. """
@@ -812,7 +812,7 @@ def handle(self, line_info):
812 812
813 813 class ShellEscapeHandler(PrefilterHandler):
814 814
815   - handler_name = Str('shell')
  815 + handler_name = Unicode('shell')
816 816 esc_strings = List([ESC_SHELL, ESC_SH_CAP])
817 817
818 818 def handle(self, line_info):
@@ -839,7 +839,7 @@ def handle(self, line_info):
839 839
840 840
841 841 class MacroHandler(PrefilterHandler):
842   - handler_name = Str("macro")
  842 + handler_name = Unicode("macro")
843 843
844 844 def handle(self, line_info):
845 845 obj = self.shell.user_ns.get(line_info.ifun)
@@ -850,7 +850,7 @@ def handle(self, line_info):
850 850
851 851 class MagicHandler(PrefilterHandler):
852 852
853   - handler_name = Str('magic')
  853 + handler_name = Unicode('magic')
854 854 esc_strings = List([ESC_MAGIC])
855 855
856 856 def handle(self, line_info):
@@ -864,7 +864,7 @@ def handle(self, line_info):
864 864
865 865 class AutoHandler(PrefilterHandler):
866 866
867   - handler_name = Str('auto')
  867 + handler_name = Unicode('auto')
868 868 esc_strings = List([ESC_PAREN, ESC_QUOTE, ESC_QUOTE2])
869 869
870 870 def handle(self, line_info):
@@ -924,7 +924,7 @@ def handle(self, line_info):
924 924
925 925 class HelpHandler(PrefilterHandler):
926 926
927   - handler_name = Str('help')
  927 + handler_name = Unicode('help')
928 928 esc_strings = List([ESC_HELP])
929 929
930 930 def handle(self, line_info):
@@ -962,7 +962,7 @@ def handle(self, line_info):
962 962
963 963 class EmacsHandler(PrefilterHandler):
964 964
965   - handler_name = Str('emacs')
  965 + handler_name = Unicode('emacs')
966 966 esc_strings = List([])
967 967
968 968 def handle(self, line_info):
8 IPython/core/tests/test_magic.py
@@ -448,15 +448,15 @@ def doctest_precision():
448 448 In [1]: f = get_ipython().shell.display_formatter.formatters['text/plain']
449 449
450 450 In [2]: %precision 5
451   - Out[2]: '%.5f'
  451 + Out[2]: u'%.5f'
452 452
453 453 In [3]: f.float_format
454   - Out[3]: '%.5f'
  454 + Out[3]: u'%.5f'
455 455
456 456 In [4]: %precision %e
457   - Out[4]: '%e'
  457 + Out[4]: u'%e'
458 458
459 459 In [5]: f(3.1415927)
460   - Out[5]: '3.141593e+00'
  460 + Out[5]: u'3.141593e+00'
461 461 """
462 462
15 IPython/frontend/qt/console/ipython_widget.py
@@ -21,7 +21,7 @@
21 21 from IPython.core.inputsplitter import IPythonInputSplitter, \
22 22 transform_ipy_prompt
23 23 from IPython.core.usage import default_gui_banner
24   -from IPython.utils.traitlets import Bool, Str, Unicode
  24 +from IPython.utils.traitlets import Bool, Unicode
25 25 from frontend_widget import FrontendWidget
26 26 import styles
27 27
@@ -82,19 +82,18 @@ class IPythonWidget(FrontendWidget):
82 82 3. IPython: .error, .in-prompt, .out-prompt, etc
83 83 """)
84 84
85   -
86   - syntax_style = Str(config=True,
  85 + syntax_style = Unicode(config=True,
87 86 help="""
88 87 If not empty, use this Pygments style for syntax highlighting. Otherwise,
89 88 the style sheet is queried for Pygments style information.
90 89 """)
91 90
92 91 # Prompts.
93   - in_prompt = Str(default_in_prompt, config=True)
94   - out_prompt = Str(default_out_prompt, config=True)
95   - input_sep = Str(default_input_sep, config=True)
96   - output_sep = Str(default_output_sep, config=True)
97   - output_sep2 = Str(default_output_sep2, config=True)
  92 + in_prompt = Unicode(default_in_prompt, config=True)
  93 + out_prompt = Unicode(default_out_prompt, config=True)
  94 + input_sep = Unicode(default_input_sep, config=True)
  95 + output_sep = Unicode(default_output_sep, config=True)
  96 + output_sep2 = Unicode(default_output_sep2, config=True)
98 97
99 98 # FrontendWidget protected class variables.
100 99 _input_splitter_class = IPythonInputSplitter
2  IPython/frontend/terminal/embed.py
@@ -33,7 +33,7 @@
33 33 from IPython.frontend.terminal.interactiveshell import TerminalInteractiveShell
34 34 from IPython.frontend.terminal.ipapp import load_default_config
35 35
36   -from IPython.utils.traitlets import Bool, Str, CBool, Unicode
  36 +from IPython.utils.traitlets import Bool, CBool, Unicode
37 37 from IPython.utils.io import ask_yes_no
38 38
39 39
2  IPython/frontend/terminal/interactiveshell.py
@@ -31,7 +31,7 @@
31 31 from IPython.utils.process import abbrev_cwd
32 32 from IPython.utils.warn import warn
33 33 from IPython.utils.text import num_ini_spaces
34   -from IPython.utils.traitlets import Int, Str, CBool, Unicode
  34 +from IPython.utils.traitlets import Int, CBool, Unicode
35 35
36 36 #-----------------------------------------------------------------------------
37 37 # Utilities
18 IPython/utils/tests/test_traitlets.py
@@ -25,8 +25,8 @@
25 25 from unittest import TestCase
26 26
27 27 from IPython.utils.traitlets import (
28   - HasTraits, MetaHasTraits, TraitType, Any, CStr,
29   - Int, Long, Float, Complex, Str, Unicode, TraitError,
  28 + HasTraits, MetaHasTraits, TraitType, Any, CBytes,
  29 + Int, Long, Float, Complex, Bytes, Unicode, TraitError,
30 30 Undefined, Type, This, Instance, TCPAddress, List, Tuple
31 31 )
32 32
@@ -700,13 +700,13 @@ class TestComplex(TraitTestBase):
700 700 _bad_values = [10L, -10L, u'10L', u'-10L', 'ten', [10], {'ten': 10},(10,), None]
701 701
702 702
703   -class StringTrait(HasTraits):
  703 +class BytesTrait(HasTraits):
704 704
705   - value = Str('string')
  705 + value = Bytes('string')
706 706
707   -class TestString(TraitTestBase):
  707 +class TestBytes(TraitTestBase):
708 708
709   - obj = StringTrait()
  709 + obj = BytesTrait()
710 710
711 711 _default_value = 'string'
712 712 _good_values = ['10', '-10', '10L',
@@ -781,7 +781,7 @@ class TestTupleTrait(TraitTestBase):
781 781 def test_invalid_args(self):
782 782 self.assertRaises(TypeError, Tuple, 5)
783 783 self.assertRaises(TypeError, Tuple, default_value='hello')
784   - t = Tuple(Int, CStr, default_value=(1,5))
  784 + t = Tuple(Int, CBytes, default_value=(1,5))
785 785
786 786 class LooseTupleTrait(HasTraits):
787 787
@@ -798,12 +798,12 @@ class TestLooseTupleTrait(TraitTestBase):
798 798 def test_invalid_args(self):
799 799 self.assertRaises(TypeError, Tuple, 5)
800 800 self.assertRaises(TypeError, Tuple, default_value='hello')
801   - t = Tuple(Int, CStr, default_value=(1,5))
  801 + t = Tuple(Int, CBytes, default_value=(1,5))
802 802
803 803
804 804 class MultiTupleTrait(HasTraits):
805 805
806   - value = Tuple(Int, Str, default_value=[99,'bottles'])
  806 + value = Tuple(Int, Bytes, default_value=[99,'bottles'])
807 807
808 808 class TestMultiTuple(TraitTestBase):
809 809
9 IPython/utils/traitlets.py
@@ -951,7 +951,9 @@ def validate (self, obj, value):
951 951 except:
952 952 self.error(obj, value)
953 953
954   -
  954 +# We should always be explicit about whether we're using bytes or unicode, both
  955 +# for Python 3 conversion and for reliable unicode behaviour on Python 2. So
  956 +# we don't have a Str type.
955 957 class Bytes(TraitType):
956 958 """A trait for strings."""
957 959
@@ -996,11 +998,6 @@ def validate(self, obj, value):
996 998 return unicode(value)
997 999 except:
998 1000 self.error(obj, value)
999   -
1000   -if sys.version_info[0] < 3:
1001   - Str, CStr = Bytes, CBytes
1002   -else:
1003   - Str, CStr = Unicode, CUnicode
1004 1001
1005 1002
1006 1003 class Bool(TraitType):

0 comments on commit 0784a05

Please sign in to comment.
Something went wrong with that request. Please try again.