cpython/PC
Christian Tismer ea62ce7f4f bpo-33738: Fix macros which contradict PEP 384 (GH-7477)
During development of the limited API support for PySide,
we saw an error in a macro that accessed a type field.

This patch fixes the 7 errors in the Python headers.
Macros which were not written as capitals were implemented
as function.

To do the necessary analysis again, a script was included that
parses all headers and looks for "->tp_" in serctions which can
be reached with active limited API.

It is easily possible to call this script as a test.

Error listing:

../../Include/objimpl.h:243
#define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \
    (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o)))
Action: commented only

../../Include/objimpl.h:362
#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0)
Action: commented only

../../Include/objimpl.h:364
#define PyObject_GET_WEAKREFS_LISTPTR(o) \
    ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset))
Action: commented only

../../Include/pyerrors.h:143
#define PyExceptionClass_Name(x) \
     ((char *)(((PyTypeObject*)(x))->tp_name))
Action: implemented function

../../Include/abstract.h:593
#define PyIter_Check(obj) \
    ((obj)->ob_type->tp_iternext != NULL && \
     (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented)
Action: implemented function

../../Include/abstract.h:713
#define PyIndex_Check(obj)                              \
    ((obj)->ob_type->tp_as_number != NULL &&            \
     (obj)->ob_type->tp_as_number->nb_index != NULL)
Action: implemented function

../../Include/abstract.h:924
#define PySequence_ITEM(o, i)\
    ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) )
