[issue29934] % formatting fails to find formatting code in bytes type after a null byte
New submission from Mert Bora Alper: Hello, In Python 3.6.0, % formatting fails to find formatting code after a null byte in bytes type. Example: >>> "%s_\x00%s" % ("hello", "world") 'hello_\x00world' >>> b"%s_\x00%s" % (b"hello", b"world") Traceback (most recent call last): File "", line 1, in TypeError: not all arguments converted during bytes formatting In contrast, the exact same code works as expected in Python 3.5: >>> "%s_\x00%s" % ("hello", "world") 'hello_\x00world' >>> b"%s_\x00%s" % (b"hello", b"world") b'hello_\x00world' I used Python 3.6.0 that I installed using pyenv 1.0.8 on Kubuntu 16.04 x86_64. -- messages: 290724 nosy: boramalper priority: normal severity: normal status: open title: % formatting fails to find formatting code in bytes type after a null byte type: behavior versions: Python 3.6 ___ Python tracker <http://bugs.python.org/issue29934> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue29934] % formatting fails to find formatting code in bytes type after a null byte
Changes by Mert Bora Alper : -- components: +Interpreter Core ___ Python tracker <http://bugs.python.org/issue29934> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23994] argparse fails to detect program name when there is a slash at the end of the program's path
New submission from Mert Bora Alper: Sorry if the title is not descriptive enough. When I try to execute a program from a directory which contains an `__main__.py` file, argparse fails to detect programs name. For example: $ ls foo __main__.py $ python3 foo usage: foo [-h] [-c COUNT] length foo: error: the following arguments are required: length $ python3 foo/ usage: [-h] [-c COUNT] length : error: the following arguments are required: length >>> argparse.__version__ '1.1' I followed same steps using Python 2.7.6 and got same result. It will probably be same on other versions too. Same result can also be obtained when using zip files instead of directories. I don't know if this is a bug since I don't know if I do something wrong or is this a design decision or not. Thank you, Bora -- components: Library (Lib) files: __main__.py messages: 241434 nosy: boramalper priority: normal severity: normal status: open title: argparse fails to detect program name when there is a slash at the end of the program's path type: behavior versions: Python 2.7, Python 3.4 Added file: http://bugs.python.org/file39106/__main__.py ___ Python tracker <http://bugs.python.org/issue23994> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23994] argparse fails to detect program name when there is a slash at the end of the program's path
Mert Bora Alper added the comment: > I think this was just overlooked when implementing argparse. Most code out > there is likely to get the executable name using: > > os.path.basename(sys.argv[0]) > > Which is going to do exactly what you are seeing here when sys.argv[0] ends > with a /. > > feel free to submit a patch. perhaps as simple as this? > > os.path.basename(sys.argv[0].rstrip(os.path.sep)) > > But I'd expect a bunch of other code out there to have the same problem. It is exactly as you said: https://hg.python.org/cpython/file/3.4/Lib/argparse.py#l1619 Patch included. Created and tested using latest source at https://hg.python.org/cpython/. -- keywords: +patch resolution: -> fixed Added file: http://bugs.python.org/file39120/argparse.patch ___ Python tracker <http://bugs.python.org/issue23994> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23994] argparse fails to detect program name when there is a slash at the end of the program's path
Mert Bora Alper added the comment: > Thanks for the patch. We'll want a unit test for the behavior before > committing this. You're welcome. Since I have no experience in writing unit tests, I don't really know where to start but I will try to do my best. I added bethard to the Nosy List, as he is the author of argparse's test. (In addition, you may want to change cpython/Lib/test/test_argparse.py:2163 ) -- nosy: +bethard ___ Python tracker <http://bugs.python.org/issue23994> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com