gh-122461: Document that compile() and ast.parse() raise SyntaxError for null bytes#122462
gh-122461: Document that compile() and ast.parse() raise SyntaxError for null bytes#122462devdanzin wants to merge 3 commits intopython:mainfrom
Conversation
…ror for null bytes.
|
Requesting review from @JelleZijlstra. |
|
Thank you both for the reviews! |
serhiy-storchaka
left a comment
There was a problem hiding this comment.
Note that UnicodeEncodeError (which is a subclass of ValueError) can still be raised if the source string is not encodable.
|
There are also mentions of ValueError in the |
Yes, for code such as Plus MemoryError and RecursionError are possible for too deeply nested code. |
|
OverflowError is documented in >>> import ast
>>> try: ast.parse('x'*2**31, '?', 'exec')
... except BaseException as err: e = err
...
>>> str(e)
'Parser column offset overflow - source line is too big'
>>> type(e)
<class 'OverflowError'>I do not know whether ValueError other than UnicodeEncodeError can be raised, but it is safer to document ValueError, OverflowError and RecursionError in all these places. I do not think that it is worth to document MemoryError or say KeyboardInterrupt specially, because they depend rather on the environment than on the input and you cannot fix them. |
|
Would this count? >>> ast.parse("", feature_version=(2,2))
Traceback (most recent call last):
File "<python-input-2>", line 1, in <module>
ast.parse("", feature_version=(2,2))
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "~\PycharmProjects\cpython\Lib\ast.py", line 50, in parse
raise ValueError(f"Unsupported major version: {major}")
ValueError: Unsupported major version: 2Edit: here's another one: >>> ast.parse("", "\0")
Traceback (most recent call last):
File "<python-input-9>", line 1, in <module>
ast.parse("", "\0")
~~~~~~~~~^^^^^^^^^^
File "~\PycharmProjects\cpython\Lib\ast.py", line 53, in parse
return compile(source, filename, mode, flags,
_feature_version=feature_version, optimize=optimize)
ValueError: embedded null character |
…wError and RecursionError.
Update docs for
compile()andast.parse()because they raiseSyntaxErrorinstead ofValueErrorfor null bytes since #97594.📚 Documentation preview 📚: https://cpython-previews--122462.org.readthedocs.build/