This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年01月04日 22:27 by eric.snow, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| issue20123-fix-pydoc-synopsis.diff | eric.snow, 2014年01月05日 03:40 | review | ||
| koobs-freebsd9-3.4-build57.log | koobs, 2014年04月13日 06:45 | |||
| Messages (21) | |||
|---|---|---|---|
| msg207319 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月04日 22:27 | |
I'm guessing this is a very seldom (never?) used code path. I've included a patch to test and fix the problem. The patch includes several related tests for pydoc.
$ py3 -c 'import pydoc; pydoc.synopsis("/opt/python3.4/lib/python3.4/lib-dynload/time.cpython-34m.so")'
Traceback (most recent call last):
File "/opt/python3.4/lib/python3.4/tokenize.py", line 368, in find_cookie
line_string = line.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf4 in position 96: invalid continuation byte
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/opt/python3.4/lib/python3.4/pydoc.py", line 229, in synopsis
file = tokenize.open(filename)
File "/opt/python3.4/lib/python3.4/tokenize.py", line 429, in open
encoding, lines = detect_encoding(buffer.readline)
File "/opt/python3.4/lib/python3.4/tokenize.py", line 409, in detect_encoding
encoding = find_cookie(first)
File "/opt/python3.4/lib/python3.4/tokenize.py", line 373, in find_cookie
raise SyntaxError(msg)
SyntaxError: invalid or missing encoding declaration for '/opt/python3.4/lib/python3.4/lib-dynload/time.cpython-34m.so'
|
|||
| msg207321 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月04日 22:37 | |
FYI, I found this while working on issue #19703. |
|||
| msg207328 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年01月05日 02:20 | |
Well please get a second opinion. I don't know why you added me, I'm not qualified. |
|||
| msg207330 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月05日 02:22 | |
Not sure why I nosy'ed you, either. :) |
|||
| msg207334 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2014年01月05日 02:47 | |
In 2.7 the code just does an open. Victor changed it to call tokenize.open in 3.2, but tokenize.open obviously only works on python source files. So the logic of that method is now completely wrong. I'm not sure the logic made a lot of sense even before...if the extension is binary it just closes it again. So the initial open is for its side effect of returning None if the file can't be opened. Anyway, the logic of that method clearly needs to be rewritten. And obviously there are some missing tests.... I don't see any patch attached to the issue, by the way. |
|||
| msg207335 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月05日 02:52 | |
Thanks for taking a look. Here's the patch that I totally forget to attach. |
|||
| msg207337 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2014年01月05日 03:15 | |
Is it the case that given a filename, it might be possible to load a module even if open(filename) fails?
I think the logic is clearer in the form where it is not pulled out into a separate helper function. You can avoid the double check on the extension by doing:
if filename.endswith(importlib.machinery.BYTECODE_SUFFIXES):
loader = importlib.machinery.SourcelessFileLoader('__temp__',
filename)
elif filename.endswith(importlib.machinery.EXTENSION_SUFFIXES):
loader = importlib.machinery.ExtensionFileLoader('__temp__',
filename)
else:
loader = None
if loader:
xxxxx
else:
xxxxx
|
|||
| msg207344 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月05日 03:40 | |
Sounds good to me. Here's an updated patch. |
|||
| msg207345 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2014年01月05日 03:47 | |
Looks good, except you can replace those any calls with simple calls to endswith using a tuple of strings (I forgot the call to tuple in my example). |
|||
| msg207346 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2014年01月05日 03:58 | |
New changeset d6c3fb8d5f84 by Eric Snow in branch 'default': Issue 20123: Fix pydoc.synopsis() for "binary" modules. http://hg.python.org/cpython/rev/d6c3fb8d5f84 |
|||
| msg207347 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月05日 04:00 | |
Ah, I missed that in your earlier suggestion. I followed your recommendation. Thanks for that. :) |
|||
| msg207348 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月05日 04:44 | |
This broke one of the FreeBSD buildbots: http://buildbot.python.org/all/builders/AMD64%20FreeBSD%209.0%203.x/builds/6102 |
|||
| msg207349 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2014年01月05日 05:05 | |
New changeset ff3be21338d5 by Eric Snow in branch 'default': Issue 20123: try using a different builtin module in a pydoc test. http://hg.python.org/cpython/rev/ff3be21338d5 |
|||
| msg207350 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2014年01月05日 06:06 | |
New changeset efcf163d04f5 by Eric Snow in branch 'default': Issue 20123: Disable a problematic test. http://hg.python.org/cpython/rev/efcf163d04f5 |
|||
| msg207351 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月05日 06:08 | |
I've run out of time to trouble-shoot the failure (specific to 1 buildbot). Until I can get back to it, I've disabled the problematic test (even though it's only a problem on 1 buildbot). |
|||
| msg207354 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月05日 07:11 | |
The buildbot is happy again. I'll address fixing that test in issue #20128. |
|||
| msg207356 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年01月05日 07:14 | |
Thanks for seeing this through, Eric. |
|||
| msg207673 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2014年01月08日 05:59 | |
I realized today that this should probably be fixed in 3.3 as well, as RDM implied by marking it as also a 3.3 bug. :) |
|||
| msg215997 - (view) | Author: Kubilay Kocak (koobs) (Python triager) | Date: 2014年04月13日 06:45 | |
koobs-freebsd9 (3.4) buildbot has also been failing for a while on what seems to be this changeset: ====================================================================== ERROR: test_synopsis_sourceless (test.test_pydoc.PydocDocTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/buildbot/python/3.4.koobs-freebsd9/build/Lib/test/test_pydoc.py", line 504, in test_synopsis_sourceless synopsis = pydoc.synopsis(filename) File "/usr/home/buildbot/python/3.4.koobs-freebsd9/build/Lib/pydoc.py", line 238, in synopsis mtime = os.stat(filename).st_mtime FileNotFoundError: [Errno 2] No such file or directory: '/usr/home/buildbot/python/3.4.koobs-freebsd9/build/Lib/__pycache__/os.cpython-34.pyc' Full buildlog is attached. |
|||
| msg231470 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2014年11月21日 09:34 | |
fyi - tracking the new issue koobs reported in http://bugs.python.org/issue22910 |
|||
| msg408354 - (view) | Author: Irit Katriel (iritkatriel) * (Python committer) | Date: 2021年12月12日 00:38 | |
Re-enabling the test is tracked on 20128, so this issue is no longer needed. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:56 | admin | set | github: 64322 |
| 2021年12月12日 00:38:04 | iritkatriel | set | status: open -> closed nosy: + iritkatriel messages: + msg408354 resolution: fixed stage: patch review -> resolved |
| 2020年03月18日 18:34:11 | brett.cannon | set | nosy:
- brett.cannon |
| 2014年11月21日 09:34:48 | gregory.p.smith | set | nosy:
+ gregory.p.smith messages: + msg231470 |
| 2014年04月13日 06:45:24 | koobs | set | files:
+ koobs-freebsd9-3.4-build57.log messages: + msg215997 |
| 2014年04月12日 15:31:33 | koobs | set | nosy:
+ koobs |
| 2014年02月23日 00:00:23 | Arfrever | set | nosy:
+ Arfrever |
| 2014年01月08日 05:59:47 | eric.snow | set | status: closed -> open versions: - Python 3.4 messages: + msg207673 resolution: fixed -> (no value) stage: resolved -> patch review |
| 2014年01月05日 07:14:32 | larry | set | messages: + msg207356 |
| 2014年01月05日 07:11:50 | eric.snow | set | status: open -> closed messages: + msg207354 |
| 2014年01月05日 06:08:58 | eric.snow | set | messages: + msg207351 |
| 2014年01月05日 06:06:10 | python-dev | set | messages: + msg207350 |
| 2014年01月05日 05:05:37 | python-dev | set | messages: + msg207349 |
| 2014年01月05日 04:44:01 | eric.snow | set | status: closed -> open messages: + msg207348 |
| 2014年01月05日 04:00:08 | eric.snow | set | status: open -> closed resolution: fixed messages: + msg207347 stage: patch review -> resolved |
| 2014年01月05日 03:58:39 | python-dev | set | nosy:
+ python-dev messages: + msg207346 |
| 2014年01月05日 03:47:41 | r.david.murray | set | messages: + msg207345 |
| 2014年01月05日 03:40:41 | eric.snow | set | files: - issue20123-fix-pydoc-synopsis.diff |
| 2014年01月05日 03:40:34 | eric.snow | set | files:
+ issue20123-fix-pydoc-synopsis.diff messages: + msg207344 |
| 2014年01月05日 03:15:09 | r.david.murray | set | messages: + msg207337 |
| 2014年01月05日 02:52:25 | eric.snow | set | files:
+ issue20123-fix-pydoc-synopsis.diff keywords: + patch messages: + msg207335 |
| 2014年01月05日 02:47:42 | r.david.murray | set | nosy:
+ r.david.murray, vstinner messages: + msg207334 versions: + Python 3.3, Python 3.4 |
| 2014年01月05日 02:22:51 | eric.snow | set | messages: + msg207330 |
| 2014年01月05日 02:20:54 | larry | set | nosy:
+ brett.cannon, ncoghlan messages: + msg207328 |
| 2014年01月04日 22:37:43 | eric.snow | set | messages: + msg207321 |
| 2014年01月04日 22:36:27 | eric.snow | link | issue19703 dependencies |
| 2014年01月04日 22:27:05 | eric.snow | create | |