pydoc3.5 borks on my Mac

Skip Montanaro skip.montanaro at gmail.com
Sun Feb 1 11:24:03 EST 2015


I build several versions of Python from Mercurial sources on a regular
basis. I am starting on a new collection of programs for some database
work and figured I should start using Python 3. I wanted to look
something up quickly about the sqlite3 module, so I tried "pydoc
sqlite3". That worked fine, but I figured it was probably using Python
2.x. In fact, it was using Python 2.6. So, I found all my pydoc-ish
commands:

% like pydoc
/Users/skip/local/bin/pydoc
/Users/skip/local/bin/pydoc3
/Users/skip/local/bin/pydoc3.2
/Users/skip/local/bin/pydoc3.3
/Users/skip/local/bin/pydoc3.4
/Users/skip/local/bin/pydoc3.5
/usr/bin/pydoc
/usr/bin/pydoc2.6
/usr/bin/pydoc2.7
/usr/local/bin/pydoc3
/usr/local/bin/pydoc3.4

and tried pydoc3.5. That didn't work so well:

% pydoc3.5 sqlite3
Traceback (most recent call last):
  File "/Users/skip/local/bin/pydoc3.5", line 5, in <module>
    pydoc.cli()
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 2591, in cli
    help.help(arg)
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1874, in help
    elif request: doc(request, 'Help on %s:', output=self._output)
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1612, in doc
    pager(render_doc(thing, title, forceload))
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1412, in pager
    pager(text)
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1434, in <lambda>
    return lambda text: pipepager(text, 'less')
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1455, in pipepager
    pipe.write(text)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in
position 600: ordinal not in range(128)

I don't have PAGER or LANG set, but if I do, I get basically the same error:

% LANG=en_US.utf8 PAGER=less pydoc3.5 sqlite3
Traceback (most recent call last):
  File "/Users/skip/local/bin/pydoc3.5", line 5, in <module>
    pydoc.cli()
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 2591, in cli
    help.help(arg)
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1874, in help
    elif request: doc(request, 'Help on %s:', output=self._output)
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1612, in doc
    pager(render_doc(thing, title, forceload))
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1412, in pager
    pager(text)
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1428, in <lambda>
    return lambda text: pipepager(text, os.environ['PAGER'])
  File "/Users/skip/local/lib/python3.5/pydoc.py", line 1455, in pipepager
    pipe.write(text)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in
position 600: ordinal not in range(128)

I get the same thing from a python3.5 prompt using "import sqlite3 ;
help(sqlite3)". Not having any idea what was in position 600, I tried
getting help for each element in dir(sqlite3). That failed as well,
though it appeared for some strange reason to crap out on
help(sqlite3.dbapi2.__name__).

Any idea how I can track down this character so I can report a proper bug?

Thx,

Skip



More information about the Python-list mailing list