Action: commented only
2018-06-09 14:32:25 -04:00
..
bdist_wininst bpo-33012: Fix invalid function cast warnings with gcc 8 for METH_NOARGS. (GH-6030) 2018-04-29 21:59:33 +03:00
clinic bpo-32240: Add the const qualifier to declarations of PyObject* array arguments. (#4746) 2017-12-15 13:11:11 +02:00
external bpo-30389 Adds detection of VS 2017 to distutils._msvccompiler (#1632) 2017-09-07 11:49:23 -07:00
icons Issue #27756: Adds new icons for Python files and processes on Windows. Designs by Cherry Wang. 2016-09-05 14:05:17 -07:00
WinMain.c
_findvs.cpp bpo-32588: Move _findvs into its own module and add missing _queue module to installer (#5227) 2018-01-19 09:09:36 +11:00
_msi.c bpo-12239: Make GetProperty() return None for VT_EMPTY (GH-4539) 2017-11-24 18:11:18 +03:00
_testconsole.c bpo-31462: Remove trailing whitespaces. (#3564) 2017-09-14 09:38:36 +03:00
config.c bpo-31333: Re-implement ABCMeta in C (#5273) 2018-02-18 12:41:58 +00:00
dl_nt.c
empty.c
errmap.h
errmap.mak
frozen_dllmain.c
generrmap.c
getpathp.c bpo-32457: Improves handling of denormalized executable path when launching Python (GH-5756) 2018-02-22 10:39:26 -08:00
invalid_parameter_handler.c Issue #23524: Replace _PyVerify_fd function with calls to _set_thread_local_invalid_parameter_handler. 2015-04-12 00:26:27 -04:00
launcher.c bpo-17611. Move unwinding of stack for "pseudo exceptions" from interpreter to compiler. (GH-5006) 2018-02-22 23:33:30 +02:00
msvcrtmodule.c bpo-31462: Remove trailing whitespaces. (#3564) 2017-09-14 09:38:36 +03:00
pyconfig.h Start of 3.8.0a0 2018-01-31 17:44:09 -05:00
pylauncher.rc Issue #27756: Adds new icons for Python files and processes on Windows. Designs by Cherry Wang. 2016-09-05 14:05:17 -07:00
pyshellext.cpp Issue #27469: Adds a shell extension to the launcher so that drag and drop works correctly. 2016-07-16 16:17:33 -07:00
pyshellext.def Issue #27469: Adds a shell extension to the launcher so that drag and drop works correctly. 2016-07-16 16:17:33 -07:00
pyshellext.idl Issue #27469: Adds a shell extension to the launcher so that drag and drop works correctly. 2016-07-16 16:17:33 -07:00
pyshellext.rc Issue #27469: Adds a shell extension to the launcher so that drag and drop works correctly. 2016-07-16 16:17:33 -07:00
pyshellext_d.def Issue #27469: Adds a shell extension to the launcher so that drag and drop works correctly. 2016-07-16 16:17:33 -07:00
python.manifest bpo-30731: python.manifest fix (#2328) 2017-07-13 21:34:42 +02:00
python3.def bpo-33738: Fix macros which contradict PEP 384 (GH-7477) 2018-06-09 14:32:25 -04:00
python3dll.c
python_exe.rc Issue #27756: Adds new icons for Python files and processes on Windows. Designs by Cherry Wang. 2016-09-05 14:05:17 -07:00
python_nt.rc 2016 will be another year of writing copyrighted code 2016-01-01 10:23:45 -06:00
python_ver_rc.h Closes #26624: Adds validation of ucrtbase[d].dll version with warning for old versions. 2016-04-12 20:11:25 -07:00
pythonw_exe.rc Issue #27756: Adds new icons for Python files and processes on Windows. Designs by Cherry Wang. 2016-09-05 14:05:17 -07:00
readme.txt Issue #25022: Merge with 3.4 2015-09-10 15:02:14 -05:00
sqlite3.rc Adds version info to all signed binaries on Windows. 2016-04-06 12:35:24 -07:00
testpy.py Cleanup regrtest "main()" function 2016-03-24 17:53:20 +01:00
validate_ucrtbase.py Issue #27705: Update message in validate_ucrtbase.py 2016-09-09 18:21:15 -07:00
winreg.c bpo-32747: Remove trailing spaces in docstrings. (GH-5491) 2018-02-02 10:52:55 +02:00
winsound.c Fix miscellaneous typos (#4275) 2017-11-05 15:37:50 +02:00

readme.txt

Welcome to the "PC" subdirectory of the Python distribution
***********************************************************

This "PC" subdirectory contains complete project files to make
several older PC ports of Python, as well as all the PC-specific
Python source files.  It should be located in the root of the
Python distribution, and there should be directories "Modules",
"Objects", "Python", etc. in the parent directory of this "PC"
subdirectory.  Be sure to read the documentation in the Python
distribution.

Python requires library files such as string.py to be available in
one or more library directories.  The search path of libraries is
set up when Python starts.  To see the current Python library search
path, start Python and enter "import sys" and "print sys.path".

All PC ports use this scheme to try to set up a module search path:

  1) The script location; the current directory without script.
  2) The PYTHONPATH variable, if set.
  3) For Win32 platforms (NT/95), paths specified in the Registry.
  4) Default directories lib, lib/win, lib/test, lib/tkinter;
     these are searched relative to the environment variable
     PYTHONHOME, if set, or relative to the executable and its
     ancestors, if a landmark file (Lib/string.py) is found ,
     or the current directory (not useful).
  5) The directory containing the executable.

The best installation strategy is to put the Python executable (and
DLL, for Win32 platforms) in some convenient directory such as
C:/python, and copy all library files and subdirectories (using XCOPY)
to C:/python/lib.  Then you don't need to set PYTHONPATH.  Otherwise,
set the environment variable PYTHONPATH to your Python search path.
For example,
   set PYTHONPATH=.;d:\python\lib;d:\python\lib\win;d:\python\lib\dos-8x3

There are several add-in modules to build Python programs which use
the native Windows operating environment.  The ports here just make
"QuickWin" and DOS Python versions which support a character-mode
(console) environment.  Look in www.python.org for Tkinter, PythonWin,
WPY and wxPython.

To make a Python port, start the Integrated Development Environment
(IDE) of your compiler, and read in the native "project file"
(or makefile) provided.  This will enable you to change any source
files or build settings so you can make custom builds.

pyconfig.h    An important configuration file specific to PC's.

config.c    The list of C modules to include in the Python PC
            version.  Manually edit this file to add or
            remove Python modules.

testpy.py   A Python test program.  Run this to test your
            Python port.  It should produce copious output,
	    ending in a report on how many tests were OK, how many
	    failed, and how many were skipped.  Don't worry about
	    skipped tests (these test unavailable optional features).


Additional files and subdirectories for 32-bit Windows
======================================================

python_nt.rc   Resource compiler input for python15.dll.

dl_nt.c
               Additional sources used for 32-bit Windows features.

getpathp.c     Default sys.path calculations (for all PC platforms).

dllbase_nt.txt A (manually maintained) list of base addresses for
               various DLLs, to avoid run-time relocation.


Note for Windows 3.x and DOS users
==================================

Neither Windows 3.x nor DOS is supported any more.  The last Python
version that supported these was Python 1.5.2; the support files were
present in Python 2.0 but weren't updated, and it is not our intention
to support these platforms for Python 2.x.