You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PEP 441 - Improving Python Zip Application Support #67679
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.
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.
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!
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).
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.
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:
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,
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.
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).
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).
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.
Activity
pfmoore commentedon Feb 20, 2015
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.
zooba commentedon Feb 20, 2015
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.
zooba commentedon Feb 20, 2015
I haven't looked closely at the rest, btw. Will try and find time today or tomorrow.
pfmoore commentedon Feb 20, 2015
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!
zooba commentedon Feb 20, 2015
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).
pfmoore commentedon Feb 20, 2015
Thanks. Updated patch with the new mime-type.
Looks like there's disk errors on that file with the CRC check. Lovely :-)
dholth commentedon Feb 23, 2015
It looks like your patch does not register PYZW in Windows
zooba commentedon Feb 23, 2015
It registers the association, but doesn't add it to PATHEXT.
dholth commentedon Feb 23, 2015
I don't see the string PYZW anywhere in the patch, I only see PYZ,
perhaps I don't know enough about this bug tracker or registering file
extensions?
On Mon, Feb 23, 2015, at 01:19 PM, Steve Dower wrote:
zooba commentedon Feb 23, 2015
It's this line:
$(var.ArchiveFileExtension) expands to "pyz" or "pxz" depending on the build options, and the literal w makes it pyzw or pxzw.
dholth commentedon Feb 24, 2015
Spelling
raise PackError("Cannot spacify entry point if the source has __main__.py")
pfmoore commentedon Feb 24, 2015
Thanks, I'll fix for the next iteration of the patch.
17 remaining items
pfmoore commentedon Feb 27, 2015
Updated patch including (I hope!) all review comments so far.
serhiy-storchaka commentedon Feb 27, 2015
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?
pfmoore commentedon Feb 27, 2015
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:
pfmoore commentedon Mar 5, 2015
There have been no further comments for a while now. Could this be committed by someone?
berkerpeksag commentedon Mar 8, 2015
I left a couple of minor comments on Rietveld.
pfmoore commentedon Mar 8, 2015
New patch incorporating Berker's comments
pfmoore commentedon Mar 10, 2015
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,
pfmoore commentedon Mar 10, 2015
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.
zooba commentedon Mar 10, 2015
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).
pfmoore commentedon Mar 10, 2015
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-dev commentedon Mar 13, 2015
New changeset d1e9f337fea1 by Brett Cannon in branch 'default':
Issue bpo-23491: Implement PEP-441: Improving Python Zip Application Support
https://hg.python.org/cpython/rev/d1e9f337fea1
brettcannon commentedon Mar 13, 2015
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).
pfmoore commentedon Mar 13, 2015
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.