-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
gh-122461: Document that compile() and ast.parse() raise SyntaxError for null bytes #122462
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…ror for null bytes.
Requesting review from @JelleZijlstra. |
Thank you both for the reviews! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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: 2 Edit: 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 raiseSyntaxError
instead ofValueError
for null bytes since #97594.📚 Documentation preview 📚: https://cpython-previews--122462.org.readthedocs.build/