[issue23491] PEP 441 - Improving Python Zip Application Support
Brett Cannon added the comment: Thanks for the patch, Paul! I touched up the formatting to be more PEP 8 compliant and fixed the tests as they initially failed for me (TESTFN didn't exist prior to you trying to make a directory, so it just failed; switched to tempfile.TemporaryDirectory instead). -- nosy: +brett.cannon resolution: - fixed stage: patch review - resolved status: open - closed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Roundup Robot added the comment: New changeset d1e9f337fea1 by Brett Cannon in branch 'default': Issue #23491: Implement PEP 441: Improving Python Zip Application Support https://hg.python.org/cpython/rev/d1e9f337fea1 -- nosy: +python-dev ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Thanks Brett! Apologies about the TESTFN issue - I changed it (from TemporaryDirectory, in fact) based on one of the review comments - it looks like I didn't test the change properly. My mistake, thanks for catching it. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Steve Dower - could you please review the updated patch here. The WiX changes specifically are intended to register the .pyz extension with the launcher, but I can see no code that does this for a per-user install. I've copied the same code for the .py extension so I don't think I've missed anything, but I can't see how this would work in practice. -- Added file: http://bugs.python.org/file38419/pep-441.v6.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: There's a problem with the latest patch, it's lost the MSI updates somehow. I'll add them back in this evening, please don't commit before a v6 patch is available, -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Steve Dower added the comment: The whole installer is run with a different global flag depending on the type of install. So it's automatic, though sometimes you can't do both per-user and all-user changes at the same time (not that you should anyway). -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: OK, so if the installer changes look good to you, then this PR is once again ready to go. Sorry to anyone watching for the glitch. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Berker Peksag added the comment: I left a couple of minor comments on Rietveld. -- nosy: +berker.peksag stage: - patch review ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: New patch incorporating Berker's comments -- Added file: http://bugs.python.org/file38389/pep-441.v5.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: There have been no further comments for a while now. Could this be committed by someone? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Serhiy Storchaka added the comment: There is not well known old way how to make executable Python files on Windows. Add line @python -x %0 %* at the start of your Python script and rename the script to *.bat. The -x option makes Python to skip first line that is not Python, and @ forbids echoing executed command in bat-file. Could zipapp support this feature? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: I'm -1 on this. The whole point of having a .pyz extension is so that you don't need to use an extension that's for files containing text to hold binary data. If you want to do this, use zipapp and specify no interpreter line, then add the @python line yourself. Or just use a zip utility. Or build your own command line app. With the ability to supply an open file to create_archive, it's a 3-liner: with open(dest_filename, 'wb') as f: f.write(b'@python -x %0 %*\n') zipapp.create_archive(source_dir, f) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Updated patch including (I hope!) all review comments so far. -- Added file: http://bugs.python.org/file38258/pep-441.v4.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Changes by Paul Moore p.f.mo...@gmail.com: Removed file: http://bugs.python.org/file38249/pep-441.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: OK, thanks. I don't propose to go there with the initial implementation. If it's a problem in practice, someone can raise a bug and we'll fix it then. (I've never seen actual Python code in the wild that does all of that...) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: OK, here is an updated patch based on the python-dev discussions -- Added file: http://bugs.python.org/file38249/pep-441.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Sorry - typo. Try again... -- Added file: http://bugs.python.org/file38250/pep-441.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Jim Jewett added the comment: I think that instead of application/zip, you want application/zipped-python (or whatever the precise term was). This was one reason to register the MIME type. That said, application/zip is probably not harmful; the worst it should do it hand the archive to a zip program. What is pxzw for, other than amusing mispronunciations? -- nosy: +Jim.Jewett ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: If I understand Steve's comments, the mime type is used by Windows, so application/zip lets Windows know that this filetype is fundamentally a zip file (and so it'll offer to open it with your zip program if you right click, stuff like that). pxzw - the w on the end marks it as a GUI script, to be run by pythonw.exe. The x is a test mode thing for development builds of Python. You wouldn't see it in a production build (the production filetypes are pyz and pyzw). -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Steve Dower added the comment: The .px* extensions are for testing builds without messing up your actual file associations. I ported them forward from the old installer, but most people will never see them. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Steve Dower added the comment: There's also a PerceivedType property which we could set to make sure that archivers correctly light up. I think that'll get you the built-in Extract command. Most tools appear on every file and will try and read it to see what commands make sense, which will work fine for a zip file. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Daniel Holth added the comment: On Thu, Feb 26, 2015, at 09:41 AM, Paul Moore wrote: Paul Moore added the comment: Following on from that, the code to make an archive executable is currently os.chmod(new_archive, os.stat(new_archive).st_mode | stat.S_IEXEC) Should I use ... | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH? If so, do I need to protect that with an if not Windows test? (I've tested the existing code and it does nothing on Windows, so I omitted the test at the moment). Is there any *other* way I should be making a file executable on Unix? (Side note: Maybe there should be an os.make_executable(pathname) or similar that does the right thing in a cross-platform way?) The chmod + umask analog that will work not just on a newly created file is umask = os.umask(0) # must change umask to get umask os.umask(umask) # restore previous umask os.chmod(new_archive, os.stat(new_archive).st_mode | ((stat.stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH) ~umask)) If I understand the man page correctly, chmod +x filename does exactly the above. Depending on the umask the command may or may not create a world / group / user executable file. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: I don't follow (and I don't really want to do things this low level without a compelling reason...) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Following on from that, the code to make an archive executable is currently os.chmod(new_archive, os.stat(new_archive).st_mode | stat.S_IEXEC) Should I use ... | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH? If so, do I need to protect that with an if not Windows test? (I've tested the existing code and it does nothing on Windows, so I omitted the test at the moment). Is there any *other* way I should be making a file executable on Unix? (Side note: Maybe there should be an os.make_executable(pathname) or similar that does the right thing in a cross-platform way?) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Daniel Holth added the comment: Create and open executable file respecting the Unix user's umask: os.fdopen(os.open(filename, os.O_CREAT|os.O_RDWR), rw) On Tue, Feb 24, 2015, at 02:34 PM, Paul Moore wrote: Paul Moore added the comment: Thanks, I'll fix for the next iteration of the patch. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Serhiy Storchaka added the comment: Did you noticed my comments to previous patch Paul? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Changes by Ethan Furman et...@stoneleaf.us: -- nosy: +ethan.furman ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Serhiy Storchaka added the comment: Emails from Rietveld often can be found in the spam folder. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Serhiy - I just got a notification from the review tool - I'd not used it before and didn't know to check it. But I've read them now and corrected a number of places based on your comments and added a few replies to the review. Thanks for the review. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Serhiy Storchaka added the comment: As for zipimport, it doesn't support namespace packages when no 'directory' entry exists (issue14905). The zipfile module CLI now adds entries for directories (issue22219). -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Serhiy Storchaka added the comment: Paul, don't click on Reply below the comment on the main page, it never works. Instead click the link above the comment, then click on the comment to unfold it, click on the Reply below the comment, enter your reply, press Send, and after replying all comments click Publish+Mail Comments and then press Pubblish All My Drafts. Your replies by email are not archived and are received only by these who already is added comments on Rietveld or added to the nosy list on Roundup. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Serihy, thanks for the explanation. I was aware that my replies weren't getting archived, good to know how to avoid that in future. I've worked out what you mean over the directory entries now. It was easy enough to fix - I just removed the is_file check before writing entries to the zipfile. Test added so it's checked in future as well. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Thanks, I'll fix for the next iteration of the patch. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Daniel Holth added the comment: Spelling raise PackError(Cannot spacify entry point if the source has __main__.py) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
New submission from Paul Moore: This is the patch for PEP 441 (Zip Application Support). Steve, could you check the installer changes, please? I haven't managed to get a setup where I can test the installer, and I'm not aware of any WiX coding tools, so I just edited the XML files by hand with grep and vim, and checked that Tools/buildmsi.bat doesn't error in anything I wrote... (There's a CRC check error in TCL, but that was there before I made changes) light.exe : error LGHT0216: An unexpected Win32 exception with error code 0x17 occurred while accessing file 'C:\Work\Projects\cpython\externals\tcltk64\lib\tcl8.6\tzdata\America\Detroit': Data error (cyclic redundancy check) [C:\Work\Projects\cpython\Tools\msi\tcltk\tcltk.wixproj] Also, I don't *think* I need to do anything for the new files in Doc\Lib, Lib and Lib\test to get picked up, but I'm not sure how to check that. -- assignee: steve.dower components: Library (Lib) files: pep441.patch keywords: patch messages: 236276 nosy: pmoore, steve.dower priority: normal severity: normal status: open title: PEP 441 - Improving Python Zip Application Support type: enhancement versions: Python 3.5 Added file: http://bugs.python.org/file38187/pep441.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Steve Dower added the comment: I haven't looked closely at the rest, btw. Will try and find time today or tomorrow. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Changes by Serhiy Storchaka storch...@gmail.com: -- nosy: +serhiy.storchaka ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Steve Dower added the comment: The installer changes look fine, though there shouldn't be PATH related strings in exe/, so there's probably a separate issue there. Wix doesn't really have any editors that aren't just XML editors. We probably want to update the ContentType value from text/plain for all the shortcuts, though I'm not sure what to (it affects the implicit associations and extra commands on the files, inc. Open With). The easiest way to make sure the files are in the installer is to install it :) But if they're just .py files under Lib/ then they'll be there. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Thanks for checking, Steve. I don't get an installer because of the checksum error quoted, although I did get the component msi files. As far as content type is concerned, I wasn't sure what effect it had so I just copied what was there. I guess application/zip might be better for .pyz files, based on what you said? I'm not sure what you meant by the comment about exe/. All I did was mention .pyz as well as .py - although I don't see where the PathDescription string us used so I may be missing something important! -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Steve Dower added the comment: Either application/zip or application/x-zip-compressed, I'm not sure exactly what the difference is, but the default .zip association has the latter. The CRC error may be your machine or it may be because we're currently running on unstable WiX releases (hey, everything else is unstable right now :) ). If you can edit and re-save that file, I'd expect it to work, otherwise the 32-bit installer should be okay. The exe/ comment is more a note for myself, sorry. Those strings are unused and should be removed (I'll do that now - got a few things to fix). -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue23491] PEP 441 - Improving Python Zip Application Support
Paul Moore added the comment: Thanks. Updated patch with the new mime-type. Looks like there's disk errors on that file with the CRC check. Lovely :-) -- Added file: http://bugs.python.org/file38192/pep441.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue23491 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com