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.

Author terry.reedy
Recipients Arfrever, alex, arigo, benjamin.peterson, georg.brandl, gvanrossum, iritkatriel, ita1024, jwilk, serhiy.storchaka, terry.reedy
Date 2021-09-06.23:29:59
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1630970999.39.0.699076087761.issue20115@roundup.psfhosted.org>
In-reply-to
Content
The compile() doc currently says ""This function raises SyntaxError if the compiled source is invalid, and ValueError if the source contains null bytes."  And indeed, in repository 3.9, 3.10, 3.11,

>>> compile('\0','','exec')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: source code string cannot contain null bytes

Ditto when run same in a file from IDLE or command line.  The exception sometimes when the null is in a comment or string within the code.

>>> '\0'
'\x00'
>>> #\0
>>> compile('#\0','','single', 0x200)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: source code string cannot contain null bytes
>>> compile('"\0"','','single', 0x200)
ValueError: source code string cannot contain null bytes

I am puzzled because "\0" and #\0 in the IDLE shell are sent as strings containing the string or comment to compiled with the call above in codeop.  There must be some difference in when \0 is interpreted.
History
Date User Action Args
2021-09-06 23:29:59terry.reedysetrecipients: + terry.reedy, gvanrossum, arigo, georg.brandl, benjamin.peterson, jwilk, Arfrever, alex, ita1024, serhiy.storchaka, iritkatriel
2021-09-06 23:29:59terry.reedysetmessageid: <1630970999.39.0.699076087761.issue20115@roundup.psfhosted.org>
2021-09-06 23:29:59terry.reedylinkissue20115 messages
2021-09-06 23:29:59terry.reedycreate