Staging
v0.8.1
Revision 38f11cc3f62db11a4a24354bd06273322ac91afa authored by Gregory P. Smith on 16 February 2019, 20:57:40 UTC, committed by GitHub on 16 February 2019, 20:57:40 UTC
* bpo-1054041: Exit properly by a signal after a ^C.

An uncaught KeyboardInterrupt exception means the user pressed ^C and
our code did not handle it.  Programs that install SIGINT handlers are
supposed to reraise the SIGINT signal to the SIG_DFL handler in order
to exit in a manner that their calling process can detect that they
died due to a Ctrl-C.  https://www.cons.org/cracauer/sigint.html

After this change on POSIX systems

 while true; do python -c 'import time; time.sleep(23)'; done

can be stopped via a simple Ctrl-C instead of the shell infinitely
restarting a new python process.

What to do on Windows, or if anything needs to be done there has not
yet been determined.  That belongs in its own PR.

TODO(gpshead): A unittest for this behavior is still needed.

* Do the unhandled ^C check after pymain_free.

* Return STATUS_CONTROL_C_EXIT on Windows.

* Fix ifdef around unistd.h include.

* 📜🤖 Added by blurb_it.

* Add STATUS_CTRL_C_EXIT to the os module on Windows

* Add unittests.

* Don't send CTRL_C_EVENT in the Windows test.

It was causing CI systems to bail out of the entire test suite.

See https://dev.azure.com/Python/cpython/_build/results?buildId=37980
for example.

* Correct posix test (fail on macOS?) check.

* STATUS_CONTROL_C_EXIT must be unsigned.

* Improve the error message.

* test typo :)

* Skip if the bash version is too old.

...and rename the windows test to reflect what it does.

* min bash version is 4.4, detect no bash.

* restore a blank line i didn't mean to delete.

* PyErr_Occurred() before the Py_DECREF(co);

* Don't add os.STATUS_CONTROL_C_EXIT as a constant.

* Update the Windows test comment.

* Refactor common logic into a run_eval_code_obj fn.
1 parent 43766f8
Raw File
pythonw_exe.rc
// Resource script for Python console EXEs.

#include "python_ver_rc.h"

// Include the manifest file that indicates we support all
// current versions of Windows.
#include <winuser.h>
1 RT_MANIFEST "python.manifest"

1 ICON DISCARDABLE "icons\pythonw.ico" 


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION PYVERSION64
 PRODUCTVERSION PYVERSION64
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS VS_FF_DEBUG
#else
 FILEFLAGS 0x0L
#endif
 FILEOS VOS__WINDOWS32
 FILETYPE VFT_APP
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "000004b0"
        BEGIN
            VALUE "CompanyName", PYTHON_COMPANY "\0"
            VALUE "FileDescription", "Python\0"
            VALUE "FileVersion", PYTHON_VERSION
            VALUE "InternalName", "Python Application\0"
            VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0"
            VALUE "OriginalFilename", "pythonw" PYTHON_DEBUG_EXT ".exe\0"
            VALUE "ProductName", "Python\0"
            VALUE "ProductVersion", PYTHON_VERSION
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0, 1200
    END
END
back to top