summaryrefslogtreecommitdiffstats
path: root/Tests/DelphiCoverage
ModeNameSize
-rw-r--r--DartConfiguration.tcl.in341logstatsplain
-rw-r--r--UTCovTest(UTCovTest.pas).html.in9969logstatsplain
d---------src41logstatsplain
| 4 +- Doc/library/sndhdr.rst | 4 +- Doc/library/socket.rst | 2 +- Doc/library/socketserver.rst | 18 +- Doc/library/sqlite3.rst | 2 +- Doc/library/statvfs.rst | 3 - Doc/library/stdtypes.rst | 35 +- Doc/library/struct.rst | 2 +- Doc/library/sys.rst | 5 +- Doc/library/tabnanny.rst | 11 +- Doc/library/tarfile.rst | 21 - Doc/library/test.rst | 2 - Doc/library/thread.rst | 13 +- Doc/library/tix.rst | 172 +- Doc/library/tk.rst | 6 +- Doc/library/tkinter.rst | 29 +- Doc/library/undoc.rst | 24 + Doc/library/wave.rst | 5 +- Doc/library/weakref.rst | 6 +- Doc/library/wsgiref.rst | 2 +- Doc/library/xml.dom.minidom.rst | 6 +- Doc/library/xml.dom.rst | 30 +- Doc/library/xml.etree.rst | 2 +- Doc/library/xml.sax.handler.rst | 2 +- Doc/library/xml.sax.reader.rst | 4 +- Doc/library/xmlrpclib.rst | 11 +- Doc/library/zipfile.rst | 3 - Doc/library/zlib.rst | 2 - Doc/reference/compound_stmts.rst | 6 + Doc/reference/datamodel.rst | 63 +- Doc/reference/expressions.rst | 7 + Doc/reference/lexical_analysis.rst | 3 +- Doc/reference/simple_stmts.rst | 20 +- Doc/tutorial/appetite.rst | 2 - Doc/tutorial/classes.rst | 14 +- Doc/tutorial/controlflow.rst | 11 +- Doc/tutorial/datastructures.rst | 64 + Doc/tutorial/inputoutput.rst | 4 +- Doc/tutorial/interpreter.rst | 4 +- Doc/tutorial/introduction.rst | 6 +- Doc/tutorial/modules.rst | 13 +- Doc/tutorial/whatnow.rst | 6 +- Doc/using/windows.rst | 5 +- Doc/whatsnew/2.0.rst | 52 +- Doc/whatsnew/2.1.rst | 30 +- Doc/whatsnew/2.2.rst | 58 +- Doc/whatsnew/2.3.rst | 62 +- Doc/whatsnew/2.4.rst | 70 +- Doc/whatsnew/2.5.rst | 106 +- Doc/whatsnew/2.6.rst | 187 +- Lib/distutils/command/bdist_wininst.py | 2 +- Lib/distutils/command/wininst-6.0.exe | Bin 0 -> 61440 bytes Lib/distutils/command/wininst-6.exe | Bin 61440 -> 0 bytes Lib/distutils/command/wininst-8.0.exe | Bin 0 -> 61440 bytes Lib/distutils/command/wininst-8.exe | Bin 61440 -> 0 bytes Lib/distutils/command/wininst-9.0.exe | Bin 0 -> 65536 bytes Lib/test/output/test_cProfile | 12 +- Lib/test/output/test_profile | 12 +- PC/VS7.1/Uninstal.wse | 514 ++++++ PC/VS7.1/_bsddb.vcproj | 258 +++ PC/VS7.1/_ctypes.vcproj | 311 ++++ PC/VS7.1/_ctypes_test.vcproj | 242 +++ PC/VS7.1/_elementtree.vcproj | 264 +++ PC/VS7.1/_msi.vcproj | 252 +++ PC/VS7.1/_socket.vcproj | 254 +++ PC/VS7.1/_sqlite3.vcproj | 283 +++ PC/VS7.1/_ssl.mak | 38 + PC/VS7.1/_ssl.vcproj | 84 + PC/VS7.1/_testcapi.vcproj | 247 +++ PC/VS7.1/_tkinter.vcproj | 261 +++ PC/VS7.1/amd64_ml64.bat | 17 + PC/VS7.1/build_ssl.bat | 12 + PC/VS7.1/build_ssl.py | 181 ++ PC/VS7.1/bz2.vcproj | 271 +++ PC/VS7.1/db.build | 10 + PC/VS7.1/field3.py | 35 + PC/VS7.1/installer.bmp | Bin 0 -> 58806 bytes PC/VS7.1/make_buildinfo.c | 92 + PC/VS7.1/make_buildinfo.vcproj | 122 ++ PC/VS7.1/make_versioninfo.vcproj | 142 ++ PC/VS7.1/pcbuild.sln | 288 +++ PC/VS7.1/pyexpat.vcproj | 263 +++ PC/VS7.1/python.build | 21 + PC/VS7.1/python.iss | 346 ++++ PC/VS7.1/python.vcproj | 274 +++ PC/VS7.1/python20.wse | 3135 ++++++++++++++++++++++++++++++++ PC/VS7.1/pythoncore.vcproj | 806 ++++++++ PC/VS7.1/pythonw.vcproj | 261 +++ PC/VS7.1/readme.txt | 426 +++++ PC/VS7.1/rmpyc.py | 25 + PC/VS7.1/rt.bat | 52 + PC/VS7.1/select.vcproj | 258 +++ PC/VS7.1/unicodedata.vcproj | 247 +++ PC/VS7.1/w9xpopen.vcproj | 121 ++ PC/VS7.1/winsound.vcproj | 251 +++ PCbuild/Uninstal.wse | 514 ------ PCbuild/_bsddb.vcproj | 631 +++++-- PCbuild/_ctypes.vcproj | 825 ++++++--- PCbuild/_ctypes_test.vcproj | 591 ++++-- PCbuild/_elementtree.vcproj | 697 +++++-- PCbuild/_msi.vcproj | 597 ++++-- PCbuild/_socket.vcproj | 603 ++++-- PCbuild/_sqlite3.vcproj | 740 ++++++-- PCbuild/_ssl.mak | 38 - PCbuild/_ssl.vcproj | 581 +++++- PCbuild/_testcapi.vcproj | 592 ++++-- PCbuild/_tkinter.vcproj | 634 +++++-- PCbuild/amd64_ml64.bat | 17 - PCbuild/bdist_wininst.vcproj | 177 ++ PCbuild/build.bat | 63 +- PCbuild/build_env.bat | 2 +- PCbuild/build_pgo.bat | 41 + PCbuild/build_ssl.bat | 26 +- PCbuild/build_ssl.py | 141 +- PCbuild/build_tkinter.py | 86 + PCbuild/bz2.vcproj | 634 +++++-- PCbuild/db.build | 10 - PCbuild/debug.vsprops | 11 + PCbuild/env.bat | 25 +- PCbuild/idle.bat | 15 + PCbuild/make_buildinfo.c | 26 +- PCbuild/make_buildinfo.vcproj | 170 +- PCbuild/make_versioninfo.vcproj | 330 +++- PCbuild/pcbuild.sln | 609 ++++--- PCbuild/pginstrument.vsprops | 34 + PCbuild/pgupdate.vsprops | 14 + PCbuild/pyd.vsprops | 22 + PCbuild/pyd_d.vsprops | 30 + PCbuild/pyexpat.vcproj | 644 +++++-- PCbuild/pyproject.vsprops | 79 + PCbuild/python.build | 21 - PCbuild/python.iss | 337 ---- PCbuild/python.vcproj | 669 +++++-- PCbuild/python20.wse | 3127 ------------------------------- PCbuild/pythoncore.vcproj | 2271 ++++++++++++++++------- PCbuild/pythonw.vcproj | 649 +++++-- PCbuild/readme.txt | 374 ++-- PCbuild/release.vsprops | 11 + PCbuild/rt.bat | 0 PCbuild/select.vcproj | 605 ++++-- PCbuild/unicodedata.vcproj | 604 ++++-- PCbuild/w9xpopen.vcproj | 577 +++++- PCbuild/winsound.vcproj | 594 ++++-- PCbuild/x64.vsprops | 18 + PCbuild9/_bsddb.vcproj | 553 ------ PCbuild9/_ctypes.vcproj | 704 ------- PCbuild9/_ctypes_test.vcproj | 521 ------ PCbuild9/_elementtree.vcproj | 621 ------- PCbuild9/_msi.vcproj | 529 ------ PCbuild9/_socket.vcproj | 537 ------ PCbuild9/_sqlite3.vcproj | 637 ------- PCbuild9/_ssl.vcproj | 549 ------ PCbuild9/_testcapi.vcproj | 521 ------ PCbuild9/_tkinter.vcproj | 541 ------ PCbuild9/build.bat | 17 - PCbuild9/build_env.bat | 1 - PCbuild9/build_pgo.bat | 41 - PCbuild9/build_ssl.bat | 12 - PCbuild9/build_ssl.py | 250 --- PCbuild9/build_tkinter.py | 86 - PCbuild9/bz2.vcproj | 545 ------ PCbuild9/debug.vsprops | 11 - PCbuild9/env.bat | 5 - PCbuild9/field3.py | 35 - PCbuild9/idle.bat | 15 - PCbuild9/installer.bmp | Bin 58806 -> 0 bytes PCbuild9/make_buildinfo.c | 94 - PCbuild9/make_buildinfo.vcproj | 162 -- PCbuild9/make_versioninfo.vcproj | 326 ---- PCbuild9/pcbuild.sln | 461 ----- PCbuild9/pginstrument.vsprops | 34 - PCbuild9/pgupdate.vsprops | 14 - PCbuild9/pyd.vsprops | 22 - PCbuild9/pyd_d.vsprops | 30 - PCbuild9/pyexpat.vcproj | 553 ------ PCbuild9/pyproject.vsprops | 79 - PCbuild9/python.vcproj | 645 ------- PCbuild9/pythoncore.vcproj | 1773 ------------------ PCbuild9/pythonw.vcproj | 618 ------- PCbuild9/readme.txt | 334 ---- PCbuild9/release.vsprops | 11 - PCbuild9/rmpyc.py | 25 - PCbuild9/rt.bat | 52 - PCbuild9/select.vcproj | 537 ------ PCbuild9/unicodedata.vcproj | 533 ------ PCbuild9/w9xpopen.vcproj | 576 ------ PCbuild9/winsound.vcproj | 523 ------ PCbuild9/x64.vsprops | 18 - Tools/buildbot/build-amd64.bat | 2 +- Tools/buildbot/build.bat | 2 +- Tools/buildbot/buildmsi.bat | 2 +- Tools/buildbot/clean-amd64.bat | 2 +- Tools/buildbot/clean.bat | 2 +- Tools/buildbot/kill_python.c | 8 +- Tools/buildbot/test-amd64.bat | 2 +- Tools/buildbot/test.bat | 2 +- Tools/msi/msi.py | 2 +- configure | 21 +- configure.in | 11 +- 267 files changed, 23518 insertions(+), 23481 deletions(-) create mode 100644 Lib/distutils/command/wininst-6.0.exe delete mode 100644 Lib/distutils/command/wininst-6.exe create mode 100644 Lib/distutils/command/wininst-8.0.exe delete mode 100644 Lib/distutils/command/wininst-8.exe create mode 100644 Lib/distutils/command/wininst-9.0.exe create mode 100644 PC/VS7.1/Uninstal.wse create mode 100644 PC/VS7.1/_bsddb.vcproj create mode 100644 PC/VS7.1/_ctypes.vcproj create mode 100644 PC/VS7.1/_ctypes_test.vcproj create mode 100644 PC/VS7.1/_elementtree.vcproj create mode 100644 PC/VS7.1/_msi.vcproj create mode 100644 PC/VS7.1/_socket.vcproj create mode 100644 PC/VS7.1/_sqlite3.vcproj create mode 100644 PC/VS7.1/_ssl.mak create mode 100644 PC/VS7.1/_ssl.vcproj create mode 100644 PC/VS7.1/_testcapi.vcproj create mode 100644 PC/VS7.1/_tkinter.vcproj create mode 100644 PC/VS7.1/amd64_ml64.bat create mode 100644 PC/VS7.1/build_ssl.bat create mode 100644 PC/VS7.1/build_ssl.py create mode 100644 PC/VS7.1/bz2.vcproj create mode 100644 PC/VS7.1/db.build create mode 100644 PC/VS7.1/field3.py create mode 100644 PC/VS7.1/installer.bmp create mode 100644 PC/VS7.1/make_buildinfo.c create mode 100644 PC/VS7.1/make_buildinfo.vcproj create mode 100644 PC/VS7.1/make_versioninfo.vcproj create mode 100644 PC/VS7.1/pcbuild.sln create mode 100644 PC/VS7.1/pyexpat.vcproj create mode 100644 PC/VS7.1/python.build create mode 100644 PC/VS7.1/python.iss create mode 100644 PC/VS7.1/python.vcproj create mode 100644 PC/VS7.1/python20.wse create mode 100644 PC/VS7.1/pythoncore.vcproj create mode 100644 PC/VS7.1/pythonw.vcproj create mode 100644 PC/VS7.1/readme.txt create mode 100644 PC/VS7.1/rmpyc.py create mode 100755 PC/VS7.1/rt.bat create mode 100644 PC/VS7.1/select.vcproj create mode 100644 PC/VS7.1/unicodedata.vcproj create mode 100644 PC/VS7.1/w9xpopen.vcproj create mode 100644 PC/VS7.1/winsound.vcproj delete mode 100644 PCbuild/Uninstal.wse delete mode 100644 PCbuild/_ssl.mak delete mode 100644 PCbuild/amd64_ml64.bat create mode 100644 PCbuild/bdist_wininst.vcproj create mode 100644 PCbuild/build_pgo.bat create mode 100644 PCbuild/build_tkinter.py delete mode 100644 PCbuild/db.build create mode 100644 PCbuild/debug.vsprops create mode 100644 PCbuild/idle.bat create mode 100644 PCbuild/pginstrument.vsprops create mode 100644 PCbuild/pgupdate.vsprops create mode 100644 PCbuild/pyd.vsprops create mode 100644 PCbuild/pyd_d.vsprops create mode 100644 PCbuild/pyproject.vsprops delete mode 100644 PCbuild/python.build delete mode 100644 PCbuild/python.iss delete mode 100644 PCbuild/python20.wse create mode 100644 PCbuild/release.vsprops mode change 100755 => 100644 PCbuild/rt.bat create mode 100644 PCbuild/x64.vsprops delete mode 100644 PCbuild9/_bsddb.vcproj delete mode 100644 PCbuild9/_ctypes.vcproj delete mode 100644 PCbuild9/_ctypes_test.vcproj delete mode 100644 PCbuild9/_elementtree.vcproj delete mode 100644 PCbuild9/_msi.vcproj delete mode 100644 PCbuild9/_socket.vcproj delete mode 100644 PCbuild9/_sqlite3.vcproj delete mode 100644 PCbuild9/_ssl.vcproj delete mode 100644 PCbuild9/_testcapi.vcproj delete mode 100644 PCbuild9/_tkinter.vcproj delete mode 100644 PCbuild9/build.bat delete mode 100644 PCbuild9/build_env.bat delete mode 100644 PCbuild9/build_pgo.bat delete mode 100644 PCbuild9/build_ssl.bat delete mode 100644 PCbuild9/build_ssl.py delete mode 100644 PCbuild9/build_tkinter.py delete mode 100644 PCbuild9/bz2.vcproj delete mode 100644 PCbuild9/debug.vsprops delete mode 100644 PCbuild9/env.bat delete mode 100644 PCbuild9/field3.py delete mode 100644 PCbuild9/idle.bat delete mode 100644 PCbuild9/installer.bmp delete mode 100644 PCbuild9/make_buildinfo.c delete mode 100644 PCbuild9/make_buildinfo.vcproj delete mode 100644 PCbuild9/make_versioninfo.vcproj delete mode 100644 PCbuild9/pcbuild.sln delete mode 100644 PCbuild9/pginstrument.vsprops delete mode 100644 PCbuild9/pgupdate.vsprops delete mode 100644 PCbuild9/pyd.vsprops delete mode 100644 PCbuild9/pyd_d.vsprops delete mode 100644 PCbuild9/pyexpat.vcproj delete mode 100644 PCbuild9/pyproject.vsprops delete mode 100644 PCbuild9/python.vcproj delete mode 100644 PCbuild9/pythoncore.vcproj delete mode 100644 PCbuild9/pythonw.vcproj delete mode 100644 PCbuild9/readme.txt delete mode 100644 PCbuild9/release.vsprops delete mode 100644 PCbuild9/rmpyc.py delete mode 100644 PCbuild9/rt.bat delete mode 100644 PCbuild9/select.vcproj delete mode 100644 PCbuild9/unicodedata.vcproj delete mode 100644 PCbuild9/w9xpopen.vcproj delete mode 100644 PCbuild9/winsound.vcproj delete mode 100644 PCbuild9/x64.vsprops diff --git a/.hgsvnexternals b/.hgsvnexternals index 048f7c8..28567dc 100644 --- a/.hgsvnexternals +++ b/.hgsvnexternals @@ -1,3 +1,2 @@ [Tools] 2to3 http://svn.python.org/projects/sandbox/trunk/2to3/ - diff --git a/Doc/Makefile b/Doc/Makefile index 22f852b..189a2f7 100644 --- a/Doc/Makefile +++ b/Doc/Makefile @@ -16,10 +16,11 @@ ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees -D latex_paper_size=$(PAPER) \ help: @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " web to make file usable by Sphinx.web" + @echo " html to make standalone HTML files" + @echo " web to make file usable by Sphinx.web" @echo " htmlhelp to make HTML files and a HTML help project" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " changes to make an overview over all changed/added/deprecated items" checkout: @if [ ! -d tools/sphinx ]; then \ @@ -66,6 +67,10 @@ latex: build @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." +changes: BUILDER = changes +changes: build + @echo "The overview file is in build/changes." + clean: -rm -rf build/* -rm -rf tools/sphinx diff --git a/Doc/README.txt b/Doc/README.txt index 9db4f4c..c6f685c 100644 --- a/Doc/README.txt +++ b/Doc/README.txt @@ -56,6 +56,10 @@ Available make targets are: * "latex", which builds LaTeX source files that can be run with "pdflatex" to produce PDF documents. + * "changes", which builds an overview over all versionadded/versionchanged/ + deprecated items in the current version. This is meant as a help for the + writer of the "What's New" document. + A "make update" updates the Subversion checkouts in `tools/`. diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst index 9413762..3e06e4f 100644 --- a/Doc/c-api/exceptions.rst +++ b/Doc/c-api/exceptions.rst @@ -31,8 +31,8 @@ The error indicator consists of three Python objects corresponding to the result of ``sys.exc_info()``. API functions exist to interact with the error indicator in various ways. There is a separate error indicator for each thread. -.. % XXX Order of these should be more thoughtful. -.. % Either alphabetical or some kind of structure. +.. XXX Order of these should be more thoughtful. + Either alphabetical or some kind of structure. .. cfunction:: void PyErr_Print() diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst index a4f25fa..dac37e1 100644 --- a/Doc/c-api/init.rst +++ b/Doc/c-api/init.rst @@ -264,7 +264,7 @@ Initialization, Finalization, and Threads as the list ``sys.path``, which may be modified to change the future search path for loaded modules. - .. % XXX should give the exact rules + .. XXX should give the exact rules .. cfunction:: const char* Py_GetVersion() @@ -357,8 +357,8 @@ Initialization, Finalization, and Threads to initialize ``sys.argv``, a fatal condition is signalled using :cfunc:`Py_FatalError`. - .. % XXX impl. doesn't seem consistent in allowing 0/NULL for the params; - .. % check w/ Guido. + .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params; + check w/ Guido. .. _threads: diff --git a/Doc/c-api/intro.rst b/Doc/c-api/intro.rst index 54412cd..2742a53 100644 --- a/Doc/c-api/intro.rst +++ b/Doc/c-api/intro.rst @@ -484,7 +484,7 @@ Here is the corresponding C code, in all its glory:: single: PyErr_Clear() single: Py_XDECREF() -This example represents an endorsed use of the :keyword:`goto` statement in C! +This example represents an endorsed use of the ``goto`` statement in C! It illustrates the use of :cfunc:`PyErr_ExceptionMatches` and :cfunc:`PyErr_Clear` to handle specific exceptions, and the use of :cfunc:`Py_XDECREF` to dispose of owned references that may be *NULL* (note the diff --git a/Doc/c-api/newtypes.rst b/Doc/c-api/newtypes.rst index b557957..88a4f2f 100644 --- a/Doc/c-api/newtypes.rst +++ b/Doc/c-api/newtypes.rst @@ -459,7 +459,7 @@ type objects) *must* have the :attr:`ob_size` field. declare the instance struct) and this in turn includes the :attr:`_ob_prev` and :attr:`_ob_next` fields if they are present. This means that the only correct way to get an initializer for the :attr:`tp_basicsize` is to use the - :keyword:`sizeof` operator on the struct used to declare the instance layout. + ``sizeof`` operator on the struct used to declare the instance layout. The basic size does not include the GC header size (this is new in Python 2.2; in 2.1 and 2.0, the GC header size was included in :attr:`tp_basicsize`). @@ -1145,7 +1145,7 @@ The next fields, up to and including :attr:`tp_weaklist`, only exist if the PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type); - XXX more + XXX explain. This field is inherited by subtypes. @@ -1160,7 +1160,7 @@ The next fields, up to and including :attr:`tp_weaklist`, only exist if the This field is inherited by subtypes. - XXX more + XXX explain. .. cmember:: long PyTypeObject.tp_dictoffset @@ -1683,10 +1683,9 @@ member in the :ctype:`PyTypeObject` structure should be *NULL*. Otherwise, the and :exc:`SystemError` should be raised when *segment* specifies a segment that doesn't exist. - .. % Why doesn't it raise ValueError for this one? - .. % GJS: because you shouldn't be calling it with an invalid - .. % segment. That indicates a blatant programming error in the C - .. % code. + .. Why doesn't it raise ValueError for this one? + GJS: because you shouldn't be calling it with an invalid + segment. That indicates a blatant programming error in the C code. .. ctype:: Py_ssize_t (*segcountproc) (PyObject *self, Py_ssize_t *lenp) diff --git a/Doc/distutils/setupscript.rst b/Doc/distutils/setupscript.rst index 3ffcc78..8b88b58 100644 --- a/Doc/distutils/setupscript.rst +++ b/Doc/distutils/setupscript.rst @@ -137,7 +137,7 @@ the Distutils to go out and find the right files; you have to specify the extension name, source file(s), and any compile/link requirements (include directories, libraries to link with, etc.). -.. % XXX read over this section +.. XXX read over this section All of this is done through another keyword argument to :func:`setup`, the :option:`ext_modules` option. :option:`ext_modules` is just a list of diff --git a/Doc/documenting/fromlatex.rst b/Doc/documenting/fromlatex.rst index 42045f7..116524a 100644 --- a/Doc/documenting/fromlatex.rst +++ b/Doc/documenting/fromlatex.rst @@ -154,25 +154,35 @@ These changes to information units should be noted: Description. -* **New information unit** +* **New information units** - There is a new generic information unit called "describe" which can be used - to document things that are not covered by the other units:: + There are new generic information units: One is called "describe" and can be + used to document things that are not covered by the other units:: .. describe:: a == b The equals operator. + The others are:: + + .. cmdoption:: -O + + Describes a command-line option. + + .. envvar:: PYTHONINSPECT + + Describes an environment variable. + Structure --------- -The LaTeX docs were split in several toplevel manuals. Now, all files -are part of the same documentation tree, as indicated by the *toctree* -directives in the sources. Every *toctree* directive embeds other files -as subdocuments of the current file (this structure is not necessarily -mirrored in the filesystem layout). The toplevel file is -:file:`contents.rst`. +The LaTeX docs were split in several toplevel manuals. Now, all files are part +of the same documentation tree, as indicated by the *toctree* directives in the +sources (though individual output formats may choose to split them up into parts +again). Every *toctree* directive embeds other files as subdocuments of the +current file (this structure is not necessarily mirrored in the filesystem +layout). The toplevel file is :file:`contents.rst`. However, most of the old directory structure has been kept, with the directories renamed as follows: @@ -184,7 +194,7 @@ directories renamed as follows: * :file:`inst` -> :file:`installing` * :file:`lib` -> :file:`library` * :file:`mac` -> merged into :file:`library`, with :file:`mac/using.tex` - moved to :file:`howto/pythonmac.rst` + moved to :file:`using/mac.rst` * :file:`ref` -> :file:`reference` * :file:`tut` -> :file:`tutorial`, with the single TeX file split up diff --git a/Doc/documenting/markup.rst b/Doc/documenting/markup.rst index a246d62..f3a8237 100644 --- a/Doc/documenting/markup.rst +++ b/Doc/documenting/markup.rst @@ -455,7 +455,7 @@ in a different style: .. describe:: keyword - The name of a keyword in a programming language. + The name of a keyword in Python. .. describe:: mailheader diff --git a/Doc/documenting/sphinx.rst b/Doc/documenting/sphinx.rst index 85e8b5e..43da14e 100644 --- a/Doc/documenting/sphinx.rst +++ b/Doc/documenting/sphinx.rst @@ -47,14 +47,30 @@ unused_files : list of strings could be docs for temporarily disabled modules or documentation that's not yet ready for public consumption. -last_updated_format : string +add_function_parentheses : bool + If true, ``()`` will be appended to the content of ``:func:``, ``:meth:`` and + ``:cfunc:`` cross-references. + +add_module_names : bool + If true, the current module name will be prepended to all description unit + titles (such as ``.. function::``). + +Builder-specific variables +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +html_download_base_url : string + The base URL for download links on the download page. + +html_last_updated_fmt : string If this is not an empty string, it will be given to ``time.strftime()`` and written to each generated output file after "last updated on:". -use_smartypants : bool +html_use_smartypants : bool If true, use SmartyPants to convert quotes and dashes to the typographically correct entities. -add_function_parentheses : bool - If true, ``()`` will be appended to the content of ``:func:``, ``:meth:`` and - ``:cfunc:`` cross-references. \ No newline at end of file +latex_paper_size : "letter" or "a4" + The paper size option for the LaTeX document class. + +latex_font_size : "10pt", "11pt" or "12pt" + The font size option for the LaTeX document class. \ No newline at end of file diff --git a/Doc/extending/embedding.rst b/Doc/extending/embedding.rst index a50c008..6ba2c67 100644 --- a/Doc/extending/embedding.rst +++ b/Doc/extending/embedding.rst @@ -155,11 +155,7 @@ then the result should be:: Although the program is quite large for its functionality, most of the code is for data conversion between Python and C, and for error reporting. The -interesting part with respect to embedding Python starts with - -.. % $ - -:: +interesting part with respect to embedding Python starts with :: Py_Initialize(); pName = PyString_FromString(argv[1]); @@ -239,15 +235,8 @@ With these extensions, the Python script can do things like :: In a real application, the methods will expose an API of the application to Python. -.. % \section{For the future} -.. % -.. % You don't happen to have a nice library to get textual -.. % equivalents of numeric values do you :-) ? -.. % Callbacks here ? (I may be using information from that section -.. % ?!) -.. % threads -.. % code examples do not really behave well if errors happen -.. % (what to watch out for) +.. TODO: threads, code examples do not really behave well if errors happen + (what to watch out for) .. _embeddingincplusplus: diff --git a/Doc/extending/extending.rst b/Doc/extending/extending.rst index 9b5e0fe..5459a7d 100644 --- a/Doc/extending/extending.rst +++ b/Doc/extending/extending.rst @@ -306,7 +306,7 @@ function. The method table must be passed to the interpreter in the module's initialization function. The initialization function must be named :cfunc:`initname`, where *name* is the name of the module, and should be the -only non-\ :keyword:`static` item defined in the module file:: +only non-\ ``static`` item defined in the module file:: PyMODINIT_FUNC initspam(void) @@ -660,11 +660,7 @@ it returns false and raises an appropriate exception. .. index:: single: Philbrick, Geoff Here is an example module which uses keywords, based on an example by Geoff -Philbrick (philbrick@hks.com): - -.. % - -:: +Philbrick (philbrick@hks.com):: #include "Python.h" @@ -762,8 +758,8 @@ Reference Counts In languages like C or C++, the programmer is responsible for dynamic allocation and deallocation of memory on the heap. In C, this is done using the functions -:cfunc:`malloc` and :cfunc:`free`. In C++, the operators :keyword:`new` and -:keyword:`delete` are used with essentially the same meaning and we'll restrict +:cfunc:`malloc` and :cfunc:`free`. In C++, the operators ``new`` and +``delete`` are used with essentially the same meaning and we'll restrict the following discussion to the C case. Every block of memory allocated with :cfunc:`malloc` should eventually be @@ -1036,11 +1032,10 @@ that it is always a tuple. [#]_ It is a severe error to ever let a *NULL* pointer "escape" to the Python user. -.. % Frank Stajano: -.. % A pedagogically buggy example, along the lines of the previous listing, -.. % would be helpful here -- showing in more concrete terms what sort of -.. % actions could cause the problem. I can't very well imagine it from the -.. % description. +.. Frank Stajano: + A pedagogically buggy example, along the lines of the previous listing, would + be helpful here -- showing in more concrete terms what sort of actions could + cause the problem. I can't very well imagine it from the description. .. _cplusplus: @@ -1076,7 +1071,7 @@ lists, this new collection type should have a set of C functions for direct manipulation from other extension modules. At first sight this seems easy: just write the functions (without declaring them -:keyword:`static`, of course), provide an appropriate header file, and document +``static``, of course), provide an appropriate header file, and document the C API. And in fact this would work if all extension modules were always linked statically with the Python interpreter. When modules are used as shared libraries, however, the symbols defined in one module may not be visible to @@ -1089,7 +1084,7 @@ the module whose functions one wishes to call might not have been loaded yet! Portability therefore requires not to make any assumptions about symbol visibility. This means that all symbols in extension modules should be declared -:keyword:`static`, except for the module's initialization function, in order to +``static``, except for the module's initialization function, in order to avoid name clashes with other extension modules (as discussed in section :ref:`methodtable`). And it means that symbols that *should* be accessible from other extension modules must be exported in a different way. @@ -1124,7 +1119,7 @@ reality (such as adding "spam" to every command). This function :cfunc:`PySpam_System` is also exported to other extension modules. The function :cfunc:`PySpam_System` is a plain C function, declared -:keyword:`static` like everything else:: +``static`` like everything else:: static int PySpam_System(const char *command) @@ -1180,7 +1175,7 @@ function must take care of initializing the C API pointer array:: PyModule_AddObject(m, "_C_API", c_api_object); } -Note that ``PySpam_API`` is declared :keyword:`static`; otherwise the pointer +Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array would disappear when :func:`initspam` terminates! The bulk of the work is in the header file :file:`spammodule.h`, which looks diff --git a/Doc/extending/newtypes.rst b/Doc/extending/newtypes.rst index e2cf6df..cbe3b68 100644 --- a/Doc/extending/newtypes.rst +++ b/Doc/extending/newtypes.rst @@ -1196,16 +1196,14 @@ class object, and get the doc string using its :attr:`__doc__` attribute. As with the :attr:`tp_methods` table, a sentinel entry with a :attr:`name` value of *NULL* is required. -.. % XXX Descriptors need to be explained in more detail somewhere, but -.. % not here. -.. % -.. % Descriptor objects have two handler functions which correspond to -.. % the \member{tp_getattro} and \member{tp_setattro} handlers. The -.. % \method{__get__()} handler is a function which is passed the -.. % descriptor, instance, and type objects, and returns the value of the -.. % attribute, or it returns \NULL{} and sets an exception. The -.. % \method{__set__()} handler is passed the descriptor, instance, type, -.. % and new value; +.. XXX Descriptors need to be explained in more detail somewhere, but not here. + + Descriptor objects have two handler functions which correspond to the + \member{tp_getattro} and \member{tp_setattro} handlers. The + \method{__get__()} handler is a function which is passed the descriptor, + instance, and type objects, and returns the value of the attribute, or it + returns \NULL{} and sets an exception. The \method{__set__()} handler is + passed the descriptor, instance, type, and new value; Type-specific Attribute Management diff --git a/Doc/extending/windows.rst b/Doc/extending/windows.rst index 7a66afe..a34ba2b 100644 --- a/Doc/extending/windows.rst +++ b/Doc/extending/windows.rst @@ -7,8 +7,6 @@ Building C and C++ Extensions on Windows **************************************** -.. % - This chapter briefly explains how to create a Windows extension module for Python using Microsoft Visual C++, and follows with more detailed background information on how it works. The explanatory material is useful for both the diff --git a/Doc/howto/advocacy.rst b/Doc/howto/advocacy.rst index 1f1754a..7d7706e 100644 --- a/Doc/howto/advocacy.rst +++ b/Doc/howto/advocacy.rst @@ -302,11 +302,11 @@ http://www.pythonology.com/success The Python Success Stories are a collection of stories from successful users of Python, with the emphasis on business and corporate users. -.. % \term{\url{http://www.fsbassociates.com/books/pythonchpt1.htm}} -.. % The first chapter of \emph{Internet Programming with Python} also -.. % examines some of the reasons for using Python. The book is well worth -.. % buying, but the publishers have made the first chapter available on -.. % the Web. +.. http://www.fsbassociates.com/books/pythonchpt1.htm + The first chapter of \emph{Internet Programming with Python} also + examines some of the reasons for using Python. The book is well worth + buying, but the publishers have made the first chapter available on + the Web. http://home.pacbell.net/ouster/scripting.html John Ousterhout's white paper on scripting is a good argument for the utility of @@ -333,9 +333,9 @@ http://pythonjournal.cognizor.com/pyj1/Everitt-Feit_interview98-V1.html to show that choosing Python didn't introduce any difficulties into a company's development process, and provided some substantial benefits. -.. % \term{\url{http://www.python.org/psa/Commercial.html}} -.. % Robin Friedrich wrote this document on how to support Python's use in -.. % commercial projects. +.. http://www.python.org/psa/Commercial.html + Robin Friedrich wrote this document on how to support Python's use in + commercial projects. http://www.python.org/workshops/1997-10/proceedings/stein.ps For the 6th Python conference, Greg Stein presented a paper that traced Python's diff --git a/Doc/howto/doanddont.rst b/Doc/howto/doanddont.rst index ace5bed..0e6b3e8 100644 --- a/Doc/howto/doanddont.rst +++ b/Doc/howto/doanddont.rst @@ -291,7 +291,7 @@ are often more then is comfortable to put in one line, many people do:: calculate_number(10, 20) != forbulate(500, 360): pass -You should realize that this is dangerous: a stray space after the ``XXX`` would +You should realize that this is dangerous: a stray space after the ``\`` would make this line wrong, and stray spaces are notoriously hard to see in editors. In this case, at least it would be a syntax error, but if the code was:: diff --git a/Doc/howto/regex.rst b/Doc/howto/regex.rst index 783bec1..6adecd7 100644 --- a/Doc/howto/regex.rst +++ b/Doc/howto/regex.rst @@ -5,11 +5,11 @@ :Author: A.M. Kuchling :Release: 0.05 -.. % TODO: -.. % Document lookbehind assertions -.. % Better way of displaying a RE, a string, and what it matches -.. % Mention optional argument to match.groups() -.. % Unicode (at least a reference) +.. TODO: + Document lookbehind assertions + Better way of displaying a RE, a string, and what it matches + Mention optional argument to match.groups() + Unicode (at least a reference) .. topic:: Abstract @@ -91,8 +91,6 @@ is the same as ``[a-c]``, which uses a range to express the same set of characters. If you wanted to match only lowercase letters, your RE would be ``[a-z]``. -.. % $ - Metacharacters are not active inside classes. For example, ``[akm$]`` will match any of the characters ``'a'``, ``'k'``, ``'m'``, or ``'$'``; ``'$'`` is usually a metacharacter, but inside a character class it's stripped of its @@ -679,8 +677,8 @@ given location, they can obviously be matched an infinite number of times. >>> print(re.search('^From', 'Reciting From Memory')) None - .. % To match a literal \character{\^}, use \regexp{\e\^} or enclose it - .. % inside a character class, as in \regexp{[{\e}\^]}. + .. To match a literal \character{\^}, use \regexp{\e\^} or enclose it + .. inside a character class, as in \regexp{[{\e}\^]}. ``$`` Matches at the end of a line, which is defined as either the end of the string, @@ -696,8 +694,6 @@ given location, they can obviously be matched an infinite number of times. To match a literal ``'$'``, use ``\$`` or enclose it inside a character class, as in ``[$]``. - .. % $ - ``\A`` Matches only at the start of the string. When not in :const:`MULTILINE` mode, ``\A`` and ``^`` are effectively the same. In :const:`MULTILINE` mode, they're @@ -980,12 +976,8 @@ filenames where the extension is not ``bat``? Some incorrect attempts: that the first character of the extension is not a ``b``. This is wrong, because the pattern also doesn't match ``foo.bar``. -.. % $ - ``.*[.]([^b]..|.[^a].|..[^t])$`` -.. % Messes up the HTML without the curly braces around \^ - The expression gets messier when you try to patch up the first solution by requiring one of the following cases to match: the first character of the extension isn't ``b``; the second character isn't ``a``; or the third character @@ -1013,16 +1005,12 @@ match, the whole pattern will fail. The trailing ``$`` is required to ensure that something like ``sample.batch``, where the extension only starts with ``bat``, will be allowed. -.. % $ - Excluding another filename extension is now easy; simply add it as an alternative inside the assertion. The following pattern excludes filenames that end in either ``bat`` or ``exe``: ``.*[.](?!bat$|exe$).*$`` -.. % $ - Modifying Strings ================= @@ -1343,16 +1331,10 @@ enables REs to be formatted more neatly:: \s*$ # Trailing whitespace to end-of-line """, re.VERBOSE) -This is far more readable than: - -.. % $ - -:: +This is far more readable than:: pat = re.compile(r"\s*(?P
[^:]+)\s*:(?P.*?)\s*$") -.. % $ - Feedback ======== diff --git a/Doc/install/index.rst b/Doc/install/index.rst index 1bfc703..c830c8d 100644 --- a/Doc/install/index.rst +++ b/Doc/install/index.rst @@ -10,18 +10,17 @@ :Release: |version| :Date: |today| -.. % TODO: -.. % Fill in XXX comments - -.. % The audience for this document includes people who don't know anything -.. % about Python and aren't about to learn the language just in order to -.. % install and maintain it for their users, i.e. system administrators. -.. % Thus, I have to be sure to explain the basics at some point: -.. % sys.path and PYTHONPATH at least. Should probably give pointers to -.. % other docs on "import site", PYTHONSTARTUP, PYTHONHOME, etc. -.. % -.. % Finally, it might be useful to include all the material from my "Care -.. % and Feeding of a Python Installation" talk in here somewhere. Yow! +.. TODO: Fill in XXX comments + +.. The audience for this document includes people who don't know anything + about Python and aren't about to learn the language just in order to + install and maintain it for their users, i.e. system administrators. + Thus, I have to be sure to explain the basics at some point: + sys.path and PYTHONPATH at least. Should probably give pointers to + other docs on "import site", PYTHONSTARTUP, PYTHONHOME, etc. + + Finally, it might be useful to include all the material from my "Care + and Feeding of a Python Installation" talk in here somewhere. Yow! .. topic:: Abstract @@ -565,11 +564,11 @@ environment variables, such as Mac OS 9, the configuration variables supplied by the Distutils are the only ones you can use.) See section :ref:`inst-config-files` for details. -.. % XXX need some Windows examples---when would custom -.. % installation schemes be needed on those platforms? +.. XXX need some Windows examples---when would custom installation schemes be + needed on those platforms? -.. % XXX I'm not sure where this section should go. +.. XXX I'm not sure where this section should go. .. _inst-search-path: @@ -881,8 +880,8 @@ Microsoft Visual C++, which uses COFF as the object file format.) For this reason you have to convert Python's library :file:`python25.lib` into the Borland format. You can do this as follows: -.. % Should we mention that users have to create cfg-files for the compiler? -.. % see also http://community.borland.com/article/0,1410,21205,00.html +.. Should we mention that users have to create cfg-files for the compiler? +.. see also http://community.borland.com/article/0,1410,21205,00.html :: @@ -940,8 +939,8 @@ a good program for this task at http://starship.python.net/crew/kernr/mingw32/Notes.html, see at PExports 0.42h there.) -.. % I don't understand what the next line means. --amk -.. % (inclusive the references on data structures.) +.. I don't understand what the next line means. --amk +.. (inclusive the references on data structures.) :: diff --git a/Doc/library/aepack.rst b/Doc/library/aepack.rst index 0ee93e5..daaa9b2 100644 --- a/Doc/library/aepack.rst +++ b/Doc/library/aepack.rst @@ -6,9 +6,7 @@ :platform: Mac :synopsis: Conversion between Python variables and AppleEvent data containers. .. sectionauthor:: Vincent Marchetti - - -.. % \moduleauthor{Jack Jansen?}{email} +.. moduleauthor:: Jack Jansen The :mod:`aepack` module defines functions for converting (packing) Python variables to AppleEvent descriptors and back (unpacking). Within Python the diff --git a/Doc/library/aetools.rst b/Doc/library/aetools.rst index b5fd4ad..da427eb 100644 --- a/Doc/library/aetools.rst +++ b/Doc/library/aetools.rst @@ -6,9 +6,7 @@ :platform: Mac :synopsis: Basic support for sending Apple Events .. sectionauthor:: Jack Jansen - - -.. % \moduleauthor{Jack Jansen?}{email} +.. moduleauthor:: Jack Jansen The :mod:`aetools` module contains the basic functionality on which Python AppleScript client support is built. It also imports and re-exports the core diff --git a/Doc/library/aetypes.rst b/Doc/library/aetypes.rst index 0dd0a88..c8c5d80 100644 --- a/Doc/library/aetypes.rst +++ b/Doc/library/aetypes.rst @@ -6,9 +6,7 @@ :platform: Mac :synopsis: Python representation of the Apple Event Object Model. .. sectionauthor:: Vincent Marchetti - - -.. % \moduleauthor{Jack Jansen?}{email} +.. moduleauthor:: Jack Jansen The :mod:`aetypes` defines classes used to represent Apple Event data descriptors and Apple Event object specifiers. diff --git a/Doc/library/asyncore.rst b/Doc/library/asyncore.rst index 2ed3c92..6830bae 100644 --- a/Doc/library/asyncore.rst +++ b/Doc/library/asyncore.rst @@ -8,13 +8,12 @@ .. moduleauthor:: Sam Rushing .. sectionauthor:: Christopher Petrilli .. sectionauthor:: Steve Holden +.. heavily adapted from original documentation by Sam Rushing This module provides the basic infrastructure for writing asynchronous socket service clients and servers. -.. % Heavily adapted from original documentation by Sam Rushing. - There are only two ways to have a program on a single processor do "more than one thing at a time." Multi-threaded programming is the simplest and most popular way to do it, but there is another very different technique, that lets diff --git a/Doc/library/audioop.rst b/Doc/library/audioop.rst index 7779610..8ee2795 100644 --- a/Doc/library/audioop.rst +++ b/Doc/library/audioop.rst @@ -19,7 +19,7 @@ specified otherwise. This module provides support for a-LAW, u-LAW and Intel/DVI ADPCM encodings. -.. % This para is mostly here to provide an excuse for the index entries... +.. This para is mostly here to provide an excuse for the index entries... A few of the more complicated operations only take 16-bit samples, otherwise the sample size (in bytes) is always a parameter of the operation. diff --git a/Doc/library/bisect.rst b/Doc/library/bisect.rst index 10f72fb..114300e 100644 --- a/Doc/library/bisect.rst +++ b/Doc/library/bisect.rst @@ -5,11 +5,7 @@ .. module:: bisect :synopsis: Array bisection algorithms for binary searching. .. sectionauthor:: Fred L. Drake, Jr. - - -.. % LaTeX produced by Fred L. Drake, Jr. , with an -.. % example based on the PyModules FAQ entry by Aaron Watters -.. % . +.. example based on the PyModules FAQ entry by Aaron Watters This module provides support for maintaining a list in sorted order without having to sort the list after each insertion. For long lists of items with diff --git a/Doc/library/cgi.rst b/Doc/library/cgi.rst index 41ebf9d..9f0171c 100644 --- a/Doc/library/cgi.rst +++ b/Doc/library/cgi.rst @@ -176,7 +176,7 @@ intuitive way. The interface doesn't make the techniques described in previous sections obsolete --- they are still useful to process file uploads efficiently, for example. -.. % XXX: Is this true ? +.. XXX: Is this true ? The interface consists of two simple methods. Using the methods you can process form data in a generic way, without the need to worry whether only one or more diff --git a/Doc/library/codeop.rst b/Doc/library/codeop.rst index 35430b4..456f6dd 100644 --- a/Doc/library/codeop.rst +++ b/Doc/library/codeop.rst @@ -7,9 +7,6 @@ .. sectionauthor:: Moshe Zadka .. sectionauthor:: Michael Hudson - -.. % LaTeXed from excellent doc-string. - The :mod:`codeop` module provides utilities upon which the Python read-eval-print loop can be emulated, as is done in the :mod:`code` module. As a result, you probably don't want to use the module directly; if you want to @@ -29,7 +26,6 @@ of doing them both. To do just the former: - .. function:: compile_command(source[, filename[, symbol]]) Tries to compile *source*, which should be a string of Python code and return a diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index e01c52e..3fd0cc9 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -100,7 +100,7 @@ particular functionality, for example:: where only the most recent activity is of interest. .. versionchanged:: 2.6 - Added *maxlen* + Added *maxlen* parameter. Deque objects support the following methods: diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst index 6185aa0..979f351 100644 --- a/Doc/library/configparser.rst +++ b/Doc/library/configparser.rst @@ -87,7 +87,7 @@ write-back, as will be the keys within each section. well. New applications should prefer this version if they don't need to be compatible with older versions of Python. - .. % XXX Need to explain what's safer/more predictable about it. + .. XXX Need to explain what's safer/more predictable about it. .. exception:: NoSectionError diff --git a/Doc/library/constants.rst b/Doc/library/constants.rst index 0d44b7b..3870874 100644 --- a/Doc/library/constants.rst +++ b/Doc/library/constants.rst @@ -15,19 +15,21 @@ A small number of constants live in the built-in namespace. They are: .. data:: False - The false value of the :class:`bool` type. + The false value of the :class:`bool` type. Assignments to ``False`` + are illegal and raise a :exc:`SyntaxError`. .. data:: True - The true value of the :class:`bool` type. + The true value of the :class:`bool` type. Assignments to ``True`` + are illegal and raise a :exc:`SyntaxError`. .. data:: None The sole value of :attr:`types.NoneType`. ``None`` is frequently used to represent the absence of a value, as when default arguments are not passed to a - function. + function. Assignments to ``None`` are illegal and raise a :exc:`SyntaxError`. .. data:: NotImplemented @@ -42,11 +44,11 @@ A small number of constants live in the built-in namespace. They are: The same as ``...``. Special value used mostly in conjunction with extended slicing syntax for user-defined container data types, as in :: - val = container[1:5, 7:10, ...] + .. XXX Someone who understands extended slicing should fill in here. .. data:: __debug__ - A boolean value that is :data:`True` if Python was not started with the - ``-O`` command line option. Its value is used indirectly by the - :keyword:`assert` statement, but it can also be used directly in code. + This constant is true if Python was not started with an :option:`-O` option. + Assignments to :const:`__debug__` are illegal and raise a :exc:`SyntaxError`. + See also the :keyword:`assert` statement. diff --git a/Doc/library/copy.rst b/Doc/library/copy.rst index 0abee4d..485cfc5 100644 --- a/Doc/library/copy.rst +++ b/Doc/library/copy.rst @@ -21,8 +21,6 @@ Interface summary:: For module specific errors, :exc:`copy.error` is raised. -.. % - The difference between shallow and deep copying is only relevant for compound objects (objects that contain other objects, like lists or class instances): diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index c759832..bbe4408 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -69,7 +69,7 @@ the library by creating an instance of CDLL by calling the constructor:: >>> -.. % XXX Add section for Mac OS X. +.. XXX Add section for Mac OS X. .. _ctypes-accessing-functions-from-loaded-dlls: @@ -1256,10 +1256,6 @@ Enumeration types are not implemented. You can do it easily yourself, using ``long double`` is not implemented. -.. % Local Variables: -.. % compile-command: "make.bat" -.. % End: - .. _ctypes-ctypes-reference: diff --git a/Doc/library/curses.rst b/Doc/library/curses.rst index 046b796..07ccc55 100644 --- a/Doc/library/curses.rst +++ b/Doc/library/curses.rst @@ -1167,7 +1167,7 @@ Several constants are available to specify character cell attributes: Keys are referred to by integer constants with names starting with ``KEY_``. The exact keycaps available are system dependent. -.. % XXX should this table be alphabetized? +.. XXX this table is far too large! should it be alphabetized? +-------------------+--------------------------------------------+ | Key constant | Key | diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst index adc1664..3fad2fb 100644 --- a/Doc/library/datetime.rst +++ b/Doc/library/datetime.rst @@ -1,6 +1,3 @@ -.. % XXX what order should the types be discussed in? - - :mod:`datetime` --- Basic date and time types ============================================= @@ -10,6 +7,7 @@ .. sectionauthor:: Tim Peters .. sectionauthor:: A.M. Kuchling +.. XXX what order should the types be discussed in? The :mod:`datetime` module supplies classes for manipulating dates and times in both simple and complex ways. While date and time arithmetic is supported, the @@ -202,7 +200,7 @@ Instance attributes (read-only): Supported operations: -.. % XXX this table is too wide! +.. XXX this table is too wide! +--------------------------------+-----------------------------------------------+ | Operation | Result | diff --git a/Doc/library/decimal.rst b/Doc/library/decimal.rst index fecfdeb..218d1c8 100644 --- a/Doc/library/decimal.rst +++ b/Doc/library/decimal.rst @@ -88,7 +88,7 @@ reset them before monitoring a calculation. * IEEE standard 854-1987, `Unofficial IEEE 854 Text `_. -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-tutorial: @@ -263,7 +263,7 @@ a single cast inside a loop. With context set and decimals created, the bulk of the program manipulates the data no differently than with other Python numeric types. -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-decimal: @@ -274,7 +274,7 @@ Decimal objects .. class:: Decimal([value [, context]]) - Constructs a new :class:`Decimal` object based from *value*. + Construct a new :class:`Decimal` object based from *value*. *value* can be an integer, string, tuple, or another :class:`Decimal` object. If no *value* is given, returns ``Decimal("0")``. If *value* is a string, it @@ -512,7 +512,7 @@ also have a number of specialized methods: correctly rounded using the :const:`ROUND_HALF_EVEN` rounding mode. -.. method: Decimal.logb([context]) +.. method:: Decimal.logb([context]) For a nonzero number, return the adjusted exponent of its operand as a :class:`Decimal` instance. If the operand is a zero then @@ -624,7 +624,7 @@ also have a number of specialized methods: .. method:: Decimal.quantize(exp[, rounding[, context[, watchexp]]]) - Returns a value equal to the first operand after rounding and + Return a value equal to the first operand after rounding and having the exponent of the second operand. >>> Decimal("1.41421356").quantize(Decimal("1.000")) @@ -645,8 +645,8 @@ also have a number of specialized methods: the given ``context`` argument; if neither argument is given the rounding mode of the current thread's context is used. - If watchexp is set (default), then an error is returned whenever - the resulting exponent is greater than Emax or less than Etiny. + If *watchexp* is set (default), then an error is returned whenever the + resulting exponent is greater than :attr:`Emax` or less than :attr:`Etiny`. .. method:: Decimal.radix() @@ -657,7 +657,7 @@ also have a number of specialized methods: .. method:: Decimal.remainder_near(other[, context]) - Computes the modulo as either a positive or negative value depending on which is + Compute the modulo as either a positive or negative value depending on which is closest to zero. For instance, ``Decimal(10).remainder_near(6)`` returns ``Decimal("-2")`` which is closer to zero than ``Decimal("4")``. @@ -720,7 +720,7 @@ also have a number of specialized methods: .. method:: Decimal.to_integral_exact([rounding[, context]]) - Round the argument to the nearest integer, signaling + Round to the nearest integer, signaling :const:`Inexact` or :const:`Rounded` as appropriate if rounding occurs. The rounding mode is determined by the ``rounding`` parameter if given, else by the given ``context``. If neither @@ -730,14 +730,14 @@ also have a number of specialized methods: .. method:: Decimal.to_integral_value([rounding[, context]]) - Rounds to the nearest integer without signaling :const:`Inexact` or + Round to the nearest integer without signaling :const:`Inexact` or :const:`Rounded`. If given, applies *rounding*; otherwise, uses the rounding method in either the supplied *context* or the current context. .. method:: Decimal.trim() - Returns its argument with *insignificant* trailing zeros removed. + Return the decimal with *insignificant* trailing zeros removed. Here, a trailing zero is considered insignificant either if it follows the decimal point, or if the exponent of the argument (that is, the last element of the :meth:`as_tuple` representation) is @@ -755,7 +755,7 @@ operands*. A *logical operand* is a :class:`Decimal` instance whose exponent and sign are both zero, and whose digits are all either :const:`0` or :const:`1`. -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-context: @@ -1023,7 +1023,7 @@ those for the :class:`Decimal` class and are only briefly recounted here. Converts a number to a string using scientific notation. -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-signals: @@ -1144,7 +1144,7 @@ The following table summarizes the hierarchy of signals:: Rounded Subnormal -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-notes: @@ -1241,7 +1241,7 @@ the following calculation returns a value equal to zero:: >>> 1 / Decimal('Infinity') Decimal("0E-1000000026") -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-threads: @@ -1279,7 +1279,7 @@ threads calling :func:`getcontext`. For example:: t3.start() . . . -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-recipes: @@ -1435,7 +1435,7 @@ to work with the :class:`Decimal` class:: return +s -.. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .. _decimal-faq: diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index fe956b2..3b17d04 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -6,9 +6,9 @@ :synopsis: Helpers for computing differences between objects. .. moduleauthor:: Tim Peters .. sectionauthor:: Tim Peters +.. Markup by Fred L. Drake, Jr. -.. % LaTeXification by Fred L. Drake, Jr. . This module provides classes and functions for comparing sequences. It can be used for example, for comparing files, and can produce difference @@ -378,6 +378,12 @@ use :meth:`set_seq2` to set the commonly used sequence once and call then ``i+n != i'`` or ``j+n != j'``; in other words, adjacent triples always describe non-adjacent equal blocks. + .. XXX Explain why a dummy is used! + + .. versionchanged:: 2.5 + The guarantee that adjacent triples always describe non-adjacent blocks was + implemented. + :: >>> s = SequenceMatcher(None, "abxcd", "abcd") diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index 2616295..41cbe7f 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -452,13 +452,6 @@ the more significant byte last. Unpacks TOS into *count* individual values, which are put onto the stack right-to-left. -.. % \begin{opcodedesc}{UNPACK_LIST}{count} -.. % This opcode is obsolete. -.. % \end{opcodedesc} -.. % \begin{opcodedesc}{UNPACK_ARG}{count} -.. % This opcode is obsolete. -.. % \end{opcodedesc} - .. opcode:: DUP_TOPX (count) @@ -486,10 +479,6 @@ the more significant byte last. Works as ``DELETE_NAME``, but deletes a global name. -.. % \begin{opcodedesc}{UNPACK_VARARG}{argc} -.. % This opcode is obsolete. -.. % \end{opcodedesc} - .. opcode:: LOAD_CONST (consti) @@ -577,22 +566,11 @@ the more significant byte last. the iterator indicates it is exhausted ``TOS`` is popped, and the byte code counter is incremented by *delta*. -.. % \begin{opcodedesc}{FOR_LOOP}{delta} -.. % This opcode is obsolete. -.. % \end{opcodedesc} -.. % \begin{opcodedesc}{LOAD_LOCAL}{namei} -.. % This opcode is obsolete. -.. % \end{opcodedesc} - .. opcode:: LOAD_GLOBAL (namei) Loads the global named ``co_names[namei]`` onto the stack. -.. % \begin{opcodedesc}{SET_FUNC_ARGS}{argc} -.. % This opcode is obsolete. -.. % \end{opcodedesc} - .. opcode:: SETUP_LOOP (delta) @@ -690,7 +668,7 @@ the more significant byte last. Pushes a slice object on the stack. *argc* must be 2 or 3. If it is 2, ``slice(TOS1, TOS)`` is pushed; if it is 3, ``slice(TOS2, TOS1, TOS)`` is - pushed. See the ``slice()`` built-in function for more information. + pushed. See the :func:`slice` built-in function for more information. .. opcode:: EXTENDED_ARG (ext) diff --git a/Doc/library/dl.rst b/Doc/library/dl.rst index ff42619..de641e3 100644 --- a/Doc/library/dl.rst +++ b/Doc/library/dl.rst @@ -7,9 +7,6 @@ :synopsis: Call C functions in shared objects. .. sectionauthor:: Moshe Zadka - -.. % ?????????? Anyone???????????? - The :mod:`dl` module defines an interface to the :cfunc:`dlopen` function, which is the most common interface on Unix platforms for handling dynamically linked libraries. It allows the program to call arbitrary functions in such a library. diff --git a/Doc/library/doctest.rst b/Doc/library/doctest.rst index 99a2921..04bc219 100644 --- a/Doc/library/doctest.rst +++ b/Doc/library/doctest.rst @@ -691,12 +691,7 @@ even a single character doesn't match, the test fails. This will probably surprise you a few times, as you learn exactly what Python does and doesn't guarantee about output. For example, when printing a dict, Python doesn't guarantee that the key-value pairs will be printed in any particular order, so a -test like - -.. % Hey! What happened to Monty Python examples? -.. % Tim: ask Guido -- it's his example! - -:: +test like :: >>> foo() {"Hermione": "hippogryph", "Harry": "broomstick"} diff --git a/Doc/library/email.rst b/Doc/library/email.rst index df41563..72fb31d 100644 --- a/Doc/library/email.rst +++ b/Doc/library/email.rst @@ -1,7 +1,3 @@ -.. % Copyright (C) 2001-2007 Python Software Foundation -.. % Author: barry@python.org (Barry Warsaw) - - :mod:`email` --- An email and MIME handling package =================================================== @@ -10,6 +6,7 @@ including MIME documents. .. moduleauthor:: Barry A. Warsaw .. sectionauthor:: Barry A. Warsaw +.. Copyright (C) 2001-2007 Python Software Foundation The :mod:`email` package is a library for managing email messages, including diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 786e825..e7721fa 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -111,16 +111,15 @@ The following exceptions are the exceptions that are actually raised. .. exception:: AttributeError - Raised when an attribute reference or assignment fails. (When an object does - not support attribute references or attribute assignments at all, - :exc:`TypeError` is raised.) - - .. % xref to attribute reference? + Raised when an attribute reference (see :ref:`attribute-references`) or + assignment fails. (When an object does not support attribute references or + attribute assignments at all, :exc:`TypeError` is raised.) .. exception:: EOFError - Raised when attempting to read beyond the end of a file. (N.B.: the + Raised when one of the built-in functions (:func:`input` or :func:`raw_input`) + hits an end-of-file condition (EOF) without reading any data. (N.B.: the :meth:`file.read` and :meth:`file.readline` methods return an empty string when they hit EOF.) @@ -162,14 +161,14 @@ The following exceptions are the exceptions that are actually raised. truncated to fall in the allowed range; if an index is not a plain integer, :exc:`TypeError` is raised.) - .. % XXXJH xref to sequences + .. XXX xref to sequences .. exception:: KeyError Raised when a mapping (dictionary) key is not found in the set of existing keys. - .. % XXXJH xref to mapping objects? + .. XXX xref to mapping objects? .. exception:: KeyboardInterrupt diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 02c709c2..49fd77d 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -28,7 +28,7 @@ available. They are listed here in alphabetical order. :func:`__import__` function. For example, the statement ``import spam`` results in the following call: - ``__import__('spam',`` ``globals(),`` ``locals(), [], -1)``; the statement + ``__import__('spam', globals(), locals(), [], -1)``; the statement ``from spam.ham import eggs`` results in ``__import__('spam.ham', globals(), locals(), ['eggs'], -1)``. Note that even though ``locals()`` and ``['eggs']`` are passed in as arguments, the :func:`__import__` function does not set the @@ -359,7 +359,7 @@ available. They are listed here in alphabetical order. access to the standard :mod:`builtins` module and restricted environments are propagated. If the *locals* dictionary is omitted it defaults to the *globals* dictionary. If both dictionaries are omitted, the expression is executed in the - environment where :keyword:`eval` is called. The return value is the result of + environment where :func:`eval` is called. The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example:: >>> x = 1 @@ -632,7 +632,7 @@ available. They are listed here in alphabetical order. The contents of this dictionary should not be modified; changes may not affect the values of local variables used by the interpreter. - Free variables are returned by *locals* when it is called in a function block. + Free variables are returned by :func:`locals` when it is called in a function block. Modifications of free variables may not affect the values used by the interpreter. Free variables are not returned in class blocks. diff --git a/Doc/library/gensuitemodule.rst b/Doc/library/gensuitemodule.rst index 3fc5254..dbbc3a0 100644 --- a/Doc/library/gensuitemodule.rst +++ b/Doc/library/gensuitemodule.rst @@ -6,9 +6,7 @@ :platform: Mac :synopsis: Create a stub package from an OSA dictionary .. sectionauthor:: Jack Jansen - - -.. % \moduleauthor{Jack Jansen?}{email} +.. moduleauthor:: Jack Jansen The :mod:`gensuitemodule` module creates a Python package implementing stub code for the AppleScript suites that are implemented by a specific application, diff --git a/Doc/library/getopt.rst b/Doc/library/getopt.rst index b7220a5..35d91d2 100644 --- a/Doc/library/getopt.rst +++ b/Doc/library/getopt.rst @@ -9,7 +9,7 @@ This module helps scripts to parse the command line arguments in ``sys.argv``. It supports the same conventions as the Unix :cfunc:`getopt` function (including -the special meanings of arguments of the form '``-``' and '``--``'). Long +the special meanings of arguments of the form '``-``' and '``--``'). Long options similar to those supported by GNU software may be used as well via an optional third argument. This module provides a single function and an exception: diff --git a/Doc/library/getpass.rst b/Doc/library/getpass.rst index 9a45b28..bd384b4 100644 --- a/Doc/library/getpass.rst +++ b/Doc/library/getpass.rst @@ -1,4 +1,3 @@ - :mod:`getpass` --- Portable password input ========================================== @@ -6,9 +5,7 @@ :synopsis: Portable reading of passwords and retrieval of the userid. .. moduleauthor:: Piers Lauder .. sectionauthor:: Fred L. Drake, Jr. - - -.. % Windows (& Mac?) support by Guido van Rossum. +.. Windows (& Mac?) support by Guido van Rossum. The :mod:`getpass` module provides two functions: diff --git a/Doc/library/heapq.rst b/Doc/library/heapq.rst index e3b145c..f26d29b 100644 --- a/Doc/library/heapq.rst +++ b/Doc/library/heapq.rst @@ -1,4 +1,3 @@ - :mod:`heapq` --- Heap queue algorithm ===================================== @@ -8,9 +7,6 @@ .. sectionauthor:: Guido van Rossum .. sectionauthor:: François Pinard - -.. % Theoretical explanation: - This module provides an implementation of the heap queue algorithm, also known as the priority queue algorithm. diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst index 44b59e9..8209aa9 100644 --- a/Doc/library/idle.rst +++ b/Doc/library/idle.rst @@ -1,20 +1,16 @@ .. _idle: -Idle +IDLE ==== .. moduleauthor:: Guido van Rossum - -.. % \declaremodule{standard}{idle} -.. % \modulesynopsis{A Python Integrated Development Environment} - .. index:: - single: Idle + single: IDLE single: Python Editor single: Integrated Development Environment -Idle is the Python IDE built with the :mod:`Tkinter` GUI toolkit. +IDLE is the Python IDE built with the :mod:`Tkinter` GUI toolkit. IDLE has the following features: diff --git a/Doc/library/imaplib.rst b/Doc/library/imaplib.rst index dab22e0..10f3a42 100644 --- a/Doc/library/imaplib.rst +++ b/Doc/library/imaplib.rst @@ -1,4 +1,3 @@ - :mod:`imaplib` --- IMAP4 protocol client ======================================== @@ -6,6 +5,10 @@ :synopsis: IMAP4 protocol client (requires sockets). .. moduleauthor:: Piers Lauder .. sectionauthor:: Piers Lauder +.. revised by ESR, January 2000 +.. changes for IMAP4_SSL by Tino Lange , March 2002 +.. changes for IMAP4_stream by Piers Lauder , + November 2002 .. index:: @@ -13,14 +16,6 @@ pair: IMAP4_SSL; protocol pair: IMAP4_stream; protocol -.. % Based on HTML documentation by Piers Lauder -.. % ; -.. % converted by Fred L. Drake, Jr. . -.. % Revised by ESR, January 2000. -.. % Changes for IMAP4_SSL by Tino Lange , March 2002 -.. % Changes for IMAP4_stream by Piers Lauder -.. % , November 2002 - This module defines three classes, :class:`IMAP4`, :class:`IMAP4_SSL` and :class:`IMAP4_stream`, which encapsulate a connection to an IMAP4 server and implement a large subset of the IMAP4rev1 client protocol as defined in diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 54b52e4..21f6476 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -157,7 +157,7 @@ loops that truncate the stream. key = lambda x: x self.keyfunc = key self.it = iter(iterable) - self.tgtkey = self.currkey = self.currvalue = [] + self.tgtkey = self.currkey = self.currvalue = object() def __iter__(self): return self def __next__(self): @@ -350,14 +350,13 @@ loops that truncate the stream. is equivalent to:: def tee(iterable): - def gen(next, data={}, cnt=[0]): + def gen(next, data={}): for i in count(): - if i == cnt[0]: - item = data[i] = next() - cnt[0] += 1 + if i in data: + yield data.pop(i) else: - item = data.pop(i) - yield item + data[i] = next() + yield data[i] it = iter(iterable) return (gen(it.__next__), gen(it.__next__)) diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index 537ac3a..a95e2b5 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -2019,8 +2019,6 @@ Configuration Configuration functions ^^^^^^^^^^^^^^^^^^^^^^^ -.. % - The following functions configure the logging module. They are located in the :mod:`logging.config` module. Their use is optional --- you can configure the logging module using these functions or by making calls to the main API (defined @@ -2204,13 +2202,12 @@ Sections which specify formatter configuration are typified by the following. :: class=logging.Formatter The ``format`` entry is the overall format string, and the ``datefmt`` entry is -the :func:`strftime`\ -compatible date/time format string. If empty, the package -substitutes ISO8601 format date/times, which is almost equivalent to specifying -the date format string "The ISO8601 format also specifies milliseconds, which -are appended to the result of using the above format string, with a comma -separator. An example time in ISO8601 format is ``2003-01-23 00:29:50,411``. - -.. % Y-%m-%d %H:%M:%S". +the :func:`strftime`\ -compatible date/time format string. If empty, the +package substitutes ISO8601 format date/times, which is almost equivalent to +specifying the date format string ``"%Y-%m-%d %H:%M:%S"``. The ISO8601 format +also specifies milliseconds, which are appended to the result of using the above +format string, with a comma separator. An example time in ISO8601 format is +``2003-01-23 00:29:50,411``. The ``class`` entry is optional. It indicates the name of the formatter's class (as a dotted module and class name.) This option is useful for instantiating a diff --git a/Doc/library/mhlib.rst b/Doc/library/mhlib.rst index 0dd5353..f6edf28 100644 --- a/Doc/library/mhlib.rst +++ b/Doc/library/mhlib.rst @@ -1,13 +1,9 @@ - :mod:`mhlib` --- Access to MH mailboxes ======================================= .. module:: mhlib :synopsis: Manipulate MH mailboxes from Python. - - -.. % LaTeX'ized from the comments in the module by Skip Montanaro -.. % . +.. sectionauthor:: Skip Montanaro The :mod:`mhlib` module provides a Python interface to MH folders and their contents. diff --git a/Doc/library/nntplib.rst b/Doc/library/nntplib.rst index c3de3d7..761190d 100644 --- a/Doc/library/nntplib.rst +++ b/Doc/library/nntplib.rst @@ -309,8 +309,6 @@ indicates an error, the method raises one of the above exceptions. is supplied, then the returned *list* is an empty list. This is an optional NNTP extension, and may not be supported by all servers. - .. % XXX huh? Should that be (name, description)? - RFC2980 says "It is suggested that this extension be deprecated". Use :meth:`descriptions` or :meth:`description` instead. diff --git a/Doc/library/optparse.rst b/Doc/library/optparse.rst index f5488e7..e6668b6 100644 --- a/Doc/library/optparse.rst +++ b/Doc/library/optparse.rst @@ -1,7 +1,3 @@ -.. % THIS FILE IS AUTO-GENERATED! DO NOT EDIT! -.. % (Your changes will be lost the next time it is generated.) - - :mod:`optparse` --- More powerful command line option parser ============================================================ @@ -18,9 +14,6 @@ populate it with options, and parse the command line. ``optparse`` allows users to specify options in the conventional GNU/POSIX syntax, and additionally generates usage and help messages for you. -.. % An intro blurb used only when generating LaTeX docs for the Python -.. % manual (based on README.txt). - Here's an example of using ``optparse`` in a simple script:: from optparse import OptionParser @@ -70,8 +63,6 @@ and ``optparse`` will print out a brief summary of your script's options:: where the value of *yourscript* is determined at runtime (normally from ``sys.argv[0]``). -.. % $Id: intro.txt 413 2004-09-28 00:59:13Z greg $ - .. _optparse-background: @@ -233,8 +224,6 @@ you implement, the more flexible your program is, and the more complicated its implementation becomes. Too much flexibility has drawbacks as well, of course; too many options can overwhelm users and make your code much harder to maintain. -.. % $Id: tao.txt 413 2004-09-28 00:59:13Z greg $ - .. _optparse-tutorial: @@ -652,8 +641,6 @@ Here's what :mod:`optparse`\ -based scripts usually look like:: if __name__ == "__main__": main() -.. % $Id: tutorial.txt 515 2006-06-10 15:37:45Z gward $ - .. _optparse-reference-guide: @@ -1329,8 +1316,6 @@ OptionParser supports several other public methods: parser.add_option("--novice", action="store_const", dest="mode", const="novice") -.. % $Id: reference.txt 519 2006-06-11 14:39:11Z gward $ - .. _optparse-option-callbacks: @@ -1626,8 +1611,6 @@ in the arguments following ``"-c"`` will be interpreted as further options (probably causing an error), rather than as arguments to ``"-c"``. Fixing this is left as an exercise for the reader. -.. % $Id: callbacks.txt 415 2004-09-30 02:26:17Z greg $ - .. _optparse-extending-optparse: @@ -1818,6 +1801,3 @@ Features of note: about setting a default value for the option destinations in question; they can just leave the default as None and :meth:`ensure_value` will take care of getting it right when it's needed. - -.. % $Id: extending.txt 517 2006-06-10 16:18:11Z gward $ - diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 2a8325a..71e5f36 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -291,9 +291,8 @@ process and user. Set the current process' user id. Availability: Unix. -.. % placed in this section since it relates to errno.... a little weak - +.. placed in this section since it relates to errno.... a little weak .. function:: strerror(code) Return the error message corresponding to the error code in *code*. diff --git a/Doc/library/ossaudiodev.rst b/Doc/library/ossaudiodev.rst index 7be838b..e23b049 100644 --- a/Doc/library/ossaudiodev.rst +++ b/Doc/library/ossaudiodev.rst @@ -11,33 +11,33 @@ This module allows you to access the OSS (Open Sound System) audio interface. OSS is available for a wide range of open-source and commercial Unices, and is the standard audio interface for Linux and recent versions of FreeBSD. -.. % Things will get more complicated for future Linux versions, since -.. % ALSA is in the standard kernel as of 2.5.x. Presumably if you -.. % use ALSA, you'll have to make sure its OSS compatibility layer -.. % is active to use ossaudiodev, but you're gonna need it for the vast -.. % majority of Linux audio apps anyways. -.. % -.. % Sounds like things are also complicated for other BSDs. In response -.. % to my python-dev query, Thomas Wouters said: -.. % -.. % > Likewise, googling shows OpenBSD also uses OSS/Free -- the commercial -.. % > OSS installation manual tells you to remove references to OSS/Free from the -.. % > kernel :) -.. % -.. % but Aleksander Piotrowsk actually has an OpenBSD box, and he quotes -.. % from its : -.. % > * WARNING! WARNING! -.. % > * This is an OSS (Linux) audio emulator. -.. % > * Use the Native NetBSD API for developing new code, and this -.. % > * only for compiling Linux programs. -.. % -.. % There's also an ossaudio manpage on OpenBSD that explains things -.. % further. Presumably NetBSD and OpenBSD have a different standard -.. % audio interface. That's the great thing about standards, there are so -.. % many to choose from ... ;-) -.. % -.. % This probably all warrants a footnote or two, but I don't understand -.. % things well enough right now to write it! --GPW +.. Things will get more complicated for future Linux versions, since + ALSA is in the standard kernel as of 2.5.x. Presumably if you + use ALSA, you'll have to make sure its OSS compatibility layer + is active to use ossaudiodev, but you're gonna need it for the vast + majority of Linux audio apps anyways. + + Sounds like things are also complicated for other BSDs. In response + to my python-dev query, Thomas Wouters said: + + > Likewise, googling shows OpenBSD also uses OSS/Free -- the commercial + > OSS installation manual tells you to remove references to OSS/Free from the + > kernel :) + + but Aleksander Piotrowsk actually has an OpenBSD box, and he quotes + from its : + > * WARNING! WARNING! + > * This is an OSS (Linux) audio emulator. + > * Use the Native NetBSD API for developing new code, and this + > * only for compiling Linux programs. + + There's also an ossaudio manpage on OpenBSD that explains things + further. Presumably NetBSD and OpenBSD have a different standard + audio interface. That's the great thing about standards, there are so + many to choose from ... ;-) + + This probably all warrants a footnote or two, but I don't understand + things well enough right now to write it! --GPW .. seealso:: @@ -87,6 +87,10 @@ the standard audio interface for Linux and recent versions of FreeBSD. second is required. This is a historical artifact for compatibility with the older :mod:`linuxaudiodev` module which :mod:`ossaudiodev` supersedes. + .. XXX it might also be motivated + by my unfounded-but-still-possibly-true belief that the default + audio device varies unpredictably across operating systems. -GW + .. function:: openmixer([device]) diff --git a/Doc/library/othergui.rst b/Doc/library/othergui.rst index 5a84285..b36568d 100644 --- a/Doc/library/othergui.rst +++ b/Doc/library/othergui.rst @@ -5,7 +5,6 @@ Other Graphical User Interface Packages There are an number of extension widget sets to :mod:`Tkinter`. - .. seealso:: `Python megawidgets `_ @@ -29,12 +28,10 @@ There are an number of extension widget sets to :mod:`Tkinter`. since they can operate directly on Python data structures, without having to transfer data through the Tk/Tcl layer. - .. % The major cross-platform (Windows, Mac OS X, Unix-like) GUI toolkits that are also available for Python: - .. seealso:: `PyGTK `_ diff --git a/Doc/library/parser.rst b/Doc/library/parser.rst index 9323090..b0e509a 100644 --- a/Doc/library/parser.rst +++ b/Doc/library/parser.rst @@ -8,13 +8,12 @@ .. sectionauthor:: Fred L. Drake, Jr. -.. % Copyright 1995 Virginia Polytechnic Institute and State University -.. % and Fred L. Drake, Jr. This copyright notice must be distributed on -.. % all copies, but this document otherwise may be distributed as part -.. % of the Python distribution. No fee may be charged for this document -.. % in any representation, either on paper or electronically. This -.. % restriction does not affect other elements in a distributed package -.. % in any way. +.. Copyright 1995 Virginia Polytechnic Institute and State University and Fred + L. Drake, Jr. This copyright notice must be distributed on all copies, but + this document otherwise may be distributed as part of the Python + distribution. No fee may be charged for this document in any representation, + either on paper or electronically. This restriction does not affect other + elements in a distributed package in any way. .. index:: single: parsing; Python source code diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index c88fc29..7e04f5b 100644 --- a/Doc/library/pickle.rst +++ b/Doc/library/pickle.rst @@ -1,4 +1,3 @@ - :mod:`pickle` --- Python object serialization ============================================= @@ -12,10 +11,8 @@ .. module:: pickle :synopsis: Convert Python objects to streams of bytes and back. - - -.. % Substantial improvements by Jim Kerr . -.. % Rewritten by Barry Warsaw +.. sectionauthor:: Jim Kerr . +.. sectionauthor:: Barry Warsaw The :mod:`pickle` module implements a fundamental, but powerful algorithm for serializing and de-serializing a Python object structure. "Pickling" is the @@ -607,10 +604,10 @@ object references without actually instantiating all the objects in a pickle. [#]_ Setting :attr:`persistent_load` to a list is usually used in conjunction with the :meth:`noload` method on the Unpickler. -.. % BAW: Both pickle and cPickle support something called -.. % inst_persistent_id() which appears to give unknown types a second -.. % shot at producing a persistent id. Since Jim Fulton can't remember -.. % why it was added or what it's for, I'm leaving it undocumented. +.. BAW: Both pickle and cPickle support something called inst_persistent_id() + which appears to give unknown types a second shot at producing a persistent + id. Since Jim Fulton can't remember why it was added or what it's for, I'm + leaving it undocumented. .. _pickle-sub: diff --git a/Doc/library/platform.rst b/Doc/library/platform.rst index a668075..cddaa58 100644 --- a/Doc/library/platform.rst +++ b/Doc/library/platform.rst @@ -194,16 +194,12 @@ Windows Platform Win95/98 specific ^^^^^^^^^^^^^^^^^ - .. function:: popen(cmd, mode='r', bufsize=None) Portable :func:`popen` interface. Find a working popen implementation preferring :func:`win32pipe.popen`. On Windows NT, :func:`win32pipe.popen` should work; on Windows 9x it hangs due to bugs in the MS C library. - .. % This KnowledgeBase article appears to be missing... - .. % See also \ulink{MS KnowledgeBase article Q150956}{}. - Mac OS Platform --------------- @@ -231,7 +227,7 @@ Unix Platforms Tries to determine the name of the OS distribution name Returns a tuple ``(distname, version, id)`` which defaults to the args given as parameters. -.. % Document linux_distribution()? +.. XXX Document linux_distribution()? .. function:: libc_ver(executable=sys.executable, lib='', version='', chunksize=2048) diff --git a/Doc/library/poplib.rst b/Doc/library/poplib.rst index b462ec5..893296f 100644 --- a/Doc/library/poplib.rst +++ b/Doc/library/poplib.rst @@ -4,16 +4,11 @@ .. module:: poplib :synopsis: POP3 protocol client (requires sockets). - +.. sectionauthor:: Andrew T. Csillag +.. revised by ESR, January 2000 .. index:: pair: POP3; protocol -.. % By Andrew T. Csillag -.. % Even though I put it into LaTeX, I cannot really claim that I wrote -.. % it since I just stole most of it from the poplib.py source code and -.. % the imaplib ``chapter''. -.. % Revised by ESR, January 2000 - This module defines a class, :class:`POP3`, which encapsulates a connection to a POP3 server and implements the protocol as defined in :rfc:`1725`. The :class:`POP3` class supports both the minimal and optional command sets. diff --git a/Doc/library/pprint.rst b/Doc/library/pprint.rst index 2e4f3f2..22407ed 100644 --- a/Doc/library/pprint.rst +++ b/Doc/library/pprint.rst @@ -24,7 +24,7 @@ Dictionaries are sorted by key before the display is computed. The :mod:`pprint` module defines one class: -.. % First the implementation class: +.. First the implementation class: .. class:: PrettyPrinter(...) @@ -65,8 +65,7 @@ The :mod:`pprint` module defines one class: The :class:`PrettyPrinter` class supports several derivative functions: -.. % Now the derivative functions: - +.. Now the derivative functions: .. function:: pformat(object[, indent[, width[, depth]]]) @@ -123,9 +122,6 @@ One more support function is also defined: recursive reference will be represented as ````. The representation is not otherwise formatted. -.. % This example is outside the {funcdesc} to keep it from running over -.. % the right margin. - :: >>> pprint.saferepr(stuff) diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst index cc02436..fe3cadf 100644 --- a/Doc/library/profile.rst +++ b/Doc/library/profile.rst @@ -72,47 +72,47 @@ is not so far as well-tested and might not be available on all systems. :mod:`cProfile` is really a compatibility layer on top of the internal :mod:`_lsprof` module. -.. % \section{How Is This Profiler Different From The Old Profiler?} -.. % \nodename{Profiler Changes} -.. % -.. % (This section is of historical importance only; the old profiler -.. % discussed here was last seen in Python 1.1.) -.. % -.. % The big changes from old profiling module are that you get more -.. % information, and you pay less CPU time. It's not a trade-off, it's a -.. % trade-up. -.. % -.. % To be specific: -.. % -.. % \begin{description} -.. % -.. % \item[Bugs removed:] -.. % Local stack frame is no longer molested, execution time is now charged -.. % to correct functions. -.. % -.. % \item[Accuracy increased:] -.. % Profiler execution time is no longer charged to user's code, -.. % calibration for platform is supported, file reads are not done \emph{by} -.. % profiler \emph{during} profiling (and charged to user's code!). -.. % -.. % \item[Speed increased:] -.. % Overhead CPU cost was reduced by more than a factor of two (perhaps a -.. % factor of five), lightweight profiler module is all that must be -.. % loaded, and the report generating module (\module{pstats}) is not needed -.. % during profiling. -.. % -.. % \item[Recursive functions support:] -.. % Cumulative times in recursive functions are correctly calculated; -.. % recursive entries are counted. -.. % -.. % \item[Large growth in report generating UI:] -.. % Distinct profiles runs can be added together forming a comprehensive -.. % report; functions that import statistics take arbitrary lists of -.. % files; sorting criteria is now based on keywords (instead of 4 integer -.. % options); reports shows what functions were profiled as well as what -.. % profile file was referenced; output format has been improved. -.. % -.. % \end{description} +.. \section{How Is This Profiler Different From The Old Profiler?} + \nodename{Profiler Changes} + + (This section is of historical importance only; the old profiler + discussed here was last seen in Python 1.1.) + + The big changes from old profiling module are that you get more + information, and you pay less CPU time. It's not a trade-off, it's a + trade-up. + + To be specific: + + \begin{description} + + \item[Bugs removed:] + Local stack frame is no longer molested, execution time is now charged + to correct functions. + + \item[Accuracy increased:] + Profiler execution time is no longer charged to user's code, + calibration for platform is supported, file reads are not done \emph{by} + profiler \emph{during} profiling (and charged to user's code!). + + \item[Speed increased:] + Overhead CPU cost was reduced by more than a factor of two (perhaps a + factor of five), lightweight profiler module is all that must be + loaded, and the report generating module (\module{pstats}) is not needed + during profiling. + + \item[Recursive functions support:] + Cumulative times in recursive functions are correctly calculated; + recursive entries are counted. + + \item[Large growth in report generating UI:] + Distinct profiles runs can be added together forming a comprehensive + report; functions that import statistics take arbitrary lists of + files; sorting criteria is now based on keywords (instead of 4 integer + options); reports shows what functions were profiled as well as what + profile file was referenced; output format has been improved. + + \end{description} .. _profile-instant: @@ -172,7 +172,7 @@ second method sorted all the entries according to the standard module/line/name string that is printed. The third method printed out all the statistics. You might try the following sort calls: -.. % (this is to comply with the semantics of the old profiler). +.. (this is to comply with the semantics of the old profiler). :: @@ -363,6 +363,8 @@ Analysis of the profiler data is done using the :class:`Stats` class. a single report. If additional files need to be combined with data in an existing :class:`Stats` object, the :meth:`add` method can be used. + .. (such as the old system profiler). + .. _profile-stats: @@ -457,7 +459,7 @@ The :class:`Stats` Class (numeric) is used, only one sort key (the numeric key) will be used, and additional arguments will be silently ignored. - .. % For compatibility with the old profiler, + .. For compatibility with the old profiler, .. method:: Stats.reverse_order() @@ -466,8 +468,7 @@ The :class:`Stats` Class within the object. Note that by default ascending vs descending order is properly selected based on the sort key of choice. - .. % This method is provided primarily for - .. % compatibility with the old profiler. + .. This method is provided primarily for compatibility with the old profiler. .. method:: Stats.print_stats([restriction, ...]) diff --git a/Doc/library/py_compile.rst b/Doc/library/py_compile.rst index c815846..de9a80e 100644 --- a/Doc/library/py_compile.rst +++ b/Doc/library/py_compile.rst @@ -3,11 +3,8 @@ .. module:: py_compile :synopsis: Generate byte-code files from Python source files. - -.. % Documentation based on module docstrings, by Fred L. Drake, Jr. -.. % - - +.. sectionauthor:: Fred L. Drake, Jr. +.. documentation based on module docstrings .. index:: pair: file; byte-code diff --git a/Doc/library/pyclbr.rst b/Doc/library/pyclbr.rst index a052a69..788c60c 100644 --- a/Doc/library/pyclbr.rst +++ b/Doc/library/pyclbr.rst @@ -24,7 +24,7 @@ in Python, including many standard and optional extension modules. be a sequence, and is used to augment the value of ``sys.path``, which is used to locate module source code. - .. % The 'inpackage' parameter appears to be for internal use only.... + .. The 'inpackage' parameter appears to be for internal use only.... .. function:: readmodule_ex(module[, path]) @@ -35,7 +35,7 @@ in Python, including many standard and optional extension modules. the key ``'__path__'`` in the returned dictionary has as its value a list which contains the package search path. - .. % The 'inpackage' parameter appears to be for internal use only.... + .. The 'inpackage' parameter appears to be for internal use only.... .. _pyclbr-class-objects: diff --git a/Doc/library/pyexpat.rst b/Doc/library/pyexpat.rst index fcb7705..29ca540 100644 --- a/Doc/library/pyexpat.rst +++ b/Doc/library/pyexpat.rst @@ -7,14 +7,13 @@ .. moduleauthor:: Paul Prescod -.. % Markup notes: -.. % -.. % Many of the attributes of the XMLParser objects are callbacks. -.. % Since signature information must be presented, these are described -.. % using the methoddesc environment. Since they are attributes which -.. % are set by client code, in-text references to these attributes -.. % should be marked using the \member macro and should not include the -.. % parentheses used when marking functions and methods. +.. Markup notes: + + Many of the attributes of the XMLParser objects are callbacks. Since + signature information must be presented, these are described using the method + directive. Since they are attributes which are set by client code, in-text + references to these attributes should be marked using the :member: role. + .. index:: single: Expat diff --git a/Doc/library/re.rst b/Doc/library/re.rst index 88912eb..49c5215 100644 --- a/Doc/library/re.rst +++ b/Doc/library/re.rst @@ -84,8 +84,6 @@ the null byte using the ``\number`` notation, e.g., ``'\x00'``. The special characters are: -.. % - ``'.'`` (Dot.) In the default mode, this matches any character except a newline. If the :const:`DOTALL` flag has been specified, this matches any character @@ -297,8 +295,6 @@ The special sequences consist of ``'\'`` and a character from the list below. If the ordinary character is not on the list, then the resulting RE will match the second character. For example, ``\$`` matches the character ``'$'``. -.. % - ``\number`` Matches the contents of the group of the same number. Groups are numbered starting from 1. For example, ``(.+) \1`` matches ``'the the'`` or ``'55 55'``, @@ -384,9 +380,6 @@ there are three octal digits, it is considered an octal escape. Otherwise, it is a group reference. As for string literals, octal escapes are always at most three digits in length. -.. % Note the lack of a period in the section title; it causes problems -.. % with readers of the GNU info version. See http://www.python.org/sf/581414. - .. _matching-searching: @@ -406,15 +399,11 @@ beginning with ``'^'``: ``'^'`` matches only at the start of the string, or in :const:`MULTILINE` mode also immediately following a newline. The "match" operation succeeds only if the pattern matches at the start of the string regardless of mode, or at the starting position given by the optional *pos* -argument regardless of whether a newline precedes it. - -.. % Examples from Tim Peters: - -:: +argument regardless of whether a newline precedes it. :: >>> re.match("c", "abcdef") # No match >>> re.search("c", "abcdef") - <_sre.SRE_Match object at 0x827e9c0> # Match + <_sre.SRE_Match object at 0x827e9c0> # Match .. _contents-of-module-re: @@ -450,10 +439,9 @@ form. but the version using :func:`compile` is more efficient when the expression will be used several times in a single program. - .. % (The compiled version of the last pattern passed to - .. % \function{re.match()} or \function{re.search()} is cached, so - .. % programs that use only a single regular expression at a time needn't - .. % worry about compiling regular expressions.) + .. (The compiled version of the last pattern passed to :func:`re.match` or + :func:`re.search` is cached, so programs that use only a single regular + expression at a time needn't worry about compiling regular expressions.) .. data:: I diff --git a/Doc/library/sched.rst b/Doc/library/sched.rst index c262a8d..57f9b5c 100644 --- a/Doc/library/sched.rst +++ b/Doc/library/sched.rst @@ -1,4 +1,3 @@ - :mod:`sched` --- Event scheduler ================================ @@ -6,9 +5,6 @@ :synopsis: General purpose event scheduler. .. sectionauthor:: Moshe Zadka - -.. % LaTeXed and enhanced from comments in file - .. index:: single: event scheduling The :mod:`sched` module defines a class which implements a general purpose event diff --git a/Doc/library/select.rst b/Doc/library/select.rst index f68a0da..4a97179 100644 --- a/Doc/library/select.rst +++ b/Doc/library/select.rst @@ -58,8 +58,6 @@ The module defines the following: class yourself, as long as it has an appropriate :meth:`fileno` method (that really returns a file descriptor, not just a random integer). - .. % - .. note:: .. index:: single: WinSock diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index 3fdaa1f..3275179 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -5,9 +5,7 @@ .. module:: shutil :synopsis: High-level file operations, including copying. .. sectionauthor:: Fred L. Drake, Jr. - - -.. % partly based on the docstrings +.. partly based on the docstrings .. index:: single: file; copying diff --git a/Doc/library/sndhdr.rst b/Doc/library/sndhdr.rst index 90d71a9..01a3917 100644 --- a/Doc/library/sndhdr.rst +++ b/Doc/library/sndhdr.rst @@ -5,9 +5,7 @@ .. module:: sndhdr :synopsis: Determine type of a sound file. .. sectionauthor:: Fred L. Drake, Jr. - - -.. % Based on comments in the module source file. +.. Based on comments in the module source file. .. index:: single: A-LAW diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index 5c3d9f6..a6557e1 100644 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -542,7 +542,7 @@ correspond to Unix system calls applicable to sockets. file object and socket object may be closed or garbage-collected independently. The socket must be in blocking mode (it can not have a timeout). The optional *mode* and *bufsize* arguments are interpreted the same way as by the built-in - :func:`file` function; see :ref:`built-in-funcs` for more information. + :func:`file` function. .. method:: socket.recv(bufsize[, flags]) diff --git a/Doc/library/socketserver.rst b/Doc/library/socketserver.rst index 96fae6b..c900ea7 100644 --- a/Doc/library/socketserver.rst +++ b/Doc/library/socketserver.rst @@ -115,9 +115,8 @@ next (or whether to handle a new incoming request). This is particularly important for stream services where each client can potentially be connected for a long time (if threads or subprocesses cannot be used). -.. % XXX should data and methods be intermingled, or separate? -.. % how should the distinction between class and instance variables be -.. % drawn? +.. XXX should data and methods be intermingled, or separate? + how should the distinction between class and instance variables be drawn? Server Objects @@ -171,8 +170,7 @@ Server Objects The server classes support the following class variables: -.. % XXX should class variables be covered before instance variables, or -.. % vice versa? +.. XXX should class variables be covered before instance variables, or vice versa? .. data:: allow_reuse_address @@ -199,8 +197,8 @@ There are various server methods that can be overridden by subclasses of base server classes like :class:`TCPServer`; these methods aren't useful to external users of the server object. -.. % should the default implementations of these be documented, or should -.. % it be assumed that the user will look at SocketServer.py? +.. XXX should the default implementations of these be documented, or should + it be assumed that the user will look at SocketServer.py? .. function:: finish_request() @@ -230,9 +228,9 @@ users of the server object. or thread to handle the request; the :class:`ForkingMixIn` and :class:`ThreadingMixIn` classes do this. -.. % Is there any point in documenting the following two functions? -.. % What would the purpose of overriding them be: initializing server -.. % instance variables, adding new network families? +.. Is there any point in documenting the following two functions? + What would the purpose of overriding them be: initializing server + instance variables, adding new network families? .. function:: server_activate() diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index 0b569bf..9d12d34 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -349,7 +349,7 @@ A :class:`Connection` instance has the following attributes and methods: memory overhead. It will probably be better than your own custom dictionary-based approach or even a db_row based solution. - .. % XXX what's a db_row-based solution? + .. XXX what's a db_row-based solution? .. attribute:: Connection.text_factory diff --git a/Doc/library/statvfs.rst b/Doc/library/statvfs.rst index 6ec7c38..0b32f65 100644 --- a/Doc/library/statvfs.rst +++ b/Doc/library/statvfs.rst @@ -1,4 +1,3 @@ - :mod:`statvfs` --- Constants used with :func:`os.statvfs` ========================================================= @@ -7,8 +6,6 @@ .. sectionauthor:: Moshe Zadka -.. % LaTeX'ed from comments in module - The :mod:`statvfs` module defines constants so interpreting the result if :func:`os.statvfs`, which returns a tuple, can be made without remembering "magic numbers." Each of the constants defined in this module is the *index* of diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 196ad49..9763cba 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -162,6 +162,24 @@ This table summarizes the comparison operations: +------------+-------------------------+-------+ .. index:: + pair: operator; comparison + operator: == + operator: < + operator: <= + operator: > + operator: >= + operator: != + operator: is + operator: is not + +Notes: + +(1) + ``!=`` can also be written ``<>``, but this is an obsolete usage + kept for backwards compatibility only. New code should always use + ``!=``. + +.. index:: pair: object; numeric pair: objects; comparing @@ -335,8 +353,8 @@ Notes: .. versionadded:: 2.6 - -.. % XXXJH exceptions: overflow (when? what operations?) zerodivision + +.. XXXJH exceptions: overflow (when? what operations?) zerodivision .. _bitstring-ops: @@ -1154,6 +1172,8 @@ Notes: Since Python strings have an explicit length, ``%s`` conversions do not assume that ``'\0'`` is the end of the string. +.. XXX Examples? + For safety reasons, floating point precisions are clipped to 50; ``%f`` conversions for numbers whose absolute value is over 1e25 are replaced by ``%g`` conversions. [#]_ All other errors raise exceptions. @@ -1845,8 +1865,7 @@ File Objects .. XXX this is quite out of date, must be updated with "io" module File objects are implemented using C's ``stdio`` package and can be -created with the built-in :func:`file` and (more usually) :func:`open` -constructors described in the :ref:`built-in-funcs` section. [#]_ File +created with the built-in :func:`open` function. File objects are also returned by some other built-in functions and methods, such as :func:`os.popen` and :func:`os.fdopen` and the :meth:`makefile` method of socket objects. Temporary files can be created using the @@ -1870,7 +1889,7 @@ Files have the following methods: As of Python 2.5, you can avoid having to call this method explicitly if you use the :keyword:`with` statement. For example, the following code will - automatically close ``f`` when the :keyword:`with` block is exited:: + automatically close *f* when the :keyword:`with` block is exited:: from __future__ import with_statement @@ -1998,6 +2017,9 @@ Files have the following methods: Note that not all file objects are seekable. + .. versionchanged:: 2.6 + Passing float values as offset has been deprecated. + .. method:: file.tell() @@ -2407,9 +2429,6 @@ types, where they are relevant. Some of these are not reported by the strings of meaningless digits without hampering correct use and without having to know the exact precision of floating point values on a particular machine. -.. [#] :func:`file` is new in Python 2.2. The older built-in :func:`open` is an alias - for :func:`file`. - .. [#] The advantage of leaving the newline on is that returning an empty string is then an unambiguous EOF indication. It is also possible (in cases where it might matter, for example, if you want to make an exact copy of a file while diff --git a/Doc/library/struct.rst b/Doc/library/struct.rst index 9e527f1..ee568e6 100644 --- a/Doc/library/struct.rst +++ b/Doc/library/struct.rst @@ -175,7 +175,7 @@ For example, Motorola and Sun processors are big-endian; Intel and DEC processors are little-endian. Native size and alignment are determined using the C compiler's -:keyword:`sizeof` expression. This is always combined with native byte order. +``sizeof`` expression. This is always combined with native byte order. Standard size and alignment are as follows: no alignment is required for any type (so you have to use pad bytes); :ctype:`short` is 2 bytes; :ctype:`int` and diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 368bd4c..0205937 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -458,9 +458,8 @@ always available. implementation and, where needed, by :mod:`sitecustomize`. Once used by the :mod:`site` module, it is removed from the :mod:`sys` module's namespace. - .. % Note that \refmodule{site} is not imported if - .. % the \programopt{-S} option is passed to the interpreter, in which - .. % case this function will remain available. + .. Note that :mod:`site` is not imported if the :option:`-S` option is passed + to the interpreter, in which case this function will remain available. .. function:: setdlopenflags(n) diff --git a/Doc/library/tabnanny.rst b/Doc/library/tabnanny.rst index 4402e78..f43659f 100644 --- a/Doc/library/tabnanny.rst +++ b/Doc/library/tabnanny.rst @@ -8,9 +8,7 @@ .. moduleauthor:: Tim Peters .. sectionauthor:: Peter Funk - -.. % rudimentary documentation based on module comments, by Peter Funk -.. % +.. rudimentary documentation based on module comments For the time being this module is intended to be called as a script. However it is possible to import it into an IDE and use the function :func:`check` @@ -55,14 +53,11 @@ described below. This function is used by :func:`check` as a callback parameter to the function :func:`tokenize.tokenize`. -.. % XXX FIXME: Document \function{errprint}, -.. % \function{format_witnesses} \class{Whitespace} -.. % check_equal, indents -.. % \function{reset_globals} +.. XXX document errprint, format_witnesses, Whitespace, check_equal, indents, + reset_globals .. seealso:: Module :mod:`tokenize` Lexical scanner for Python source code. - diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst index 5f18155..9f049c1 100644 --- a/Doc/library/tarfile.rst +++ b/Doc/library/tarfile.rst @@ -205,10 +205,6 @@ details. `GNU tar manual, Basic Tar Format `_ Documentation for tar archive files, including GNU tar extensions. -.. % ----------------- -.. % TarFile Objects -.. % ----------------- - .. _tarfile-objects: @@ -421,10 +417,6 @@ object, see :ref:`tarinfo-objects` for details. A dictionary containing key-value pairs of pax global headers. -.. % ----------------- -.. % TarInfo Objects -.. % ----------------- - .. _tarinfo-objects: @@ -574,10 +566,6 @@ A :class:`TarInfo` object also provides some convenient query methods: Return :const:`True` if it is one of character device, block device or FIFO. -.. % ------------------------ -.. % Examples -.. % ------------------------ - .. _tar-examples: @@ -635,10 +623,6 @@ The *only* way to extract an uncompressed tar stream from ``sys.stdin``:: tar.extract(tarinfo) tar.close() -.. % ------------ -.. % Tar format -.. % ------------ - .. _tar-formats: @@ -679,11 +663,6 @@ created: * The SunOS tar extended format. This format is a variant of the POSIX.1-2001 pax format, but is not compatible. -.. % ---------------- -.. % Unicode issues -.. % ---------------- - - .. _tar-unicode: Unicode issues diff --git a/Doc/library/test.rst b/Doc/library/test.rst index 1ba4810..a0f7841 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -33,8 +33,6 @@ written using a "traditional" testing style that compares output printed to Writing Unit Tests for the :mod:`test` package ---------------------------------------------- -.. % - It is preferred that tests that use the :mod:`unittest` module follow a few guidelines. One is to name the test module by starting it with ``test_`` and end it with the name of the module being tested. The test methods in the test module diff --git a/Doc/library/thread.rst b/Doc/library/thread.rst index 6c59954..867a1ff 100644 --- a/Doc/library/thread.rst +++ b/Doc/library/thread.rst @@ -63,12 +63,13 @@ It defines the following constant and functions: Raise the :exc:`SystemExit` exception. When not caught, this will cause the thread to exit silently. -.. % \begin{funcdesc}{exit_prog}{status} -.. % Exit all threads and report the value of the integer argument -.. % \var{status} as the exit status of the entire program. -.. % \strong{Caveat:} code in pending \keyword{finally} clauses, in this thread -.. % or in other threads, is not executed. -.. % \end{funcdesc} +.. + function:: exit_prog(status) + + Exit all threads and report the value of the integer argument + *status* as the exit status of the entire program. + **Caveat:** code in pending :keyword:`finally` clauses, in this thread + or in other threads, is not executed. .. function:: allocate_lock() diff --git a/Doc/library/tix.rst b/Doc/library/tix.rst index abe3ca5..f4bb20f 100644 --- a/Doc/library/tix.rst +++ b/Doc/library/tix.rst @@ -88,7 +88,7 @@ introduces over 40 widget classes to the :mod:`Tkinter` repertoire. There is a demo of all the :mod:`Tix` widgets in the :file:`Demo/tix` directory of the standard distribution. -.. % The Python sample code is still being added to Python, hence commented out +.. The Python sample code is still being added to Python, hence commented out Basic Widgets @@ -103,8 +103,8 @@ Basic Widgets widget to which a Balloon widget has been bound, a small pop-up window with a descriptive message will be shown on the screen. -.. % Python Demo of: -.. % \ulink{Balloon}{http://tix.sourceforge.net/dist/current/demos/samples/Balloon.tcl} +.. Python Demo of: +.. \ulink{Balloon}{http://tix.sourceforge.net/dist/current/demos/samples/Balloon.tcl} .. class:: ButtonBox() @@ -113,8 +113,8 @@ Basic Widgets `_ widget creates a box of buttons, such as is commonly used for ``Ok Cancel``. -.. % Python Demo of: -.. % \ulink{ButtonBox}{http://tix.sourceforge.net/dist/current/demos/samples/BtnBox.tcl} +.. Python Demo of: +.. \ulink{ButtonBox}{http://tix.sourceforge.net/dist/current/demos/samples/BtnBox.tcl} .. class:: ComboBox() @@ -125,8 +125,8 @@ Basic Widgets choice by either typing in the entry subwdget or selecting from the listbox subwidget. -.. % Python Demo of: -.. % \ulink{ComboBox}{http://tix.sourceforge.net/dist/current/demos/samples/ComboBox.tcl} +.. Python Demo of: +.. \ulink{ComboBox}{http://tix.sourceforge.net/dist/current/demos/samples/ComboBox.tcl} .. class:: Control() @@ -138,8 +138,8 @@ Basic Widgets the entry. The new value will be checked against the user-defined upper and lower limits. -.. % Python Demo of: -.. % \ulink{Control}{http://tix.sourceforge.net/dist/current/demos/samples/Control.tcl} +.. Python Demo of: +.. \ulink{Control}{http://tix.sourceforge.net/dist/current/demos/samples/Control.tcl} .. class:: LabelEntry() @@ -149,8 +149,8 @@ Basic Widgets widget packages an entry widget and a label into one mega widget. It can be used be used to simplify the creation of "entry-form" type of interface. -.. % Python Demo of: -.. % \ulink{LabelEntry}{http://tix.sourceforge.net/dist/current/demos/samples/LabEntry.tcl} +.. Python Demo of: +.. \ulink{LabelEntry}{http://tix.sourceforge.net/dist/current/demos/samples/LabEntry.tcl} .. class:: LabelFrame() @@ -161,8 +161,8 @@ Basic Widgets widgets inside a LabelFrame widget, one creates the new widgets relative to the :attr:`frame` subwidget and manage them inside the :attr:`frame` subwidget. -.. % Python Demo of: -.. % \ulink{LabelFrame}{http://tix.sourceforge.net/dist/current/demos/samples/LabFrame.tcl} +.. Python Demo of: +.. \ulink{LabelFrame}{http://tix.sourceforge.net/dist/current/demos/samples/LabFrame.tcl} .. class:: Meter() @@ -172,8 +172,8 @@ Basic Widgets can be used to show the progress of a background job which may take a long time to execute. -.. % Python Demo of: -.. % \ulink{Meter}{http://tix.sourceforge.net/dist/current/demos/samples/Meter.tcl} +.. Python Demo of: +.. \ulink{Meter}{http://tix.sourceforge.net/dist/current/demos/samples/Meter.tcl} .. class:: OptionMenu() @@ -182,8 +182,8 @@ Basic Widgets `_ creates a menu button of options. -.. % Python Demo of: -.. % \ulink{OptionMenu}{http://tix.sourceforge.net/dist/current/demos/samples/OptMenu.tcl} +.. Python Demo of: +.. \ulink{OptionMenu}{http://tix.sourceforge.net/dist/current/demos/samples/OptMenu.tcl} .. class:: PopupMenu() @@ -194,8 +194,8 @@ Basic Widgets of the :mod:`Tix` :class:`PopupMenu` widget is it requires less application code to manipulate. -.. % Python Demo of: -.. % \ulink{PopupMenu}{http://tix.sourceforge.net/dist/current/demos/samples/PopMenu.tcl} +.. Python Demo of: +.. \ulink{PopupMenu}{http://tix.sourceforge.net/dist/current/demos/samples/PopMenu.tcl} .. class:: Select() @@ -205,8 +205,8 @@ Basic Widgets is a container of button subwidgets. It can be used to provide radio-box or check-box style of selection options for the user. -.. % Python Demo of: -.. % \ulink{Select}{http://tix.sourceforge.net/dist/current/demos/samples/Select.tcl} +.. Python Demo of: +.. \ulink{Select}{http://tix.sourceforge.net/dist/current/demos/samples/Select.tcl} .. class:: StdButtonBox() @@ -215,8 +215,8 @@ Basic Widgets `_ widget is a group of standard buttons for Motif-like dialog boxes. -.. % Python Demo of: -.. % \ulink{StdButtonBox}{http://tix.sourceforge.net/dist/current/demos/samples/StdBBox.tcl} +.. Python Demo of: +.. \ulink{StdButtonBox}{http://tix.sourceforge.net/dist/current/demos/samples/StdBBox.tcl} File Selectors @@ -231,8 +231,8 @@ File Selectors sub-directories. The user can choose one of the directories displayed in the list or change to another directory. -.. % Python Demo of: -.. % \ulink{DirList}{http://tix.sourceforge.net/dist/current/demos/samples/DirList.tcl} +.. Python Demo of: +.. \ulink{DirList}{http://tix.sourceforge.net/dist/current/demos/samples/DirList.tcl} .. class:: DirTree() @@ -243,8 +243,8 @@ File Selectors sub-directories. The user can choose one of the directories displayed in the list or change to another directory. -.. % Python Demo of: -.. % \ulink{DirTree}{http://tix.sourceforge.net/dist/current/demos/samples/DirTree.tcl} +.. Python Demo of: +.. \ulink{DirTree}{http://tix.sourceforge.net/dist/current/demos/samples/DirTree.tcl} .. class:: DirSelectDialog() @@ -255,8 +255,8 @@ File Selectors can use this dialog window to navigate through the file system to select the desired directory. -.. % Python Demo of: -.. % \ulink{DirSelectDialog}{http://tix.sourceforge.net/dist/current/demos/samples/DirDlg.tcl} +.. Python Demo of: +.. \ulink{DirSelectDialog}{http://tix.sourceforge.net/dist/current/demos/samples/DirDlg.tcl} .. class:: DirSelectBox() @@ -276,8 +276,8 @@ File Selectors :class:`ExFileSelectBox` widget is very similar to the standard file dialog on MS Windows 3.1. -.. % Python Demo of: -.. % \ulink{ExFileSelectDialog}{http://tix.sourceforge.net/dist/current/demos/samples/EFileDlg.tcl} +.. Python Demo of: +.. \ulink{ExFileSelectDialog}{http://tix.sourceforge.net/dist/current/demos/samples/EFileDlg.tcl} .. class:: FileSelectBox() @@ -289,8 +289,8 @@ File Selectors selected into a :class:`ComboBox` widget so that they can be quickly selected again. -.. % Python Demo of: -.. % \ulink{FileSelectDialog}{http://tix.sourceforge.net/dist/current/demos/samples/FileDlg.tcl} +.. Python Demo of: +.. \ulink{FileSelectDialog}{http://tix.sourceforge.net/dist/current/demos/samples/FileDlg.tcl} .. class:: FileEntry() @@ -301,8 +301,8 @@ File Selectors manually. Alternatively, the user can press the button widget that sits next to the entry, which will bring up a file selection dialog. -.. % Python Demo of: -.. % \ulink{FileEntry}{http://tix.sourceforge.net/dist/current/demos/samples/FileEnt.tcl} +.. Python Demo of: +.. \ulink{FileEntry}{http://tix.sourceforge.net/dist/current/demos/samples/FileEnt.tcl} Hierachical ListBox @@ -317,8 +317,8 @@ Hierachical ListBox file system directory trees. The list entries are indented and connected by branch lines according to their places in the hierarchy. -.. % Python Demo of: -.. % \ulink{HList}{http://tix.sourceforge.net/dist/current/demos/samples/HList1.tcl} +.. Python Demo of: +.. \ulink{HList}{http://tix.sourceforge.net/dist/current/demos/samples/HList1.tcl} .. class:: CheckList() @@ -329,12 +329,12 @@ Hierachical ListBox similarly to the Tk checkbutton or radiobutton widgets, except it is capable of handling many more items than checkbuttons or radiobuttons. -.. % Python Demo of: -.. % \ulink{ CheckList}{http://tix.sourceforge.net/dist/current/demos/samples/ChkList.tcl} -.. % Python Demo of: -.. % \ulink{ScrolledHList (1)}{http://tix.sourceforge.net/dist/current/demos/samples/SHList.tcl} -.. % Python Demo of: -.. % \ulink{ScrolledHList (2)}{http://tix.sourceforge.net/dist/current/demos/samples/SHList2.tcl} +.. Python Demo of: +.. \ulink{ CheckList}{http://tix.sourceforge.net/dist/current/demos/samples/ChkList.tcl} +.. Python Demo of: +.. \ulink{ScrolledHList (1)}{http://tix.sourceforge.net/dist/current/demos/samples/SHList.tcl} +.. Python Demo of: +.. \ulink{ScrolledHList (2)}{http://tix.sourceforge.net/dist/current/demos/samples/SHList2.tcl} .. class:: Tree() @@ -344,10 +344,10 @@ Hierachical ListBox can be used to display hierarchical data in a tree form. The user can adjust the view of the tree by opening or closing parts of the tree. -.. % Python Demo of: -.. % \ulink{Tree}{http://tix.sourceforge.net/dist/current/demos/samples/Tree.tcl} -.. % Python Demo of: -.. % \ulink{Tree (Dynamic)}{http://tix.sourceforge.net/dist/current/demos/samples/DynTree.tcl} +.. Python Demo of: +.. \ulink{Tree}{http://tix.sourceforge.net/dist/current/demos/samples/Tree.tcl} +.. Python Demo of: +.. \ulink{Tree (Dynamic)}{http://tix.sourceforge.net/dist/current/demos/samples/DynTree.tcl} Tabular ListBox @@ -364,18 +364,18 @@ Tabular ListBox in a two dimensional format and (2) you can use graphical images as well as multiple colors and fonts for the list entries. -.. % Python Demo of: -.. % \ulink{ScrolledTList (1)}{http://tix.sourceforge.net/dist/current/demos/samples/STList1.tcl} -.. % Python Demo of: -.. % \ulink{ScrolledTList (2)}{http://tix.sourceforge.net/dist/current/demos/samples/STList2.tcl} -.. % Grid has yet to be added to Python -.. % \subsubsection{Grid Widget} -.. % Python Demo of: -.. % \ulink{Simple Grid}{http://tix.sourceforge.net/dist/current/demos/samples/SGrid0.tcl} -.. % Python Demo of: -.. % \ulink{ScrolledGrid}{http://tix.sourceforge.net/dist/current/demos/samples/SGrid1.tcl} -.. % Python Demo of: -.. % \ulink{Editable Grid}{http://tix.sourceforge.net/dist/current/demos/samples/EditGrid.tcl} +.. Python Demo of: +.. \ulink{ScrolledTList (1)}{http://tix.sourceforge.net/dist/current/demos/samples/STList1.tcl} +.. Python Demo of: +.. \ulink{ScrolledTList (2)}{http://tix.sourceforge.net/dist/current/demos/samples/STList2.tcl} +.. Grid has yet to be added to Python +.. \subsubsection{Grid Widget} +.. Python Demo of: +.. \ulink{Simple Grid}{http://tix.sourceforge.net/dist/current/demos/samples/SGrid0.tcl} +.. Python Demo of: +.. \ulink{ScrolledGrid}{http://tix.sourceforge.net/dist/current/demos/samples/SGrid1.tcl} +.. Python Demo of: +.. \ulink{Editable Grid}{http://tix.sourceforge.net/dist/current/demos/samples/EditGrid.tcl} Manager Widgets @@ -390,8 +390,8 @@ Manager Widgets The panes can be arranged either vertically or horizontally. The user changes the sizes of the panes by dragging the resize handle between two panes. -.. % Python Demo of: -.. % \ulink{PanedWindow}{http://tix.sourceforge.net/dist/current/demos/samples/PanedWin.tcl} +.. Python Demo of: +.. \ulink{PanedWindow}{http://tix.sourceforge.net/dist/current/demos/samples/PanedWin.tcl} .. class:: ListNoteBook() @@ -404,8 +404,8 @@ Manager Widgets can be shown. The user can navigate through these pages by choosing the name of the desired page in the :attr:`hlist` subwidget. -.. % Python Demo of: -.. % \ulink{ListNoteBook}{http://tix.sourceforge.net/dist/current/demos/samples/ListNBK.tcl} +.. Python Demo of: +.. \ulink{ListNoteBook}{http://tix.sourceforge.net/dist/current/demos/samples/ListNBK.tcl} .. class:: NoteBook() @@ -417,18 +417,18 @@ Manager Widgets these pages can be shown. The user can navigate through these pages by choosing the visual "tabs" at the top of the NoteBook widget. -.. % Python Demo of: -.. % \ulink{NoteBook}{http://tix.sourceforge.net/dist/current/demos/samples/NoteBook.tcl} +.. Python Demo of: +.. \ulink{NoteBook}{http://tix.sourceforge.net/dist/current/demos/samples/NoteBook.tcl} -.. % \subsubsection{Scrolled Widgets} -.. % Python Demo of: -.. % \ulink{ScrolledListBox}{http://tix.sourceforge.net/dist/current/demos/samples/SListBox.tcl} -.. % Python Demo of: -.. % \ulink{ScrolledText}{http://tix.sourceforge.net/dist/current/demos/samples/SText.tcl} -.. % Python Demo of: -.. % \ulink{ScrolledWindow}{http://tix.sourceforge.net/dist/current/demos/samples/SWindow.tcl} -.. % Python Demo of: -.. % \ulink{Canvas Object View}{http://tix.sourceforge.net/dist/current/demos/samples/CObjView.tcl} +.. \subsubsection{Scrolled Widgets} +.. Python Demo of: +.. \ulink{ScrolledListBox}{http://tix.sourceforge.net/dist/current/demos/samples/SListBox.tcl} +.. Python Demo of: +.. \ulink{ScrolledText}{http://tix.sourceforge.net/dist/current/demos/samples/SText.tcl} +.. Python Demo of: +.. \ulink{ScrolledWindow}{http://tix.sourceforge.net/dist/current/demos/samples/SWindow.tcl} +.. Python Demo of: +.. \ulink{Canvas Object View}{http://tix.sourceforge.net/dist/current/demos/samples/CObjView.tcl} Image Types @@ -440,10 +440,10 @@ The :mod:`Tix` module adds: capabilities to all :mod:`Tix` and :mod:`Tkinter` widgets to create color images from XPM files. - .. % Python Demo of: - .. % \ulink{XPM Image In Button}{http://tix.sourceforge.net/dist/current/demos/samples/Xpm.tcl} - .. % Python Demo of: - .. % \ulink{XPM Image In Menu}{http://tix.sourceforge.net/dist/current/demos/samples/Xpm1.tcl} + .. Python Demo of: + .. \ulink{XPM Image In Button}{http://tix.sourceforge.net/dist/current/demos/samples/Xpm.tcl} + .. Python Demo of: + .. \ulink{XPM Image In Menu}{http://tix.sourceforge.net/dist/current/demos/samples/Xpm1.tcl} * `Compound `_ image @@ -453,14 +453,14 @@ The :mod:`Tix` module adds: display a bitmap and a text string simultaneously in a Tk :class:`Button` widget. - .. % Python Demo of: - .. % \ulink{Compound Image In Buttons}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg.tcl} - .. % Python Demo of: - .. % \ulink{Compound Image In NoteBook}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg2.tcl} - .. % Python Demo of: - .. % \ulink{Compound Image Notebook Color Tabs}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg4.tcl} - .. % Python Demo of: - .. % \ulink{Compound Image Icons}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg3.tcl} + .. Python Demo of: + .. \ulink{Compound Image In Buttons}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg.tcl} + .. Python Demo of: + .. \ulink{Compound Image In NoteBook}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg2.tcl} + .. Python Demo of: + .. \ulink{Compound Image Notebook Color Tabs}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg4.tcl} + .. Python Demo of: + .. \ulink{Compound Image Icons}{http://tix.sourceforge.net/dist/current/demos/samples/CmpImg3.tcl} Miscellaneous Widgets diff --git a/Doc/library/tk.rst b/Doc/library/tk.rst index bb852d2..3e2f100 100644 --- a/Doc/library/tk.rst +++ b/Doc/library/tk.rst @@ -36,8 +36,8 @@ libraries, see the :ref:`other-gui-packages` section. idle.rst othergui.rst -.. % Other sections I have in mind are -.. % Tkinter internals -.. % Freezing Tkinter applications +.. Other sections I have in mind are + Tkinter internals + Freezing Tkinter applications diff --git a/Doc/library/tkinter.rst b/Doc/library/tkinter.rst index f6c5c61..4d5cce8 100644 --- a/Doc/library/tkinter.rst +++ b/Doc/library/tkinter.rst @@ -59,7 +59,7 @@ Or, more often:: widget of Tk which usually is the main window of an application. Each instance has its own associated Tcl interpreter. - .. % FIXME: The following keyword arguments are currently recognized: + .. FIXME: The following keyword arguments are currently recognized: .. function:: Tcl(screenName=None, baseName=None, className='Tk', useTk=0) @@ -114,8 +114,6 @@ This section is not designed to be an exhaustive tutorial on either Tk or Tkinter. Rather, it is intended as a stop gap, providing some introductory orientation on the system. -.. % Converted to LaTeX by Mike Clarkson. - Credits: * Tkinter was written by Steen Lumholt and Guido van Rossum. @@ -218,8 +216,6 @@ The class hierarchy looks complicated, but in actual practice, application programmers almost always refer to the classes at the very bottom of the hierarchy. -.. % BriefTclTk.html - Notes: * These classes are provided for the purposes of organizing certain functions @@ -334,13 +330,6 @@ the Form geometry manager. :: How Tk and Tkinter are Related ------------------------------ -.. % Relationship.html - -.. note:: - - This was derived from a graphical image; the image will be used more directly in - a subsequent version of this document. - From the top down: Your App Here (Python) @@ -453,8 +442,6 @@ The Packer .. index:: single: packing (widgets) -.. % Packer.html - The packer is one of Tk's geometry-management mechanisms. Geometry managers are used to specify the relative positioning of the positioning of widgets within their container - their mutual *master*. In contrast to the more @@ -463,8 +450,6 @@ packer takes qualitative relationship specification - *above*, *to the left of*, *filling*, etc - and works everything out to determine the exact placement coordinates for you. -.. % See also \citetitle[classes/ClassPacker.html]{the Packer class interface}. - The size of any *master* widget is determined by the size of the "slave widgets" inside. The packer is used to control where slave widgets appear inside the master into which they are packed. You can pack widgets into frames, and frames @@ -521,8 +506,6 @@ options are ``variable``, ``textvariable``, ``onvalue``, ``offvalue``, and ``value``. This connection works both ways: if the variable changes for any reason, the widget it's connected to will be updated to reflect the new value. -.. % VarCouplings.html - Unfortunately, in the current implementation of :mod:`Tkinter` it is not possible to hand over an arbitrary Python variable to a widget through a ``variable`` or ``textvariable`` option. The only kinds of variables for which @@ -569,8 +552,6 @@ The Window Manager .. index:: single: window manager (widgets) -.. % WindowMgr.html - In Tk, there is a utility command, ``wm``, for interacting with the window manager. Options to the ``wm`` command allow you to control things like titles, placement, icon bitmaps, and the like. In :mod:`Tkinter`, these commands have @@ -585,8 +566,6 @@ window that contains an arbitrary widget, you can call the :meth:`_root` method. This method begins with an underscore to denote the fact that this function is part of the implementation, and not an interface to Tk functionality. -.. % See also \citetitle[classes/ClassWm.html]{the Wm class interface}. - Here are some examples of typical usage:: from Tkinter import * @@ -614,8 +593,6 @@ Tk Option Data Types .. index:: single: Tk Option Data Types -.. % OptionTypes.html - anchor Legal values are points of the compass: ``"n"``, ``"ne"``, ``"e"``, ``"se"``, ``"s"``, ``"sw"``, ``"w"``, ``"nw"``, and also ``"center"``. @@ -695,8 +672,6 @@ Bindings and Events single: bind (widgets) single: events (widgets) -.. % Bindings.html - The bind method from the widget command allows you to watch for certain events and to have a callback function trigger when that event type occurs. The form of the bind method is:: @@ -752,8 +727,6 @@ A number of widgets require"index" parameters to be passed. These are used to point at a specific place in a Text widget, or to particular characters in an Entry widget, or to particular menu items in a Menu widget. -.. % Index.html - Entry widget indexes (index, view index, etc.) Entry widgets have options that refer to character positions in the text being displayed. You can use these :mod:`Tkinter` functions to access these special diff --git a/Doc/library/undoc.rst b/Doc/library/undoc.rst index 942a924..ae8fae7 100644 --- a/Doc/library/undoc.rst +++ b/Doc/library/undoc.rst @@ -169,3 +169,27 @@ must be enabled by uncommenting the appropriate lines in :file:`Modules/Setup` in the build tree and either rebuilding Python if the modules are statically linked, or building and installing the shared object if using dynamically-loaded extensions. + +.. (lib-old is empty as of Python 2.5) + + Those which are written in Python will be installed into the directory + \file{lib-old/} installed as part of the standard library. To use + these, the directory must be added to \code{sys.path}, possibly using + \envvar{PYTHONPATH}. + +:mod:`timing` + --- Measure time intervals to high resolution (use :func:`time.clock` instead). + + +SGI-specific Extension modules +============================== + +The following are SGI specific, and may be out of touch with the current version +of reality. + +:mod:`cl` + --- Interface to the SGI compression library. + +:mod:`sv` + --- Interface to the "simple video" board on SGI Indigo (obsolete hardware). + diff --git a/Doc/library/wave.rst b/Doc/library/wave.rst index d03f091..b931fed 100644 --- a/Doc/library/wave.rst +++ b/Doc/library/wave.rst @@ -1,13 +1,10 @@ -.. % Documentations stolen and LaTeX'ed from comments in file. - - :mod:`wave` --- Read and write WAV files ======================================== .. module:: wave :synopsis: Provide an interface to the WAV sound format. .. sectionauthor:: Moshe Zadka - +.. Documentations stolen from comments in file. The :mod:`wave` module provides a convenient interface to the WAV sound format. It does not support compression/decompression, but it does support mono/stereo. diff --git a/Doc/library/weakref.rst b/Doc/library/weakref.rst index fdfbae0..195ac95 100644 --- a/Doc/library/weakref.rst +++ b/Doc/library/weakref.rst @@ -13,8 +13,8 @@ The :mod:`weakref` module allows the Python programmer to create :dfn:`weak references` to objects. -.. % When making changes to the examples in this file, be sure to update -.. % Lib/test/test_weakref.py::libreftest too! +.. When making changes to the examples in this file, be sure to update + Lib/test/test_weakref.py::libreftest too! In the following, the term :dfn:`referent` means the object which is referred to by a weak reference. @@ -306,7 +306,7 @@ objects that it has seen before. The IDs of the objects can then be used in other data structures without forcing the objects to remain alive, but the objects can still be retrieved by ID if they do. -.. % Example contributed by Tim Peters. +.. Example contributed by Tim Peters. :: diff --git a/Doc/library/wsgiref.rst b/Doc/library/wsgiref.rst index 0118032..e43d850 100644 --- a/Doc/library/wsgiref.rst +++ b/Doc/library/wsgiref.rst @@ -27,7 +27,7 @@ to the WSGI specification (:pep:`333`). See http://www.wsgi.org for more information about WSGI, and links to tutorials and other resources. -.. % XXX If you're just trying to write a web application... +.. XXX If you're just trying to write a web application... :mod:`wsgiref.util` -- WSGI environment utilities diff --git a/Doc/library/xml.dom.minidom.rst b/Doc/library/xml.dom.minidom.rst index 1af07b3..84a95f1 100644 --- a/Doc/library/xml.dom.minidom.rst +++ b/Doc/library/xml.dom.minidom.rst @@ -201,11 +201,11 @@ rules apply: * Operations are used as methods. Since the DOM uses only :keyword:`in` parameters, the arguments are passed in normal order (from left to right). - There are no optional arguments. :keyword:`void` operations return ``None``. + There are no optional arguments. ``void`` operations return ``None``. * IDL attributes map to instance attributes. For compatibility with the OMG IDL language mapping for Python, an attribute ``foo`` can also be accessed through - accessor methods :meth:`_get_foo` and :meth:`_set_foo`. :keyword:`readonly` + accessor methods :meth:`_get_foo` and :meth:`_set_foo`. ``readonly`` attributes must not be changed; this is not enforced at runtime. * The types ``short int``, ``unsigned int``, ``unsigned long long``, and @@ -216,7 +216,7 @@ rules apply: Values of type ``DOMString`` may also be ``None`` where allowed to have the IDL ``null`` value by the DOM specification from the W3C. -* :keyword:`const` declarations map to variables in their respective scope (e.g. +* ``const`` declarations map to variables in their respective scope (e.g. ``xml.dom.minidom.Node.PROCESSING_INSTRUCTION_NODE``); they must not be changed. * ``DOMException`` is currently not supported in :mod:`xml.dom.minidom`. diff --git a/Doc/library/xml.dom.rst b/Doc/library/xml.dom.rst index d75db2c..76edd43 100644 --- a/Doc/library/xml.dom.rst +++ b/Doc/library/xml.dom.rst @@ -38,13 +38,13 @@ DOM Level 2 recommendation. package `_. Refer to the documentation bundled with that package for information on the current state of DOM Level 3 support. -.. % What if your needs are somewhere between SAX and the DOM? Perhaps -.. % you cannot afford to load the entire tree in memory but you find the -.. % SAX model somewhat cumbersome and low-level. There is also a module -.. % called xml.dom.pulldom that allows you to build trees of only the -.. % parts of a document that you need structured access to. It also has -.. % features that allow you to find your way around the DOM. -.. % See http://www.prescod.net/python/pulldom +.. What if your needs are somewhere between SAX and the DOM? Perhaps + you cannot afford to load the entire tree in memory but you find the + SAX model somewhat cumbersome and low-level. There is also a module + called xml.dom.pulldom that allows you to build trees of only the + parts of a document that you need structured access to. It also has + features that allow you to find your way around the DOM. + See http://www.prescod.net/python/pulldom DOM applications typically start by parsing some XML into a DOM. How this is accomplished is not covered at all by DOM Level 1, and Level 2 provides only @@ -148,7 +148,7 @@ provided as part of this module does provide the constants used for the within the class rather than at the module level to conform with the DOM specifications. -.. % Should the Node documentation go here? +.. Should the Node documentation go here? .. _dom-objects: @@ -893,7 +893,7 @@ attribute. This is raised if data is specified for a node which does not support data. - .. % XXX a better explanation is needed! + .. XXX a better explanation is needed! .. exception:: NoModificationAllowedErr @@ -906,7 +906,7 @@ attribute. Raised when an invalid or illegal string is specified. - .. % XXX how is this different from InvalidCharacterErr ??? + .. XXX how is this different from InvalidCharacterErr? .. exception:: WrongDocumentErr @@ -988,8 +988,8 @@ Additionally, the :class:`DOMString` defined in the recommendation is mapped to a Python string or Unicode string. Applications should be able to handle Unicode whenever a string is returned from the DOM. -The IDL :keyword:`null` value is mapped to ``None``, which may be accepted or -provided by the implementation whenever :keyword:`null` is allowed by the API. +The IDL ``null`` value is mapped to ``None``, which may be accepted or +provided by the implementation whenever ``null`` is allowed by the API. .. _dom-accessor-methods: @@ -998,7 +998,7 @@ Accessor Methods ^^^^^^^^^^^^^^^^ The mapping from OMG IDL to Python defines accessor functions for IDL -:keyword:`attribute` declarations in much the way the Java mapping does. +``attribute`` declarations in much the way the Java mapping does. Mapping the IDL declarations :: readonly attribute string someValue; @@ -1017,13 +1017,13 @@ likely to work, and wrapper objects may be needed on the client if the DOM objects are accessed via CORBA. While this does require some additional consideration for CORBA DOM clients, the implementers with experience using DOM over CORBA from Python do not consider this a problem. Attributes that are -declared :keyword:`readonly` may not restrict write access in all DOM +declared ``readonly`` may not restrict write access in all DOM implementations. In the Python DOM API, accessor functions are not required. If provided, they should take the form defined by the Python IDL mapping, but these methods are considered unnecessary since the attributes are accessible directly from Python. -"Set" accessors should never be provided for :keyword:`readonly` attributes. +"Set" accessors should never be provided for ``readonly`` attributes. The IDL definitions do not fully embody the requirements of the W3C DOM API, such as the notion of certain objects, such as the return value of diff --git a/Doc/library/xml.etree.rst b/Doc/library/xml.etree.rst index 9d39559..a944765 100644 --- a/Doc/library/xml.etree.rst +++ b/Doc/library/xml.etree.rst @@ -12,7 +12,7 @@ common components from the ElementTree API library. In the current release, this package contains the :mod:`ElementTree`, :mod:`ElementPath`, and :mod:`ElementInclude` modules from the full ElementTree distribution. -.. % XXX To be continued! +.. XXX To be continued! .. seealso:: diff --git a/Doc/library/xml.sax.handler.rst b/Doc/library/xml.sax.handler.rst index 3ef3c83..c31efd8 100644 --- a/Doc/library/xml.sax.handler.rst +++ b/Doc/library/xml.sax.handler.rst @@ -205,7 +205,7 @@ events in the input document: information to the application to expand prefixes in those contexts itself, if necessary. - .. % XXX This is not really the default, is it? MvL + .. XXX This is not really the default, is it? MvL Note that :meth:`startPrefixMapping` and :meth:`endPrefixMapping` events are not guaranteed to be properly nested relative to each-other: all diff --git a/Doc/library/xml.sax.reader.rst b/Doc/library/xml.sax.reader.rst index bb802ee..5994371 100644 --- a/Doc/library/xml.sax.reader.rst +++ b/Doc/library/xml.sax.reader.rst @@ -348,8 +348,8 @@ are also provided: Return the value of attribute *name*. -.. % getValueByQName, getNameByQName, getQNameByName, getQNames available -.. % here already, but documented only for derived class. +.. getValueByQName, getNameByQName, getQNameByName, getQNames available +.. here already, but documented only for derived class. .. _attributes-ns-objects: diff --git a/Doc/library/xmlrpclib.rst b/Doc/library/xmlrpclib.rst index bde0688..176c929 100644 --- a/Doc/library/xmlrpclib.rst +++ b/Doc/library/xmlrpclib.rst @@ -1,4 +1,3 @@ - :mod:`xmlrpclib` --- XML-RPC client access ========================================== @@ -8,8 +7,8 @@ .. sectionauthor:: Eric S. Raymond -.. % Not everything is documented yet. It might be good to describe -.. % Marshaller, Unmarshaller, getparser, dumps, loads, and Transport. +.. XXX Not everything is documented yet. It might be good to describe + Marshaller, Unmarshaller, getparser, dumps, loads, and Transport. XML-RPC is a Remote Procedure Call method that uses XML passed via HTTP as a transport. With it, a client can call methods with parameters on a remote @@ -529,11 +528,9 @@ Example of Client Usage print("ERROR", v) To access an XML-RPC server through a proxy, you need to define a custom -transport. The following example, written by NoboNobo, shows how: - -.. % fill in original author's name if we ever learn it +transport. The following example shows how: -.. % Example taken from http://lowlife.jp/nobonobo/wiki/xmlrpcwithproxy.html +.. Example taken from http://lowlife.jp/nobonobo/wiki/xmlrpcwithproxy.html :: diff --git a/Doc/library/zipfile.rst b/Doc/library/zipfile.rst index 6c946f8..7515440 100644 --- a/Doc/library/zipfile.rst +++ b/Doc/library/zipfile.rst @@ -7,9 +7,6 @@ .. moduleauthor:: James C. Ahlstrom .. sectionauthor:: James C. Ahlstrom - -.. % LaTeX markup by Fred L. Drake, Jr. - The ZIP file format is a common archive and compression standard. This module provides tools to create, read, write, append, and list a ZIP file. Any advanced use of this module will require an understanding of the format, as diff --git a/Doc/library/zlib.rst b/Doc/library/zlib.rst index 449394c..dda0b9c 100644 --- a/Doc/library/zlib.rst +++ b/Doc/library/zlib.rst @@ -74,8 +74,6 @@ The available exception and functions in this module are: the algorithm is designed for use as a checksum algorithm, it is not suitable for use as a general hash algorithm. - .. % - .. function:: decompress(string[, wbits[, bufsize]]) diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 432f3c8..927930a 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -72,6 +72,8 @@ on a separate line for clarity. .. _if: +.. _elif: +.. _else: The :keyword:`if` statement =========================== @@ -200,6 +202,8 @@ returns the list ``[0, 1, 2]``. .. _try: +.. _except: +.. _finally: The :keyword:`try` statement ============================ @@ -326,6 +330,7 @@ may be found in section :ref:`raise`. .. _with: +.. _as: The :keyword:`with` statement ============================= @@ -382,6 +387,7 @@ The execution of the :keyword:`with` statement proceeds as follows: .. _function: +.. _def: Function definitions ==================== diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 49bc8b6..0ec255f 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -202,8 +202,6 @@ Numbers operation except left shift, if it yields a result in the plain integer domain without causing overflow, will yield the same result when using mixed operands. - .. % Integers - Floating point numbers .. index:: object: floating point @@ -229,8 +227,6 @@ Numbers The real and imaginary parts of a complex number ``z`` can be retrieved through the read-only attributes ``z.real`` and ``z.imag``. - .. % Numbers - Sequences .. index:: builtin: len @@ -302,8 +298,6 @@ Sequences parentheses must be usable for grouping of expressions). An empty tuple can be formed by an empty pair of parentheses. - .. % Immutable sequences - Mutable sequences .. index:: object: mutable sequence @@ -341,10 +335,6 @@ Sequences The extension module :mod:`array` provides an additional example of a mutable sequence type. - .. % Mutable sequences - - .. % Sequences - Set types .. index:: builtin: len @@ -379,8 +369,6 @@ Set types :term:`hashable`, it can be used again as an element of another set, or as a dictionary key. - .. % Set types - Mappings .. index:: builtin: len @@ -418,8 +406,6 @@ Mappings The extension modules :mod:`dbm`, :mod:`gdbm`, and :mod:`bsddb` provide additional examples of mapping types. - .. % Mapping types - Callable types .. index:: object: callable @@ -652,8 +638,6 @@ Modules object used to initialize the module (since it isn't needed once the initialization is done). - .. % - Attribute assignment updates the module's namespace dictionary, e.g., ``m.x = 1`` is equivalent to ``m.__dict__["x"] = 1``. @@ -992,12 +976,53 @@ Internal types described above, under "User-defined methods". Class method objects are created by the built-in :func:`classmethod` constructor. - .. % Internal types - -.. % ========================================================================= .. _newstyle: +New-style and classic classes +============================= + +Classes and instances come in two flavors: old-style or classic, and new-style. + +Up to Python 2.1, old-style classes were the only flavour available to the user. +The concept of (old-style) class is unrelated to the concept of type: if *x* is +an instance of an old-style class, then ``x.__class__`` designates the class of +*x*, but ``type(x)`` is always ````. This reflects the fact +that all old-style instances, independently of their class, are implemented with +a single built-in type, called ``instance``. + +New-style classes were introduced in Python 2.2 to unify classes and types. A +new-style class neither more nor less than a user-defined type. If *x* is an +instance of a new-style class, then ``type(x)`` is the same as ``x.__class__``. + +The major motivation for introducing new-style classes is to provide a unified +object model with a full meta-model. It also has a number of immediate +benefits, like the ability to subclass most built-in types, or the introduction +of "descriptors", which enable computed properties. + +For compatibility reasons, classes are still old-style by default. New-style +classes are created by specifying another new-style class (i.e. a type) as a +parent class, or the "top-level type" :class:`object` if no other parent is +needed. The behaviour of new-style classes differs from that of old-style +classes in a number of important details in addition to what :func:`type` +returns. Some of these changes are fundamental to the new object model, like +the way special methods are invoked. Others are "fixes" that could not be +implemented before for compatibility concerns, like the method resolution order +in case of multiple inheritance. + +This manual is not up-to-date with respect to new-style classes. For now, +please see http://www.python.org/doc/newstyle.html for more information. + +.. index:: + single: class + single: class + single: class + +The plan is to eventually drop old-style classes, leaving only the semantics of +new-style classes. This change will probably only be feasible in Python 3.0. +new-style classic old-style + + .. _specialnames: Special method names diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst index 4bb0074..6e160ee 100644 --- a/Doc/reference/expressions.rst +++ b/Doc/reference/expressions.rst @@ -937,6 +937,10 @@ must be integers. .. _comparisons: +.. _is: +.. _isnot: +.. _in: +.. _notin: Comparisons =========== @@ -1058,6 +1062,9 @@ yields the inverse truth value. .. _booleans: +.. _and: +.. _or: +.. _not: Boolean operations ================== diff --git a/Doc/reference/lexical_analysis.rst b/Doc/reference/lexical_analysis.rst index 741f8ec..ae71ec7 100644 --- a/Doc/reference/lexical_analysis.rst +++ b/Doc/reference/lexical_analysis.rst @@ -100,8 +100,7 @@ If an encoding is declared, the encoding name must be recognized by Python. The encoding is used for all lexical analysis, including string literals, comments and identifiers. The encoding declaration must appear on a line of its own. -A list of standard encodings can be found in the section -:ref:`standard-encodings`. +.. XXX there should be a list of supported encodings. .. _explicit-joining: diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst index e9be1fd..a822006 100644 --- a/Doc/reference/simple_stmts.rst +++ b/Doc/reference/simple_stmts.rst @@ -143,6 +143,19 @@ Assignment of an object to a single target is recursively defined as follows. count for the object previously bound to the name to reach zero, causing the object to be deallocated and its destructor (if it has one) to be called. + .. index:: single: destructor + + The name is rebound if it was already bound. This may cause the reference count + for the object previously bound to the name to reach zero, causing the object to + be deallocated and its destructor (if it has one) to be called. + +* If the target is a target list enclosed in parentheses or in square brackets: + The object must be a sequence with the same number of items as there are targets + in the target list, and its items are assigned, from left to right, to the + corresponding targets. + + .. index:: pair: attribute; assignment + * If the target is an attribute reference: The primary expression in the reference is evaluated. It should yield an object with assignable attributes; if this is not the case, :exc:`TypeError` is raised. That object is then @@ -296,16 +309,16 @@ The extended form, ``assert expression1, expression2``, is equivalent to :: single: __debug__ exception: AssertionError -These equivalences assume that ``__debug__`` and :exc:`AssertionError` refer to +These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to the built-in variables with those names. In the current implementation, the -built-in variable ``__debug__`` is ``True`` under normal circumstances, +built-in variable :const:`__debug__` is ``True`` under normal circumstances, ``False`` when optimization is requested (command line option -O). The current code generator emits no code for an assert statement when optimization is requested at compile time. Note that it is unnecessary to include the source code for the expression that failed in the error message; it will be displayed as part of the stack trace. -Assignments to ``__debug__`` are illegal. The value for the built-in variable +Assignments to :const:`__debug__` are illegal. The value for the built-in variable is determined when the interpreter starts. @@ -512,6 +525,7 @@ cycle of the nearest enclosing loop. .. _import: +.. _from: The :keyword:`import` statement =============================== diff --git a/Doc/tutorial/appetite.rst b/Doc/tutorial/appetite.rst index f1c80e9..120955e 100644 --- a/Doc/tutorial/appetite.rst +++ b/Doc/tutorial/appetite.rst @@ -75,8 +75,6 @@ Now that you are all excited about Python, you'll want to examine it in some more detail. Since the best way to learn a language is to use it, the tutorial invites you to play with the Python interpreter as you read. -.. % \section{Where From Here \label{where}} - In the next chapter, the mechanics of using the interpreter are explained. This is rather mundane information, but essential for trying out the examples shown later. diff --git a/Doc/tutorial/classes.rst b/Doc/tutorial/classes.rst index eb1b609..0940a75 100644 --- a/Doc/tutorial/classes.rst +++ b/Doc/tutorial/classes.rst @@ -390,7 +390,7 @@ is called with this new argument list. Random Remarks ============== -.. % [These should perhaps be placed more carefully...] +.. These should perhaps be placed more carefully... Data attributes override method attributes with the same name; to avoid accidental name conflicts, which may cause hard-to-find bugs in large programs, @@ -506,7 +506,7 @@ Derived classes may override methods of their base classes. Because methods have no special privileges when calling other methods of the same object, a method of a base class that calls another method defined in the same base class may end up calling a method of a derived class that overrides it. (For C++ -programmers: all methods in Python are effectively :keyword:`virtual`.) +programmers: all methods in Python are effectively ``virtual``.) An overriding method in a derived class may in fact want to extend rather than simply replace the base class method of the same name. There is a simple way to @@ -617,12 +617,10 @@ instance, if you have a function that formats some data from a file object, you can define a class with methods :meth:`read` and :meth:`readline` that get the data from a string buffer instead, and pass it as an argument. -.. % (Unfortunately, this -.. % technique has its limitations: a class can't define operations that -.. % are accessed by special syntax such as sequence subscripting or -.. % arithmetic operators, and assigning such a ``pseudo-file'' to -.. % \code{sys.stdin} will not cause the interpreter to read further input -.. % from it.) +.. (Unfortunately, this technique has its limitations: a class can't define + operations that are accessed by special syntax such as sequence subscripting + or arithmetic operators, and assigning such a "pseudo-file" to sys.stdin will + not cause the interpreter to read further input from it.) Instance method objects have attributes, too: ``m.__self__`` is the instance object with the method :meth:`m`, and ``m.__func__`` is the function object diff --git a/Doc/tutorial/controlflow.rst b/Doc/tutorial/controlflow.rst index 5d815d6..f51b66c 100644 --- a/Doc/tutorial/controlflow.rst +++ b/Doc/tutorial/controlflow.rst @@ -31,11 +31,8 @@ example:: There can be zero or more :keyword:`elif` parts, and the :keyword:`else` part is optional. The keyword ':keyword:`elif`' is short for 'else if', and is useful to avoid excessive indentation. An :keyword:`if` ... :keyword:`elif` ... -:keyword:`elif` ... sequence is a substitute for the :keyword:`switch` or -:keyword:`case` statements found in other languages. - -.. % Weird spacings happen here if the wrapping of the source text -.. % gets changed in the wrong way. +:keyword:`elif` ... sequence is a substitute for the ``switch`` or +``case`` statements found in other languages. .. _tut-for: @@ -53,8 +50,8 @@ iteration step and halting condition (as C), Python's :keyword:`for` statement iterates over the items of any sequence (a list or a string), in the order that they appear in the sequence. For example (no pun intended): -.. % One suggestion was to give a real C example here, but that may only -.. % serve to confuse non-C programmers. +.. One suggestion was to give a real C example here, but that may only serve to + confuse non-C programmers. :: diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst index cf9fea3..206f056 100644 --- a/Doc/tutorial/datastructures.rst +++ b/Doc/tutorial/datastructures.rst @@ -350,6 +350,70 @@ is assigned to it). We'll find other uses for :keyword:`del` later. +Tuples and Sequences +==================== + +We saw that lists and strings have many common properties, such as indexing and +slicing operations. They are two examples of *sequence* data types (see +:ref:`typesseq`). Since Python is an evolving language, other sequence data +types may be added. There is also another standard sequence data type: the +*tuple*. + +A tuple consists of a number of values separated by commas, for instance:: + + >>> t = 12345, 54321, 'hello!' + >>> t[0] + 12345 + >>> t + (12345, 54321, 'hello!') + >>> # Tuples may be nested: + ... u = t, (1, 2, 3, 4, 5) + >>> u + ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5)) + +As you see, on output tuples are always enclosed in parentheses, so that nested +tuples are interpreted correctly; they may be input with or without surrounding +parentheses, although often parentheses are necessary anyway (if the tuple is +part of a larger expression). + +Tuples have many uses. For example: (x, y) coordinate pairs, employee records +from a database, etc. Tuples, like strings, are immutable: it is not possible +to assign to the individual items of a tuple (you can simulate much of the same +effect with slicing and concatenation, though). It is also possible to create +tuples which contain mutable objects, such as lists. + +A special problem is the construction of tuples containing 0 or 1 items: the +syntax has some extra quirks to accommodate these. Empty tuples are constructed +by an empty pair of parentheses; a tuple with one item is constructed by +following a value with a comma (it is not sufficient to enclose a single value +in parentheses). Ugly, but effective. For example:: + + >>> empty = () + >>> singleton = 'hello', # <-- note trailing comma + >>> len(empty) + 0 + >>> len(singleton) + 1 + >>> singleton + ('hello',) + +The statement ``t = 12345, 54321, 'hello!'`` is an example of *tuple packing*: +the values ``12345``, ``54321`` and ``'hello!'`` are packed together in a tuple. +The reverse operation is also possible:: + + >>> x, y, z = t + +This is called, appropriately enough, *sequence unpacking*. Sequence unpacking +requires the list of variables on the left to have the same number of elements +as the length of the sequence. Note that multiple assignment is really just a +combination of tuple packing and sequence unpacking! + +There is a small bit of asymmetry here: packing multiple values always creates +a tuple, and unpacking works for any sequence. + +.. XXX Add a bit on the difference between tuples and lists. + + .. _tut-sets: Sets diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index cfea7bb..d4cad87 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -180,11 +180,9 @@ Reading and Writing Files :func:`open` returns a file object, and is most commonly used with two arguments: ``open(filename, mode)``. -.. % Opening files - :: - >>> f=open('/tmp/workfile', 'w') + >>> f = open('/tmp/workfile', 'w') >>> print(f) diff --git a/Doc/tutorial/interpreter.rst b/Doc/tutorial/interpreter.rst index 5c67ba9..7b1730e 100644 --- a/Doc/tutorial/interpreter.rst +++ b/Doc/tutorial/interpreter.rst @@ -212,8 +212,8 @@ setting an environment variable named :envvar:`PYTHONSTARTUP` to the name of a file containing your start-up commands. This is similar to the :file:`.profile` feature of the Unix shells. -.. % XXX This should probably be dumped in an appendix, since most people -.. % don't use Python interactively in non-trivial ways. +.. XXX This should probably be dumped in an appendix, since most people + don't use Python interactively in non-trivial ways. This file is only read in interactive sessions, not when Python reads commands from a script, and not when :file:`/dev/tty` is given as the explicit source of diff --git a/Doc/tutorial/introduction.rst b/Doc/tutorial/introduction.rst index 4226ffd..a99e7d2 100644 --- a/Doc/tutorial/introduction.rst +++ b/Doc/tutorial/introduction.rst @@ -13,9 +13,9 @@ end a multi-line command. Many of the examples in this manual, even those entered at the interactive prompt, include comments. Comments in Python start with the hash character, -``'#'``, and extend to the end of the physical line. A comment may appear at +``#``, and extend to the end of the physical line. A comment may appear at the start of a line or following whitespace or code, but not within a string -literal. A hash character within a string literal is just a hash character. +literal. A hash character within a string literal is just a hash character. Some examples:: @@ -608,5 +608,3 @@ This example introduces several new features. Note that nothing appeared after the loop ended, until we printed a newline. - - diff --git a/Doc/tutorial/modules.rst b/Doc/tutorial/modules.rst index 2a14b35..279afc8 100644 --- a/Doc/tutorial/modules.rst +++ b/Doc/tutorial/modules.rst @@ -223,11 +223,6 @@ Some tips for experts: * The module :mod:`compileall` can create :file:`.pyc` files (or :file:`.pyo` files when :option:`-O` is used) for all modules in a directory. -* If using Python in a parallel processing system with a shared file system, - you need to patch Python to disable the creation of the compiled files - because otherwise the multiple Python interpreters will encounter race - conditions in creating them. - .. _tut-standardmodules: @@ -246,11 +241,7 @@ depends on the underlying platform For example, the :mod:`winreg` module is only provided on Windows systems. One particular module deserves some attention: :mod:`sys`, which is built into every Python interpreter. The variables ``sys.ps1`` and ``sys.ps2`` define the strings used as primary and secondary -prompts: - -.. % - -:: +prompts:: >>> import sys >>> sys.ps1 @@ -455,8 +446,6 @@ filename! On these platforms, there is no guaranteed way to know whether a file file names with a capitalized first letter.) The DOS 8+3 filename restriction adds another interesting problem for long module names. -.. % The \code{__all__} Attribute - The only solution is for the package author to provide an explicit index of the package. The import statement uses the following convention: if a package's :file:`__init__.py` code defines a list named ``__all__``, it is taken to be the diff --git a/Doc/tutorial/whatnow.rst b/Doc/tutorial/whatnow.rst index 69fa9c3..25d42a8 100644 --- a/Doc/tutorial/whatnow.rst +++ b/Doc/tutorial/whatnow.rst @@ -66,8 +66,8 @@ archives are available at http://mail.python.org/pipermail/. The FAQ answers many of the questions that come up again and again, and may already contain the solution for your problem. -.. % Postings figure based on average of last six months activity as -.. % reported by www.egroups.com; Jan. 2000 - June 2000: 21272 msgs / 182 -.. % days = 116.9 msgs / day and steadily increasing. +.. Postings figure based on average of last six months activity as + reported by www.egroups.com; Jan. 2000 - June 2000: 21272 msgs / 182 + days = 116.9 msgs / day and steadily increasing. (XXX up to date figures?) diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index 035f405..2b52544 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -158,8 +158,7 @@ installation directory. So, if you had installed Python to :file:`C:\\Python\\Lib\\` and third-party modules should be stored in :file:`C:\\Python\\Lib\\site-packages\\`. -.. % `` this fixes syntax highlighting errors in some editors - due to the \\ hackery +.. `` this fixes syntax highlighting errors in some editors due to the \\ hackery You can add folders to your search path to make Python's import mechanism search in these directories as well. Use :envvar:`PYTHONPATH`, as described in @@ -167,7 +166,7 @@ in these directories as well. Use :envvar:`PYTHONPATH`, as described in separated by semicolons, though, to distinguish them from drive identifiers (:file:`C:\\` etc.). -.. % `` +.. `` Modifying the module search path can also be done through the Windows registry: Edit diff --git a/Doc/whatsnew/2.0.rst b/Doc/whatsnew/2.0.rst index 302986c..9ea5dc1 100644 --- a/Doc/whatsnew/2.0.rst +++ b/Doc/whatsnew/2.0.rst @@ -6,7 +6,7 @@ .. |release| replace:: 1.02 -.. % $Id: whatsnew20.tex 51211 2006-08-11 14:57:12Z thomas.wouters $ +.. $Id: whatsnew20.tex 50964 2006-07-30 03:03:43Z fred.drake $ Introduction @@ -26,7 +26,7 @@ progress is due to the five developers working for PythonLabs are now getting paid to spend their days fixing bugs, and also due to the improved communication resulting from moving to SourceForge. -.. % ====================================================================== +.. ====================================================================== What About Python 1.6? @@ -50,7 +50,7 @@ you're better off just going straight to 2.0. Most of the really interesting features described in this document are only in 2.0, because a lot of work was done between May and September. -.. % ====================================================================== +.. ====================================================================== New Development Process @@ -134,7 +134,7 @@ http://www.python.org/peps/. As of September 2000, there are 25 PEPS, ranging from PEP 201, "Lockstep Iteration", to PEP 225, "Elementwise/Objectwise Operators". -.. % ====================================================================== +.. ====================================================================== Unicode @@ -255,7 +255,7 @@ interpret all string literals as Unicode string literals. This is intended to be used in testing and future-proofing your Python code, since some future version of Python may drop support for 8-bit strings and provide only Unicode strings. -.. % ====================================================================== +.. ====================================================================== List Comprehensions @@ -342,7 +342,7 @@ for adding them to Python and wrote the initial list comprehension patch, which was then discussed for a seemingly endless time on the python-dev mailing list and kept up-to-date by Skip Montanaro. -.. % ====================================================================== +.. ====================================================================== Augmented Assignment @@ -360,7 +360,7 @@ named :meth:`__iadd__`, :meth:`__isub__`, etc. For example, the following :class:`Number` class stores a number and supports using += to create a new instance with an incremented value. -.. % The empty groups below prevent conversion to guillemets. +.. The empty groups below prevent conversion to guillemets. :: @@ -383,7 +383,7 @@ language, and most C-derived languages, such as :program:`awk`, C++, Java, Perl, and PHP also support them. The augmented assignment patch was implemented by Thomas Wouters. -.. % ====================================================================== +.. ====================================================================== String Methods @@ -426,7 +426,7 @@ and is equivalent to the :func:`string.join` function from the old :mod:`string` module, with the arguments reversed. In other words, ``s.join(seq)`` is equivalent to the old ``string.join(seq, s)``. -.. % ====================================================================== +.. ====================================================================== Garbage Collection of Cycles @@ -488,7 +488,7 @@ the way; the March 2000 archives of the python-dev mailing list contain most of the relevant discussion, especially in the threads titled "Reference cycle collection for Python" and "Finalization again". -.. % ====================================================================== +.. ====================================================================== Other Core Changes @@ -565,8 +565,8 @@ such as ``cmp(a,b)`` would always produce an answer, even if a user-defined :meth:`__cmp__` method encountered an error, since the resulting exception would simply be silently swallowed. -.. % Starting URL: -.. % http://www.python.org/pipermail/python-dev/2000-April/004834.html +.. Starting URL: +.. http://www.python.org/pipermail/python-dev/2000-April/004834.html Work has been done on porting Python to 64-bit Windows on the Itanium processor, mostly by Trent Mick of ActiveState. (Confusingly, ``sys.platform`` is still @@ -641,7 +641,7 @@ recursion depth can be read and modified using :func:`sys.getrecursionlimit` and value for a given platform can be found by running a new script, :file:`Misc/find_recursionlimit.py`. -.. % ====================================================================== +.. ====================================================================== Porting to 2.0 @@ -728,13 +728,13 @@ always be classes. The :mod:`exceptions` module containing the standard exceptions was translated from Python to a built-in C module, written by Barry Warsaw and Fredrik Lundh. -.. % Commented out for now -- I don't think anyone will care. -.. % The pattern and match objects provided by SRE are C types, not Python -.. % class instances as in 1.5. This means you can no longer inherit from -.. % \class{RegexObject} or \class{MatchObject}, but that shouldn't be much -.. % of a problem since no one should have been doing that in the first -.. % place. -.. % ====================================================================== +.. Commented out for now -- I don't think anyone will care. + The pattern and match objects provided by SRE are C types, not Python + class instances as in 1.5. This means you can no longer inherit from + \class{RegexObject} or \class{MatchObject}, but that shouldn't be much + of a problem since no one should have been doing that in the first + place. +.. ====================================================================== Extending/Embedding Changes @@ -805,7 +805,7 @@ string. A wrapper API was added for Unix-style signal handlers. :func:`PyOS_getsig` gets a signal handler and :func:`PyOS_setsig` will set a new handler. -.. % ====================================================================== +.. ====================================================================== Distutils: Making Modules Easy to Install @@ -875,7 +875,7 @@ development. All this is documented in a new manual, *Distributing Python Modules*, that joins the basic set of Python documentation. -.. % ====================================================================== +.. ====================================================================== XML Modules @@ -1024,7 +1024,7 @@ features in PyXML include: * The :mod:`sgmlop` parser accelerator module, written by Fredrik Lundh. -.. % ====================================================================== +.. ====================================================================== Module changes @@ -1069,7 +1069,7 @@ been changed. SRE, a new regular expression engine written by Fredrik Lundh and partially funded by Hewlett Packard, supports matching against both 8-bit strings and Unicode strings. -.. % ====================================================================== +.. ====================================================================== New modules @@ -1145,7 +1145,7 @@ module. import hooks, in comparison to the existing :mod:`ihooks` module. (Implemented by Greg Stein, with much discussion on python-dev along the way.) -.. % ====================================================================== +.. ====================================================================== IDLE Improvements @@ -1179,7 +1179,7 @@ partial list: * Three new keystroke commands: Check module (Alt-F5), Import module (F5) and Run script (Ctrl-F5). -.. % ====================================================================== +.. ====================================================================== Deleted and Deprecated Modules diff --git a/Doc/whatsnew/2.1.rst b/Doc/whatsnew/2.1.rst index 2be11ba..c3f1280 100644 --- a/Doc/whatsnew/2.1.rst +++ b/Doc/whatsnew/2.1.rst @@ -6,7 +6,7 @@ .. |release| replace:: 1.01 -.. % $Id: whatsnew21.tex 51211 2006-08-11 14:57:12Z thomas.wouters $ +.. $Id: whatsnew21.tex 50964 2006-07-30 03:03:43Z fred.drake $ Introduction @@ -29,7 +29,7 @@ January, 3 months after the final version of 2.0 was released. The final release of Python 2.1 was made on April 17, 2001. -.. % ====================================================================== +.. ====================================================================== PEP 227: Nested Scopes @@ -123,7 +123,7 @@ all of 2.1's lifetime to fix any breakage resulting from their introduction. :pep:`227` - Statically Nested Scopes Written and implemented by Jeremy Hylton. -.. % ====================================================================== +.. ====================================================================== PEP 236: __future__ Directives @@ -153,7 +153,7 @@ precede any statement that will result in bytecodes being produced. :pep:`236` - Back to the :mod:`__future__` Written by Tim Peters, and primarily implemented by Jeremy Hylton. -.. % ====================================================================== +.. ====================================================================== PEP 207: Rich Comparisons @@ -223,7 +223,7 @@ comparison. I won't cover the C API here, but will refer you to PEP 207, or to Written by Guido van Rossum, heavily based on earlier work by David Ascher, and implemented by Guido van Rossum. -.. % ====================================================================== +.. ====================================================================== PEP 230: Warning Framework @@ -295,7 +295,7 @@ Functions were also added to Python's C API for issuing warnings; refer to PEP :pep:`230` - Warning Framework Written and implemented by Guido van Rossum. -.. % ====================================================================== +.. ====================================================================== PEP 229: New Build System @@ -335,7 +335,7 @@ simpler. :pep:`229` - Using Distutils to Build Python Written and implemented by A.M. Kuchling. -.. % ====================================================================== +.. ====================================================================== PEP 205: Weak References @@ -416,7 +416,7 @@ exists. If the object is deallocated, attempting to use a proxy will cause a :pep:`205` - Weak References Written and implemented by Fred L. Drake, Jr. -.. % ====================================================================== +.. ====================================================================== PEP 232: Function Attributes @@ -454,7 +454,7 @@ that behaves like a mapping. :pep:`232` - Function Attributes Written and implemented by Barry Warsaw. -.. % ====================================================================== +.. ====================================================================== PEP 235: Importing Modules on Case-Insensitive Platforms @@ -472,7 +472,7 @@ is found, so ``import file`` will not import a module named ``FILE.PY``. Case- insensitive matching can be requested by setting the :envvar:`PYTHONCASEOK` environment variable before starting the Python interpreter. -.. % ====================================================================== +.. ====================================================================== PEP 217: Interactive Display Hook @@ -502,7 +502,7 @@ printing function:: :pep:`217` - Display Hook for Interactive Use Written and implemented by Moshe Zadka. -.. % ====================================================================== +.. ====================================================================== PEP 208: New Coercion Model @@ -534,7 +534,7 @@ object's numeric methods). Marc-André Lemburg. Read this to understand the fine points of how numeric operations will now be processed at the C level. -.. % ====================================================================== +.. ====================================================================== PEP 241: Metadata in Python Packages @@ -574,7 +574,7 @@ available from the Distutils SIG at http://www.python.org/sigs/distutils-sig/. Written by Sean Reifschneider, this draft PEP describes a proposed mechanism for uploading Python packages to a central server. -.. % ====================================================================== +.. ====================================================================== New and Improved Modules @@ -677,7 +677,7 @@ New and Improved Modules implementation. Use it for debugging, and resist the temptation to put it into production code. -.. % ====================================================================== +.. ====================================================================== Other Changes and Fixes @@ -782,7 +782,7 @@ And there's the usual list of minor bugfixes, minor memory leaks, docstring edits, and other tweaks, too lengthy to be worth itemizing; see the CVS logs for the full details if you want them. -.. % ====================================================================== +.. ====================================================================== Acknowledgements diff --git a/Doc/whatsnew/2.2.rst b/Doc/whatsnew/2.2.rst index 6a7e0e8..4cf1438 100644 --- a/Doc/whatsnew/2.2.rst +++ b/Doc/whatsnew/2.2.rst @@ -6,7 +6,7 @@ .. |release| replace:: 1.02 -.. % $Id: whatsnew22.tex 37315 2004-09-10 19:33:00Z akuchling $ +.. $Id: whatsnew22.tex 37315 2004-09-10 19:33:00Z akuchling $ Introduction @@ -36,7 +36,7 @@ to the PEP for a particular new feature. "What's So Special About Python 2.2?" is also about the new 2.2 features, and was written by Cameron Laird and Kathryn Soraiz. -.. % ====================================================================== +.. ====================================================================== PEPs 252 and 253: Type and Class Changes @@ -414,7 +414,7 @@ for the type handling is in :file:`Objects/typeobject.c`, but you should only resort to it after all other avenues have been exhausted, including posting a question to python-list or python-dev. -.. % ====================================================================== +.. ====================================================================== PEP 234: Iterators @@ -535,7 +535,7 @@ requires a :meth:`next` method. Written by Ka-Ping Yee and GvR; implemented by the Python Labs crew, mostly by GvR and Tim Peters. -.. % ====================================================================== +.. ====================================================================== PEP 255: Simple Generators @@ -662,7 +662,7 @@ a data structure. Written by Neil Schemenauer, Tim Peters, Magnus Lie Hetland. Implemented mostly by Neil Schemenauer and Tim Peters, with other fixes from the Python Labs crew. -.. % ====================================================================== +.. ====================================================================== PEP 237: Unifying Long Integers and Integers @@ -702,7 +702,7 @@ rarely needed. Written by Moshe Zadka and Guido van Rossum. Implemented mostly by Guido van Rossum. -.. % ====================================================================== +.. ====================================================================== PEP 238: Changing the Division Operator @@ -770,7 +770,7 @@ Here are the changes 2.2 introduces: :pep:`238` - Changing the Division Operator Written by Moshe Zadka and Guido van Rossum. Implemented by Guido van Rossum.. -.. % ====================================================================== +.. ====================================================================== Unicode Changes @@ -832,7 +832,7 @@ implemented by Fredrik Lundh and Martin von Löwis. :pep:`261` - Support for 'wide' Unicode characters Written by Paul Prescod. -.. % ====================================================================== +.. ====================================================================== PEP 227: Nested Scopes @@ -927,7 +927,7 @@ anyway). :pep:`227` - Statically Nested Scopes Written and implemented by Jeremy Hylton. -.. % ====================================================================== +.. ====================================================================== New and Improved Modules @@ -1042,7 +1042,7 @@ New and Improved Modules scheduling an activity to happen at some future time. (Contributed by Itamar Shtull-Trauring.) -.. % ====================================================================== +.. ====================================================================== Interpreter Changes and Fixes @@ -1122,7 +1122,7 @@ code, none of the changes described here will affect you very much. takes 2 parameters instead of 3. The third argument was never used, and can simply be discarded when porting code from earlier versions to Python 2.2. -.. % ====================================================================== +.. ====================================================================== Other Changes and Fixes @@ -1155,23 +1155,23 @@ Some of the more notable changes are: left commented out in :file:`setup.py`. People who want to experiment with these modules can uncomment them manually. - .. % Jack's original comments: - .. % The main change is the possibility to build Python as a - .. % framework. This installs a self-contained Python installation plus the - .. % OSX framework "glue" into /Library/Frameworks/Python.framework (or - .. % another location of choice). For now there is little immedeate added - .. % benefit to this (actually, there is the disadvantage that you have to - .. % change your PATH to be able to find Python), but it is the basis for - .. % creating a fullblown Python application, porting the MacPython IDE, - .. % possibly using Python as a standard OSA scripting language and much - .. % more. You enable this with "configure --enable-framework". - .. % The other change is that most MacPython toolbox modules, which - .. % interface to all the MacOS APIs such as windowing, quicktime, - .. % scripting, etc. have been ported. Again, most of these are not of - .. % immedeate use, as they need a full application to be really useful, so - .. % they have been commented out in setup.py. People wanting to experiment - .. % can uncomment them. Gestalt and Internet Config modules are enabled by - .. % default. + .. Jack's original comments: + The main change is the possibility to build Python as a + framework. This installs a self-contained Python installation plus the + OSX framework "glue" into /Library/Frameworks/Python.framework (or + another location of choice). For now there is little immedeate added + benefit to this (actually, there is the disadvantage that you have to + change your PATH to be able to find Python), but it is the basis for + creating a fullblown Python application, porting the MacPython IDE, + possibly using Python as a standard OSA scripting language and much + more. You enable this with "configure --enable-framework". + The other change is that most MacPython toolbox modules, which + interface to all the MacOS APIs such as windowing, quicktime, + scripting, etc. have been ported. Again, most of these are not of + immedeate use, as they need a full application to be really useful, so + they have been commented out in setup.py. People wanting to experiment + can uncomment them. Gestalt and Internet Config modules are enabled by + default. * Keyword arguments passed to builtin functions that don't take them now cause a :exc:`TypeError` exception to be raised, with the message "*function* takes no @@ -1253,7 +1253,7 @@ Some of the more notable changes are: unpredictably depending on the platform. A call such as ``pow(2.0, 8.0, 7.0)`` will now raise a :exc:`TypeError` exception. -.. % ====================================================================== +.. ====================================================================== Acknowledgements diff --git a/Doc/whatsnew/2.3.rst b/Doc/whatsnew/2.3.rst index 7dd4930..f5c53c0 100644 --- a/Doc/whatsnew/2.3.rst +++ b/Doc/whatsnew/2.3.rst @@ -6,7 +6,7 @@ .. |release| replace:: 1.01 -.. % $Id: whatsnew23.tex 55005 2007-04-27 19:54:29Z guido.van.rossum $ +.. $Id: whatsnew23.tex 54631 2007-03-31 11:58:36Z georg.brandl $ This article explains the new features in Python 2.3. Python 2.3 was released on July 29, 2003. @@ -34,7 +34,7 @@ Reference and the Python Reference Manual. If you want to understand the complete implementation and design rationale, refer to the PEP for a particular new feature. -.. % ====================================================================== +.. ====================================================================== PEP 218: A Standard Set Datatype @@ -117,7 +117,7 @@ whether one set is a subset or superset of another:: PEP written by Greg V. Wilson. Implemented by Greg V. Wilson, Alex Martelli, and GvR. -.. % ====================================================================== +.. ====================================================================== .. _section-generators: @@ -248,7 +248,7 @@ a data structure. Written by Neil Schemenauer, Tim Peters, Magnus Lie Hetland. Implemented mostly by Neil Schemenauer and Tim Peters, with other fixes from the Python Labs crew. -.. % ====================================================================== +.. ====================================================================== .. _section-encodings: @@ -282,7 +282,7 @@ use characters outside of the usual alphanumerics. Written by Marc-André Lemburg and Martin von Löwis; implemented by Suzuki Hisao and Martin von Löwis. -.. % ====================================================================== +.. ====================================================================== PEP 273: Importing Modules from ZIP Archives @@ -329,7 +329,7 @@ import from the :file:`lib/` subdirectory within the archive. Just van Rossum that uses the import hooks described in :pep:`302`. See section :ref:`section-pep302` for a description of the new import hooks. -.. % ====================================================================== +.. ====================================================================== PEP 277: Unicode file name support for Windows NT @@ -363,7 +363,7 @@ Under MacOS, :func:`os.listdir` may now return Unicode filenames. Written by Neil Hodgson; implemented by Neil Hodgson, Martin von Löwis, and Mark Hammond. -.. % ====================================================================== +.. ====================================================================== PEP 278: Universal Newline Support @@ -398,7 +398,7 @@ This feature can be disabled when compiling Python by specifying the :pep:`278` - Universal Newline Support Written and implemented by Jack Jansen. -.. % ====================================================================== +.. ====================================================================== .. _section-enumerate: @@ -430,7 +430,7 @@ This can be rewritten using :func:`enumerate` as:: :pep:`279` - The enumerate() built-in function Written and implemented by Raymond D. Hettinger. -.. % ====================================================================== +.. ====================================================================== PEP 282: The logging Package @@ -536,7 +536,7 @@ documentation for all of the details. Reading :pep:`282` will also be helpful. :pep:`282` - A Logging System Written by Vinay Sajip and Trent Mick; implemented by Vinay Sajip. -.. % ====================================================================== +.. ====================================================================== .. _section-bool: @@ -608,7 +608,7 @@ instead of ``'1'`` and ``'0'``. :pep:`285` - Adding a bool type Written and implemented by GvR. -.. % ====================================================================== +.. ====================================================================== PEP 293: Codec Error Handling Callbacks @@ -640,7 +640,7 @@ characters and "xmlcharrefreplace" emits XML character references. :pep:`293` - Codec Error Handling Callbacks Written and implemented by Walter Dörwald. -.. % ====================================================================== +.. ====================================================================== .. _section-pep301: @@ -689,7 +689,7 @@ register --list-classifiers``. :pep:`301` - Package Index and Metadata for Distutils Written and implemented by Richard Jones. -.. % ====================================================================== +.. ====================================================================== .. _section-pep302: @@ -755,7 +755,7 @@ Pseudo-code for Python's new import logic, therefore, looks something like this :pep:`302` - New Import Hooks Written by Just van Rossum and Paul Moore. Implemented by Just van Rossum. -.. % ====================================================================== +.. ====================================================================== .. _section-pep305: @@ -801,7 +801,7 @@ of tuples or lists, quoting strings that contain the delimiter. Written and implemented by Kevin Altis, Dave Cole, Andrew McNamara, Skip Montanaro, Cliff Wells. -.. % ====================================================================== +.. ====================================================================== .. _section-pep307: @@ -844,7 +844,7 @@ codes for private use. Currently no codes have been specified. :pep:`307` - Extensions to the pickle protocol Written and implemented by Guido van Rossum and Tim Peters. -.. % ====================================================================== +.. ====================================================================== .. _section-slices: @@ -954,7 +954,7 @@ now the type object for the slice type, and is no longer a function. This is consistent with Python 2.2, where :class:`int`, :class:`str`, etc., underwent the same change. -.. % ====================================================================== +.. ====================================================================== Other Language Changes @@ -1042,8 +1042,6 @@ Here are all of the changes that Python 2.3 makes to the core Python language. objects available in the :mod:`types` module.) For example, you can create a new module object with the following code: - .. % XXX should new.py use PendingDeprecationWarning? - :: >>> import types @@ -1115,7 +1113,7 @@ Here are all of the changes that Python 2.3 makes to the core Python language. assigned to :attr:`__bases__` along the lines of those relating to assigning to an instance's :attr:`__class__` attribute. -.. % ====================================================================== +.. ====================================================================== String Changes @@ -1179,7 +1177,7 @@ String Changes the usual way when the only reference to them is from the internal dictionary of interned strings. (Implemented by Oren Tirosh.) -.. % ====================================================================== +.. ====================================================================== Optimizations @@ -1211,7 +1209,7 @@ Optimizations The net result of the 2.3 optimizations is that Python 2.3 runs the pystone benchmark around 25% faster than Python 2.2. -.. % ====================================================================== +.. ====================================================================== New, Improved, and Deprecated Modules @@ -1566,8 +1564,6 @@ complete list of changes, or look through the CVS logs for all the details. http://mail.python.org/pipermail/python-dev/2002-December/031107.html for a more detailed explanation of this change. (Implemented by Martin von Löwis.) - .. % - * Calling Tcl methods through :mod:`_tkinter` no longer returns only strings. Instead, if Tcl returns other objects those objects are converted to their Python equivalent, if one exists, or wrapped with a :class:`_tkinter.Tcl_Obj` @@ -1671,7 +1667,7 @@ complete list of changes, or look through the CVS logs for all the details. To implement this change, the :mod:`stringprep` module, the ``mkstringprep`` tool and the ``punycode`` encoding have been added. -.. % ====================================================================== +.. ====================================================================== Date/Time Type @@ -1726,7 +1722,7 @@ support for parsing strings and getting back a :class:`date` or For more information, refer to the module's reference documentation. (Contributed by Tim Peters.) -.. % ====================================================================== +.. ====================================================================== The optparse Module @@ -1791,7 +1787,7 @@ See the module's documentation for more details. Optik was written by Greg Ward, with suggestions from the readers of the Getopt SIG. -.. % ====================================================================== +.. ====================================================================== .. _section-pymalloc: @@ -1864,7 +1860,7 @@ and bundle it with the source of your extension. of the file :file:`Objects/obmalloc.c` in the Python source code. The above link points to the file within the SourceForge CVS browser. -.. % ====================================================================== +.. ====================================================================== Build and C API Changes @@ -1926,7 +1922,7 @@ Changes to Python's build process and to the C API include: the type name leading up to the final period will no longer have the desired effect. For more detail, read the API reference documentation or the source. -.. % ====================================================================== +.. ====================================================================== Port-Specific Changes @@ -1952,7 +1948,7 @@ source distribution, were updated for 2.3. (Contributed by Sean Reifschneider.) Other new platforms now supported by Python include AtheOS (http://www.atheos.cx/), GNU/Hurd, and OpenVMS. -.. % ====================================================================== +.. ====================================================================== .. _section-other: @@ -2003,7 +1999,7 @@ Some of the more notable changes are: executed next. A ``jump`` command has been added to the :mod:`pdb` debugger taking advantage of this new feature. (Implemented by Richie Hindle.) -.. % ====================================================================== +.. ====================================================================== Porting to Python 2.3 @@ -2042,8 +2038,6 @@ code: desired upper bits. For example, to clear just the top bit (bit 31), you could write ``0xffffffffL &~(1L<<31)``. - .. % The empty groups below prevent conversion to guillemets. - * You can no longer disable assertions by assigning to ``__debug__``. * The Distutils :func:`setup` function has gained various new keyword arguments @@ -2065,7 +2059,7 @@ code: * Names of extension types defined by the modules included with Python now contain the module and a ``'.'`` in front of the type name. -.. % ====================================================================== +.. ====================================================================== .. _acks: diff --git a/Doc/whatsnew/2.4.rst b/Doc/whatsnew/2.4.rst index d782f5d..bf30ac1 100644 --- a/Doc/whatsnew/2.4.rst +++ b/Doc/whatsnew/2.4.rst @@ -6,10 +6,10 @@ .. |release| replace:: 1.02 -.. % $Id: whatsnew24.tex 55005 2007-04-27 19:54:29Z guido.van.rossum $ -.. % Don't write extensive text for new sections; I'll do that. -.. % Feel free to add commented-out reminders of things that need -.. % to be covered. --amk +.. $Id: whatsnew24.tex 54632 2007-03-31 11:59:54Z georg.brandl $ +.. Don't write extensive text for new sections; I'll do that. +.. Feel free to add commented-out reminders of things that need +.. to be covered. --amk This article explains the new features in Python 2.4.1, released on March 30, 2005. @@ -29,7 +29,7 @@ Python Library Reference and the Python Reference Manual. Often you will be referred to the PEP for a particular new feature for explanations of the implementation and design rationale. -.. % ====================================================================== +.. ====================================================================== PEP 218: Built-In Set Objects @@ -83,7 +83,7 @@ currently no plans to deprecate the module. Originally proposed by Greg Wilson and ultimately implemented by Raymond Hettinger. -.. % ====================================================================== +.. ====================================================================== PEP 237: Unifying Long Integers and Integers @@ -108,7 +108,7 @@ the correct answer, 8589934592. Original PEP written by Moshe Zadka and GvR. The changes for 2.4 were implemented by Kalle Svensson. -.. % ====================================================================== +.. ====================================================================== PEP 289: Generator Expressions @@ -165,7 +165,7 @@ list comprehensions match generator expressions in this respect. Proposed by Raymond Hettinger and implemented by Jiwon Seo with early efforts steered by Hye-Shik Chang. -.. % ====================================================================== +.. ====================================================================== PEP 292: Simpler String Substitutions @@ -199,25 +199,19 @@ PEP 292 adds a :class:`Template` class to the :mod:`string` module that uses If a key is missing from the dictionary, the :meth:`substitute` method will raise a :exc:`KeyError`. There's also a :meth:`safe_substitute` method that -ignores missing keys: - -.. % $ Terminate $-mode for Emacs - -:: +ignores missing keys:: >>> t = string.Template('$page: $title') >>> t.safe_substitute({'page':3}) '3: $title' -.. % $ Terminate math-mode for Emacs - .. seealso:: :pep:`292` - Simpler String Substitutions Written and implemented by Barry Warsaw. -.. % ====================================================================== +.. ====================================================================== PEP 318: Decorators for Functions and Methods @@ -346,7 +340,7 @@ returned. http://www.python.org/moin/PythonDecoratorLibrary This Wiki page contains several examples of decorators. -.. % ====================================================================== +.. ====================================================================== PEP 322: Reverse Iteration @@ -382,7 +376,7 @@ you want to reverse an iterator, first convert it to a list with :func:`list`. :pep:`322` - Reverse Iteration Written and implemented by Raymond Hettinger. -.. % ====================================================================== +.. ====================================================================== PEP 324: New subprocess Module @@ -468,7 +462,7 @@ of the PEP is highly recommended. Written and implemented by Peter Ã…strand, with assistance from Fredrik Lundh and others. -.. % ====================================================================== +.. ====================================================================== PEP 327: Decimal Data Type @@ -698,7 +692,7 @@ includes a quick-start tutorial and a reference. proposed as a standard, and underlies the new Python decimal type. Much of this material was written by Mike Cowlishaw, designer of the Rexx language. -.. % ====================================================================== +.. ====================================================================== PEP 328: Multi-line Imports @@ -734,7 +728,7 @@ PEP was not implemented for Python 2.4, but was completed for Python 2.5. :pep:`328` - Imports: Multi-Line and Absolute/Relative Written by Aahz. Multi-line imports were implemented by Dima Dorfman. -.. % ====================================================================== +.. ====================================================================== PEP 331: Locale-Independent Float/String Conversions @@ -773,7 +767,7 @@ letting extensions such as GTK+ produce the correct results. :pep:`331` - Locale-Independent Float/String Conversions Written by Christian R. Reis, and implemented by Gustavo Carneiro. -.. % ====================================================================== +.. ====================================================================== Other Language Changes @@ -932,7 +926,7 @@ Here are all of the changes that Python 2.4 makes to the core Python language. * :const:`None` is now a constant; code that binds a new value to the name ``None`` is now a syntax error. (Contributed by Raymond Hettinger.) -.. % ====================================================================== +.. ====================================================================== Optimizations @@ -983,15 +977,13 @@ benchmark around 5% faster than Python 2.3 and 35% faster than Python 2.2. measurement of Python's performance. Your own applications may show greater or smaller benefits from Python 2.4.) -.. % pystone is almost useless for comparing different versions of Python; -.. % instead, it excels at predicting relative Python performance on -.. % different machines. -.. % So, this section would be more informative if it used other tools -.. % such as pybench and parrotbench. For a more application oriented -.. % benchmark, try comparing the timings of test_decimal.py under 2.3 -.. % and 2.4. +.. pystone is almost useless for comparing different versions of Python; + instead, it excels at predicting relative Python performance on different + machines. So, this section would be more informative if it used other tools + such as pybench and parrotbench. For a more application oriented benchmark, + try comparing the timings of test_decimal.py under 2.3 and 2.4. -.. % ====================================================================== +.. ====================================================================== New, Improved, and Deprecated Modules @@ -1322,9 +1314,9 @@ complete list of changes, or look through the CVS logs for all the details. * The :mod:`mpz`, :mod:`rotor`, and :mod:`xreadlines` modules have been removed. -.. % ====================================================================== -.. % whole new modules get described in subsections here -.. % ===================== +.. ====================================================================== +.. whole new modules get described in subsections here +.. ===================== cookielib @@ -1348,7 +1340,7 @@ URLs. This module was contributed by John J. Lee. -.. % ================== +.. ================== doctest @@ -1447,7 +1439,7 @@ you get the following output:: +rather ********************************************************************** -.. % ====================================================================== +.. ====================================================================== Build and C API Changes @@ -1500,7 +1492,7 @@ Some of the changes to Python's build process and to the C API are: * The :ctype:`tracebackobject` type has been renamed to :ctype:`PyTracebackObject`. -.. % ====================================================================== +.. ====================================================================== Port-Specific Changes @@ -1509,7 +1501,7 @@ Port-Specific Changes * The Windows port now builds under MSVC++ 7.1 as well as version 6. (Contributed by Martin von Löwis.) -.. % ====================================================================== +.. ====================================================================== Porting to Python 2.4 @@ -1556,7 +1548,7 @@ code: for certain illegal values; previously these errors would pass silently. For example, you can no longer set a handler on the :const:`SIGKILL` signal. -.. % ====================================================================== +.. ====================================================================== .. _acks: diff --git a/Doc/whatsnew/2.5.rst b/Doc/whatsnew/2.5.rst index 497c612..a5169f3 100644 --- a/Doc/whatsnew/2.5.rst +++ b/Doc/whatsnew/2.5.rst @@ -6,8 +6,8 @@ .. |release| replace:: 1.01 -.. % $Id: whatsnew25.tex 56611 2007-07-29 08:26:10Z georg.brandl $ -.. % Fix XXX comments +.. $Id: whatsnew25.tex 56611 2007-07-29 08:26:10Z georg.brandl $ +.. Fix XXX comments This article explains the new features in Python 2.5. The final release of Python 2.5 is scheduled for August 2006; :pep:`356` describes the planned @@ -45,7 +45,7 @@ and design rationale, refer to the PEP for a particular new feature. Comments, suggestions, and error reports for this document are welcome; please e-mail them to the author or open a bug in the Python bug tracker. -.. % ====================================================================== +.. ====================================================================== .. _pep-308: @@ -123,7 +123,7 @@ conditional expressions, you won't run into this case. PEP written by Guido van Rossum and Raymond D. Hettinger; implemented by Thomas Wouters. -.. % ====================================================================== +.. ====================================================================== .. _pep-309: @@ -201,7 +201,7 @@ example would be:: PEP proposed and written by Peter Harris; implemented by Hye-Shik Chang and Nick Coghlan, with adaptations by Raymond Hettinger. -.. % ====================================================================== +.. ====================================================================== .. _pep-314: @@ -248,7 +248,7 @@ Package uploading was implemented by Martin von Löwis and Richard Jones. PEP proposed and written by A.M. Kuchling, Richard Jones, and Fred Drake; implemented by Richard Jones and Fred Drake. -.. % ====================================================================== +.. ====================================================================== .. _pep-328: @@ -333,7 +333,7 @@ statement, only the ``from ... import`` form. http://codespeak.net/py/current/doc/index.html The py library by Holger Krekel, which contains the :mod:`py.std` package. -.. % ====================================================================== +.. ====================================================================== .. _pep-338: @@ -359,7 +359,7 @@ archive. :pep:`338` - Executing modules as scripts PEP written and implemented by Nick Coghlan. -.. % ====================================================================== +.. ====================================================================== .. _pep-341: @@ -407,7 +407,7 @@ in the *final-block* is still run. :pep:`341` - Unifying try-except and try-finally PEP written by Georg Brandl; implementation by Thomas Lee. -.. % ====================================================================== +.. ====================================================================== .. _pep-342: @@ -553,7 +553,7 @@ exhausted. http://www.sidhe.org/~dan/blog/archives/000178.html An explanation of coroutines from a Perl point of view, written by Dan Sugalski. -.. % ====================================================================== +.. ====================================================================== .. _pep-343: @@ -803,7 +803,7 @@ bound to a variable, and calls ``object.close`` at the end of the block. :: The documentation for the :mod:`contextlib` module. -.. % ====================================================================== +.. ====================================================================== .. _pep-352: @@ -862,7 +862,7 @@ to be able to remove the string-exception feature in a few releases. :pep:`352` - Required Superclass for Exceptions PEP written by Brett Cannon and Guido van Rossum; implemented by Brett Cannon. -.. % ====================================================================== +.. ====================================================================== .. _pep-353: @@ -921,7 +921,7 @@ read to learn about supporting 64-bit platforms. :pep:`353` - Using ssize_t as the index type PEP written and implemented by Martin von Löwis. -.. % ====================================================================== +.. ====================================================================== .. _pep-357: @@ -964,7 +964,7 @@ A corresponding :attr:`nb_index` slot was added to the C-level :pep:`357` - Allowing Any Object to be Used for Slicing PEP written and implemented by Travis Oliphant. -.. % ====================================================================== +.. ====================================================================== .. _other-lang: @@ -1024,7 +1024,7 @@ Here are all of the changes that Python 2.5 makes to the core Python language. (Implemented by Georg Brandl following a suggestion by Tom Lynn.) - .. % RFE #1491485 + .. RFE #1491485 * The :func:`min` and :func:`max` built-in functions gained a ``key`` keyword parameter analogous to the ``key`` argument for :meth:`sort`. This parameter @@ -1055,7 +1055,7 @@ Here are all of the changes that Python 2.5 makes to the core Python language. return non-negative numbers, and users often seem to use ``id(self)`` in :meth:`__hash__` methods (though this is discouraged). - .. % Bug #1536021 + .. Bug #1536021 * ASCII is now the default encoding for modules. It's now a syntax error if a module contains string literals with 8-bit characters but doesn't have an @@ -1106,7 +1106,7 @@ Here are all of the changes that Python 2.5 makes to the core Python language. (Implemented by Brett Cannon.) -.. % ====================================================================== +.. ====================================================================== .. _interactive: @@ -1129,7 +1129,7 @@ The Python executable now accepts the standard long options :option:`--help` and :option:`--version`; on Windows, it also accepts the :option:`/?` option for displaying a help message. (Implemented by Georg Brandl.) -.. % ====================================================================== +.. ====================================================================== .. _opts: @@ -1155,14 +1155,14 @@ marked in the following list. Andrew Dalke at the NeedForSpeed sprint. Character maps were improved by Walter Dörwald and Martin von Löwis.) - .. % Patch 1313939, 1359618 + .. Patch 1313939, 1359618 * The :func:`long(str, base)` function is now faster on long digit strings because fewer intermediate results are calculated. The peak is for strings of around 800--1000 digits where the function is 6 times faster. (Contributed by Alan McIntyre and committed at the NeedForSpeed sprint.) - .. % Patch 1442927 + .. Patch 1442927 * It's now illegal to mix iterating over a file with ``for line in file`` and calling the file object's :meth:`read`/:meth:`readline`/:meth:`readlines` @@ -1172,7 +1172,7 @@ marked in the following list. methods will now trigger a :exc:`ValueError` from the :meth:`read\*` method. (Implemented by Thomas Wouters.) - .. % Patch 1397960 + .. Patch 1397960 * The :mod:`struct` module now compiles structure format strings into an internal representation and caches this representation, yielding a 20% speedup. @@ -1194,8 +1194,8 @@ marked in the following list. sprint.) Frame objects are also slightly smaller, which may improve cache locality and reduce memory usage a bit. (Contributed by Neal Norwitz.) - .. % Patch 876206 - .. % Patch 1337051 + .. Patch 876206 + .. Patch 1337051 * Python's built-in exceptions are now new-style classes, a change that speeds up instantiation considerably. Exception handling in Python 2.5 is therefore @@ -1206,9 +1206,9 @@ marked in the following list. that the interpreter makes fewer :cfunc:`open` and :cfunc:`stat` calls on startup. (Contributed by Martin von Löwis and Georg Brandl.) - .. % Patch 921466 + .. Patch 921466 -.. % ====================================================================== +.. ====================================================================== .. _modules: @@ -1234,7 +1234,7 @@ complete list of changes, or look through the SVN logs for all the details. entire input was fed to the non-incremental codec. See the :mod:`codecs` module documentation for details. (Designed and implemented by Walter Dörwald.) - .. % Patch 1436130 + .. Patch 1436130 * The :mod:`collections` module gained a new type, :class:`defaultdict`, that subclasses the standard :class:`dict` type. The new type mostly behaves like a @@ -1331,12 +1331,12 @@ complete list of changes, or look through the SVN logs for all the details. easier to use non-ASCII characters in tests contained within a docstring. (Contributed by Bjorn Tillenius.) - .. % Patch 1080727 + .. Patch 1080727 * The :mod:`email` package has been updated to version 4.0. (Contributed by Barry Warsaw.) - .. % XXX need to provide some more detail here + .. XXX need to provide some more detail here * The :mod:`fileinput` module was made more flexible. Unicode filenames are now supported, and a *mode* parameter that defaults to ``"r"`` was added to the @@ -1394,7 +1394,7 @@ complete list of changes, or look through the SVN logs for all the details. (Contributed by Georg Brandl.) - .. % Patch 1180296 + .. Patch 1180296 * The :mod:`mailbox` module underwent a massive rewrite to add the capability to modify mailboxes in addition to reading them. A new set of classes that include @@ -1462,7 +1462,7 @@ complete list of changes, or look through the SVN logs for all the details. :attr:`st_birthtime`. The :attr:`st_flags` member is also available, if the platform supports it. (Contributed by Antti Louko and Diego Pettenò.) - .. % (Patch 1180695, 1212117) + .. (Patch 1180695, 1212117) * The Python debugger provided by the :mod:`pdb` module can now store lists of commands to execute when a breakpoint is reached and execution stops. Once @@ -1471,7 +1471,7 @@ complete list of changes, or look through the SVN logs for all the details. include commands that resume execution, such as ``continue`` or ``next``. (Contributed by Grégoire Dooms.) - .. % Patch 790710 + .. Patch 790710 * The :mod:`pickle` and :mod:`cPickle` modules no longer accept a return value of ``None`` from the :meth:`__reduce__` method; the method must return a tuple @@ -1512,14 +1512,14 @@ complete list of changes, or look through the SVN logs for all the details. :mod:`readline` module and therefore now works on non-Unix platforms. (Patch from Robert Kiendl.) - .. % Patch #1472854 + .. Patch #1472854 * The :mod:`SimpleXMLRPCServer` and :mod:`DocXMLRPCServer` classes now have a :attr:`rpc_paths` attribute that constrains XML-RPC operations to a limited set of URL paths; the default is to allow only ``'/'`` and ``'/RPC2'``. Setting :attr:`rpc_paths` to ``None`` or an empty tuple disables this path checking. - .. % Bug #1473048 + .. Bug #1473048 * The :mod:`socket` module now supports :const:`AF_NETLINK` sockets on Linux, thanks to a patch from Philippe Biondi. Netlink sockets are a Linux-specific @@ -1585,7 +1585,7 @@ complete list of changes, or look through the SVN logs for all the details. The compression used for a tarfile opened in stream mode can now be autodetected using the mode ``'r|*'``. (Contributed by Lars Gustäbel.) - .. % patch 918101 + .. patch 918101 * The :mod:`threading` module now lets you set the stack size used when new threads are created. The :func:`stack_size([*size*])` function returns the @@ -1593,7 +1593,7 @@ complete list of changes, or look through the SVN logs for all the details. sets a new value. Not all platforms support changing the stack size, but Windows, POSIX threading, and OS/2 all do. (Contributed by Andrew MacIntyre.) - .. % Patch 1454481 + .. Patch 1454481 * The :mod:`unicodedata` module has been updated to use version 4.1.0 of the Unicode character database. Version 3.2.0 is required by some specifications, @@ -1643,29 +1643,29 @@ complete list of changes, or look through the SVN logs for all the details. of additional browsers were added to the supported list such as Firefox, Opera, Konqueror, and elinks. (Contributed by Oleg Broytmann and Georg Brandl.) - .. % Patch #754022 + .. Patch #754022 * The :mod:`xmlrpclib` module now supports returning :class:`datetime` objects for the XML-RPC date type. Supply ``use_datetime=True`` to the :func:`loads` function or the :class:`Unmarshaller` class to enable this feature. (Contributed by Skip Montanaro.) - .. % Patch 1120353 + .. Patch 1120353 * The :mod:`zipfile` module now supports the ZIP64 version of the format, meaning that a .zip archive can now be larger than 4 GiB and can contain individual files larger than 4 GiB. (Contributed by Ronald Oussoren.) - .. % Patch 1446489 + .. Patch 1446489 * The :mod:`zlib` module's :class:`Compress` and :class:`Decompress` objects now support a :meth:`copy` method that makes a copy of the object's internal state and returns a new :class:`Compress` or :class:`Decompress` object. (Contributed by Chris AtLee.) - .. % Patch 1435422 + .. Patch 1435422 -.. % ====================================================================== +.. ====================================================================== .. _module-ctypes: @@ -1746,7 +1746,7 @@ modules, now that :mod:`ctypes` is included with core Python. The documentation for the :mod:`ctypes` module. -.. % ====================================================================== +.. ====================================================================== .. _module-etree: @@ -1863,7 +1863,7 @@ read the package's official documentation for more details. http://effbot.org/zone/element-index.htm Official documentation for ElementTree. -.. % ====================================================================== +.. ====================================================================== .. _module-hashlib: @@ -1917,7 +1917,7 @@ with the same digest state. The documentation for the :mod:`hashlib` module. -.. % ====================================================================== +.. ====================================================================== .. _module-sqlite: @@ -2026,7 +2026,7 @@ http://www.sqlite.org. :pep:`249` - Database API Specification 2.0 PEP written by Marc-André Lemburg. -.. % ====================================================================== +.. ====================================================================== .. _module-wsgiref: @@ -2039,7 +2039,7 @@ between web servers and Python web applications and is described in :pep:`333`. The :mod:`wsgiref` package is a reference implementation of the WSGI specification. -.. % XXX should this be in a PEP 333 section instead? +.. XXX should this be in a PEP 333 section instead? The package includes a basic HTTP server that will run a WSGI application; this server is useful for debugging but isn't intended for production use. Setting @@ -2054,8 +2054,8 @@ up a server takes only a few lines of code:: httpd = simple_server.make_server(host, port, wsgi_app) httpd.serve_forever() -.. % XXX discuss structure of WSGI applications? -.. % XXX provide an example using Django or some other framework? +.. XXX discuss structure of WSGI applications? +.. XXX provide an example using Django or some other framework? .. seealso:: @@ -2066,7 +2066,7 @@ up a server takes only a few lines of code:: :pep:`333` - Python Web Server Gateway Interface v1.0 PEP written by Phillip J. Eby. -.. % ====================================================================== +.. ====================================================================== .. _build-api: @@ -2125,8 +2125,8 @@ Changes to Python's build process and to the C API include: Schemenauer, plus the participants in a number of AST sprints at conferences such as PyCon. - .. % List of names taken from Jeremy's python-dev post at - .. % http://mail.python.org/pipermail/python-dev/2005-October/057500.html + .. List of names taken from Jeremy's python-dev post at + .. http://mail.python.org/pipermail/python-dev/2005-October/057500.html * Evan Jones's patch to obmalloc, first described in a talk at PyCon DC 2005, was applied. Python 2.4 allocated small objects in 256K-sized arenas, but never @@ -2194,7 +2194,7 @@ Changes to Python's build process and to the C API include: range = PyObject_CallFunction((PyObject*) &PyRange_Type, "lll", start, stop, step); -.. % ====================================================================== +.. ====================================================================== .. _ports: @@ -2214,7 +2214,7 @@ Port-Specific Changes extension modules. :file:`.pyd` is now the only filename extension that will be searched for. -.. % ====================================================================== +.. ====================================================================== .. _porting: @@ -2269,7 +2269,7 @@ code: allocated with one family's :cfunc:`\*_Malloc` must be freed with the corresponding family's :cfunc:`\*_Free` function. -.. % ====================================================================== +.. ====================================================================== .. _acks: diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst index b29cb7b..4a8eb76 100644 --- a/Doc/whatsnew/2.6.rst +++ b/Doc/whatsnew/2.6.rst @@ -2,54 +2,53 @@ What's New in Python 2.6 **************************** -.. % XXX mention switch to reST for documentation -.. % XXX mention switch to Roundup for bug tracking +.. XXX mention switch to Roundup for bug tracking :Author: A.M. Kuchling :Release: |release| :Date: |today| -.. % $Id: whatsnew26.tex 55963 2007-06-13 18:07:49Z guido.van.rossum $ -.. % Rules for maintenance: -.. % -.. % * Anyone can add text to this document. Do not spend very much time -.. % on the wording of your changes, because your text will probably -.. % get rewritten to some degree. -.. % -.. % * The maintainer will go through Misc/NEWS periodically and add -.. % changes; it's therefore more important to add your changes to -.. % Misc/NEWS than to this file. -.. % -.. % * This is not a complete list of every single change; completeness -.. % is the purpose of Misc/NEWS. Some changes I consider too small -.. % or esoteric to include. If such a change is added to the text, -.. % I'll just remove it. (This is another reason you shouldn't spend -.. % too much time on writing your addition.) -.. % -.. % * If you want to draw your new text to the attention of the -.. % maintainer, add 'XXX' to the beginning of the paragraph or -.. % section. -.. % -.. % * It's OK to just add a fragmentary note about a change. For -.. % example: "XXX Describe the transmogrify() function added to the -.. % socket module." The maintainer will research the change and -.. % write the necessary text. -.. % -.. % * You can comment out your additions if you like, but it's not -.. % necessary (especially when a final release is some months away). -.. % -.. % * Credit the author of a patch or bugfix. Just the name is -.. % sufficient; the e-mail address isn't necessary. -.. % -.. % * It's helpful to add the bug/patch number as a comment: -.. % -.. % % Patch 12345 -.. % XXX Describe the transmogrify() function added to the socket -.. % module. -.. % (Contributed by P.Y. Developer.) -.. % -.. % This saves the maintainer the effort of going through the SVN log -.. % when researching a change. +.. $Id: whatsnew26.tex 55746 2007-06-02 18:33:53Z neal.norwitz $ + Rules for maintenance: + + * Anyone can add text to this document. Do not spend very much time + on the wording of your changes, because your text will probably + get rewritten to some degree. + + * The maintainer will go through Misc/NEWS periodically and add + changes; it's therefore more important to add your changes to + Misc/NEWS than to this file. + + * This is not a complete list of every single change; completeness + is the purpose of Misc/NEWS. Some changes I consider too small + or esoteric to include. If such a change is added to the text, + I'll just remove it. (This is another reason you shouldn't spend + too much time on writing your addition.) + + * If you want to draw your new text to the attention of the + maintainer, add 'XXX' to the beginning of the paragraph or + section. + + * It's OK to just add a fragmentary note about a change. For + example: "XXX Describe the transmogrify() function added to the + socket module." The maintainer will research the change and + write the necessary text. + + * You can comment out your additions if you like, but it's not + necessary (especially when a final release is some months away). + + * Credit the author of a patch or bugfix. Just the name is + sufficient; the e-mail address isn't necessary. + + * It's helpful to add the bug/patch number as a comment: + + % Patch 12345 + XXX Describe the transmogrify() function added to the socket + module. + (Contributed by P.Y. Developer.) + + This saves the maintainer the effort of going through the SVN log + when researching a change. This article explains the new features in Python 2.6. No release date for Python 2.6 has been set; it will probably be released in mid 2008. @@ -60,14 +59,14 @@ should refer to the documentation for Python 2.6. If you want to understand the complete implementation and design rationale, refer to the PEP for a particular new feature. -.. % Compare with previous release in 2 - 3 sentences here. -.. % add hyperlink when the documentation becomes available online. +.. Compare with previous release in 2 - 3 sentences here. + add hyperlink when the documentation becomes available online. -.. % ====================================================================== -.. % Large, PEP-level features and changes should be described here. -.. % Should there be a new section here for 3k migration? -.. % Or perhaps a more general section describing module changes/deprecation? -.. % ====================================================================== +.. ======================================================================== +.. Large, PEP-level features and changes should be described here. +.. Should there be a new section here for 3k migration? +.. Or perhaps a more general section describing module changes/deprecation? +.. ======================================================================== Python 3.0 ================ @@ -156,7 +155,7 @@ conversion to LaTeX as an output format. `Docutils `__: The fundamental reStructured Text parser and toolset. - `Documenting Python `__: Describes how to write for + :ref:`documenting-index`: Describes how to write for Python's documentation. @@ -407,7 +406,7 @@ bound to a variable, and calls ``object.close`` at the end of the block. :: The documentation for the :mod:`contextlib` module. -.. % ====================================================================== +.. ====================================================================== .. _pep-0366: @@ -425,7 +424,7 @@ importers can then set :attr:`__package__`. The :mod:`runpy` module that implements the :option:`-m` switch now does this, so relative imports can now be used in scripts running from inside a package. -.. % ====================================================================== +.. ====================================================================== .. _pep-3110: @@ -475,7 +474,7 @@ work. :pep:`3110` - Catching Exceptions in Python 3000 PEP written and implemented by Collin Winter. -.. % ====================================================================== +.. ====================================================================== .. _pep-3119: @@ -509,14 +508,14 @@ Here are all of the changes that Python 2.6 makes to the core Python language. >>> f(**ud) ['a', 'b'] - .. % Patch 1686487 + .. Patch 1686487 * The built-in types now have improved support for extended slicing syntax, where various combinations of ``(start, stop, step)`` are supplied. Previously, the support was partial and certain corner cases wouldn't work. (Implemented by Thomas Wouters.) - .. % Revision 57619 + .. Revision 57619 * Properties now have two attributes, :attr:`setter` and :attr:`deleter`, that are useful shortcuts for @@ -544,14 +543,14 @@ Here are all of the changes that Python 2.6 makes to the core Python language. This is a backport of a Python 3.0 change. (Contributed by Mark Dickinson.) - .. % Patch #1675423 + .. Patch #1675423 A numerical nicety: when creating a complex number from two floats on systems that support signed zeros (-0 and +0), the :func:`complex()` constructor will now preserve the sign of the zero. - .. % Patch 1507 + .. Patch 1507 * Changes to the :class:`Exception` interface as dictated by :pep:`352` continue to be made. For 2.6, @@ -564,26 +563,26 @@ Here are all of the changes that Python 2.6 makes to the core Python language. will not inadvertently catch :exc:`GeneratorExit`. (Contributed by Chad Austin.) - .. % Patch #1537 + .. Patch #1537 * The :func:`compile` built-in function now accepts keyword arguments as well as positional parameters. (Contributed by Thomas Wouters.) - .. % Patch 1444529 + .. Patch 1444529 * The :func:`complex` constructor now accepts strings containing parenthesized complex numbers, letting ``complex(repr(cmplx))`` will now round-trip values. For example, ``complex('(3+4j)')`` now returns the value (3+4j). - .. % Patch 1491866 + .. Patch 1491866 * The string :meth:`translate` method now accepts ``None`` as the translation table parameter, which is treated as the identity transformation. This makes it easier to carry out operations that only delete characters. (Contributed by Bengt Richter.) - .. % Patch 1193128 + .. Patch 1193128 * The built-in :func:`dir` function now checks for a :meth:`__dir__` method on the objects it receives. This method must return a list @@ -592,14 +591,14 @@ Here are all of the changes that Python 2.6 makes to the core Python language. Objects that have :meth:`__getattr__` or :meth:`__getattribute__` methods can use this to advertise pseudo-attributes they will honor. - .. % Patch 1591665 + .. Patch 1591665 * An obscure change: when you use the the :func:`locals` function inside a :keyword:`class` statement, the resulting dictionary no longer returns free variables. (Free variables, in this case, are variables referred to in the :keyword:`class` statement that aren't attributes of the class.) -.. % ====================================================================== +.. ====================================================================== Optimizations @@ -612,7 +611,7 @@ Optimizations The net result of the 2.6 optimizations is that Python 2.6 runs the pystone benchmark around XX% faster than Python 2.5. -.. % ====================================================================== +.. ====================================================================== New, Improved, and Deprecated Modules @@ -627,7 +626,7 @@ complete list of changes, or look through the CVS logs for all the details. available, instead of restricting itself to protocol 1. (Contributed by W. Barnes.) - .. % Patch 1551443 + .. Patch 1551443 * A new data type in the :mod:`collections` module: :class:`namedtuple(typename, fieldnames)` is a factory function that creates subclasses of the standard tuple @@ -677,14 +676,14 @@ complete list of changes, or look through the CVS logs for all the details. * The :mod:`ctypes` module now supports a :class:`c_bool` datatype that represents the C99 ``bool`` type. (Contributed by David Remahl.) - .. % Patch 1649190 + .. Patch 1649190 The :mod:`ctypes` string, buffer and array types also have improved support for extended slicing syntax, where various combinations of ``(start, stop, step)`` are supplied. (Implemented by Thomas Wouters.) - .. % Revision 57769 + .. Revision 57769 * A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes @@ -722,12 +721,12 @@ complete list of changes, or look through the CVS logs for all the details. to drop the built-in in the 2.x series. (Patched by Christian Heimes.) - .. % Patch 1739906 + .. Patch 1739906 * The :func:`glob.glob` function can now return Unicode filenames if a Unicode path was used and Unicode filenames are matched within the directory. - .. % Patch #1001604 + .. Patch #1001604 * The :mod:`gopherlib` module has been removed. @@ -760,7 +759,7 @@ complete list of changes, or look through the CVS logs for all the details. :func:`macostools.touched` function to be removed because it depended on the :mod:`macfs` module. - .. % Patch #1490190 + .. Patch #1490190 * The :mod:`new` module has been removed from Python 3.0. Importing it therefore @@ -783,13 +782,13 @@ complete list of changes, or look through the CVS logs for all the details. into an infinite recursion if there's a symlink that points to a parent directory. - .. % Patch 1273829 + .. Patch 1273829 * The ``os.environ`` object's :meth:`clear` method will now unset the environment variables using :func:`os.unsetenv` in addition to clearing the object's keys. (Contributed by Martin Horcicka.) - .. % Patch #1181 + .. Patch #1181 * In the :mod:`os.path` module, the :func:`splitext` function has been changed to not split on leading period characters. @@ -797,27 +796,27 @@ complete list of changes, or look through the CVS logs for all the details. For example, ``os.path.splitext('.ipython')`` now returns ``('.ipython', '')`` instead of ``('', '.ipython')``. - .. % Bug #115886 + .. Bug #115886 A new function, :func:`relpath(path, start)` returns a relative path from the ``start`` path, if it's supplied, or from the current working directory to the destination ``path``. (Contributed by Richard Barran.) - .. % Patch 1339796 + .. Patch 1339796 On Windows, :func:`os.path.expandvars` will now expand environment variables in the form "%var%", and "~user" will be expanded into the user's home directory path. (Contributed by Josiah Carlson.) - .. % Patch 957650 + .. Patch 957650 * The Python debugger provided by the :mod:`pdb` module gained a new command: "run" restarts the Python program being debugged, and can optionally take new command-line arguments for the program. (Contributed by Rocky Bernstein.) - .. % Patch #1393667 + .. Patch #1393667 * New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags` are wrappers for the corresponding system calls (where they're available). @@ -833,7 +832,7 @@ complete list of changes, or look through the CVS logs for all the details. on earlier versions of Python. (Contributed by Shawn Ligocki.) - .. % Issue 1727780 + .. Issue 1727780 * The :mod:`rgbimg` module has been removed. @@ -876,7 +875,7 @@ complete list of changes, or look through the CVS logs for all the details. added by Facundo Batista; LMTP implemented by Leif Hedstrom.) - .. % Patch #957003 + .. Patch #957003 * A new variable in the :mod:`sys` module, :attr:`float_info`, is a dictionary @@ -887,7 +886,7 @@ complete list of changes, or look through the CVS logs for all the details. (smallest difference between 1.0 and the next largest value representable), and several others. (Contributed by Christian Heimes.) - .. % Patch 1534 + .. Patch 1534 * The :mod:`tarfile` module now supports POSIX.1-2001 (pax) and POSIX.1-1988 (ustar) format tarfiles, in addition to the GNU tar @@ -923,7 +922,7 @@ complete list of changes, or look through the CVS logs for all the details. behaviour can now be changed by passing ``delete=False`` to the constructor. (Contributed by Damien Miller.) - .. % Patch #1537850 + .. Patch #1537850 * The :mod:`test.test_support` module now contains a :func:`EnvironmentVarGuard` @@ -960,7 +959,7 @@ complete list of changes, or look through the CVS logs for all the details. whitespace. >>> - .. % Patch #1581073 + .. Patch #1581073 * The :mod:`timeit` module now accepts callables as well as strings for the statement being timed and for the setup code. @@ -970,7 +969,7 @@ complete list of changes, or look through the CVS logs for all the details. ``timeit(stmt, setup, time, number)`` create an instance and call the corresponding method. (Contributed by Erik Demaine.) - .. % Patch #1533909 + .. Patch #1533909 * An optional ``timeout`` parameter was added to the :func:`urllib.urlopen` function and the @@ -995,7 +994,7 @@ complete list of changes, or look through the CVS logs for all the details. open the socket and begin listening for connections. (Contributed by Peter Parente.) - .. % Patch 1599845 + .. Patch 1599845 :class:`SimpleXMLRPCServer` also has a :attr:`_send_traceback_header` attribute; if true, the exception and formatted traceback are returned @@ -1005,8 +1004,8 @@ complete list of changes, or look through the CVS logs for all the details. information. (Contributed by Alan McIntyre as part of his project for Google's Summer of Code 2007.) -.. % ====================================================================== -.. % whole new modules get described in subsections here +.. ====================================================================== +.. whole new modules get described in subsections here Improved SSL Support -------------------------------------------------- @@ -1028,7 +1027,7 @@ XXX Certain features require the OpenSSL package to be installed, notably SSL module documentation. -.. % ====================================================================== +.. ====================================================================== Build and C API Changes @@ -1045,7 +1044,7 @@ Changes to Python's build process and to the C API include: that wish to use the :mod:`bsddb` module for their own purposes. (Contributed by Duncan Grisby.) - .. % Patch 1551895 + .. Patch 1551895 * Several functions return information about the platform's floating-point support. :cfunc:`PyFloat_GetMax` returns @@ -1057,9 +1056,9 @@ Changes to Python's build process and to the C API include: (smallest difference between 1.0 and the next largest value representable), and several others. - .. % Issue 1534 + .. Issue 1534 -.. % ====================================================================== +.. ====================================================================== Port-Specific Changes @@ -1067,7 +1066,7 @@ Port-Specific Changes Platform-specific changes go here. -.. % ====================================================================== +.. ====================================================================== .. _section-other: @@ -1084,7 +1083,7 @@ Some of the more notable changes are: * Details will go here. -.. % ====================================================================== +.. ====================================================================== Porting to Python 2.6 @@ -1098,9 +1097,9 @@ code: :exc:`StandardError` but now it is, through :exc:`IOError`. (Implemented by Gregory P. Smith.) - .. % http://bugs.python.org/issue1706815 + .. Issue 1706815 -.. % ====================================================================== +.. ====================================================================== .. _acks: diff --git a/Lib/distutils/command/bdist_wininst.py b/Lib/distutils/command/bdist_wininst.py index 249b74c..2d75a38 100644 --- a/Lib/distutils/command/bdist_wininst.py +++ b/Lib/distutils/command/bdist_wininst.py @@ -304,5 +304,5 @@ class bdist_wininst(Command): directory = os.path.dirname(__file__) # we must use a wininst-x.y.exe built with the same C compiler # used for python. XXX What about mingw, borland, and so on? - filename = os.path.join(directory, "wininst-%s.exe" % bv) + filename = os.path.join(directory, "wininst-%.1f.exe" % bv) return open(filename, "rb").read() diff --git a/Lib/distutils/command/wininst-6.0.exe b/Lib/distutils/command/wininst-6.0.exe new file mode 100644 index 0000000..bd71525 Binary files /dev/null and b/Lib/distutils/command/wininst-6.0.exe differ diff --git a/Lib/distutils/command/wininst-6.exe b/Lib/distutils/command/wininst-6.exe deleted file mode 100644 index bd71525..0000000 Binary files a/Lib/distutils/command/wininst-6.exe and /dev/null differ diff --git a/Lib/distutils/command/wininst-8.0.exe b/Lib/distutils/command/wininst-8.0.exe new file mode 100644 index 0000000..7403bfa Binary files /dev/null and b/Lib/distutils/command/wininst-8.0.exe differ diff --git a/Lib/distutils/command/wininst-8.exe b/Lib/distutils/command/wininst-8.exe deleted file mode 100644 index 7403bfa..0000000 Binary files a/Lib/distutils/command/wininst-8.exe and /dev/null differ diff --git a/Lib/distutils/command/wininst-9.0.exe b/Lib/distutils/command/wininst-9.0.exe new file mode 100644 index 0000000..5e0144c Binary files /dev/null and b/Lib/distutils/command/wininst-9.0.exe differ diff --git a/Lib/test/output/test_cProfile b/Lib/test/output/test_cProfile index 7ac1433..7561bcb 100644 --- a/Lib/test/output/test_cProfile +++ b/Lib/test/output/test_cProfile @@ -5,7 +5,7 @@ test_cProfile ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 1.000 1.000 :1() - 2 0.000 0.000 0.000 0.000 io.py:1211(flush) + 2 0.000 0.000 0.000 0.000 io.py:1212(flush) 1 0.000 0.000 0.000 0.000 io.py:269(flush) 1 0.000 0.000 0.000 0.000 io.py:656(closed) 1 0.000 0.000 0.000 0.000 io.py:874(flush) @@ -30,7 +30,7 @@ test_cProfile Function called... ncalls tottime cumtime :1() -> 1 0.270 1.000 test_cProfile.py:30(testfunc) -io.py:1211(flush) -> 1 0.000 0.000 io.py:269(flush) +io.py:1212(flush) -> 1 0.000 0.000 io.py:269(flush) 1 0.000 0.000 io.py:874(flush) io.py:269(flush) -> io.py:656(closed) -> @@ -53,7 +53,7 @@ test_cProfile.py:89(helper2_indirect) -> 2 0.006 0.040 test_cProfile.py:93(helper2) -> 8 0.064 0.080 test_cProfile.py:103(subhelper) 8 0.000 0.008 {hasattr} {exec} -> 1 0.000 1.000 :1() - 2 0.000 0.000 io.py:1211(flush) + 2 0.000 0.000 io.py:1212(flush) {hasattr} -> 12 0.012 0.012 test_cProfile.py:115(__getattr__) {method 'append' of 'list' objects} -> {method 'disable' of '_lsprof.Profiler' objects} -> @@ -65,10 +65,10 @@ test_cProfile.py:93(helper2) -> 8 0.064 0.080 Function was called by... ncalls tottime cumtime :1() <- 1 0.000 1.000 {exec} -io.py:1211(flush) <- 2 0.000 0.000 {exec} -io.py:269(flush) <- 1 0.000 0.000 io.py:1211(flush) +io.py:1212(flush) <- 2 0.000 0.000 {exec} +io.py:269(flush) <- 1 0.000 0.000 io.py:1212(flush) io.py:656(closed) <- 1 0.000 0.000 io.py:874(flush) -io.py:874(flush) <- 1 0.000 0.000 io.py:1211(flush) +io.py:874(flush) <- 1 0.000 0.000 io.py:1212(flush) test_cProfile.py:103(subhelper) <- 8 0.064 0.080 test_cProfile.py:93(helper2) test_cProfile.py:115(__getattr__) <- 16 0.016 0.016 test_cProfile.py:103(subhelper) 12 0.012 0.012 {hasattr} diff --git a/Lib/test/output/test_profile b/Lib/test/output/test_profile index 9562978..f5e7160 100644 --- a/Lib/test/output/test_profile +++ b/Lib/test/output/test_profile @@ -10,7 +10,7 @@ test_profile 12 0.000 0.000 0.012 0.001 :0(hasattr) 1 0.000 0.000 0.000 0.000 :0(setprofile) 1 0.000 0.000 1.000 1.000 :1() - 2 0.000 0.000 0.000 0.000 io.py:1211(flush) + 2 0.000 0.000 0.000 0.000 io.py:1212(flush) 1 0.000 0.000 0.000 0.000 io.py:269(flush) 1 0.000 0.000 0.000 0.000 io.py:656(closed) 1 0.000 0.000 0.000 0.000 io.py:874(flush) @@ -33,11 +33,11 @@ Function called... :0(append) -> :0(exc_info) -> :0(exec) -> :1()(1) 1.000 - io.py:1211(flush)(2) 0.000 + io.py:1212(flush)(2) 0.000 :0(hasattr) -> test_profile.py:115(__getattr__)(12) 0.028 :0(setprofile) -> :1() -> test_profile.py:30(testfunc)(1) 1.000 -io.py:1211(flush) -> io.py:269(flush)(1) 0.000 +io.py:1212(flush) -> io.py:269(flush)(1) 0.000 io.py:874(flush)(1) 0.000 io.py:269(flush) -> io.py:656(closed) -> @@ -74,10 +74,10 @@ Function was called by... test_profile.py:93(helper2)(8) 0.400 :0(setprofile) <- profile:0(testfunc())(1) 1.000 :1() <- :0(exec)(1) 1.000 -io.py:1211(flush) <- :0(exec)(2) 1.000 -io.py:269(flush) <- io.py:1211(flush)(1) 0.000 +io.py:1212(flush) <- :0(exec)(2) 1.000 +io.py:269(flush) <- io.py:1212(flush)(1) 0.000 io.py:656(closed) <- io.py:874(flush)(1) 0.000 -io.py:874(flush) <- io.py:1211(flush)(1) 0.000 +io.py:874(flush) <- io.py:1212(flush)(1) 0.000 profile:0(profiler) <- profile:0(testfunc()) <- profile:0(profiler)(1) 0.000 test_profile.py:103(subhelper) <- test_profile.py:93(helper2)(8) 0.400 diff --git a/PC/VS7.1/Uninstal.wse b/PC/VS7.1/Uninstal.wse new file mode 100644 index 0000000..216dd30 --- /dev/null +++ b/PC/VS7.1/Uninstal.wse @@ -0,0 +1,514 @@ +Document Type: WSE +item: Global + Version=8.14 + Flags=00000100 + Split=1420 + Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + Copy Default=1 + Japanese Font Name=MS Gothic + Japanese Font Size=10 + Start Gradient=0 0 255 + End Gradient=0 0 0 + Windows Flags=00000000000000000000101000001000 + Message Font=MS Sans Serif + Font Size=8 + Disk Label=GLBS + Disk Filename=INSTALL + Patch Flags=0000000000000001 + Patch Threshold=200 + Patch Memory=4096 + Per-User Version ID=1 + Crystal Format=10111100101100000010001001001001 + Step View=&Properties +end +item: Remark + Text=Note from Tim: This is a verbatim copy of Wise's Uninstal.wse, altered at the end to write +end +item: Remark + Text=uninstall info under HKCU instead of HKLM if our DOADMIN var is false. +end +item: Remark +end +item: Remark + Text= Install Support for uninstalling the application. +end +item: Remark +end +item: Set Variable + Variable=UNINSTALL_PATH + Value=%_LOGFILE_PATH_% + Flags=00000010 +end +item: Set Variable + Variable=UNINSTALL_PATH + Value=%UNINSTALL_PATH%\UNWISE.EXE +end +item: Compiler Variable If + Variable=_EXE_OS_TYPE_ + Value=WIN32 +end +item: Install File + Source=%_WISE_%\UNWISE32.EXE + Destination=%UNINSTALL_PATH% + Flags=0000000000000010 +end +item: Compiler Variable Else +end +item: Install File + Source=%_WISE_%\UNWISE.EXE + Destination=%UNINSTALL_PATH% + Flags=0000000000000010 +end +item: Compiler Variable End +end +item: Remark +end +item: Remark + Text= Install Support for multiple languages +end +item: Remark +end +item: Set Variable + Variable=UNINSTALL_LANG + Value=%UNINSTALL_PATH% + Flags=00000010 +end +item: Set Variable + Variable=UNINSTALL_LANG + Value=%UNINSTALL_LANG%\UNWISE.INI +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=C + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.FRA + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_C_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.FRA + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=D + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.FRA + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_D_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.FRA + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=E + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.DEU + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_E_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.DEU + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=F + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.PTG + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_F_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.PTG + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=G + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.ESP + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_G_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.ESP + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=H + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.ESP + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_H_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.ESP + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=I + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.ITA + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_I_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.ITA + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=J + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.DAN + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_J_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.DAN + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=K + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.FIN + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_K_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.FIN + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=L + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.ISL + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_L_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.ISL + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=M + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.NLD + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_M_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.NLD + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=N + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.NOR + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_N_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.NOR + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=O + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.SVE + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_O_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.SVE + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Compiler Variable If + Variable=_LANG_LIST_ + Value=P + Flags=00000010 +end +item: Compiler Variable If + Value=%_WISE_%\LANGUAGE\UNWISE.JPN + Flags=00000011 +end +item: If/While Statement + Variable=LANG + Value=%_LANG_P_NAME_% +end +item: Install File + Source=%_WISE_%\LANGUAGE\UNWISE.JPN + Destination=%UNINSTALL_LANG% + Flags=0000000000000010 +end +item: End Block +end +item: Compiler Variable End +end +item: Compiler Variable End +end +item: Remark +end +item: Remark + Text= Install the add/remove or uninstall icon +end +item: Remark +end +item: Set Variable + Variable=UNINSTALL_PATH + Value=%UNINSTALL_PATH% + Flags=00010100 +end +item: Set Variable + Variable=INST_LOG_PATH + Value=%_LOGFILE_PATH_% + Flags=00010100 +end +item: Check Configuration + Flags=10111011 +end +item: If/While Statement + Variable=DOADMIN + Value=1 +end +item: Remark + Text=Write uninstall info under HKLM. This if/else/end block added by Tim. +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%APPTITLE% + Value Name=DisplayName + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%UNINSTALL_PATH% %INST_LOG_PATH% + New Value= + Value Name=UninstallString + Root=2 +end +item: Else Statement +end +item: Remark + Text=The same, but write under HKCU instead. +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%APPTITLE% + Value Name=DisplayName + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%UNINSTALL_PATH% %INST_LOG_PATH% + New Value= + Value Name=UninstallString + Root=1 +end +item: End Block +end +item: Else Statement +end +item: Add ProgMan Icon + Group=%GROUP% + Icon Name=Uninstall %APPTITLE% + Command Line=%UNINSTALL_PATH% %INST_LOG_PATH% +end +item: End Block +end +item: Check Configuration + Flags=11110010 +end +item: If/While Statement + Variable=DOBRAND + Value=1 +end +item: Edit Registry + Total Keys=2 + item: Key + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%COMPANY% + Value Name=RegCompany + Root=2 + end + item: Key + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%NAME% + Value Name=RegOwner + Root=2 + end +end +item: End Block +end +item: End Block +end diff --git a/PC/VS7.1/_bsddb.vcproj b/PC/VS7.1/_bsddb.vcproj new file mode 100644 index 0000000..85da3b3 --- /dev/null +++ b/PC/VS7.1/_bsddb.vcproj @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_ctypes.vcproj b/PC/VS7.1/_ctypes.vcproj new file mode 100644 index 0000000..748ee44 --- /dev/null +++ b/PC/VS7.1/_ctypes.vcproj @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_ctypes_test.vcproj b/PC/VS7.1/_ctypes_test.vcproj new file mode 100644 index 0000000..a4bb7f1 --- /dev/null +++ b/PC/VS7.1/_ctypes_test.vcproj @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_elementtree.vcproj b/PC/VS7.1/_elementtree.vcproj new file mode 100644 index 0000000..587a35c --- /dev/null +++ b/PC/VS7.1/_elementtree.vcproj @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_msi.vcproj b/PC/VS7.1/_msi.vcproj new file mode 100644 index 0000000..be2a92c --- /dev/null +++ b/PC/VS7.1/_msi.vcproj @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_socket.vcproj b/PC/VS7.1/_socket.vcproj new file mode 100644 index 0000000..26f77ef --- /dev/null +++ b/PC/VS7.1/_socket.vcproj @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_sqlite3.vcproj b/PC/VS7.1/_sqlite3.vcproj new file mode 100644 index 0000000..aea3978 --- /dev/null +++ b/PC/VS7.1/_sqlite3.vcproj @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_ssl.mak b/PC/VS7.1/_ssl.mak new file mode 100644 index 0000000..3420ef1 --- /dev/null +++ b/PC/VS7.1/_ssl.mak @@ -0,0 +1,38 @@ +EXTRA_LIBS= + +!IFDEF DEBUG +SUFFIX=_d.pyd +TEMP=x86-temp-debug/ +CFLAGS=/Od /Zi /MDd /LDd /DDEBUG /D_DEBUG /DWIN32 +SSL_LIB_DIR=$(SSL_DIR)/out32.dbg +!ELSE +SUFFIX=.pyd +TEMP=x86-temp-release/ +CFLAGS=/Ox /MD /LD /DWIN32 +SSL_LIB_DIR=$(SSL_DIR)/out32 +!ENDIF + +INCLUDES=-I ../Include -I ../PC -I $(SSL_DIR)/inc32 + +SSL_LIBS=gdi32.lib wsock32.lib user32.lib advapi32.lib /LIBPATH:$(SSL_LIB_DIR) libeay32.lib ssleay32.lib +SSL_SOURCE=../Modules/_ssl.c + +HASH_LIBS=gdi32.lib user32.lib advapi32.lib /libpath:$(SSL_LIB_DIR) libeay32.lib +HASH_SOURCE=../Modules/_hashopenssl.c + +all: _ssl$(SUFFIX) _hashlib$(SUFFIX) + +# Split compile/link into two steps to better support VSExtComp +_ssl$(SUFFIX): $(SSL_SOURCE) $(SSL_LIB_DIR)/libeay32.lib $(SSL_LIB_DIR)/ssleay32.lib ../PC/*.h ../Include/*.h + @if not exist "$(TEMP)/_ssl/." mkdir "$(TEMP)/_ssl" + cl /nologo /c $(SSL_SOURCE) $(CFLAGS) /Fo$(TEMP)\_ssl\$*.obj $(INCLUDES) + link /nologo @<< + /dll /out:_ssl$(SUFFIX) $(TEMP)\_ssl\$*.obj $(SSL_LIBS) $(EXTRA_LIBS) +<< + +_hashlib$(SUFFIX): $(HASH_SOURCE) $(SSL_LIB_DIR)/libeay32.lib ../PC/*.h ../Include/*.h + @if not exist "$(TEMP)/_hashlib/." mkdir "$(TEMP)/_hashlib" + cl /nologo /c $(HASH_SOURCE) $(CFLAGS) $(EXTRA_CFLAGS) /Fo$(TEMP)\_hashlib\$*.obj $(INCLUDES) + link /nologo @<< + /dll /out:_hashlib$(SUFFIX) $(HASH_LIBS) $(EXTRA_LIBS) $(TEMP)\_hashlib\$*.obj +<< diff --git a/PC/VS7.1/_ssl.vcproj b/PC/VS7.1/_ssl.vcproj new file mode 100644 index 0000000..c1abd24 --- /dev/null +++ b/PC/VS7.1/_ssl.vcproj @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_testcapi.vcproj b/PC/VS7.1/_testcapi.vcproj new file mode 100644 index 0000000..a91d8ce --- /dev/null +++ b/PC/VS7.1/_testcapi.vcproj @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/_tkinter.vcproj b/PC/VS7.1/_tkinter.vcproj new file mode 100644 index 0000000..f14e727 --- /dev/null +++ b/PC/VS7.1/_tkinter.vcproj @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/amd64_ml64.bat b/PC/VS7.1/amd64_ml64.bat new file mode 100644 index 0000000..fa9acf1 --- /dev/null +++ b/PC/VS7.1/amd64_ml64.bat @@ -0,0 +1,17 @@ +@echo off +rem Try to find the AMD64 assembler and call it with the supplied arguments. + +set MLEXE=Microsoft Platform SDK\Bin\Win64\x86\AMD64\ml64.EXE + +rem For the environment variables see also +rem http://msdn.microsoft.com/library/en-us/win64/win64/wow64_implementation_details.asp + +if exist "%ProgramFiles%\%MLEXE%" ( + set ML64="%ProgramFiles%\%MLEXE%" +) else if exist "%ProgramW6432%\%MLEXE%" ( + set ML64="%ProgramW6432%\%MLEXE%" +) else ( + set ML64=ml64.exe +) + +%ML64% %* diff --git a/PC/VS7.1/build_ssl.bat b/PC/VS7.1/build_ssl.bat new file mode 100644 index 0000000..9aad441 --- /dev/null +++ b/PC/VS7.1/build_ssl.bat @@ -0,0 +1,12 @@ +if "%1" == "ReleaseAMD64" call "%MSSdk%\SetEnv" /XP64 /RETAIL + +@echo off +if not defined HOST_PYTHON ( + if %1 EQU Debug ( + set HOST_PYTHON=python_d.exe + ) ELSE ( + set HOST_PYTHON=python.exe + ) +) +%HOST_PYTHON% build_ssl.py %1 %2 + diff --git a/PC/VS7.1/build_ssl.py b/PC/VS7.1/build_ssl.py new file mode 100644 index 0000000..2e9f4e3 --- /dev/null +++ b/PC/VS7.1/build_ssl.py @@ -0,0 +1,181 @@ +# Script for building the _ssl and _hashlib modules for Windows. +# Uses Perl to setup the OpenSSL environment correctly +# and build OpenSSL, then invokes a simple nmake session +# for the actual _ssl.pyd and _hashlib.pyd DLLs. + +# THEORETICALLY, you can: +# * Unpack the latest SSL release one level above your main Python source +# directory. It is likely you will already find the zlib library and +# any other external packages there. +# * Install ActivePerl and ensure it is somewhere on your path. +# * Run this script from the PCBuild directory. +# +# it should configure and build SSL, then build the _ssl and _hashlib +# Python extensions without intervention. + +import os, sys, re + +# Find all "foo.exe" files on the PATH. +def find_all_on_path(filename, extras = None): + entries = os.environ["PATH"].split(os.pathsep) + ret = [] + for p in entries: + fname = os.path.abspath(os.path.join(p, filename)) + if os.path.isfile(fname) and fname not in ret: + ret.append(fname) + if extras: + for p in extras: + fname = os.path.abspath(os.path.join(p, filename)) + if os.path.isfile(fname) and fname not in ret: + ret.append(fname) + return ret + +# Find a suitable Perl installation for OpenSSL. +# cygwin perl does *not* work. ActivePerl does. +# Being a Perl dummy, the simplest way I can check is if the "Win32" package +# is available. +def find_working_perl(perls): + for perl in perls: + fh = os.popen(perl + ' -e "use Win32;"') + fh.read() + rc = fh.close() + if rc: + continue + return perl + print "Can not find a suitable PERL:" + if perls: + print " the following perl interpreters were found:" + for p in perls: + print " ", p + print " None of these versions appear suitable for building OpenSSL" + else: + print " NO perl interpreters were found on this machine at all!" + print " Please install ActivePerl and ensure it appears on your path" + print "The Python SSL module was not built" + return None + +# Locate the best SSL directory given a few roots to look into. +def find_best_ssl_dir(sources): + candidates = [] + for s in sources: + try: + # note: do not abspath s; the build will fail if any + # higher up directory name has spaces in it. + fnames = os.listdir(s) + except os.error: + fnames = [] + for fname in fnames: + fqn = os.path.join(s, fname) + if os.path.isdir(fqn) and fname.startswith("openssl-"): + candidates.append(fqn) + # Now we have all the candidates, locate the best. + best_parts = [] + best_name = None + for c in candidates: + parts = re.split("[.-]", os.path.basename(c))[1:] + # eg - openssl-0.9.7-beta1 - ignore all "beta" or any other qualifiers + if len(parts) >= 4: + continue + if parts > best_parts: + best_parts = parts + best_name = c + if best_name is not None: + print "Found an SSL directory at '%s'" % (best_name,) + else: + print "Could not find an SSL directory in '%s'" % (sources,) + sys.stdout.flush() + return best_name + +def run_configure(configure, do_script): + os.system("perl Configure "+configure) + os.system(do_script) + +def main(): + build_all = "-a" in sys.argv + if sys.argv[1] == "Release": + arch = "x86" + debug = False + configure = "VC-WIN32" + do_script = "ms\\do_masm" + makefile = "ms\\nt.mak" + elif sys.argv[1] == "Debug": + arch = "x86" + debug = True + configure = "VC-WIN32" + do_script = "ms\\do_masm" + makefile="ms\\d32.mak" + elif sys.argv[1] == "ReleaseItanium": + arch = "ia64" + debug = False + configure = "VC-WIN64I" + do_script = "ms\\do_win64i" + makefile = "ms\\nt.mak" + os.environ["VSEXTCOMP_USECL"] = "MS_ITANIUM" + elif sys.argv[1] == "ReleaseAMD64": + arch="amd64" + debug=False + configure = "VC-WIN64A" + do_script = "ms\\do_win64a" + makefile = "ms\\nt.mak" + os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON" + make_flags = "" + if build_all: + make_flags = "-a" + # perl should be on the path, but we also look in "\perl" and "c:\\perl" + # as "well known" locations + perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"]) + perl = find_working_perl(perls) + if perl is None: + sys.exit(1) + + print "Found a working perl at '%s'" % (perl,) + sys.stdout.flush() + # Look for SSL 2 levels up from pcbuild - ie, same place zlib etc all live. + ssl_dir = find_best_ssl_dir(("..\\..\\..",)) + if ssl_dir is None: + sys.exit(1) + + old_cd = os.getcwd() + try: + os.chdir(ssl_dir) + # If the ssl makefiles do not exist, we invoke Perl to generate them. + # Due to a bug in this script, the makefile sometimes ended up empty + # Force a regeneration if it is. + if not os.path.isfile(makefile) or os.path.getsize(makefile)==0: + print "Creating the makefiles..." + sys.stdout.flush() + # Put our working Perl at the front of our path + os.environ["PATH"] = os.path.dirname(perl) + \ + os.pathsep + \ + os.environ["PATH"] + run_configure(configure, do_script) + if arch=="x86" and debug: + # the do_masm script in openssl doesn't generate a debug + # build makefile so we generate it here: + os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile) + + # Now run make. + makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) + print "Executing ssl makefiles:", makeCommand + sys.stdout.flush() + rc = os.system(makeCommand) + if rc: + print "Executing "+makefile+" failed" + print rc + sys.exit(rc) + finally: + os.chdir(old_cd) + # And finally, we can build the _ssl module itself for Python. + defs = "SSL_DIR=\"%s\"" % (ssl_dir,) + if debug: + defs = defs + " " + "DEBUG=1" + if arch in ('amd64', 'ia64'): + defs = defs + " EXTRA_CFLAGS=/GS- EXTRA_LIBS=bufferoverflowU.lib" + makeCommand = 'nmake /nologo -f _ssl.mak ' + defs + " " + make_flags + print "Executing:", makeCommand + sys.stdout.flush() + rc = os.system(makeCommand) + sys.exit(rc) + +if __name__=='__main__': + main() diff --git a/PC/VS7.1/bz2.vcproj b/PC/VS7.1/bz2.vcproj new file mode 100644 index 0000000..d86d325 --- /dev/null +++ b/PC/VS7.1/bz2.vcproj @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/db.build b/PC/VS7.1/db.build new file mode 100644 index 0000000..6a87f74 --- /dev/null +++ b/PC/VS7.1/db.build @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/PC/VS7.1/field3.py b/PC/VS7.1/field3.py new file mode 100644 index 0000000..47f24ca --- /dev/null +++ b/PC/VS7.1/field3.py @@ -0,0 +1,35 @@ +# An absurd workaround for the lack of arithmetic in MS's resource compiler. +# After building Python, run this, then paste the output into the appropriate +# part of PC\python_nt.rc. +# Example output: +# +# * For 2.3a0, +# * PY_MICRO_VERSION = 0 +# * PY_RELEASE_LEVEL = 'alpha' = 0xA +# * PY_RELEASE_SERIAL = 1 +# * +# * and 0*1000 + 10*10 + 1 = 101. +# */ +# #define FIELD3 101 + +import sys + +major, minor, micro, level, serial = sys.version_info +levelnum = {'alpha': 0xA, + 'beta': 0xB, + 'candidate': 0xC, + 'final': 0xF, + }[level] +string = sys.version.split()[0] # like '2.3a0' + +print " * For %s," % string +print " * PY_MICRO_VERSION = %d" % micro +print " * PY_RELEASE_LEVEL = %r = %s" % (level, hex(levelnum)) +print " * PY_RELEASE_SERIAL = %d" % serial +print " *" + +field3 = micro * 1000 + levelnum * 10 + serial + +print " * and %d*1000 + %d*10 + %d = %d" % (micro, levelnum, serial, field3) +print " */" +print "#define FIELD3", field3 diff --git a/PC/VS7.1/installer.bmp b/PC/VS7.1/installer.bmp new file mode 100644 index 0000000..1875e19 Binary files /dev/null and b/PC/VS7.1/installer.bmp differ diff --git a/PC/VS7.1/make_buildinfo.c b/PC/VS7.1/make_buildinfo.c new file mode 100644 index 0000000..4cebf45 --- /dev/null +++ b/PC/VS7.1/make_buildinfo.c @@ -0,0 +1,92 @@ +#include +#include +#include +#include + +/* This file creates the getbuildinfo.o object, by first + invoking subwcrev.exe (if found), and then invoking cl.exe. + As a side effect, it might generate PCBuild\getbuildinfo2.c + also. If this isn't a subversion checkout, or subwcrev isn't + found, it compiles ..\\Modules\\getbuildinfo.c instead. + + Currently, subwcrev.exe is found from the registry entries + of TortoiseSVN. + + No attempt is made to place getbuildinfo.o into the proper + binary directory. This isn't necessary, as this tool is + invoked as a pre-link step for pythoncore, so that overwrites + any previous getbuildinfo.o. + +*/ + +int make_buildinfo2() +{ + struct _stat st; + HKEY hTortoise; + char command[500]; + DWORD type, size; + if (_stat(".svn", &st) < 0) + return 0; + /* Allow suppression of subwcrev.exe invocation if a no_subwcrev file is present. */ + if (_stat("no_subwcrev", &st) == 0) + return 0; + if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS && + RegOpenKey(HKEY_CURRENT_USER, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS) + /* Tortoise not installed */ + return 0; + command[0] = '"'; /* quote the path to the executable */ + size = sizeof(command) - 1; + if (RegQueryValueEx(hTortoise, "Directory", 0, &type, command+1, &size) != ERROR_SUCCESS || + type != REG_SZ) + /* Registry corrupted */ + return 0; + strcat(command, "bin\\subwcrev.exe"); + if (_stat(command+1, &st) < 0) + /* subwcrev.exe not part of the release */ + return 0; + strcat(command, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c"); + puts(command); fflush(stdout); + if (system(command) < 0) + return 0; + return 1; +} + +int main(int argc, char*argv[]) +{ + char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL "; + int do_unlink, result; + if (argc != 2) { + fprintf(stderr, "make_buildinfo $(ConfigurationName)\n"); + return EXIT_FAILURE; + } + if (strcmp(argv[1], "Release") == 0) { + strcat(command, "-MD "); + } + else if (strcmp(argv[1], "Debug") == 0) { + strcat(command, "-D_DEBUG -MDd "); + } + else if (strcmp(argv[1], "ReleaseItanium") == 0) { + strcat(command, "-MD /USECL:MS_ITANIUM "); + } + else if (strcmp(argv[1], "ReleaseAMD64") == 0) { + strcat(command, "-MD "); + strcat(command, "-MD /USECL:MS_OPTERON "); + } + else { + fprintf(stderr, "unsupported configuration %s\n", argv[1]); + return EXIT_FAILURE; + } + + if ((do_unlink = make_buildinfo2())) + strcat(command, "getbuildinfo2.c -DSUBWCREV "); + else + strcat(command, "..\\Modules\\getbuildinfo.c"); + strcat(command, " -Fogetbuildinfo.o -I..\\Include -I..\\PC"); + puts(command); fflush(stdout); + result = system(command); + if (do_unlink) + unlink("getbuildinfo2.c"); + if (result < 0) + return EXIT_FAILURE; + return 0; +} \ No newline at end of file diff --git a/PC/VS7.1/make_buildinfo.vcproj b/PC/VS7.1/make_buildinfo.vcproj new file mode 100644 index 0000000..c49f0fd --- /dev/null +++ b/PC/VS7.1/make_buildinfo.vcproj @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/make_versioninfo.vcproj b/PC/VS7.1/make_versioninfo.vcproj new file mode 100644 index 0000000..7bdaacc --- /dev/null +++ b/PC/VS7.1/make_versioninfo.vcproj @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/pcbuild.sln b/PC/VS7.1/pcbuild.sln new file mode 100644 index 0000000..e44a39e --- /dev/null +++ b/PC/VS7.1/pcbuild.sln @@ -0,0 +1,288 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{E1DBB220-D64B-423D-A545-539A55AA7FE2}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{324F66C2-44D0-4D50-B979-F9DAE7FD36DB}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}" + ProjectSection(ProjectDependencies) = postProject + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} = {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{59CBF474-9E06-4C50-9142-C44A118BB447}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{5B51DFF7-5DC0-41F8-8791-A4AB7114A151}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{AC557788-6354-43F7-BE05-C9C8C59A344A}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{F0E0541E-F17D-430B-97C4-93ADF0DD284E}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{7E551393-3C43-47F8-9F3F-5BC368A6C487}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}" + ProjectSection(ProjectDependencies) = postProject + {F0E0541E-F17D-430B-97C4-93ADF0DD284E} = {F0E0541E-F17D-430B-97C4-93ADF0DD284E} + {C73F0EC1-358B-4177-940F-0846AC8B04CD} = {C73F0EC1-358B-4177-940F-0846AC8B04CD} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{97239A56-DBC0-41D2-BC14-C87D9B97D63B}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w9xpopen", "w9xpopen.vcproj", "{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj", "{51F35FAE-FB92-4B2C-9187-1542C065AD77}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcproj", "{1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buildinfo.vcproj", "{C73F0EC1-358B-4177-940F-0846AC8B04CD}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcproj", "{2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{F22F40F4-D318-40DC-96B3-88DC81CE0894}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcproj", "{8CF334D9-4F82-42EB-97AF-83592C5AFD2F}" + ProjectSection(ProjectDependencies) = postProject + {F22F40F4-D318-40DC-96B3-88DC81CE0894} = {F22F40F4-D318-40DC-96B3-88DC81CE0894} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{2FF0A312-22F9-4C34-B070-842916DE27A9}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + ReleaseAMD64 = ReleaseAMD64 + ReleaseItanium = ReleaseItanium + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Debug.ActiveCfg = Debug|Win32 + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Debug.Build.0 = Debug|Win32 + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Release.ActiveCfg = Release|Win32 + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Release.Build.0 = Release|Win32 + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Debug.ActiveCfg = Debug|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Debug.Build.0 = Debug|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Release.ActiveCfg = Release|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Release.Build.0 = Release|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Debug.ActiveCfg = Debug|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Debug.Build.0 = Debug|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Release.ActiveCfg = Release|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Release.Build.0 = Release|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.Debug.ActiveCfg = Debug|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.Debug.Build.0 = Debug|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.Release.ActiveCfg = Release|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.Release.Build.0 = Release|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Debug.ActiveCfg = Debug|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Debug.Build.0 = Debug|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Release.ActiveCfg = Release|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Release.Build.0 = Release|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.Debug.ActiveCfg = Debug|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.Debug.Build.0 = Debug|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.Release.ActiveCfg = Release|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.Release.Build.0 = Release|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug.ActiveCfg = Debug|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug.Build.0 = Debug|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release.Build.0 = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseAMD64.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseAMD64.Build.0 = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseItanium.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseItanium.Build.0 = Release|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Debug.ActiveCfg = Debug|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Debug.Build.0 = Debug|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Release.ActiveCfg = Release|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Release.Build.0 = Release|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug.ActiveCfg = Debug|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug.Build.0 = Debug|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release.ActiveCfg = Release|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release.Build.0 = Release|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug.ActiveCfg = Debug|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug.Build.0 = Debug|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release.ActiveCfg = Release|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release.Build.0 = Release|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug.ActiveCfg = Debug|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug.Build.0 = Debug|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release.ActiveCfg = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release.Build.0 = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Debug.ActiveCfg = Debug|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Debug.Build.0 = Debug|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Release.ActiveCfg = Release|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Release.Build.0 = Release|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Debug.ActiveCfg = Debug|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Debug.Build.0 = Debug|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Release.ActiveCfg = Release|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Release.Build.0 = Release|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug.ActiveCfg = Debug|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug.Build.0 = Debug|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release.ActiveCfg = Release|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release.Build.0 = Release|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.ReleaseAMD64.ActiveCfg = Release|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.ReleaseItanium.ActiveCfg = Release|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Debug.ActiveCfg = Debug|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Debug.Build.0 = Debug|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Release.ActiveCfg = Release|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Release.Build.0 = Release|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Debug.ActiveCfg = Debug|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Debug.Build.0 = Debug|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Release.ActiveCfg = Release|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Release.Build.0 = Release|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug.ActiveCfg = Debug|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug.Build.0 = Debug|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseAMD64.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseAMD64.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseItanium.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseItanium.Build.0 = Release|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Debug.ActiveCfg = Debug|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Debug.Build.0 = Debug|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Release.ActiveCfg = Release|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Release.Build.0 = Release|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Debug.ActiveCfg = Debug|Win32 + {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Debug.Build.0 = Debug|Win32 + {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Release.ActiveCfg = Release|Win32 + {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Release.Build.0 = Release|Win32 + {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Debug.ActiveCfg = Debug|Win32 + {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Debug.Build.0 = Debug|Win32 + {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Release.ActiveCfg = Release|Win32 + {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Release.Build.0 = Release|Win32 + {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.Debug.ActiveCfg = Debug|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.Debug.Build.0 = Debug|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.Release.ActiveCfg = Release|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.Release.Build.0 = Release|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 + {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 + EndGlobalSection + GlobalSection(SolutionItems) = postSolution + ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c + readme.txt = readme.txt + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/PC/VS7.1/pyexpat.vcproj b/PC/VS7.1/pyexpat.vcproj new file mode 100644 index 0000000..1c5b3ad --- /dev/null +++ b/PC/VS7.1/pyexpat.vcproj @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/python.build b/PC/VS7.1/python.build new file mode 100644 index 0000000..61bbe89 --- /dev/null +++ b/PC/VS7.1/python.build @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/python.iss b/PC/VS7.1/python.iss new file mode 100644 index 0000000..40365be --- /dev/null +++ b/PC/VS7.1/python.iss @@ -0,0 +1,346 @@ +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +; This is the whole ball of wax for an Inno installer for Python. +; To use, download Inno Setup from http://www.jrsoftware.org/isdl.htm/, +; install it, and double-click on this file. That launches the Inno +; script compiler. The GUI is extemely simple, and has only one button +; you may not recognize instantly: click it. You're done. It builds +; the installer into PCBuild/Python-2.2a1.exe. Size and speed of the +; installer are competitive with the Wise installer; Inno uninstall +; seems much quicker than Wise (but also feebler, and the uninstall +; log is in some un(human)readable binary format). +; +; What's Done +; ----------- +; All the usual Windows Python files are installed by this now. +; All the usual Windows Python Start menu entries are created and +; work fine. +; .py, .pyw, .pyc and .pyo extensions are registered. +; PROBLEM: Inno uninstall does not restore their previous registry +; associations (if any). Wise did. This will make life +; difficult for alpha (etc) testers. +; The Python install is fully functional for "typical" uses. +; +; What's Not Done +; --------------- +; None of "Mark Hammond's" registry entries are written. +; No installation of files is done into the system dir: +; The MS DLLs aren't handled at all by this yet. +; Python22.dll is unpacked into the main Python dir. +; +; Inno can't do different things on NT/2000 depending on whether the user +; has Admin privileges, so I don't know how to "solve" either of those, +; short of building two installers (one *requiring* Admin privs, the +; other not doing anything that needs Admin privs). +; +; Inno has no concept of variables, so lots of lines in this file need +; to be fiddled by hand across releases. Simplest way out: stick this +; file in a giant triple-quoted r-string (note that backslashes are +; required all over the place here -- forward slashes DON'T WORK in +; Inno), and use %(yadda)s string interpolation to do substitutions; i.e., +; write a very simple Python program to *produce* this script. + +[Setup] +AppName=Python and combined Win32 Extensions +AppVerName=Python 2.2.2 and combined Win32 Extensions 150 +AppId=Python 2.2.2.150 +AppVersion=2.2.2.150 +AppCopyright=Python is Copyright © 2001 Python Software Foundation. Win32 Extensions are Copyright © 1996-2001 Greg Stein and Mark Hammond. + +; Default install dir; value of {app} later (unless user overrides). +; {sd} = system root drive, probably "C:". +DefaultDirName={sd}\Python22 +;DefaultDirName={pf}\Python + +; Start menu folder name; value of {group} later (unless user overrides). +DefaultGroupName=Python 2.2 + +; Point SourceDir to one above PCBuild = src. +; means this script can run unchanged from anyone's CVS tree, no matter +; what they called the top-level directories. +SourceDir=. +OutputDir=.. +OutputBaseFilename=Python-2.2.2-Win32-150-Setup + +AppPublisher=PythonLabs at Digital Creations +AppPublisherURL=http://www.python.org +AppSupportURL=http://www.python.org +AppUpdatesURL=http://www.python.org + +AlwaysCreateUninstallIcon=true +ChangesAssociations=true +UninstallLogMode=new +AllowNoIcons=true +AdminPrivilegesRequired=true +UninstallDisplayIcon={app}\pyc.ico +WizardDebug=false + +; The fewer screens the better; leave these commented. + +Compression=bzip +InfoBeforeFile=LICENSE.txt +;InfoBeforeFile=Misc\NEWS + +; uncomment the following line if you want your installation to run on NT 3.51 too. +; MinVersion=4,3.51 + +[Types] +Name: normal; Description: Select desired components; Flags: iscustom + +[Components] +Name: main; Description: Python and Win32 Extensions; Types: normal +Name: docs; Description: Python documentation (HTML); Types: normal +Name: tk; Description: TCL/TK, tkinter, and Idle; Types: normal +Name: tools; Description: Python utility scripts (Tools\); Types: normal +Name: test; Description: Python test suite (Lib\test\); Types: normal + +[Tasks] +Name: extensions; Description: Register file associations (.py, .pyw, .pyc, .pyo); Components: main; Check: IsAdminLoggedOn + +[Files] +; Caution: Using forward slashes instead screws up in amazing ways. +; Unknown: By the time Components (and other attrs) are added to these lines, they're +; going to get awfully long. But don't see a way to continue logical lines across +; physical lines. + +Source: LICENSE.txt; DestDir: {app}; CopyMode: alwaysoverwrite +Source: README.txt; DestDir: {app}; CopyMode: alwaysoverwrite +Source: News.txt; DestDir: {app}; CopyMode: alwaysoverwrite +Source: *.ico; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main + +Source: python.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main +Source: pythonw.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main +Source: w9xpopen.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main + + +Source: DLLs\tcl83.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk +Source: DLLs\tk83.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk +Source: tcl\*.*; DestDir: {app}\tcl; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs + +Source: sysdir\python22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: sharedfile restartreplace +Source: sysdir\PyWinTypes22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: restartreplace sharedfile +Source: sysdir\pythoncom22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: restartreplace sharedfile + +Source: DLLs\_socket.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\_socket.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\_sre.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\_sre.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\_symtable.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\_symtable.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\_testcapi.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\_testcapi.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\_tkinter.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk +Source: libs\_tkinter.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: tk + +Source: DLLs\bsddb.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\bsddb.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\mmap.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\mmap.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\parser.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\parser.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\pyexpat.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\pyexpat.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\select.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\select.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\unicodedata.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\unicodedata.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\_winreg.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\_winreg.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\winsound.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\winsound.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\zlib.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main +Source: libs\zlib.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: libs\python22.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main + +Source: DLLs\expat.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main + + + +Source: Lib\*.py; DestDir: {app}\Lib; CopyMode: alwaysoverwrite; Components: main +Source: Lib\compiler\*.*; DestDir: {app}\Lib\compiler; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\distutils\*.*; DestDir: {app}\Lib\distutils; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\email\*.*; DestDir: {app}\Lib\email; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\encodings\*.*; DestDir: {app}\Lib\encodings; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\hotshot\*.*; DestDir: {app}\Lib\hotshot; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\lib-old\*.*; DestDir: {app}\Lib\lib-old; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\xml\*.*; DestDir: {app}\Lib\xml; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\hotshot\*.*; DestDir: {app}\Lib\hotshot; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\test\*.*; DestDir: {app}\Lib\test; CopyMode: alwaysoverwrite; Components: test; Flags: recursesubdirs + +Source: Lib\site-packages\README.txt; DestDir: {app}\Lib\site-packages; CopyMode: alwaysoverwrite; Components: main + +Source: Lib\site-packages\PyWin32.chm; DestDir: {app}\Lib\site-packages; CopyMode: alwaysoverwrite; Components: docs +Source: Lib\site-packages\win32\*.*; DestDir: {app}\Lib\site-packages\win32; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\site-packages\win32com\*.*; DestDir: {app}\Lib\site-packages\win32com; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs +Source: Lib\site-packages\win32comext\*.*; DestDir: {app}\Lib\site-packages\win32comext; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs + +Source: Lib\lib-tk\*.py; DestDir: {app}\Lib\lib-tk; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs + +Source: include\*.h; DestDir: {app}\include; CopyMode: alwaysoverwrite; Components: main + +Source: Tools\idle\*.*; DestDir: {app}\Tools\idle; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs + +Source: Tools\pynche\*.*; DestDir: {app}\Tools\pynche; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs +Source: Tools\scripts\*.*; DestDir: {app}\Tools\Scripts; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs +Source: Tools\webchecker\*.*; DestDir: {app}\Tools\webchecker; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs +Source: Tools\versioncheck\*.*; DestDir: {app}\Tools\versioncheck; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs + +Source: Doc\*.*; DestDir: {app}\Doc; CopyMode: alwaysoverwrite; Flags: recursesubdirs; Components: docs + + +[Icons] +Name: {group}\Python (command line); Filename: {app}\python.exe; WorkingDir: {app}; Components: main +Name: {group}\Python Manuals; Filename: {app}\Doc\index.html; WorkingDir: {app}; Components: docs +Name: {group}\Win32 Extensions Help; Filename: {app}\Lib\site-packages\PyWin32.chm; WorkingDir: {app}\Lib\site-packages; Components: docs +Name: {group}\Module Docs; Filename: {app}\pythonw.exe; WorkingDir: {app}; Parameters: """{app}\Tools\Scripts\pydoc.pyw"""; Components: tools +Name: {group}\IDLE (Python GUI); Filename: {app}\pythonw.exe; WorkingDir: {app}; Parameters: """{app}\Tools\idle\idle.pyw"""; Components: tools + +[Registry] +; Register .py +Tasks: extensions; Root: HKCR; Subkey: .py; ValueType: string; ValueName: ; ValueData: Python File; Flags: uninsdeletevalue +Tasks: extensions; Root: HKCR; Subkey: .py; ValueType: string; ValueName: Content Type; ValueData: text/plain; Flags: uninsdeletevalue +Tasks: extensions; Root: HKCR; Subkey: Python File; ValueType: string; ValueName: ; ValueData: Python File; Flags: uninsdeletekey +Tasks: extensions; Root: HKCR; Subkey: Python File\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\Py.ico +Tasks: extensions; Root: HKCR; Subkey: Python File\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\python.exe"" ""%1"" %*" + +; Register .pyc +Tasks: extensions; Root: HKCR; Subkey: .pyc; ValueType: string; ValueName: ; ValueData: Python CompiledFile; Flags: uninsdeletevalue +Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile; ValueType: string; ValueName: ; ValueData: Compiled Python File; Flags: uninsdeletekey +Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\pyc.ico +Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\python.exe"" ""%1"" %*" + +; Register .pyo +Tasks: extensions; Root: HKCR; Subkey: .pyo; ValueType: string; ValueName: ; ValueData: Python CompiledFile; Flags: uninsdeletevalue + +; Register .pyw +Tasks: extensions; Root: HKCR; Subkey: .pyw; ValueType: string; ValueName: ; ValueData: Python NoConFile; Flags: uninsdeletevalue +Tasks: extensions; Root: HKCR; Subkey: .pyw; ValueType: string; ValueName: Content Type; ValueData: text/plain; Flags: uninsdeletevalue +Tasks: extensions; Root: HKCR; Subkey: Python NoConFile; ValueType: string; ValueName: ; ValueData: Python File (no console); Flags: uninsdeletekey +Tasks: extensions; Root: HKCR; Subkey: Python NoConFile\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\Py.ico +Tasks: extensions; Root: HKCR; Subkey: Python NoConFile\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\pythonw.exe"" ""%1"" %*" + + +; Python Registry Keys +Root: HKLM; Subkey: SOFTWARE\Python; Flags: uninsdeletekeyifempty; Check: IsAdminLoggedOn +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore; Flags: uninsdeletekeyifempty +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2; Flags: uninsdeletekeyifempty +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath; ValueData: "{app}\Lib;{app}\DLLs"; Flags: uninsdeletekeyifempty +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\tk; ValueData: {app}\Lib\lib-tk; Flags: uninsdeletekey; Components: tk +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\win32; ValueData: "{app}\lib\site-packages\win32;{app}\lib\site-packages\win32\lib"; Flags: uninsdeletekey +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\win32com; ValueData: C:\Python\lib\site-packages; Flags: uninsdeletekey +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules; Flags: uninsdeletekeyifempty +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules\pythoncom; ValueData: {sys}\pythoncom22.dll; Flags: uninsdeletekey +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules\pywintypes; ValueData: {sys}\PyWinTypes22.dll; Flags: uninsdeletekey +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\InstallPath; ValueData: {app}; Flags: uninsdeletekeyifempty; ValueType: string +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\InstallPath\InstallGroup; ValueData: {group}; Flags: uninsdeletekey +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help; Flags: uninsdeletekeyifempty +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help\Main Python Documentation; ValueType: string; ValueData: {app}\Doc\index.html; Flags: uninsdeletekey; Components: docs +Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help\Python Win32 Documentation; ValueType: string; ValueData: {app}\lib\site-packages\PyWin32.chm; Flags: uninsdeletekey; Components: docs + +[_ISTool] +EnableISX=true + + +[Code] +Program Setup; + +Function IsAdminNotLoggedOn(): Boolean; +begin + Result := Not IsAdminLoggedOn(); +end; + +begin +end. + + + + +[UninstallDelete] +Name: {app}\Lib\compiler\*.pyc; Type: files +Name: {app}\Lib\compiler\*.pyo; Type: files +Name: {app}\Lib\compiler; Type: dirifempty +Name: {app}\Lib\distutils\command\*.pyc; Type: files +Name: {app}\Lib\distutils\command\*.pyo; Type: files +Name: {app}\Lib\distutils\command; Type: dirifempty +Name: {app}\Lib\distutils\*.pyc; Type: files +Name: {app}\Lib\distutils\*.pyo; Type: files +Name: {app}\Lib\distutils; Type: dirifempty +Name: {app}\Lib\email\test\*.pyc; Type: files +Name: {app}\Lib\email\test\*.pyo; Type: files +Name: {app}\Lib\email\test; Type: dirifempty +Name: {app}\Lib\email\*.pyc; Type: files +Name: {app}\Lib\email\*.pyo; Type: files +Name: {app}\Lib\email; Type: dirifempty +Name: {app}\Lib\encodings\*.pyc; Type: files +Name: {app}\Lib\encodings\*.pyo; Type: files +Name: {app}\Lib\encodings; Type: dirifempty +Name: {app}\Lib\hotshot\*.pyc; Type: files +Name: {app}\Lib\hotshot\*.pyo; Type: files +Name: {app}\Lib\hotshot; Type: dirifempty +Name: {app}\Lib\lib-old\*.pyc; Type: files +Name: {app}\Lib\lib-old\*.pyo; Type: files +Name: {app}\Lib\lib-old; Type: dirifempty +Name: {app}\Lib\lib-tk\*.pyc; Type: files +Name: {app}\Lib\lib-tk\*.pyo; Type: files +Name: {app}\Lib\lib-tk; Type: dirifempty +Name: {app}\Lib\test\*.pyc; Type: files +Name: {app}\Lib\test\*.pyo; Type: files +Name: {app}\Lib\test; Type: dirifempty +Name: {app}\Lib\xml\dom\*.pyc; Type: files +Name: {app}\Lib\xml\dom\*.pyo; Type: files +Name: {app}\Lib\xml\dom; Type: dirifempty +Name: {app}\Lib\xml\parsers\*.pyc; Type: files +Name: {app}\Lib\xml\parsers\*.pyo; Type: files +Name: {app}\Lib\xml\parsers; Type: dirifempty +Name: {app}\Lib\xml\sax\*.pyc; Type: files +Name: {app}\Lib\xml\sax\*.pyo; Type: files +Name: {app}\Lib\xml\sax; Type: dirifempty +Name: {app}\Lib\xml\*.pyc; Type: files +Name: {app}\Lib\xml\*.pyo; Type: files +Name: {app}\Lib\xml; Type: dirifempty + +Name: {app}\Lib\site-packages\win32; Type: filesandordirs +Name: {app}\Lib\site-packages\win32com; Type: filesandordirs +Name: {app}\Lib\site-packages\win32comext; Type: filesandordirs +Name: {app}\Lib\site-packages\pythoncom.py*; Type: files +Name: {app}\Lib\site-packages; Type: dirifempty + +Name: {app}\Lib\*.pyc; Type: files +Name: {app}\Lib; Type: dirifempty + +Name: {app}\Tools\pynche\*.pyc; Type: files +Name: {app}\Tools\pynche\*.pyo; Type: files +Name: {app}\Tools\pynche; Type: dirifempty + +Name: {app}\Tools\idle\*.pyc; Type: files +Name: {app}\Tools\idle\*.pyo; Type: files +Name: {app}\Tools\idle; Type: dirifempty + +Name: {app}\Tools\scripts\*.pyc; Type: files +Name: {app}\Tools\scripts\*.pyo; Type: files +Name: {app}\Tools\scripts; Type: dirifempty + +Name: {app}\Tools\versioncheck\*.pyc; Type: files +Name: {app}\Tools\versioncheck\*.pyo; Type: files +Name: {app}\Tools\versioncheck; Type: dirifempty + +Name: {app}\Tools\webchecker\*.pyc; Type: files +Name: {app}\Tools\webchecker\*.pyo; Type: files +Name: {app}\Tools\webchecker; Type: dirifempty + +Name: {app}\Tools; Type: dirifempty + diff --git a/PC/VS7.1/python.vcproj b/PC/VS7.1/python.vcproj new file mode 100644 index 0000000..8412e81 --- /dev/null +++ b/PC/VS7.1/python.vcproj @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/python20.wse b/PC/VS7.1/python20.wse new file mode 100644 index 0000000..fa11af4 --- /dev/null +++ b/PC/VS7.1/python20.wse @@ -0,0 +1,3135 @@ +Document Type: WSE +item: Global + Version=9.0 + Title=Python 2.4a1 + Flags=00010100 + Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + Japanese Font Name=MS Gothic + Japanese Font Size=10 + Start Gradient=0 255 0 + End Gradient=0 128 0 + Windows Flags=00000100000011010010010100001010 + Log Pathname=%MAINDIR%\INSTALL.LOG + Message Font=MS Sans Serif + Font Size=8 + Pages Modified=00010000011101000000000100000111 + Extra Pages=00000000000000000000000010110010 + Disk Filename=SETUP + Patch Flags=0000000000001001 + Patch Threshold=85 + Patch Memory=4000 + MIF PDF Version=1.0 + MIF SMS Version=2.0 + EXE Filename=Python-2.4a1.exe + Dialogs Version=8 + Version File=2.4a1 + Version Description=Python Programming Language + Version Copyright=©2001-2007 Python Software Foundation + Version Company=Python Software Foundation + Crystal Format=10111100101100000010001001001001 + Step View=&All + Variable Name1=_WISE_ + Variable Description1=WISE root directory + Variable Default1=C:\Programme\Wise Installation System + Variable Flags1=00001000 + Variable Name2=_TCLDIR_ + Variable Description2=The directory in which the Tcl/Tk installation + Variable Description2=lives. This must be a sibling of the Python + Variable Description2=directory. + Variable Default2=tcl84 + Variable Flags2=00001000 + Variable Name3=_DOC_ + Variable Description3=The unpacked HTML doc directory. + Variable Default3=..\html + Variable Flags3=00001001 + Variable Name4=_SYS_ + Variable Description4=System directory (where to find MSVCRT.DLL) + Variable Default4=C:\Windows\System + Variable Values4=C:\Windows\System + Variable Values4=C:\WINNT\System32 + Variable Values4=C:\Code\MSDLLs + Variable Values4=C:\Windows\System32 + Variable Flags4=00000010 + Variable Name5=_PYMAJOR_ + Variable Description5=Python major version number; the 2 in 2.3. + Variable Default5=2 + Variable Flags5=00001000 + Variable Name6=_PYMINOR_ + Variable Description6=Python minor version number; the 3 in 2.3 + Variable Default6=3 + Variable Flags6=00001000 + Variable Name7=_DOADMIN_ + Variable Description7=The initial value for %DOADMIN%. + Variable Description7=When 0, we never try to write under HKLM, + Variable Description7=and install the Python + MS runtime DLLs in + Variable Description7=the Python directory instead of the system dir. + Variable Default7=1 + Variable Values7=1 + Variable Values7=0 + Variable Flags7=00001010 + Variable Name8=_ALIASNAME_ + Variable Flags8=00001000 + Variable Name9=_ALIASPATH_ + Variable Flags9=00001000 + Variable Name10=_ALIASTYPE_ + Variable Flags10=00001000 +end +item: Set Variable + Variable=PYVER_STRING + Value=2.3 +end +item: Remark +end +item: Remark + Text=When the version number changes, set the compiler +end +item: Remark + Text=vrbls _PYMAJOR_ and _PYMINOR_. +end +item: Remark + Text=Nothing in the script below should need fiddling then. +end +item: Remark + Text=Other things that need fiddling: +end +item: Remark + Text= PYVER_STRING above. +end +item: Remark + Text= The "Title:" in the upper left corner of the GUI. +end +item: Remark + Text= Build Settings and Version Resource on step 6 (Finish) of the Installation Expert +end +item: Remark + Text= Be sure to select Steps->All or you may not see these! +end +item: Remark +end +item: Remark + Text=When the version of Tcl/Tk changes, the compiler vrbl +end +item: Remark + Text=_TCLDIR_ may also need to be changed. +end +item: Remark +end +item: Set Variable + Variable=APPTITLE + Value=Python %PYVER_STRING% +end +item: Remark + Text=PY_VERSION should be major.minor only; used to create the registry key; must match MS_DLL_ID in python_nt.rc +end +item: Set Variable + Variable=PY_VERSION + Value=%_PYMAJOR_%.%_PYMINOR_% +end +item: Remark + Text=GROUP is the Start menu group name; user can override. +end +item: Set Variable + Variable=GROUP + Value=Python %PY_VERSION% + Flags=10000000 +end +item: Remark + Text=MAINDIR is the app directory; user can override. +end +item: Set Variable + Variable=MAINDIR + Value=Python%_PYMAJOR_%%_PYMINOR_% +end +item: Remark +end +item: Set Variable + Variable=DOADMIN + Value=%_DOADMIN_% +end +item: Remark + Text=Give non-admin users a chance to abort. +end +item: Check Configuration + Flags=10011111 +end +item: Set Variable + Variable=DOADMIN + Value=0 +end +item: Display Message + Title=Doing non-admin install + Text=The current login does not have Administrator Privileges on this machine. Python will install its registry information into the per-user area only for the current login, instead of into the per-machine area for every account on this machine. Some advanced uses of Python may not work as a result (for example, running a Python script as a service). + Text= + Text=If this is not what you want, please click Cancel to abort this installation, log on as an Administrator, and start the installation again. + Flags=00001000 +end +item: End Block +end +item: Remark +end +item: Remark + Text=BEGIN WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- +end +item: Remark + Text=Note from Tim: the "stop" on the next line is actually "pause". +end +item: Open/Close INSTALL.LOG + Flags=00000001 +end +item: Remark + Text=If the destination system does not have a writable Windows\System directory, system files will be written to the Windows\ directory +end +item: Check if File/Dir Exists + Pathname=%SYS% + Flags=10000100 +end +item: Set Variable + Variable=SYS + Value=%WIN% +end +item: End Block +end +item: Check Configuration + Flags=10111011 +end +item: Get Registry Key Value + Variable=COMMON + Key=SOFTWARE\Microsoft\Windows\CurrentVersion + Default=C:\Program Files\Common Files + Value Name=CommonFilesDir + Flags=00000100 +end +item: Get Registry Key Value + Variable=PROGRAM_FILES + Key=SOFTWARE\Microsoft\Windows\CurrentVersion + Default=C:\Program Files + Value Name=ProgramFilesDir + Flags=00000100 +end +item: Set Variable + Variable=EXPLORER + Value=1 +end +item: End Block +end +item: Remark + Text=Note from Tim: The Wizard hardcod "C:" at the start of the replacement text for MAINDIR. +end +item: Remark + Text=That's not appropriate if the system drive doesn't happen to be C:. +end +item: Remark + Text=I removed the "C:", and that did the right thing for two people who tested it on non-C: machines, +end +item: Remark + Text=but it's unclear whether it will always do the right thing. +end +item: Set Variable + Variable=MAINDIR + Value=\%MAINDIR% + Flags=00001100 +end +item: Remark + Text=BACKUP is the variable that holds the path that all backup files will be copied to when overwritten +end +item: Set Variable + Variable=BACKUP + Value=%MAINDIR%\BACKUP + Flags=10000000 +end +item: Remark + Text=DOBACKUP determines if a backup will be performed. The possible values are A (do backup) or B (do not do backup) +end +item: Set Variable + Variable=DOBACKUP + Value=A +end +item: Remark + Text=BRANDING determines if the installation will be branded with a name and company. By default, this is written to the INST directory (installation media). +end +item: Set Variable + Variable=BRANDING + Value=0 +end +item: If/While Statement + Variable=BRANDING + Value=1 +end +item: Read INI Value + Variable=NAME + Pathname=%INST%\CUSTDATA.INI + Section=Registration + Item=Name +end +item: Read INI Value + Variable=COMPANY + Pathname=%INST%\CUSTDATA.INI + Section=Registration + Item=Company +end +item: If/While Statement + Variable=NAME +end +item: Set Variable + Variable=DOBRAND + Value=1 +end +item: Get System Information + Variable=NAME + Flags=00000110 +end +item: Get System Information + Variable=COMPANY + Flags=00000111 +end +item: End Block +end +item: End Block +end +item: Remark + Text=END WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- +end +item: Remark +end +item: Remark + Text=Set vrbls for the "Advanced Options" subdialog of Components. +end +item: Set Variable + Variable=SELECT_ADMIN + Value=A +end +item: If/While Statement + Variable=DOADMIN + Value=0 +end +item: Set Variable + Variable=SELECT_ADMIN + Value=B +end +item: End Block +end +item: Remark +end +item: Remark + Text=TASKS values: +end +item: Remark + Text=A: Register file extensions +end +item: Remark + Text=B: Create Start Menu shortcuts +end +item: Set Variable + Variable=TASKS + Value=AB +end +item: Remark +end +item: Remark + Text=COMPONENTS values: +end +item: Remark + Text=A: interpreter and libraries +end +item: Remark + Text=B: Tcl/Tk +end +item: Remark + Text=C: docs +end +item: Remark + Text=D: tools +end +item: Remark + Text=E: test suite +end +item: Set Variable + Variable=COMPONENTS + Value=ABCDE +end +item: Remark +end +item: Remark + Text=March thru the user GUI. +end +item: Wizard Block + Direction Variable=DIRECTION + Display Variable=DISPLAY + Bitmap Pathname=.\installer.bmp + X Position=9 + Y Position=10 + Filler Color=11173759 + Dialog=Select Destination Directory + Dialog=Backup Replaced Files + Dialog=Select Components + Dialog=Select Program Manager Group + Variable= + Variable= + Variable= + Variable=TASKS + Value= + Value= + Value= + Value=B + Compare=0 + Compare=0 + Compare=0 + Compare=3 + Flags=00000011 +end +item: If/While Statement + Variable=DISPLAY + Value=Start Installation +end +item: Set Variable + Variable=SUMMARY + Value=Install directory: %MAINDIR%%CRLF% +end +item: Remark +end +item: If/While Statement + Variable=SELECT_ADMIN + Value=A +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Doing admin install.%CRLF% + Flags=00000001 +end +item: Else Statement +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Doing non-admin install.%CRLF% + Flags=00000001 +end +item: End Block +end +item: Remark +end +item: If/While Statement + Variable=DOBACKUP + Value=A +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Make backups, into %BACKUP%%CRLF% + Flags=00000001 +end +item: Else Statement +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Don't make backups.%CRLF% + Flags=00000001 +end +item: End Block +end +item: Remark +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Components:%CRLF% + Flags=00000001 +end +item: If/While Statement + Variable=COMPONENTS + Value=A + Flags=00000010 +end +item: Set Variable + Variable=SUMMARY + Value= Python interpreter and libraries%CRLF% + Flags=00000001 +end +item: End Block +end +item: If/While Statement + Variable=COMPONENTS + Value=B + Flags=00000010 +end +item: Set Variable + Variable=SUMMARY + Value= Tcl/Tk (Tkinter, IDLE, pydoc)%CRLF% + Flags=00000001 +end +item: End Block +end +item: If/While Statement + Variable=COMPONENTS + Value=C + Flags=00000010 +end +item: Set Variable + Variable=SUMMARY + Value= Python documentation%CRLF% + Flags=00000001 +end +item: End Block +end +item: If/While Statement + Variable=COMPONENTS + Value=D + Flags=00000010 +end +item: Set Variable + Variable=SUMMARY + Value= Tool and utility scripts%CRLF% + Flags=00000001 +end +item: End Block +end +item: If/While Statement + Variable=COMPONENTS + Value=E + Flags=00000010 +end +item: Set Variable + Variable=SUMMARY + Value= Python test suite%CRLF% + Flags=00000001 +end +item: End Block +end +item: Remark +end +item: If/While Statement + Variable=TASKS + Value=A + Flags=00000010 +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Register file extensions.%CRLF% + Flags=00000001 +end +item: Else Statement +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Don't register file extensions.%CRLF% + Flags=00000001 +end +item: End Block +end +item: Remark +end +item: If/While Statement + Variable=TASKS + Value=B + Flags=00000010 +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%Start Menu group: %GROUP%%CRLF% + Flags=00000001 +end +item: Else Statement +end +item: Set Variable + Variable=SUMMARY + Value=%CRLF%No Start Menu shortcuts.%CRLF% + Flags=00000001 +end +item: End Block +end +item: End Block +end +item: Remark +end +item: Custom Dialog Set + Name=Select Destination Directory + Display Variable=DISPLAY + item: Dialog + Title=%APPTITLE% Installation + Title French=Installation de %APPTITLE% + Title German=Installation von %APPTITLE% + Title Spanish=Instalación de %APPTITLE% + Title Italian=Installazione di %APPTITLE% + Width=339 + Height=280 + Font Name=Helv + Font Size=8 + item: Push Button + Rectangle=188 234 244 253 + Variable=DIRECTION + Value=N + Create Flags=01010000000000010000000000000001 + Text=&Next > + Text French=&Suite > + Text German=&Weiter > + Text Spanish=&Siguiente > + Text Italian=&Avanti > + end + item: Push Button + Rectangle=264 234 320 253 + Action=3 + Create Flags=01010000000000010000000000000000 + Text=&Cancel + Text French=&Annuler + Text German=&Abbrechen + Text Spanish=&Cancelar + Text Italian=&Annulla + end + item: Static + Rectangle=10 225 320 226 + Action=3 + Create Flags=01010000000000000000000000000111 + end + item: Static + Rectangle=108 11 323 33 + Create Flags=01010000000000000000000000000000 + Flags=0000000000000001 + Name=Times New Roman + Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 + Text=Select Destination Directory + Text French=Sélectionner le répertoire de destination + Text German=Zielverzeichnis wählen + Text Spanish=Seleccione el directorio de destino + Text Italian=Selezionare Directory di destinazione + end + item: Listbox + Rectangle=108 58 321 219 + Variable=MAINDIR + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000100000010000000101000001 + Flags=0000110000001010 + Text=%MAINDIR% + Text= + end + item: Static + Rectangle=108 40 313 58 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000000000000000000000 + Text=Please select a directory for the %APPTITLE% files. + end + end + item: Dialog + Title=Select Destination Directory + Title French=Sélectionner le répertoire de destination + Title German=Zielverzeichnis wählen + Title Spanish=Seleccione el directorio de destino + Title Italian=Selezionare Directory di destinazione + Width=276 + Height=216 + Font Name=Helv + Font Size=8 + item: Listbox + Rectangle=6 6 204 186 + Variable=MAINDIR + Create Flags=01010000100000010000000101000000 + Flags=0000110000100010 + Text=%MAINDIR% + Text French=%MAINDIR% + Text German=%MAINDIR% + Text Spanish=%MAINDIR% + Text Italian=%MAINDIR% + end + item: Push Button + Rectangle=209 8 265 26 + Create Flags=01010000000000010000000000000001 + Text=OK + Text French=OK + Text German=OK + Text Spanish=Aceptar + Text Italian=OK + end + item: Push Button + Rectangle=209 31 265 50 + Variable=MAINDIR + Value=%MAINDIR_SAVE% + Create Flags=01010000000000010000000000000000 + Flags=0000000000000001 + Text=Cancel + Text French=Annuler + Text German=Abbrechen + Text Spanish=Cancelar + Text Italian=Annulla + end + end +end +item: Custom Dialog Set + Name=Backup Replaced Files + Display Variable=DISPLAY + item: Dialog + Title=%APPTITLE% Installation + Title French=Fichiers de Sauvegarde Remplacés + Title German=Sicherungskopie von ersetzten Dateien erstellen + Title Portuguese=Ficheiros substituídos de segurança + Title Spanish=Copias de seguridad de los archivos reemplazados + Title Italian=Backup file sostituiti + Title Danish=Sikkerhedskopiering af erstattede filer + Title Dutch=Vervangen bestanden kopiëren + Title Norwegian=Sikkerhetskopiere erstattede filer + Title Swedish=Säkerhetskopiera utbytta filer + Width=350 + Height=280 + Font Name=Helv + Font Size=8 + item: Push Button + Rectangle=188 234 244 251 + Variable=DIRECTION + Value=N + Create Flags=01010000000000010000000000000001 + Text=&Next > + Text French=&Suivant> + Text German=&Weiter> + Text Portuguese=&Próximo> + Text Spanish=&Siguiente > + Text Italian=&Avanti > + Text Danish=&Næste> + Text Dutch=&Volgende> + Text Norwegian=&Neste> + Text Swedish=&Nästa > + end + item: Push Button + Rectangle=131 234 188 251 + Variable=DIRECTION + Value=B + Create Flags=01010000000000010000000000000000 + Text=< &Back + Text French=<&Retour + Text German=<&Zurück + Text Portuguese=<&Retornar + Text Spanish=<&Retroceder + Text Italian=< &Indietro + Text Danish=<&Tilbage + Text Dutch=<&Terug + Text Norwegian=<&Tilbake + Text Swedish=< &Tillbaka + end + item: Push Button + Rectangle=278 234 330 251 + Action=3 + Create Flags=01010000000000010000000000000000 + Text=Cancel + Text French=Annuler + Text German=Abbrechen + Text Portuguese=Cancelar + Text Spanish=Cancelar + Text Italian=Annulla + Text Danish=Annuller + Text Dutch=Annuleren + Text Norwegian=Avbryt + Text Swedish=Avbryt + end + item: Static + Rectangle=11 221 329 223 + Action=3 + Create Flags=01010000000000000000000000000111 + end + item: Static + Rectangle=108 46 320 98 + Create Flags=01010000000000000000000000000000 + Text=This installation program can create backup copies of all files replaced during the installation. These files will be used when the software is uninstalled and a rollback is requested. If backup copies are not created, you will only be able to uninstall the software and not roll the system back to a previous state. + Text= + Text=Do you want to create backups of replaced files? + Text French=Le programme d'installation peut créer des copies de sauvegarde de tous les fichiers remplacés pendant l'installation. Ces fichiers sont utilisés au cas où le logiciel est désinstallé et que l'on procède à la reprise du système. Si les copies de sauvegarde ne sont pas créées, on ne pourra que désinstaller le logiciel sans reprendre le système à un état précédent. Voulez-vous créer une sauvegarde des fichiers remplacés ? + Text German=Dieses Installationsprogramm kann Sicherungskopien von allen während der Installation ersetzten Dateien erstellen. Diese Dateien werden zur Rückgängigmachung der Installation und bei Anforderung eines Rollbacks verwendet. Ohne Sicherungskopien ist nur eine Rückgängigmachung der Installation möglich, nicht aber ein Rollback des Systems. Sicherungskopien der ersetzten Dateien erstellen? + Text Portuguese=Este programa de instalação pode criar cópias de segurança de todos os ficheiros substituídos durante a instalação. Estes ficheiros serão utilizados quando o programa for desinstalado e for requisitada uma retomada. Se as cópias de segurança não forem criadas, só poderá desinstalar o programa e não pode retomar um estado anterior do sistema. Deseja criar cópias de segurança dos ficheiros substituídos? + Text Spanish=Este programa de instalación puede crear copias de seguridad de todos los archivos reemplazados durante la instalación. Estos archivos se utilizarán cuando se desinstale el software y se solicite volver al estado anterior. Si no se crean copias de seguridad, únicamente podrá desinstalar el software y no podrá devolver el sistema al estado anterior. ¿Desea crear archivos de seguridad de los archivos reemplazados? + Text Italian=Questo programma di installazione può creare copie di backup di tutti i file sostituiti durante l’installazione. Questi file saranno usati quando il software sarà disinstallato e sarà richiesto un ritorno allo stato precedente. Se non crei le copie di backup, potrai solo disinstallare il software, ma non potrai riportare il sistema allo stato precedente. Vuoi creare i file di backup dei file sostituiti? + Text Danish=Dette installationsprogram kan oprette sikkerhedskopier af alle filer, som erstattes under installationen. Disse filer benyttes, når softwaren fjernes, og den tidligere systemkonfiguration genetableres. Hvis der ikke oprettes sikkerhedskopier, kan du kun fjerne den installerede software og ikke genetablere den tidligere systemkonfiguration. Vil du oprette sikkerhedskopier af filer, som erstattes? + Text Dutch=Dit installatieprogramma kan kopieën maken van alle bestanden die tijdens de installatie worden vervangen. Deze worden dan gebruikt als de software-installatie ongedaan wordt gemaakt en u het systeem wilt laten terugkeren naar de oorspronkelijke staat. Als er geen back-up kopieën worden gemaakt, kunt u de software enkel verwijderen maar het systeem niet in de oorspronkelijke staat terugbrengen. Wilt u een back-up maken van de vervangen bestanden? + Text Norwegian=Dette installasjonsprogrammet kan lage sikkerhetskopier av alle filer som blir erstattet under installasjonen. Disse filene vil tas i bruk når programvaren er avinstallert og det er behov for tilbakestilling. Hvis det ikke er laget sikkerhetskopier, kan du kun avinstallere programvaren og ikke stille systemet tilbake til tidligere status. Ønsker du å lage sikkerhetskopier av de filene som blir erstattet nå? + Text Swedish=Installationsprogrammet kan skapa säkerhetskopior av alla filer som byts ut under installationen. Dessa filer kan sedan användas när programvaran avinstalleras och du begär rollback. Om du då inte har några säkerhetskopior kan du bara avinstallera programvaran, inte återskapa systemet i dess tidigare skick. Vill du göra säkerhetskopior av de ersatta filerna? + end + item: Radio Button + Rectangle=141 106 265 136 + Variable=DOBACKUP + Create Flags=01010000000000010000000000001001 + Text=&Yes, make backups + Text=N&o, do not make backups + Text= + Text French=&Oui + Text French=N&on + Text French= + Text German=&Ja + Text German=N&ein + Text German= + Text Portuguese=&Sim + Text Portuguese=Nã&o + Text Portuguese= + Text Spanish=&Sí + Text Spanish=N&o + Text Spanish= + Text Italian=&Sì + Text Italian=N&o + Text Italian= + Text Danish=&Ja + Text Danish=&Nej + Text Danish= + Text Dutch=&Ja + Text Dutch=N&ee + Text Dutch= + Text Norwegian=&Ja + Text Norwegian=&Nei + Text Norwegian= + Text Swedish=&Ja + Text Swedish=N&ej + Text Swedish= + end + item: Static + Control Name=BACK2 + Rectangle=108 173 320 208 + Action=1 + Create Flags=01010000000000000000000000000111 + Text=Backup File Destination Directory + Text French=Répertoire de destination des fichiers de sauvegarde + Text German=Zielverzeichnis für die Sicherungsdatei + Text Portuguese=Directório de destino de ficheiro de segurança + Text Spanish=Directorio de Destino de los Archivos de Seguridad + Text Italian=Directory di destinazione dei file di backup + Text Danish=Destinationsbibliotek til sikkerhedskopier + Text Dutch=Doeldirectory backup-bestand + Text Norwegian=Målkatalog for sikkerhetskopier + Text Swedish=Katalog för säkerhetskopierade filer + end + item: Push Button + Control Name=BACK3 + Rectangle=265 185 318 203 + Variable=BACKUP_SAVE + Value=%BACKUP% + Destination Dialog=1 + Action=2 + Create Flags=01010000000000010000000000000000 + Text=B&rowse... + Text French=P&arcourir + Text German=B&lättern... + Text Portuguese=P&rocurar + Text Spanish=V&isualizar... + Text Italian=Sfoglia... + Text Danish=&Gennemse... + Text Dutch=B&laderen... + Text Norwegian=Bla igjennom + Text Swedish=&Bläddra + end + item: Static + Control Name=BACK4 + Rectangle=129 188 254 200 + Destination Dialog=2 + Create Flags=01010000000000000000000000000000 + Text=%BACKUP% + Text French=%BACKUP% + Text German=%BACKUP% + Text Portuguese=%BACKUP% + Text Spanish=%BACKUP% + Text Italian=%BACKUP% + Text Danish=%BACKUP% + Text Dutch=%BACKUP% + Text Norwegian=%BACKUP% + Text Swedish=%BACKUP% + end + item: Static + Rectangle=108 11 323 36 + Create Flags=01010000000000000000000000000000 + Flags=0000000000000001 + Name=Times New Roman + Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 + Text=Backup Replaced Files + Text French=Sélectionner les composants + Text German=Komponenten auswählen + Text Spanish=Seleccione componentes + Text Italian=Selezionare i componenti + end + item: If/While Statement + Variable=DOBACKUP + Value=B + end + item: Set Control Attribute + Control Name=BACK3 + Operation=1 + end + item: Set Control Attribute + Control Name=BACK4 + Operation=1 + end + item: Else Statement + end + item: Set Control Attribute + Control Name=BACK3 + end + item: Set Control Attribute + Control Name=BACK4 + end + item: End Block + end + end + item: Dialog + Title=Select Destination Directory + Title French=Choisissez le répertoire de destination + Title German=Zielverzeichnis wählen + Title Portuguese=Seleccionar Directório de Destino + Title Spanish=Seleccione el Directorio de Destino + Title Italian=Seleziona Directory di destinazione + Title Danish=Vælg Destinationsbibliotek + Title Dutch=Kies Doeldirectory + Title Norwegian=Velg målkatalog + Title Swedish=Välj destinationskalatog + Width=276 + Height=216 + Font Name=Helv + Font Size=8 + item: Listbox + Rectangle=6 3 200 186 + Variable=BACKUP + Create Flags=01010000100000010000000101000000 + Flags=0000110000100010 + Text=%BACKUP% + Text= + Text French=%BACKUP% + Text French= + Text German=%BACKUP% + Text German= + Text Portuguese=%BACKUP% + Text Portuguese= + Text Spanish=%BACKUP% + Text Spanish= + Text Italian=%BACKUP% + Text Italian= + Text Danish=%BACKUP% + Text Danish= + Text Dutch=%BACKUP% + Text Dutch= + Text Norwegian=%BACKUP% + Text Norwegian= + Text Swedish=%BACKUP% + Text Swedish= + end + item: Push Button + Rectangle=209 8 265 26 + Create Flags=01010000000000010000000000000001 + Text=OK + Text French=OK + Text German=OK + Text Portuguese=OK + Text Spanish=ACEPTAR + Text Italian=OK + Text Danish=OK + Text Dutch=OK + Text Norwegian=OK + Text Swedish=OK + end + item: Push Button + Rectangle=209 31 265 50 + Variable=BACKUP + Value=%BACKUP_SAVE% + Create Flags=01010000000000010000000000000000 + Flags=0000000000000001 + Text=Cancel + Text French=Annuler + Text German=Abbrechen + Text Portuguese=Cancelar + Text Spanish=Cancelar + Text Italian=Annulla + Text Danish=Slet + Text Dutch=Annuleren + Text Norwegian=Avbryt + Text Swedish=Avbryt + end + end +end +item: Custom Dialog Set + Name=Select Components + Display Variable=DISPLAY + item: Dialog + Title=%APPTITLE% Installation + Title French=Installation de %APPTITLE% + Title German=Installation von %APPTITLE% + Title Spanish=Instalación de %APPTITLE% + Title Italian=Installazione di %APPTITLE% + Width=339 + Height=280 + Font Name=Helv + Font Size=8 + item: Push Button + Rectangle=188 234 244 253 + Variable=DIRECTION + Value=N + Create Flags=01010000000000010000000000000001 + Text=&Next > + Text French=&Suite > + Text German=&Weiter > + Text Spanish=&Siguiente > + Text Italian=&Avanti > + end + item: Push Button + Rectangle=131 234 188 253 + Variable=DIRECTION + Value=B + Create Flags=01010000000000010000000000000000 + Text=< &Back + Text French=< &Retour + Text German=< &Zurück + Text Spanish=< &Atrás + Text Italian=< &Indietro + end + item: Push Button + Rectangle=264 234 320 253 + Action=3 + Create Flags=01010000000000010000000000000000 + Text=&Cancel + Text French=&Annuler + Text German=&Abbrechen + Text Spanish=&Cancelar + Text Italian=&Annulla + end + item: Checkbox + Rectangle=108 66 313 156 + Variable=COMPONENTS + Create Flags=01010000000000010000000000000011 + Flags=0000000000000110 + Text=Python interpreter and libraries + Text=Tcl/Tk (Tkinter, IDLE, pydoc) + Text=Python HTML docs + Text=Python utility scripts (Tools/) + Text=Python test suite (Lib/test/) + Text= + Text French=Python interpreter, library and IDLE + Text French=Python HTML docs + Text French=Python utility scripts (Tools/) + Text French=Python test suite (Lib/test/) + Text French= + Text German=Python interpreter, library and IDLE + Text German=Python HTML docs + Text German=Python utility scripts (Tools/) + Text German=Python test suite (Lib/test/) + Text German= + Text Spanish=Python interpreter, library and IDLE + Text Spanish=Python HTML docs + Text Spanish=Python utility scripts (Tools/) + Text Spanish=Python test suite (Lib/test/) + Text Spanish= + Text Italian=Python interpreter, library and IDLE + Text Italian=Python HTML docs + Text Italian=Python utility scripts (Tools/) + Text Italian=Python test suite (Lib/test/) + Text Italian= + end + item: Static + Rectangle=108 45 320 63 + Create Flags=01010000000000000000000000000000 + Text=Choose which components to install by checking the boxes below. + Text French=Choisissez les composants que vous voulez installer en cochant les cases ci-dessous. + Text German=Wählen Sie die zu installierenden Komponenten, indem Sie in die entsprechenden Kästchen klicken. + Text Spanish=Elija los componentes que desee instalar marcando los cuadros de abajo. + Text Italian=Scegliere quali componenti installare selezionando le caselle sottostanti. + end + item: Push Button + Rectangle=188 203 269 220 + Destination Dialog=1 + Action=2 + Enabled Color=00000000000000000000000011111111 + Create Flags=01010000000000010000000000000000 + Text=Advanced Options ... + end + item: Static + Rectangle=10 225 320 226 + Action=3 + Create Flags=01010000000000000000000000000111 + end + item: Static + Rectangle=108 10 323 43 + Create Flags=01010000000000000000000000000000 + Flags=0000000000000001 + Name=Times New Roman + Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 + Text=Select Components + Text French=Sélectionner les composants + Text German=Komponenten auswählen + Text Spanish=Seleccione componentes + Text Italian=Selezionare i componenti + end + item: Static + Rectangle=251 180 311 193 + Variable=COMPONENTS + Value=MAINDIR + Create Flags=01010000000000000000000000000010 + end + item: Static + Rectangle=251 168 311 179 + Variable=COMPONENTS + Create Flags=01010000000000000000000000000010 + end + item: Static + Rectangle=123 168 234 181 + Create Flags=01010000000000000000000000000000 + Text=Disk Space Required: + Text French=Espace disque requis : + Text German=Notwendiger Speicherplatz: + Text Spanish=Espacio requerido en el disco: + Text Italian=Spazio su disco necessario: + end + item: Static + Rectangle=123 180 234 193 + Create Flags=01010000000000000000000000000000 + Text=Disk Space Remaining: + Text French=Espace disque disponible : + Text German=Verbleibender Speicherplatz: + Text Spanish=Espacio en disco disponible: + Text Italian=Spazio su disco disponibile: + end + item: Static + Rectangle=108 158 320 196 + Action=1 + Create Flags=01010000000000000000000000000111 + end + item: If/While Statement + Variable=DLG_EVENT_TYPE + Value=VERIFY + end + item: Remark + Text=If they're installing Tcl/Tk, Tools, or the test suite, doesn't make much sense unless they're installing Python too. + end + item: If/While Statement + Variable=COMPONENTS + Value=BDE + Flags=00001010 + end + item: If/While Statement + Variable=COMPONENTS + Value=A + Flags=00000011 + end + item: Display Message + Title=Are you sure? + Text=Installing Tcl/Tk, Tools or the test suite doesn't make much sense unless you install the Python interpreter and libraries too. + Text= + Text=Click Yes if that's really what you want. + Flags=00101101 + end + item: Remark + Text=Nothing -- just proceed to the next dialog. + end + item: Else Statement + end + item: Remark + Text=Return to the dialog. + end + item: Set Variable + Variable=DLG_EVENT_TYPE + end + item: End Block + end + item: End Block + end + item: End Block + end + item: End Block + end + end + item: Dialog + Title=Advanced Options + Width=339 + Height=213 + Font Name=Helv + Font Size=8 + item: Radio Button + Control Name=ADMIN2 + Rectangle=11 46 90 76 + Variable=SELECT_ADMIN + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000010000000000001001 + Text=Admin install + Text=Non-Admin installl + Text= + end + item: Push Button + Rectangle=188 170 244 189 + Variable=DIRECTION + Value=N + Create Flags=01010000000000010000000000000001 + Text=OK + Text French=&Suite > + Text German=&Weiter > + Text Spanish=&Siguiente > + Text Italian=&Avanti > + end + item: Static + Rectangle=5 3 326 83 + Action=1 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000000000000000000111 + end + item: Static + Control Name=ADMIN1 + Rectangle=11 11 321 45 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000000000000000000000 + Text=By default, the install records settings in the per-machine area of the registry (HKLM), and installs the Python and C runtime DLLs to %SYS32%. Choose "Non-Admin install" if you would prefer settings made in the per-user registry (HKCU), and DLLs installed in %MAINDIR%. + end + item: Static + Rectangle=5 90 326 157 + Action=1 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000000000000000000111 + end + item: Checkbox + Rectangle=11 121 243 151 + Variable=TASKS + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000010000000000000011 + Text=Register file extensions (.py, .pyw, .pyc, .pyo) + Text=Create Start Menu shortcuts + Text= + end + item: Static + Rectangle=11 103 320 121 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000000000000000000000 + Text=Choose tasks to perform by checking the boxes below. + end + item: If/While Statement + Variable=DLG_EVENT_TYPE + Value=INIT + end + item: If/While Statement + Variable=DOADMIN + Value=1 + end + item: Set Control Attribute + Control Name=ADMIN2 + end + item: Else Statement + end + item: Set Control Text + Control Name=ADMIN1 + Control Text=This section is available only if logged in to an account with Administrator privileges. + end + item: Set Control Attribute + Control Name=ADMIN2 + Operation=1 + end + item: End Block + end + item: End Block + end + end +end +item: Custom Dialog Set + Name=Select Program Manager Group + Display Variable=DISPLAY + item: Dialog + Title=%APPTITLE% Installation + Title French=Installation de %APPTITLE% + Title German=Installation von %APPTITLE% + Title Spanish=Instalación de %APPTITLE% + Title Italian=Installazione di %APPTITLE% + Width=339 + Height=280 + Font Name=Helv + Font Size=8 + item: Push Button + Rectangle=188 234 244 253 + Variable=DIRECTION + Value=N + Create Flags=01010000000000010000000000000001 + Text=&Next > + Text French=&Suite > + Text German=&Weiter > + Text Spanish=&Siguiente > + Text Italian=&Avanti > + end + item: Push Button + Rectangle=131 234 188 253 + Variable=DIRECTION + Value=B + Create Flags=01010000000000010000000000000000 + Flags=0000000000000001 + Text=< &Back + Text French=< &Retour + Text German=< &Zurück + Text Spanish=< &Atrás + Text Italian=< &Indietro + end + item: Push Button + Rectangle=264 234 320 253 + Action=3 + Create Flags=01010000000000010000000000000000 + Text=&Cancel + Text French=&Annuler + Text German=&Abbrechen + Text Spanish=&Cancelar + Text Italian=&Annulla + end + item: Static + Rectangle=10 225 320 226 + Action=3 + Create Flags=01010000000000000000000000000111 + end + item: Static + Rectangle=108 10 323 53 + Create Flags=01010000000000000000000000000000 + Flags=0000000000000001 + Name=Times New Roman + Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 + Text=Select Start Menu Group + Text French=Sélectionner le groupe du Gestionnaire de programme + Text German=Bestimmung der Programm-Managergruppe + Text Spanish=Seleccione grupo del Administrador de programas + Text Italian=Selezionare il gruppo ProgMan + end + item: Static + Rectangle=108 35 320 65 + Create Flags=01010000000000000000000000000000 + Text=Enter the name of the Start Menu program group to which to add the %APPTITLE% icons: + Text French=Entrez le nom du groupe du Gestionnaire de programme dans lequel vous souhaitez ajouter les icônes de %APPTITLE% : + Text German=Geben Sie den Namen der Programmgruppe ein, der das Symbol %APPTITLE% hinzugefügt werden soll: + Text Spanish=Escriba el nombre del grupo del Administrador de programas en el que desea agregar los iconos de %APPTITLE%: + Text Italian=Inserire il nome del gruppo Program Manager per aggiungere le icone %APPTITLE% a: + end + item: Combobox + Rectangle=108 56 320 219 + Variable=GROUP + Create Flags=01010000001000010000001100000001 + Flags=0000000000000001 + Text=%GROUP% + Text= + Text French=%GROUP% + Text German=%GROUP% + Text Spanish=%GROUP% + Text Italian=%GROUP% + end + end +end +item: Custom Dialog Set + Name=Start Installation + Display Variable=DISPLAY + item: Dialog + Title=%APPTITLE% Installation + Title French=Installation de %APPTITLE% + Title German=Installation von %APPTITLE% + Title Spanish=Instalación de %APPTITLE% + Title Italian=Installazione di %APPTITLE% + Width=339 + Height=280 + Font Name=Helv + Font Size=8 + item: Push Button + Rectangle=188 234 244 253 + Variable=DIRECTION + Value=N + Create Flags=01010000000000010000000000000001 + Text=&Next > + Text French=&Suite > + Text German=&Weiter > + Text Spanish=&Siguiente > + Text Italian=&Avanti > + end + item: Push Button + Rectangle=131 234 188 253 + Variable=DIRECTION + Value=B + Create Flags=01010000000000010000000000000000 + Text=< &Back + Text French=< &Retour + Text German=< &Zurück + Text Spanish=< &Atrás + Text Italian=< &Indietro + end + item: Push Button + Rectangle=264 234 320 253 + Action=3 + Create Flags=01010000000000010000000000000000 + Text=&Cancel + Text French=&Annuler + Text German=&Abbrechen + Text Spanish=&Cancelar + Text Italian=&Annulla + end + item: Static + Rectangle=10 225 320 226 + Action=3 + Create Flags=01010000000000000000000000000111 + end + item: Static + Rectangle=108 10 323 53 + Create Flags=01010000000000000000000000000000 + Flags=0000000000000001 + Name=Times New Roman + Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 + Text=Ready to Install! + Text French=Prêt à installer ! + Text German=Installationsbereit! + Text Spanish=¡Preparado para la instalación! + Text Italian=Pronto per l'installazione! + end + item: Static + Rectangle=108 40 320 62 + Create Flags=01010000000000000000000000000000 + Text=Click the Next button to install %APPTITLE%, or the Back button to change choices: + Text French=Vous êtes maintenant prêt à installer les fichiers %APPTITLE%. + Text French= + Text French=Cliquez sur le bouton Suite pour commencer l'installation ou sur le bouton Retour pour entrer les informations d'installation à nouveau. + Text German=Sie können %APPTITLE% nun installieren. + Text German= + Text German=Klicken Sie auf "Weiter", um mit der Installation zu beginnen. Klicken Sie auf "Zurück", um die Installationsinformationen neu einzugeben. + Text Spanish=Ya está listo para instalar %APPTITLE%. + Text Spanish= + Text Spanish=Presione el botón Siguiente para comenzar la instalación o presione Atrás para volver a ingresar la información para la instalación. + Text Italian=Ora è possibile installare %APPTITLE%. + Text Italian= + Text Italian=Premere il pulsante Avanti per avviare l'installazione o il pulsante Indietro per reinserire le informazioni di installazione. + end + item: Editbox + Rectangle=108 66 324 219 + Help Context=16711681 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000100000000001100011000100 + Text=%SUMMARY% + end + end +end +item: Remark +end +item: If/While Statement + Variable=DISPLAY + Value=Select Destination Directory +end +item: Remark + Text=User may have changed MAINDIR, so reset BACKUP to match. +end +item: Set Variable + Variable=BACKUP + Value=%MAINDIR%\BACKUP +end +item: End Block +end +item: Remark +end +item: End Block +end +item: Remark +end +item: Remark + Text=BEGIN WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- +end +item: Remark + Text=When the BACKUP feature is enabled, the BACKUPDIR is initialized +end +item: If/While Statement + Variable=DOBACKUP + Value=A +end +item: Set Variable + Variable=BACKUPDIR + Value=%BACKUP% +end +item: End Block +end +item: Remark + Text=The BRANDING information is written to the INI file on the installation media. +end +item: If/While Statement + Variable=BRANDING + Value=1 +end +item: If/While Statement + Variable=DOBRAND + Value=1 +end +item: Edit INI File + Pathname=%INST%\CUSTDATA.INI + Settings=[Registration] + Settings=NAME=%NAME% + Settings=COMPANY=%COMPANY% + Settings= +end +item: End Block +end +item: End Block +end +item: Remark + Text=Begin writing to the INSTALL.LOG +end +item: Open/Close INSTALL.LOG +end +item: Remark + Text=Check free disk space calculates free disk space as well as component sizes. +end +item: Remark + Text=It should be located before all Install File actions. +end +item: Check Disk Space + Component=COMPONENTS +end +item: Remark + Text=This include script allows uninstall support +end +item: Remark + Text=Note from Tim: this is our own Uninstal.wse, a copy of Wise's except +end +item: Remark + Text=it writes to HKCU (instead of HKLM) if the user doesn't have admin privs. +end +item: Include Script + Pathname=.\Uninstal.wse +end +item: Remark + Text=Note from Tim: these seeming no-ops actually convert to short filenames. +end +item: Set Variable + Variable=COMMON + Value=%COMMON% + Flags=00010100 +end +item: Set Variable + Variable=MAINDIR + Value=%MAINDIR% + Flags=00010100 +end +item: Remark + Text=This IF/THEN/ELSE reads the correct registry entries for shortcut/icon placement +end +item: Check Configuration + Flags=10111011 +end +item: Get Registry Key Value + Variable=STARTUPDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%WIN%\Start Menu\Programs\StartUp + Value Name=StartUp + Flags=00000010 +end +item: Get Registry Key Value + Variable=DESKTOPDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%WIN%\Desktop + Value Name=Desktop + Flags=00000010 +end +item: Get Registry Key Value + Variable=STARTMENUDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%WIN%\Start Menu + Value Name=Start Menu + Flags=00000010 +end +item: Get Registry Key Value + Variable=GROUPDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%WIN%\Start Menu\Programs + Value Name=Programs + Flags=00000010 +end +item: Get Registry Key Value + Variable=CSTARTUPDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%STARTUPDIR% + Value Name=Common Startup + Flags=00000100 +end +item: Get Registry Key Value + Variable=CDESKTOPDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%DESKTOPDIR% + Value Name=Common Desktop + Flags=00000100 +end +item: Get Registry Key Value + Variable=CSTARTMENUDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%STARTMENUDIR% + Value Name=Common Start Menu + Flags=00000100 +end +item: Get Registry Key Value + Variable=CGROUPDIR + Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders + Default=%GROUPDIR% + Value Name=Common Programs + Flags=00000100 +end +item: Else Statement +end +item: Remark + Text=Note from Tim: the Wizard left this block empty! +end +item: Remark + Text=Perhaps it's only relevant on Windows 3.1. +end +item: End Block +end +item: Remark + Text=END WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- +end +item: Remark +end +item: If/While Statement + Variable=SELECT_ADMIN + Value=B +end +item: Remark + Text=The user chose a non-admin install in "Advanced Options". +end +item: Remark + Text=This should come after the include of Uninstal.wse above, because +end +item: Remark + Text=writing uninstall info to HKCU is ineffective except under Win2K. +end +item: Set Variable + Variable=DOADMIN + Value=0 +end +item: End Block +end +item: Remark +end +item: Set Variable + Variable=CGROUP_SAVE + Value=%GROUP% +end +item: If/While Statement + Variable=TASKS + Value=B + Flags=00000010 +end +item: If/While Statement + Variable=DOADMIN + Value=1 +end +item: Set Variable + Variable=GROUP + Value=%CGROUPDIR%\%GROUP% +end +item: Else Statement +end +item: Set Variable + Variable=GROUP + Value=%GROUPDIR%\%GROUP% +end +item: End Block +end +item: End Block +end +item: Remark +end +item: Remark + Text=Long section to install files. +end +item: Remark +end +item: If/While Statement + Variable=DOADMIN + Value=1 +end +item: Set Variable + Variable=DLLDEST + Value=%SYS32% +end +item: Else Statement +end +item: Set Variable + Variable=DLLDEST + Value=%MAINDIR% +end +item: End Block +end +item: Remark +end +item: Remark + Text=Install the license even if they deselect everything . +end +item: Install File + Source=..\license + Destination=%MAINDIR%\LICENSE.txt + Flags=0000000000000010 +end +item: Install File + Source=..\readme + Destination=%MAINDIR%\README.txt + Flags=0000000000000010 +end +item: Install File + Source=..\misc\news + Destination=%MAINDIR%\NEWS.txt + Flags=0000000000000010 +end +item: Remark + Text=Icons -- always install so that the uninstaller can use them for its own display. +end +item: Install File + Source=..\pc\pycon.ico + Destination=%MAINDIR%\pycon.ico + Flags=0000000010000010 +end +item: Install File + Source=..\pc\pyc.ico + Destination=%MAINDIR%\pyc.ico + Flags=0000000010000010 +end +item: Install File + Source=..\pc\py.ico + Destination=%MAINDIR%\py.ico + Flags=0000000010000010 +end +item: Remark +end +item: Remark + Text=These arrange to (recursively!) delete all .pyc and .pyo files at uninstall time. +end +item: Remark + Text=This "does the right thing": any directories left empty at the end are removed. +end +item: Add Text to INSTALL.LOG + Text=File Tree: %MAINDIR%\*.pyc +end +item: Add Text to INSTALL.LOG + Text=File Tree: %MAINDIR%\*.pyo +end +item: Remark +end +item: Remark + Text=A: interpreter and libraries +end +item: If/While Statement + Variable=COMPONENTS + Value=A + Flags=00000010 +end +item: Remark + Text=Executables +end +item: Install File + Source=.\python.exe + Destination=%MAINDIR%\python.exe + Flags=0000000000000010 +end +item: Install File + Source=.\pythonw.exe + Destination=%MAINDIR%\pythonw.exe + Flags=0000000000000010 +end +item: Install File + Source=.\w9xpopen.exe + Destination=%MAINDIR%\w9xpopen.exe + Flags=0000000000000010 +end +item: Remark +end +item: Remark + Text=Extension module DLLs (.pyd); keep in synch with libs directory next +end +item: Install File + Source=.\_winreg.pyd + Destination=%MAINDIR%\DLLs\_winreg.pyd + Description=Extension modules + Flags=0000000000000010 +end +item: Install File + Source=.\_csv.pyd + Destination=%MAINDIR%\DLLs\_csv.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\_sre.pyd + Destination=%MAINDIR%\DLLs\_sre.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\_ssl.pyd + Destination=%MAINDIR%\DLLs\_ssl.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\_symtable.pyd + Destination=%MAINDIR%\DLLs\_symtable.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\_testcapi.pyd + Destination=%MAINDIR%\DLLs\_testcapi.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\_tkinter.pyd + Destination=%MAINDIR%\DLLs\_tkinter.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\_socket.pyd + Destination=%MAINDIR%\DLLs\_socket.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\_bsddb.pyd + Destination=%MAINDIR%\DLLs\_bsddb.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\bz2.pyd + Destination=%MAINDIR%\DLLs\bz2.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\datetime.pyd + Destination=%MAINDIR%\DLLs\datetime.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\mmap.pyd + Destination=%MAINDIR%\DLLs\mmap.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\parser.pyd + Destination=%MAINDIR%\DLLs\parser.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\pyexpat.pyd + Destination=%MAINDIR%\DLLs\pyexpat.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\select.pyd + Destination=%MAINDIR%\DLLs\select.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\unicodedata.pyd + Destination=%MAINDIR%\DLLs\unicodedata.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\winsound.pyd + Destination=%MAINDIR%\DLLs\winsound.pyd + Flags=0000000000000010 +end +item: Install File + Source=.\zlib.pyd + Destination=%MAINDIR%\DLLs\zlib.pyd + Flags=0000000000000010 +end +item: Remark +end +item: Remark + Text=Link libraries (.lib); keep in synch with DLLs above, except that the Python lib lives here. +end +item: Install File + Source=.\_winreg.lib + Destination=%MAINDIR%\libs\_winreg.lib + Description=Link library files + Flags=0000000000000010 +end +item: Install File + Source=.\_csv.lib + Destination=%MAINDIR%\libs\_csv.lib + Flags=0000000000000010 +end +item: Install File + Source=.\_sre.lib + Destination=%MAINDIR%\libs\_sre.lib + Flags=0000000000000010 +end +item: Install File + Source=.\_ssl.lib + Destination=%MAINDIR%\libs\_ssl.lib + Flags=0000000000000010 +end +item: Install File + Source=.\_symtable.lib + Destination=%MAINDIR%\libs\_symtable.lib + Flags=0000000000000010 +end +item: Install File + Source=.\_testcapi.lib + Destination=%MAINDIR%\libs\_testcapi.lib + Flags=0000000000000010 +end +item: Install File + Source=.\_tkinter.lib + Destination=%MAINDIR%\libs\_tkinter.lib + Description=Extension modules + Flags=0000000000000010 +end +item: Install File + Source=.\_socket.lib + Destination=%MAINDIR%\libs\_socket.lib + Flags=0000000000000010 +end +item: Install File + Source=.\_bsddb.lib + Destination=%MAINDIR%\libs\_bsddb.lib + Flags=0000000000000010 +end +item: Install File + Source=.\bz2.lib + Destination=%MAINDIR%\libs\bz2.lib + Flags=0000000000000010 +end +item: Install File + Source=.\datetime.lib + Destination=%MAINDIR%\libs\datetime.lib + Flags=0000000000000010 +end +item: Install File + Source=.\mmap.lib + Destination=%MAINDIR%\libs\mmap.lib + Flags=0000000000000010 +end +item: Install File + Source=.\parser.lib + Destination=%MAINDIR%\libs\parser.lib + Flags=0000000000000010 +end +item: Install File + Source=.\pyexpat.lib + Destination=%MAINDIR%\libs\pyexpat.lib + Flags=0000000000000010 +end +item: Install File + Source=.\select.lib + Destination=%MAINDIR%\libs\select.lib + Flags=0000000000000010 +end +item: Install File + Source=.\unicodedata.lib + Destination=%MAINDIR%\libs\unicodedata.lib + Flags=0000000000000010 +end +item: Install File + Source=.\winsound.lib + Destination=%MAINDIR%\libs\winsound.lib + Flags=0000000000000010 +end +item: Install File + Source=.\zlib.lib + Destination=%MAINDIR%\libs\zlib.lib + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=.\python%_pymajor_%%_pyminor_%.lib + Destination=%MAINDIR%\libs\python%_PYMAJOR_%%_PYMINOR_%.lib + Flags=0000000000000010 +end +item: Remark +end +item: Remark + Text=Main Python DLL +end +item: Remark + Text=Tell Wise it's OK to delete the Python DLL at uninstall time, +end +item: Remark + Text=despite that we (may) write it into a system directory. +end +item: Add Text to INSTALL.LOG + Text=Non-System File: +end +item: Install File + Source=.\python%_pymajor_%%_pyminor_%.dll + Destination=%DLLDEST%\python%_PYMAJOR_%%_PYMINOR_%.dll + Flags=0000000000000010 +end +item: Remark +end +item: Remark + Text=Libraries (Lib/) +end +item: Install File + Source=..\lib\*.py + Destination=%MAINDIR%\Lib + Description=Library Modules + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\bsddb\*.py + Destination=%MAINDIR%\Lib\bsddb + Description=Berkeley database package + Flags=0000000100000010 +end +item: Remark +end +item: Install File + Source=..\lib\compiler\*.py + Destination=%MAINDIR%\Lib\compiler + Description=Python compiler written in Python + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\distutils\*.py + Destination=%MAINDIR%\Lib\distutils + Description=Distribution utility modules + Flags=0000000000000010 +end +item: Install File + Source=..\lib\distutils\readme + Destination=%MAINDIR%\Lib\distutils\README.txt + Flags=0000000000000010 +end +item: Install File + Source=..\lib\distutils\command\*.py + Destination=%MAINDIR%\Lib\distutils\command + Flags=0000000000000010 +end +item: Install File + Source=..\lib\distutils\command\wininst.exe + Destination=%MAINDIR%\Lib\distutils\command\wininst.exe + Flags=0000000000000010 +end +item: Install File + Source=..\lib\distutils\command\command_template + Destination=%MAINDIR%\Lib\distutils\command\command_template + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\email\*.py + Destination=%MAINDIR%\Lib\email + Description=Library email package + Flags=0000000000000010 +end +item: Install File + Source=..\lib\email\test\*.py + Destination=%MAINDIR%\Lib\email\test + Description=email tests + Flags=0000000000000010 +end +item: Install File + Source=..\lib\email\test\data\*.txt + Destination=%MAINDIR%\Lib\email\test\data + Description=email test data + Flags=0000000000000010 +end +item: Install File + Source=..\lib\email\test\data\*.gif + Destination=%MAINDIR%\Lib\email\test\data + Description=email test data + Flags=0000000000000010 +end +item: Install File + Source=..\lib\email\test\data\*.au + Destination=%MAINDIR%\Lib\email\test\data + Description=email test data + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\encodings\*.py + Destination=%MAINDIR%\Lib\encodings + Description=Unicode encoding tables + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\hotshot\*.py + Destination=%MAINDIR%\Lib\hotshot + Description=Fast Python profiler + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\lib-old\*.py + Destination=%MAINDIR%\Lib\lib-old + Description=Obsolete modules + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\lib-tk\*.py + Destination=%MAINDIR%\Lib\lib-tk + Description=Tkinter related library modules + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\logging\*.py + Destination=%MAINDIR%\Lib\logging + Description=Logging package + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\site-packages\readme + Destination=%MAINDIR%\Lib\site-packages\README.txt + Description=Site packages + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\xml\*.py + Destination=%MAINDIR%\Lib\xml + Description=XML support packages + Flags=0000000000000010 +end +item: Install File + Source=..\lib\xml\dom\*.py + Destination=%MAINDIR%\Lib\xml\dom + Flags=0000000000000010 +end +item: Install File + Source=..\lib\xml\parsers\*.py + Destination=%MAINDIR%\Lib\xml\parsers + Flags=0000000000000010 +end +item: Install File + Source=..\lib\xml\sax\*.py + Destination=%MAINDIR%\Lib\xml\sax + Flags=0000000000000010 +end +item: Remark +end +item: Remark + Text=C Include files +end +item: Install File + Source=..\include\*.h + Destination=%MAINDIR%\include + Description=Header files + Flags=0000000000000010 +end +item: Install File + Source=..\pc\pyconfig.h + Destination=%MAINDIR%\include\pyconfig.h + Description=Header files (pyconfig.h) + Flags=0000000000000010 +end +item: Remark +end +item: Remark + Text=Microsoft C runtime libraries +end +item: Install File + Source=%_SYS_%\MSVCIRT.DLL + Destination=%DLLDEST%\MSVCIRT.DLL + Description=Visual C++ Runtime DLLs + Flags=0000011000010011 +end +item: Install File + Source=%_SYS_%\MSVCRT.DLL + Destination=%DLLDEST%\MSVCRT.DLL + Description=Visual C++ Runtime DLLs + Flags=0000011000010011 +end +item: End Block +end +item: Remark +end +item: Remark + Text=B: Tcl/Tk (Tkinter, IDLE, pydoc) +end +item: If/While Statement + Variable=COMPONENTS + Value=B + Flags=00000010 +end +item: Remark + Text=Tcl/Tk +end +item: Install File + Source=..\..\%_tcldir_%\bin\*.dll + Destination=%MAINDIR%\DLLs + Description=Tcl/Tk binaries and libraries + Flags=0000000000000010 +end +item: Install File + Source=..\..\%_tcldir_%\lib\*.* + Destination=%MAINDIR%\tcl + Description=Tcl/Tk binaries and libraries + Flags=0000000100000010 +end +item: Remark +end +item: Remark + Text=IDLE +end +item: Install File + Source=..\Lib\idlelib\*.py + Destination=%MAINDIR%\Lib\idlelib + Description=Integrated DeveLopment Environment for Python + Flags=0000000000000010 +end +item: Install File + Source=..\Lib\idlelib\*.txt + Destination=%MAINDIR%\Lib\idlelib + Description=Integrated DeveLopment Environment for Python + Flags=0000000000000010 +end +item: Install File + Source=..\Lib\idlelib\*.def + Destination=%MAINDIR%\Lib\idlelib + Description=Integrated DeveLopment Environment for Python + Flags=0000000000000010 +end +item: Install File + Source=..\Lib\idlelib\Icons\* + Destination=%MAINDIR%\Lib\idlelib\Icons + Description=Integrated DeveLopment Environment for Python + Flags=0000000000000010 +end +item: Install File + Source=..\Tools\scripts\idle + Destination=%MAINDIR%\Lib\idlelib\idle.pyw + Description=IDLE bootstrap script + Flags=0000000000000010 +end +item: Remark +end +item: Remark + Text=Windows pydoc driver +end +item: Install File + Source=..\tools\scripts\*.pyw + Destination=%MAINDIR%\Tools\Scripts + Description=Windows pydoc driver + Flags=0000000000000010 +end +item: End Block +end +item: Remark +end +item: Remark + Text=C: docs +end +item: If/While Statement + Variable=COMPONENTS + Value=C + Flags=00000010 +end +item: Install File + Source=%_DOC_%\*.* + Destination=%MAINDIR%\Doc + Description=Python Documentation (HTML) + Flags=0000000100000010 +end +item: End Block +end +item: Remark +end +item: Remark + Text=D: tools +end +item: If/While Statement + Variable=COMPONENTS + Value=D + Flags=00000010 +end +item: Install File + Source=..\tools\scripts\*.py + Destination=%MAINDIR%\Tools\Scripts + Description=Utility Scripts + Flags=0000000000000010 +end +item: Install File + Source=..\tools\scripts\*.doc + Destination=%MAINDIR%\Tools\Scripts + Description=Utility Scripts + Flags=0000000000000010 +end +item: Install File + Source=..\tools\scripts\readme + Destination=%MAINDIR%\Tools\Scripts\README.txt + Description=Utility Scripts + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\tools\webchecker\*.py + Destination=%MAINDIR%\Tools\webchecker + Description=Web checker tool + Flags=0000000000000010 +end +item: Install File + Source=..\tools\webchecker\readme + Destination=%MAINDIR%\Tools\webchecker\README.txt + Description=Web checker tool + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\tools\versioncheck\*.py + Destination=%MAINDIR%\Tools\versioncheck + Description=Version checker tool + Flags=0000000000000010 +end +item: Install File + Source=..\tools\versioncheck\readme + Destination=%MAINDIR%\Tools\versioncheck\README.txt + Description=Version checker tool + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\tools\pynche\*.py + Destination=%MAINDIR%\Tools\pynche + Description=pynche color editor + Flags=0000000000000010 +end +item: Install File + Source=..\tools\pynche\*.txt + Destination=%MAINDIR%\Tools\pynche + Description=pynche color editor + Flags=0000000000000010 +end +item: Install File + Source=..\tools\pynche\x\*.txt + Destination=%MAINDIR%\Tools\pynche\X + Description=pynche color editor - X files + Flags=0000000000000010 +end +item: Install File + Source=..\tools\pynche\readme + Destination=%MAINDIR%\Tools\pynche\README.txt + Description=pynche color editor - README + Flags=0000000100000010 +end +item: Install File + Source=..\tools\pynche\pynche + Destination=%MAINDIR%\Tools\pynche\pynche.py + Description=pynche color editor - main + Flags=0000000100000010 +end +item: Install File + Source=..\tools\pynche\pynche.pyw + Destination=%MAINDIR%\Tools\pynche\pynche.pyw + Description=pynche color editor - noconsole main + Flags=0000000100000010 +end +item: Remark +end +item: Install File + Source=..\tools\i18n\*.py + Destination=%MAINDIR%\Tools\i18n + Description=Internationalization helpers + Flags=0000000000000010 +end +item: End Block +end +item: Remark +end +item: Remark + Text=E: test suite +end +item: If/While Statement + Variable=COMPONENTS + Value=E + Flags=00000010 +end +item: Install File + Source=..\lib\test\audiotest.au + Destination=%MAINDIR%\Lib\test\audiotest.au + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.uue + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.py + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.xml + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.out + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.bz2 + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.tar + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.gz + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Install File + Source=..\lib\test\*.txt + Destination=%MAINDIR%\Lib\test + Description=Python Test files + Flags=0000000000000010 +end +item: Remark +end +item: Install File + Source=..\lib\test\output\*.* + Destination=%MAINDIR%\Lib\test\output + Description=Python Test output files + Flags=0000000000000010 +end +item: End Block +end +item: Remark +end +item: Remark + Text=DONE with file copying. +end +item: Remark + Text=The rest is registry and Start Menu fiddling. +end +item: Remark +end +item: If/While Statement + Variable=COMPONENTS + Value=A + Flags=00000010 +end +item: If/While Statement + Variable=TASKS + Value=A + Flags=00000010 +end +item: Remark + Text=Register file extensions. As usual, Admin privs get in the way, but with a twist: +end +item: Remark + Text=You don't need admin privs to write to HKEY_CLASSES_ROOT *except* under Win2K. +end +item: Remark + Text=On Win2K, a user without Admin privs has to register extensions under HKCU\Software\CLASSES instead. +end +item: Remark + Text=But while you can *do* that under other flavors of Windows too, it has no useful effect except in Win2K. +end +item: Set Variable + Variable=USE_HKCR + Value=1 +end +item: Check Configuration + Flags=11110010 +end +item: If/While Statement + Variable=DOADMIN + Value=0 +end +item: Set Variable + Variable=USE_HKCR + Value=0 +end +item: End Block +end +item: End Block +end +item: If/While Statement + Variable=USE_HKCR + Value=1 +end +item: Remark + Text=File types. +end +item: Edit Registry + Total Keys=1 + Key=Python.File + New Value=Python File +end +item: Edit Registry + Total Keys=1 + Key=Python.File\shell\open\command + New Value=%MAINDIR%\python.exe "%%1" %%* +end +item: Edit Registry + Total Keys=1 + Key=Python.File\DefaultIcon + New Value=%MAINDIR%\Py.ico +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=Python.NoConFile + New Value=Python File (no console) +end +item: Edit Registry + Total Keys=1 + Key=Python.NoConFile\shell\open\command + New Value=%MAINDIR%\pythonw.exe "%%1" %%* +end +item: Edit Registry + Total Keys=1 + Key=Python.NoConFile\DefaultIcon + New Value=%MAINDIR%\Py.ico +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=Python.CompiledFile + New Value=Compiled Python File +end +item: Edit Registry + Total Keys=1 + Key=Python.CompiledFile\shell\open\command + New Value=%MAINDIR%\python.exe "%%1" %%* +end +item: Edit Registry + Total Keys=1 + Key=Python.CompiledFile\DefaultIcon + New Value=%MAINDIR%\pyc.ico +end +item: Remark +end +item: Remark + Text=File extensions. +end +item: Edit Registry + Total Keys=1 + Key=.py + New Value=Python.File +end +item: Edit Registry + Total Keys=1 + Key=.py + New Value=text/plain + Value Name=Content Type +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=.pyw + New Value=Python.NoConFile +end +item: Edit Registry + Total Keys=1 + Key=.pyw + New Value=text/plain + Value Name=Content Type +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=.pyc + New Value=Python.CompiledFile +end +item: Edit Registry + Total Keys=1 + Key=.pyo + New Value=Python.CompiledFile +end +item: Else Statement +end +item: Remark + Text=File types. +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.File + New Value=Python File + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.File\shell\open\command + New Value=%MAINDIR%\python.exe "%%1" %%* + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.File\DefaultIcon + New Value=%MAINDIR%\Py.ico + Root=1 +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.NoConFile + New Value=Python File (no console) + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.NoConFile\shell\open\command + New Value=%MAINDIR%\pythonw.exe "%%1" %%* + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.NoConFile\DefaultIcon + New Value=%MAINDIR%\Py.ico + Root=1 +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.CompiledFile + New Value=Compiled Python File + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.CompiledFile\shell\open\command + New Value=%MAINDIR%\python.exe "%%1" %%* + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.CompiledFile\DefaultIcon + New Value=%MAINDIR%\pyc.ico + Root=1 +end +item: Remark +end +item: Remark + Text=File extensions. +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\.py + New Value=Python.File + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\.py + New Value=text/plain + Value Name=Content Type + Root=1 +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\.pyw + New Value=Python.NoConFile + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\.pyw + New Value=text/plain + Value Name=Content Type + Root=1 +end +item: Remark +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\.pyc + New Value=Python.CompiledFile + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\.pyo + New Value=Python.CompiledFile + Root=1 +end +item: End Block +end +item: Remark +end +item: Remark + Text=If we're installing IDLE, also set an Edit context menu action to use IDLE, for .py and .pyw files. +end +item: If/While Statement + Variable=COMPONENTS + Value=B + Flags=00000010 +end +item: If/While Statement + Variable=USE_HKCR + Value=1 +end +item: Edit Registry + Total Keys=1 + Key=Python.NoConFile\shell\Edit with IDLE\command + New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" +end +item: Edit Registry + Total Keys=1 + Key=Python.File\shell\Edit with IDLE\command + New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" +end +item: Else Statement +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.NoConFile\shell\Edit with IDLE\command + New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\CLASSES\Python.File\shell\Edit with IDLE\command + New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" + Root=1 +end +item: End Block +end +item: End Block +end +item: End Block +end +item: Remark +end +item: Remark + Text=Register Python paths. +end +item: Remark + Text=Write to HKLM for admin, else HKCU. Keep these blocks otherwise identical! +end +item: If/While Statement + Variable=DOADMIN + Value=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\CurrentVersion + Root=130 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath + New Value=%MAINDIR% + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath\InstallGroup + New Value=%CGROUP_SAVE% + New Value= + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\PythonPath + New Value=%MAINDIR%\Lib;%MAINDIR%\DLLs;%MAINDIR%\Lib\lib-tk + New Value= + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\Modules + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe + New Value=%MAINDIR%\Python.exe + Root=2 +end +item: Else Statement +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\CurrentVersion + Root=129 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath + New Value=%MAINDIR% + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath\InstallGroup + New Value=%CGROUP_SAVE% + New Value= + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\PythonPath + New Value=%MAINDIR%\Lib;%MAINDIR%\DLLs;%MAINDIR%\Lib\lib-tk + New Value= + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\Modules + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe + New Value=%MAINDIR%\Python.exe + Root=1 +end +item: End Block +end +item: End Block +end +item: Remark +end +item: Remark + Text=Registry fiddling for docs. +end +item: Remark + Text=Write to HKLM for admin, else HKCU. Keep these blocks otherwise identical! +end +item: If/While Statement + Variable=COMPONENTS + Value=C + Flags=00000010 +end +item: If/While Statement + Variable=DOADMIN + Value=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\Help\Main Python Documentation + New Value=%MAINDIR%\Doc\index.html + Root=2 +end +item: Else Statement +end +item: Edit Registry + Total Keys=1 + Key=Software\Python\PythonCore\%PY_VERSION%\Help\Main Python Documentation + New Value=%MAINDIR%\Doc\index.html + Root=1 +end +item: End Block +end +item: End Block +end +item: Remark +end +item: Remark + Text=Set the app publisher and URL entries for Win2K add/remove. +end +item: Remark + Text=It doesn't hurt on other systems. +end +item: Remark + Text=As usual, write to HKLM or HKCU depending on Admin privs. +end +item: Remark + Text=CAUTION: If you set this info on the "Windows 2000" page (step 6) of the +end +item: Remark + Text=Installation Expert, it only shows up in the "If" block below. Keep in synch! +end +item: If/While Statement + Variable=DOADMIN + Value=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=http://www.python.org/ + Value Name=HelpLink + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=PythonLabs at Zope Corporation + Value Name=Publisher + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=http://www.python.org/ + Value Name=URLInfoAbout + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%PYVER_STRING% + Value Name=DisplayVersion + Root=2 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%MAINDIR%\py.ico,-0 + Value Name=DisplayIcon + Root=2 +end +item: Else Statement +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=http://www.python.org/ + Value Name=HelpLink + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=PythonLabs at Zope Corporation + Value Name=Publisher + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=http://www.python.org/ + Value Name=URLInfoAbout + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%PYVER_STRING% + Value Name=DisplayVersion + Root=1 +end +item: Edit Registry + Total Keys=1 + Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% + New Value=%MAINDIR%\py.ico,-0 + Value Name=DisplayIcon + Root=1 +end +item: End Block +end +item: Remark +end +item: Remark + Text=Populate Start Menu group +end +item: If/While Statement + Variable=TASKS + Value=B + Flags=00000010 +end +item: Remark + Text=Shortcut to installer no matter what. +end +item: Create Shortcut + Source=%MAINDIR%\unwise.exe + Destination=%GROUP%\Uninstall Python.lnk + Working Directory=%MAINDIR% + Key Type=1536 + Flags=00000001 +end +item: Remark +end +item: If/While Statement + Variable=COMPONENTS + Value=A + Flags=00000010 +end +item: Create Shortcut + Source=%MAINDIR%\python.exe + Destination=%GROUP%\Python (command line).lnk + Working Directory=%MAINDIR% + Icon Pathname=%MAINDIR%\pycon.ico + Key Type=1536 + Flags=00000001 +end +item: End Block +end +item: Remark +end +item: If/While Statement + Variable=COMPONENTS + Value=B + Flags=00000010 +end +item: Create Shortcut + Source=%MAINDIR%\pythonw.exe + Destination=%GROUP%\IDLE (Python GUI).lnk + Command Options="%MAINDIR%\Lib\idlelib\idle.pyw" + Working Directory=%MAINDIR% + Key Type=1536 + Flags=00000001 +end +item: Create Shortcut + Source=%MAINDIR%\pythonw.exe + Destination=%GROUP%\Module Docs.lnk + Command Options="%MAINDIR%\Tools\Scripts\pydocgui.pyw" + Working Directory=%MAINDIR% + Key Type=1536 + Flags=00000001 +end +item: End Block +end +item: Remark +end +item: If/While Statement + Variable=COMPONENTS + Value=C + Flags=00000010 +end +item: Create Shortcut + Source=%MAINDIR%\Doc\index.html + Destination=%GROUP%\Python Manuals.lnk + Working Directory=%MAINDIR% + Key Type=1536 + Flags=00000001 +end +item: End Block +end +item: End Block +end +item: Remark +end +item: Remark + Text=I don't think we need this, but have always done it. +end +item: Self-Register OCXs/DLLs + Description=Updating System Configuration, Please Wait... +end +item: Remark +end +remarked item: Remark + Text=Don't enable "Delete in-use files". Here's what happens: +end +remarked item: Remark + Text=Install Python; uninstall Python; install Python again. Reboot the machine. +end +remarked item: Remark + Text=Now UNWISE.EXE is missing. I think this is a Wise bug, but so it goes. +end +remarked item: Add Text to INSTALL.LOG + Text=Delete in-use files: On +end +item: Remark +end +item: Wizard Block + Direction Variable=DIRECTION + Display Variable=DISPLAY + Bitmap Pathname=.\installer.bmp + X Position=9 + Y Position=10 + Filler Color=11173759 + Flags=00000011 +end +item: Custom Dialog Set + Name=Finished + Display Variable=DISPLAY + item: Dialog + Title=%APPTITLE% Installation + Title French=Installation de %APPTITLE% + Title German=Installation von %APPTITLE% + Title Spanish=Instalación de %APPTITLE% + Title Italian=Installazione di %APPTITLE% + Width=339 + Height=280 + Font Name=Helv + Font Size=8 + item: Push Button + Rectangle=188 234 244 253 + Variable=DIRECTION + Value=N + Create Flags=01010000000000010000000000000001 + Text=&Finish + Text French=&Fin + Text German=&Weiter + Text Spanish=&Terminar + Text Italian=&Fine + end + item: Push Button + Rectangle=264 234 320 253 + Variable=DISABLED + Value=! + Action=3 + Create Flags=01010000000000010000000000000000 + Text=&Cancel + Text French=&Annuler + Text German=&Abbrechen + Text Spanish=&Cancelar + Text Italian=&Annulla + end + item: Static + Rectangle=108 10 323 48 + Create Flags=01010000000000000000000000000000 + Flags=0000000000000001 + Name=Times New Roman + Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 + Text=Installation Completed! + Text French=Installation terminée ! + Text German=Die Installation ist abgeschlossen! + Text Spanish=¡Instalación terminada! + Text Italian=Installazione completata! + end + item: Static + Rectangle=108 44 320 82 + Create Flags=01010000000000000000000000000000 + Text=%APPTITLE% has been successfully installed. + Text= + Text=Press the Finish button to exit this installation. + Text French=%APPTITLE% est maintenant installé. + Text French= + Text French=Cliquez sur le bouton Fin pour quitter l'installation. + Text German=%APPTITLE% wurde erfolgreich installiert. + Text German= + Text German=Klicken Sie auf "Weiter", um die Installation zu beenden. + Text Spanish=%APPTITLE% se ha instalado con éxito. + Text Spanish= + Text Spanish=Presione el botón Terminar para salir de esta instalación. + Text Italian=L'installazione %APPTITLE% è stata portata a termine con successo. + Text Italian= + Text Italian=Premere il pulsante Fine per uscire dall'installazione. + end + item: Static + Rectangle=10 225 320 226 + Action=3 + Create Flags=01010000000000000000000000000111 + end + item: Static + Rectangle=106 105 312 210 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000000000000000000000 + Text=Special Windows thanks to: + Text= + Text=Wise Solutions, for the use of InstallMaster 8.1. + Text= http://www.wisesolutions.com/ + Text= + Text= + Text=LettError, Erik van Blokland, for the Python for Windows graphic. + Text= http://www.letterror.com/ + Text= + Text= + Text=Mark Hammond, without whose years of freely shared Windows expertise, Python for Windows would still be Python for DOS. + end + item: Static + Rectangle=106 95 312 96 + Action=3 + Enabled Color=00000000000000001111111111111111 + Create Flags=01010000000000000000000000001001 + end + end +end +item: End Block +end +item: New Event + Name=Cancel +end +item: Remark + Text=This include script supports a rollback to preinstallation state if the user chooses to cancel before the installation is complete. +end +item: Include Script + Pathname=%_WISE_%\INCLUDE\rollback.wse +end diff --git a/PC/VS7.1/pythoncore.vcproj b/PC/VS7.1/pythoncore.vcproj new file mode 100644 index 0000000..ab0c3f5 --- /dev/null +++ b/PC/VS7.1/pythoncore.vcproj @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/pythonw.vcproj b/PC/VS7.1/pythonw.vcproj new file mode 100644 index 0000000..d00142f --- /dev/null +++ b/PC/VS7.1/pythonw.vcproj @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/readme.txt b/PC/VS7.1/readme.txt new file mode 100644 index 0000000..d028727 --- /dev/null +++ b/PC/VS7.1/readme.txt @@ -0,0 +1,426 @@ +Building Python using VC++ 7.1 +------------------------------------- +This directory is used to build Python for Win32 platforms, e.g. Windows +95, 98 and NT. It requires Microsoft Visual C++ 7.1 +(a.k.a. Visual Studio .NET 2003). +(For other Windows platforms and compilers, see ../PC/readme.txt.) + +All you need to do is open the workspace "pcbuild.sln" in MSVC++, select +the Debug or Release setting (using "Solution Configuration" from +the "Standard" toolbar"), and build the projects. + +The proper order to build subprojects: + +1) pythoncore (this builds the main Python DLL and library files, + python26.{dll, lib} in Release mode) + NOTE: in previous releases, this subproject was + named after the release number, e.g. python20. + +2) python (this builds the main Python executable, + python.exe in Release mode) + +3) the other subprojects, as desired or needed (note: you probably don't + want to build most of the other subprojects, unless you're building an + entire Python distribution from scratch, or specifically making changes + to the subsystems they implement, or are running a Python core buildbot + test slave; see SUBPROJECTS below) + +When using the Debug setting, the output files have a _d added to +their name: python26_d.dll, python_d.exe, parser_d.pyd, and so on. + +SUBPROJECTS +----------- +These subprojects should build out of the box. Subprojects other than the +main ones (pythoncore, python, pythonw) generally build a DLL (renamed to +.pyd) from a specific module so that users don't have to load the code +supporting that module unless they import the module. + +pythoncore + .dll and .lib +python + .exe +pythonw + pythonw.exe, a variant of python.exe that doesn't pop up a DOS box +_socket + socketmodule.c +_testcapi + tests of the Python C API, run via Lib/test/test_capi.py, and + implemented by module Modules/_testcapimodule.c +pyexpat + Python wrapper for accelerated XML parsing, which incorporates stable + code from the Expat project: http://sourceforge.net/projects/expat/ +select + selectmodule.c +unicodedata + large tables of Unicode data +winsound + play sounds (typically .wav files) under Windows + +The following subprojects will generally NOT build out of the box. They +wrap code Python doesn't control, and you'll need to download the base +packages first and unpack them into siblings of PCbuilds's parent +directory; for example, if your PCbuild is .......\dist\src\PCbuild\, +unpack into new subdirectories of dist\. + +_tkinter + Python wrapper for the Tk windowing system. Requires building + Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.12. + + Get source + ---------- + In the dist directory, run + svn export http://svn.python.org/projects/external/tcl8.4.12 + svn export http://svn.python.org/projects/external/tk8.4.12 + svn export http://svn.python.org/projects/external/tix-8.4.0 + + Build Tcl first (done here w/ MSVC 7.1 on Windows XP) + --------------- + Use "Start -> All Programs -> Microsoft Visual Studio .NET 2003 + -> Visual Studio .NET Tools -> Visual Studio .NET 2003 Command Prompt" + to get a shell window with the correct environment settings + cd dist\tcl8.4.12\win + nmake -f makefile.vc + nmake -f makefile.vc INSTALLDIR=..\..\tcltk install + + XXX Should we compile with OPTS=threads? + + Optional: run tests, via + nmake -f makefile.vc test + + On WinXP Pro, wholly up to date as of 30-Aug-2004: + all.tcl: Total 10678 Passed 9969 Skipped 709 Failed 0 + Sourced 129 Test Files. + + Build Tk + -------- + cd dist\tk8.4.12\win + nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 + nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install + + XXX Should we compile with OPTS=threads? + + XXX Our installer copies a lot of stuff out of the Tcl/Tk install + XXX directory. Is all of that really needed for Python use of Tcl/Tk? + + Optional: run tests, via + nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 test + + On WinXP Pro, wholly up to date as of 30-Aug-2004: + all.tcl: Total 8420 Passed 6826 Skipped 1581 Failed 13 + Sourced 91 Test Files. + Files with failing tests: canvImg.test scrollbar.test textWind.test winWm.test + + Built Tix + --------- + cd dist\tix-8.4.0\win + nmake -f python.mak + nmake -f python.mak install + +bz2 + Python wrapper for the libbz2 compression library. Homepage + http://sources.redhat.com/bzip2/ + Download the source from the python.org copy into the dist + directory: + + svn export http://svn.python.org/projects/external/bzip2-1.0.3 + + A custom pre-link step in the bz2 project settings should manage to + build bzip2-1.0.3\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is + linked in PCbuild\. + However, the bz2 project is not smart enough to remove anything under + bzip2-1.0.3\ when you do a clean, so if you want to rebuild bzip2.lib + you need to clean up bzip2-1.0.3\ by hand. + + The build step shouldn't yield any warnings or errors, and should end + by displaying 6 blocks each terminated with + FC: no differences encountered + + All of this managed to build bzip2-1.0.3\libbz2.lib, which the Python + project links in. + + +_bsddb + To use the version of bsddb that Python is built with by default, invoke + (in the dist directory) + + svn export http://svn.python.org/projects/external/db-4.4.20 + + + Then open a VS.NET 2003 shell, and invoke: + + devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static + + and do that a second time for a Debug build too: + + devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static + + Alternatively, if you want to start with the original sources, + go to Sleepycat's download page: + http://www.sleepycat.com/downloads/releasehistorybdb.html + + and download version 4.4.20. + + With or without strong cryptography? You can choose either with or + without strong cryptography, as per the instructions below. By + default, Python is built and distributed WITHOUT strong crypto. + + Unpack the sources; if you downloaded the non-crypto version, rename + the directory from db-4.4.20.NC to db-4.4.20. + + Now apply any patches that apply to your version. + + Open + dist\db-4.4.20\docs\index.html + + and follow the "Windows->Building Berkeley DB with Visual C++ .NET" + instructions for building the Sleepycat + software. Note that Berkeley_DB.dsw is in the build_win32 subdirectory. + Build the "db_static" project, for "Release" mode. + + To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py + is then enabled. Running in verbose mode may be helpful. + + XXX The test_bsddb3 tests don't always pass, on Windows (according to + XXX me) or on Linux (according to Barry). (I had much better luck + XXX on Win2K than on Win98SE.) The common failure mode across platforms + XXX is + XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable + XXX to join the environment') + XXX + XXX and it appears timing-dependent. On Win2K I also saw this once: + XXX + XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ... + XXX Exception in thread reader 1: + XXX Traceback (most recent call last): + XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap + XXX self.run() + XXX File "C:\Code\python\lib\threading.py", line 399, in run + XXX apply(self.__target, self.__args, self.__kwargs) + XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in + XXX readerThread + XXX rec = c.next() + XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed + XXX to resolve a deadlock') + XXX + XXX I'm told that DBLockDeadlockError is expected at times. It + XXX doesn't cause a test to fail when it happens (exceptions in + XXX threads are invisible to unittest). + + Building for Win64: + - open a VS.NET 2003 command prompt + - run the SDK setenv.cmd script, passing /RETAIL and the target + architecture (/SRV64 for Itanium, /X64 for AMD64) + - build BerkeleyDB with the solution configuration matching the + target ("Release IA64" for Itanium, "Release AMD64" for AMD64), e.g. + devenv db-4.4.20\build_win32\Berkeley_DB.sln /build "Release AMD64" /project db_static /useenv + +_sqlite3 + Python wrapper for SQLite library. + + Get the source code through + + svn export http://svn.python.org/projects/external/sqlite-source-3.3.4 + + To use the extension module in a Python build tree, copy sqlite3.dll into + the PCbuild folder. + +_ssl + Python wrapper for the secure sockets library. + + Get the source code through + + svn export http://svn.python.org/projects/external/openssl-0.9.8a + + Alternatively, get the latest version from http://www.openssl.org. + You can (theoretically) use any version of OpenSSL you like - the + build process will automatically select the latest version. + + You must also install ActivePerl from + http://www.activestate.com/Products/ActivePerl/ + as this is used by the OpenSSL build process. Complain to them . + + The MSVC project simply invokes PCBuild/build_ssl.py to perform + the build. This Python script locates and builds your OpenSSL + installation, then invokes a simple makefile to build the final .pyd. + + build_ssl.py attempts to catch the most common errors (such as not + being able to find OpenSSL sources, or not being able to find a Perl + that works with OpenSSL) and give a reasonable error message. + If you have a problem that doesn't seem to be handled correctly + (eg, you know you have ActivePerl but we can't find it), please take + a peek at build_ssl.py and suggest patches. Note that build_ssl.py + should be able to be run directly from the command-line. + + build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do + this by hand. + +Building for Itanium +-------------------- + +The project files support a ReleaseItanium configuration which creates +Win64/Itanium binaries. For this to work, you need to install the Platform +SDK, in particular the 64-bit support. This includes an Itanium compiler +(future releases of the SDK likely include an AMD64 compiler as well). +In addition, you need the Visual Studio plugin for external C compilers, +from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to +locate the proper target compiler, and convert compiler options +accordingly. The project files require atleast version 0.9. + +Building for AMD64 +------------------ + +The build process for the ReleaseAMD64 configuration is very similar +to the Itanium configuration; make sure you use the latest version of +vsextcomp. + +Building Python Using the free MS Toolkit Compiler +-------------------------------------------------- + +The build process for Visual C++ can be used almost unchanged with the free MS +Toolkit Compiler. This provides a way of building Python using freely +available software. + +Note that Microsoft have withdrawn the free MS Toolkit Compiler, so this can +no longer be considered a supported option. The instructions are still +correct, but you need to already have a copy of the compiler in order to use +them. Microsoft now supply Visual C++ 2005 Express Edition for free, but this +is NOT compatible with Visual C++ 7.1 (it uses a different C runtime), and so +cannot be used to build a version of Python compatible with the standard +python.org build. If you are interested in using Visual C++ 2005 Express +Edition, however, you should look at the PCBuild8 directory. + +Requirements + + To build Python, the following tools are required: + + * The Visual C++ Toolkit Compiler + no longer available for download - see above + * A recent Platform SDK + from http://www.microsoft.com/downloads/details.aspx?FamilyID=484269e2-3b89-47e3-8eb7-1f2be6d7123a + * The .NET 1.1 SDK + from http://www.microsoft.com/downloads/details.aspx?FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d + + [Does anyone have better URLs for the last 2 of these?] + + The toolkit compiler is needed as it is an optimising compiler (the + compiler supplied with the .NET SDK is a non-optimising version). The + platform SDK is needed to provide the Windows header files and libraries + (the Windows 2003 Server SP1 edition, typical install, is known to work - + other configurations or versions are probably fine as well). The .NET 1.1 + SDK is needed because it contains a version of msvcrt.dll which links to + the msvcr71.dll CRT. Note that the .NET 2.0 SDK is NOT acceptable, as it + references msvcr80.dll. + + All of the above items should be installed as normal. + + If you intend to build the openssl (needed for the _ssl extension) you + will need the C runtime sources installed as part of the platform SDK. + + In addition, you will need Nant, available from + http://nant.sourceforge.net. The 0.85 release candidate 3 version is known + to work. This is the latest released version at the time of writing. Later + "nightly build" versions are known NOT to work - it is not clear at + present whether future released versions will work. + +Setting up the environment + + Start a platform SDK "build environment window" from the start menu. The + "Windows XP 32-bit retail" version is known to work. + + Add the following directories to your PATH: + * The toolkit compiler directory + * The SDK "Win64" binaries directory + * The Nant directory + Add to your INCLUDE environment variable: + * The toolkit compiler INCLUDE directory + Add to your LIB environment variable: + * The toolkit compiler LIB directory + * The .NET SDK Visual Studio 2003 VC7\lib directory + + The following commands should set things up as you need them: + + rem Set these values according to where you installed the software + set TOOLKIT=C:\Program Files\Microsoft Visual C++ Toolkit 2003 + set SDK=C:\Program Files\Microsoft Platform SDK + set NET=C:\Program Files\Microsoft Visual Studio .NET 2003 + set NANT=C:\Utils\Nant + + set PATH=%TOOLKIT%\bin;%PATH%;%SDK%\Bin\win64;%NANT%\bin + set INCLUDE=%TOOLKIT%\include;%INCLUDE% + set LIB=%TOOLKIT%\lib;%NET%\VC7\lib;%LIB% + + The "win64" directory from the SDK is added to supply executables such as + "cvtres" and "lib", which are not available elsewhere. The versions in the + "win64" directory are 32-bit programs, so they are fine to use here. + + That's it. To build Python (the core only, no binary extensions which + depend on external libraries) you just need to issue the command + + nant -buildfile:python.build all + + from within the PCBuild directory. + +Extension modules + + To build those extension modules which require external libraries + (_tkinter, bz2, _bsddb, _sqlite3, _ssl) you can follow the instructions + for the Visual Studio build above, with a few minor modifications. These + instructions have only been tested using the sources in the Python + subversion repository - building from original sources should work, but + has not been tested. + + For each extension module you wish to build, you should remove the + associated include line from the excludeprojects section of pc.build. + + The changes required are: + + _tkinter + The tix makefile (tix-8.4.0\win\makefile.vc) must be modified to + remove references to TOOLS32. The relevant lines should be changed to + read: + cc32 = cl.exe + link32 = link.exe + include32 = + The remainder of the build instructions will work as given. + + bz2 + No changes are needed + + _bsddb + The file db.build should be copied from the Python PCBuild directory + to the directory db-4.4.20\build_win32. + + The file db_static.vcproj in db-4.4.20\build_win32 should be edited to + remove the string "$(SolutionDir)" - this occurs in 2 places, only + relevant for 64-bit builds. (The edit is required as otherwise, nant + wants to read the solution file, which is not in a suitable form). + + The bsddb library can then be build with the command + nant -buildfile:db.build all + run from the db-4.4.20\build_win32 directory. + + _sqlite3 + No changes are needed. However, in order for the tests to succeed, a + copy of sqlite3.dll must be downloaded, and placed alongside + python.exe. + + _ssl + The documented build process works as written. However, it needs a + copy of the file setargv.obj, which is not supplied in the platform + SDK. However, the sources are available (in the crt source code). To + build setargv.obj, proceed as follows: + + Copy setargv.c, cruntime.h and internal.h from %SDK%\src\crt to a + temporary directory. + Compile using "cl /c /I. /MD /D_CRTBLD setargv.c" + Copy the resulting setargv.obj to somewhere on your LIB environment + (%SDK%\lib is a reasonable place). + + With setargv.obj in place, the standard build process should work + fine. + +YOUR OWN EXTENSION DLLs +----------------------- +If you want to create your own extension module DLL, there's an example +with easy-to-follow instructions in ../PC/example/; read the file +readme.txt there first. diff --git a/PC/VS7.1/rmpyc.py b/PC/VS7.1/rmpyc.py new file mode 100644 index 0000000..43c8576 --- /dev/null +++ b/PC/VS7.1/rmpyc.py @@ -0,0 +1,25 @@ +# Remove all the .pyc and .pyo files under ../Lib. + + +def deltree(root): + import os + from os.path import join + + npyc = npyo = 0 + for root, dirs, files in os.walk(root): + for name in files: + delete = False + if name.endswith('.pyc'): + delete = True + npyc += 1 + elif name.endswith('.pyo'): + delete = True + npyo += 1 + + if delete: + os.remove(join(root, name)) + + return npyc, npyo + +npyc, npyo = deltree("../Lib") +print npyc, ".pyc deleted,", npyo, ".pyo deleted" diff --git a/PC/VS7.1/rt.bat b/PC/VS7.1/rt.bat new file mode 100755 index 0000000..29801d2 --- /dev/null +++ b/PC/VS7.1/rt.bat @@ -0,0 +1,52 @@ +@echo off +rem Run Tests. Run the regression test suite. +rem Usage: rt [-d] [-O] [-q] regrtest_args +rem -d Run Debug build (python_d.exe). Else release build. +rem -O Run python.exe or python_d.exe (see -d) with -O. +rem -q "quick" -- normally the tests are run twice, the first time +rem after deleting all the .py[co] files reachable from Lib/. +rem -q runs the tests just once, and without deleting .py[co] files. +rem All leading instances of these switches are shifted off, and +rem whatever remains is passed to regrtest.py. For example, +rem rt -O -d -x test_thread +rem runs +rem python_d -O ../../lib/test/regrtest.py -x test_thread +rem twice, and +rem rt -q -g test_binascii +rem runs +rem python_d ../../lib/test/regrtest.py -g test_binascii +rem to generate the expected-output file for binascii quickly. +rem +rem Confusing: if you want to pass a comma-separated list, like +rem -u network,largefile +rem then you have to quote it on the rt line, like +rem rt -u "network,largefile" + +setlocal + +set exe=python +set qmode= +set dashO= +PATH %PATH%;..\..\..\tcltk\bin + +:CheckOpts +if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts +if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts +if "%1"=="-d" (set exe=python_d) & shift & goto CheckOpts + +set cmd=%exe% %dashO% -E -tt ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9 +if defined qmode goto Qmode + +echo Deleting .pyc/.pyo files ... +%exe% rmpyc.py + +echo on +%cmd% +@echo off + +echo About to run again without deleting .pyc/.pyo first: +pause + +:Qmode +echo on +%cmd% diff --git a/PC/VS7.1/select.vcproj b/PC/VS7.1/select.vcproj new file mode 100644 index 0000000..615cc0f --- /dev/null +++ b/PC/VS7.1/select.vcproj @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/unicodedata.vcproj b/PC/VS7.1/unicodedata.vcproj new file mode 100644 index 0000000..cc23da1 --- /dev/null +++ b/PC/VS7.1/unicodedata.vcproj @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/w9xpopen.vcproj b/PC/VS7.1/w9xpopen.vcproj new file mode 100644 index 0000000..9015500 --- /dev/null +++ b/PC/VS7.1/w9xpopen.vcproj @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PC/VS7.1/winsound.vcproj b/PC/VS7.1/winsound.vcproj new file mode 100644 index 0000000..6736ad7 --- /dev/null +++ b/PC/VS7.1/winsound.vcproj @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PCbuild/Uninstal.wse b/PCbuild/Uninstal.wse deleted file mode 100644 index 216dd30..0000000 --- a/PCbuild/Uninstal.wse +++ /dev/null @@ -1,514 +0,0 @@ -Document Type: WSE -item: Global - Version=8.14 - Flags=00000100 - Split=1420 - Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - Copy Default=1 - Japanese Font Name=MS Gothic - Japanese Font Size=10 - Start Gradient=0 0 255 - End Gradient=0 0 0 - Windows Flags=00000000000000000000101000001000 - Message Font=MS Sans Serif - Font Size=8 - Disk Label=GLBS - Disk Filename=INSTALL - Patch Flags=0000000000000001 - Patch Threshold=200 - Patch Memory=4096 - Per-User Version ID=1 - Crystal Format=10111100101100000010001001001001 - Step View=&Properties -end -item: Remark - Text=Note from Tim: This is a verbatim copy of Wise's Uninstal.wse, altered at the end to write -end -item: Remark - Text=uninstall info under HKCU instead of HKLM if our DOADMIN var is false. -end -item: Remark -end -item: Remark - Text= Install Support for uninstalling the application. -end -item: Remark -end -item: Set Variable - Variable=UNINSTALL_PATH - Value=%_LOGFILE_PATH_% - Flags=00000010 -end -item: Set Variable - Variable=UNINSTALL_PATH - Value=%UNINSTALL_PATH%\UNWISE.EXE -end -item: Compiler Variable If - Variable=_EXE_OS_TYPE_ - Value=WIN32 -end -item: Install File - Source=%_WISE_%\UNWISE32.EXE - Destination=%UNINSTALL_PATH% - Flags=0000000000000010 -end -item: Compiler Variable Else -end -item: Install File - Source=%_WISE_%\UNWISE.EXE - Destination=%UNINSTALL_PATH% - Flags=0000000000000010 -end -item: Compiler Variable End -end -item: Remark -end -item: Remark - Text= Install Support for multiple languages -end -item: Remark -end -item: Set Variable - Variable=UNINSTALL_LANG - Value=%UNINSTALL_PATH% - Flags=00000010 -end -item: Set Variable - Variable=UNINSTALL_LANG - Value=%UNINSTALL_LANG%\UNWISE.INI -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=C - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.FRA - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_C_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.FRA - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=D - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.FRA - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_D_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.FRA - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=E - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.DEU - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_E_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.DEU - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=F - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.PTG - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_F_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.PTG - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=G - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.ESP - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_G_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.ESP - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=H - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.ESP - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_H_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.ESP - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=I - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.ITA - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_I_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.ITA - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=J - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.DAN - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_J_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.DAN - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=K - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.FIN - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_K_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.FIN - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=L - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.ISL - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_L_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.ISL - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=M - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.NLD - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_M_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.NLD - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=N - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.NOR - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_N_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.NOR - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=O - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.SVE - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_O_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.SVE - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Compiler Variable If - Variable=_LANG_LIST_ - Value=P - Flags=00000010 -end -item: Compiler Variable If - Value=%_WISE_%\LANGUAGE\UNWISE.JPN - Flags=00000011 -end -item: If/While Statement - Variable=LANG - Value=%_LANG_P_NAME_% -end -item: Install File - Source=%_WISE_%\LANGUAGE\UNWISE.JPN - Destination=%UNINSTALL_LANG% - Flags=0000000000000010 -end -item: End Block -end -item: Compiler Variable End -end -item: Compiler Variable End -end -item: Remark -end -item: Remark - Text= Install the add/remove or uninstall icon -end -item: Remark -end -item: Set Variable - Variable=UNINSTALL_PATH - Value=%UNINSTALL_PATH% - Flags=00010100 -end -item: Set Variable - Variable=INST_LOG_PATH - Value=%_LOGFILE_PATH_% - Flags=00010100 -end -item: Check Configuration - Flags=10111011 -end -item: If/While Statement - Variable=DOADMIN - Value=1 -end -item: Remark - Text=Write uninstall info under HKLM. This if/else/end block added by Tim. -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%APPTITLE% - Value Name=DisplayName - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%UNINSTALL_PATH% %INST_LOG_PATH% - New Value= - Value Name=UninstallString - Root=2 -end -item: Else Statement -end -item: Remark - Text=The same, but write under HKCU instead. -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%APPTITLE% - Value Name=DisplayName - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%UNINSTALL_PATH% %INST_LOG_PATH% - New Value= - Value Name=UninstallString - Root=1 -end -item: End Block -end -item: Else Statement -end -item: Add ProgMan Icon - Group=%GROUP% - Icon Name=Uninstall %APPTITLE% - Command Line=%UNINSTALL_PATH% %INST_LOG_PATH% -end -item: End Block -end -item: Check Configuration - Flags=11110010 -end -item: If/While Statement - Variable=DOBRAND - Value=1 -end -item: Edit Registry - Total Keys=2 - item: Key - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%COMPANY% - Value Name=RegCompany - Root=2 - end - item: Key - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%NAME% - Value Name=RegOwner - Root=2 - end -end -item: End Block -end -item: End Block -end diff --git a/PCbuild/_bsddb.vcproj b/PCbuild/_bsddb.vcproj index 85da3b3..205a178 100644 --- a/PCbuild/_bsddb.vcproj +++ b/PCbuild/_bsddb.vcproj @@ -1,257 +1,552 @@ + ProjectGUID="{B4D38F3F-68FB-42EC-A45D-E00657BB3627}" + RootNamespace="_bsddb" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + AdditionalIncludeDirectories="$(bsddbDir)" + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(bsddbDir)" + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="$(bsddbDir)" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(bsddbDir)" + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="$(bsddbDir)" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(bsddbDir)" + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="$(bsddbDir)" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - + + + + + + + + diff --git a/PCbuild/_ctypes.vcproj b/PCbuild/_ctypes.vcproj index 748ee44..f923ca0 100644 --- a/PCbuild/_ctypes.vcproj +++ b/PCbuild/_ctypes.vcproj @@ -1,310 +1,703 @@ + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" + /> + + + + /> + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + + + + Name="VCManagedResourceCompilerTool" + /> + + + + + + + + + + + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + + + + Name="VCManagedResourceCompilerTool" + /> + + + + + + + + + + + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" + /> + + + + /> + + + + + + + + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + + + + Name="VCManagedResourceCompilerTool" + /> + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PCbuild/_ctypes_test.vcproj b/PCbuild/_ctypes_test.vcproj index a4bb7f1..156c10c 100644 --- a/PCbuild/_ctypes_test.vcproj +++ b/PCbuild/_ctypes_test.vcproj @@ -1,241 +1,520 @@ + ProjectGUID="{9EC7190A-249F-4180-A900-548FDCF3055F}" + RootNamespace="_ctypes_test" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + /> + + + + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - + + + + + + + + diff --git a/PCbuild/_elementtree.vcproj b/PCbuild/_elementtree.vcproj index 587a35c..c22c252 100644 --- a/PCbuild/_elementtree.vcproj +++ b/PCbuild/_elementtree.vcproj @@ -1,263 +1,620 @@ + ProjectGUID="{17E1E049-C309-4D79-843F-AE483C264AEA}" + RootNamespace="_elementtree" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\expat" + PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\expat" + PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\expat" + PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="..\Modules\expat" + PreprocessorDefinitions="XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;USE_PYEXPAT_CAPI;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PCbuild/_msi.vcproj b/PCbuild/_msi.vcproj index be2a92c..2d92599 100644 --- a/PCbuild/_msi.vcproj +++ b/PCbuild/_msi.vcproj @@ -1,251 +1,528 @@ + ProjectGUID="{31FFC478-7B4A-43E8-9954-8D03E2187E9C}" + RootNamespace="_msi" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + + + + + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + AdditionalDependencies="fci.lib msi.lib rpcrt4.lib" + BaseAddress="0x1D160000" + /> + Name="VCALinkTool" + /> + + + + + + + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + + + + + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + AdditionalDependencies="fci.lib msi.lib rpcrt4.lib" + BaseAddress="0x1D160000" + TargetMachine="17" + /> + Name="VCALinkTool" + /> + + + + + + + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - + + + + diff --git a/PCbuild/_socket.vcproj b/PCbuild/_socket.vcproj index 26f77ef..6ef5407 100644 --- a/PCbuild/_socket.vcproj +++ b/PCbuild/_socket.vcproj @@ -1,253 +1,536 @@ + ProjectGUID="{86937F53-C189-40EF-8CE8-8759D8E7D480}" + RootNamespace="_socket" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - + + + + + + + + diff --git a/PCbuild/_sqlite3.vcproj b/PCbuild/_sqlite3.vcproj index aea3978..646c545 100644 --- a/PCbuild/_sqlite3.vcproj +++ b/PCbuild/_sqlite3.vcproj @@ -1,282 +1,636 @@ + ProjectGUID="{13CECB97-4119-4316-9D42-8534019A5A44}" + RootNamespace="_sqlite3" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + AdditionalIncludeDirectories="$(sqlite3Dir)" + PreprocessorDefinitions="MODULE_NAME=\"sqlite3\"" + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(sqlite3Dir)" + PreprocessorDefinitions="MODULE_NAME=\"sqlite3\"" + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="$(sqlite3Dir)" + PreprocessorDefinitions="MODULE_NAME=\"sqlite3\"" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(sqlite3Dir)" + PreprocessorDefinitions="MODULE_NAME=\"sqlite3\"" + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="$(sqlite3Dir)" + PreprocessorDefinitions="MODULE_NAME=\"sqlite3\"" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(sqlite3Dir)" + PreprocessorDefinitions="MODULE_NAME=\"sqlite3\"" + /> + + + + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="$(sqlite3Dir)" + PreprocessorDefinitions="MODULE_NAME=\"sqlite3\"" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PCbuild/_ssl.mak b/PCbuild/_ssl.mak deleted file mode 100644 index 3420ef1..0000000 --- a/PCbuild/_ssl.mak +++ /dev/null @@ -1,38 +0,0 @@ -EXTRA_LIBS= - -!IFDEF DEBUG -SUFFIX=_d.pyd -TEMP=x86-temp-debug/ -CFLAGS=/Od /Zi /MDd /LDd /DDEBUG /D_DEBUG /DWIN32 -SSL_LIB_DIR=$(SSL_DIR)/out32.dbg -!ELSE -SUFFIX=.pyd -TEMP=x86-temp-release/ -CFLAGS=/Ox /MD /LD /DWIN32 -SSL_LIB_DIR=$(SSL_DIR)/out32 -!ENDIF - -INCLUDES=-I ../Include -I ../PC -I $(SSL_DIR)/inc32 - -SSL_LIBS=gdi32.lib wsock32.lib user32.lib advapi32.lib /LIBPATH:$(SSL_LIB_DIR) libeay32.lib ssleay32.lib -SSL_SOURCE=../Modules/_ssl.c - -HASH_LIBS=gdi32.lib user32.lib advapi32.lib /libpath:$(SSL_LIB_DIR) libeay32.lib -HASH_SOURCE=../Modules/_hashopenssl.c - -all: _ssl$(SUFFIX) _hashlib$(SUFFIX) - -# Split compile/link into two steps to better support VSExtComp -_ssl$(SUFFIX): $(SSL_SOURCE) $(SSL_LIB_DIR)/libeay32.lib $(SSL_LIB_DIR)/ssleay32.lib ../PC/*.h ../Include/*.h - @if not exist "$(TEMP)/_ssl/." mkdir "$(TEMP)/_ssl" - cl /nologo /c $(SSL_SOURCE) $(CFLAGS) /Fo$(TEMP)\_ssl\$*.obj $(INCLUDES) - link /nologo @<< - /dll /out:_ssl$(SUFFIX) $(TEMP)\_ssl\$*.obj $(SSL_LIBS) $(EXTRA_LIBS) -<< - -_hashlib$(SUFFIX): $(HASH_SOURCE) $(SSL_LIB_DIR)/libeay32.lib ../PC/*.h ../Include/*.h - @if not exist "$(TEMP)/_hashlib/." mkdir "$(TEMP)/_hashlib" - cl /nologo /c $(HASH_SOURCE) $(CFLAGS) $(EXTRA_CFLAGS) /Fo$(TEMP)\_hashlib\$*.obj $(INCLUDES) - link /nologo @<< - /dll /out:_hashlib$(SUFFIX) $(HASH_LIBS) $(EXTRA_LIBS) $(TEMP)\_hashlib\$*.obj -<< diff --git a/PCbuild/_ssl.vcproj b/PCbuild/_ssl.vcproj index c1abd24..ddd396a 100644 --- a/PCbuild/_ssl.vcproj +++ b/PCbuild/_ssl.vcproj @@ -1,83 +1,548 @@ + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + ConfigurationType="2" + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + + + + + + + + + + + + + - + Name="Release|x64" + ConfigurationType="2" + InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + + + + + + + + + + + + + - + Name="PGInstrument|Win32" + ConfigurationType="2" + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Name="PGUpdate|Win32" + ConfigurationType="2" + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + diff --git a/PCbuild/_testcapi.vcproj b/PCbuild/_testcapi.vcproj index a91d8ce..8ef456a 100644 --- a/PCbuild/_testcapi.vcproj +++ b/PCbuild/_testcapi.vcproj @@ -1,246 +1,520 @@ + ProjectGUID="{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}" + RootNamespace="_testcapi" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + /> + + + + /> + + + + + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + + + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - + + + + diff --git a/PCbuild/_tkinter.vcproj b/PCbuild/_tkinter.vcproj index f14e727..e3baa5c 100644 --- a/PCbuild/_tkinter.vcproj +++ b/PCbuild/_tkinter.vcproj @@ -1,260 +1,540 @@ + ProjectGUID="{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}" + RootNamespace="_tkinter" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + AdditionalIncludeDirectories="$(tcltkDir)\include" + PreprocessorDefinitions="WITH_APPINIT" + /> + + + + AdditionalDependencies="$(tcltkLib)" + /> + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(tcltkDir)\include" + PreprocessorDefinitions="WITH_APPINIT" + /> + + + + AdditionalDependencies="$(tcltkLib)" + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + + + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(tcltkDir)\include" + PreprocessorDefinitions="WITH_APPINIT" + /> + + + + AdditionalDependencies="$(tcltkLib)" + /> + + + + + + + + + + + + + + + + + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + AdditionalDependencies="$(tcltk64Lib)" + TargetMachine="17" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(tcltkDir)\include" + PreprocessorDefinitions="WITH_APPINIT" + /> + + + + AdditionalDependencies="$(tcltkLib)" + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - - - + + + + + + diff --git a/PCbuild/amd64_ml64.bat b/PCbuild/amd64_ml64.bat deleted file mode 100644 index fa9acf1..0000000 --- a/PCbuild/amd64_ml64.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off -rem Try to find the AMD64 assembler and call it with the supplied arguments. - -set MLEXE=Microsoft Platform SDK\Bin\Win64\x86\AMD64\ml64.EXE - -rem For the environment variables see also -rem http://msdn.microsoft.com/library/en-us/win64/win64/wow64_implementation_details.asp - -if exist "%ProgramFiles%\%MLEXE%" ( - set ML64="%ProgramFiles%\%MLEXE%" -) else if exist "%ProgramW6432%\%MLEXE%" ( - set ML64="%ProgramW6432%\%MLEXE%" -) else ( - set ML64=ml64.exe -) - -%ML64% %* diff --git a/PCbuild/bdist_wininst.vcproj b/PCbuild/bdist_wininst.vcproj new file mode 100644 index 0000000..414f7ed --- /dev/null +++ b/PCbuild/bdist_wininst.vcproj @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PCbuild/build.bat b/PCbuild/build.bat index 5eeb123..9bc8186 100644 --- a/PCbuild/build.bat +++ b/PCbuild/build.bat @@ -1,50 +1,17 @@ @echo off -setlocal - -set target=end - -if "%1"=="makeinfo" goto makeinfo -if "%1"=="clean" goto clean -if "%1"=="build" goto build -if "%1"=="setargv" goto setargv -if "%1"=="" goto build - -echo Usage: build.bat build -echo build.bat clean -echo build.bat setargv -goto end - -:clean -del *.pyd *.exe *.dll *.exp *.lib *.pdb *.o -rmdir /S /Q temp -rmdir /S /Q x86-temp-release -goto %target% +rem A batch program to build or rebuild a particular configuration. +rem just for convenience. -:setargv -cl /c /I"%SDK%\src\crt" /MD /D_CRTBLD "%SDK%\src\crt\setargv.c" -if not exist setargv.obj echo An error occured & goto end -echo copy setargv.obj "%SDK%\Lib" -copy setargv.obj "%SDK%\Lib" -del setargv.obj -goto %target% - -:makeinfo -nant -buildfile:python.build all -lib /def: x86-temp-release\make_buildinfo\make_buildinfo.obj -lib /def: x86-temp-release\make_versioninfo\make_versioninfo.obj -goto %target% - -:build -if not exist make_buildinfo.lib set target=realbuild & goto makeinfo -if not exist make_versioninfo.lib set target=realbuild & goto makeinfo -if exist "%SDK%\Lib\setargv.obj" goto realbuild -echo !!!!!!!! -echo setargv.obj is missing. Please call build setargv -echo !!!!!!!! - -:realbuild -if not exist sqlite3.dll copy ..\..\sqlite-source-3.3.4\sqlite3.dll . -nant -buildfile:python.build all -goto end - -:end +setlocal +set platf=Win32 +set conf=Release +set build=/build + +:CheckOpts +if "%1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts +if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts +if "%1"=="-r" (set build=/rebuild) & shift & goto CheckOpts + +set cmd=devenv pcbuild.sln %build% "%conf%|%platf%" +echo %cmd% +%cmd% diff --git a/PCbuild/build_env.bat b/PCbuild/build_env.bat index 3a8b16d..4c67ae3 100644 --- a/PCbuild/build_env.bat +++ b/PCbuild/build_env.bat @@ -1 +1 @@ -@%comspec% /k env.bat +@%comspec% /k env.bat %* diff --git a/PCbuild/build_pgo.bat b/PCbuild/build_pgo.bat new file mode 100644 index 0000000..0c0a473 --- /dev/null +++ b/PCbuild/build_pgo.bat @@ -0,0 +1,41 @@ +@echo off +rem A batch program to build PGO (Profile guided optimization) by first +rem building instrumented binaries, then running the testsuite, and +rem finally building the optimized code. +rem Note, after the first instrumented run, one can just keep on +rem building the PGUpdate configuration while developing. + +setlocal +set platf=Win32 + +rem use the performance testsuite. This is quick and simple +set job1=..\tools\pybench\pybench.py -n 1 -C 1 --with-gc +set path1=..\tools\pybench + +rem or the whole testsuite for more thorough testing +set job2=..\lib\test\regrtest.py +set path2=..\lib + +set job=%job1% +set clrpath=%path1% + +:CheckOpts +if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts +if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts + +set PGI=%platf%-pgi +set PGO=%platf%-pgo + +@echo on +rem build the instrumented version +call build -p %platf% -c PGInstrument + +rem remove .pyc files, .pgc files and execute the job +%PGI%\python.exe rmpyc.py %clrpath% +del %PGI%\*.pgc +%PGI%\python.exe %job% + +rem finally build the optimized version +if exist %PGO% del /s /q %PGO% +call build -p %platf% -c PGUpdate + diff --git a/PCbuild/build_ssl.bat b/PCbuild/build_ssl.bat index 3c87f82..ba14446 100644 --- a/PCbuild/build_ssl.bat +++ b/PCbuild/build_ssl.bat @@ -1,14 +1,12 @@ -if "%1" == "ReleaseAMD64" call "%MSSdk%\SetEnv" /XP64 /RETAIL - -@echo off -if not defined HOST_PYTHON ( - if %1 EQU Debug ( - set HOST_PYTHON=python_d.exe - if not exist python30_d.dll exit 1 - ) ELSE ( - set HOST_PYTHON=python.exe - if not exist python30.dll exit 1 - ) -) -%HOST_PYTHON% build_ssl.py %1 %2 - +@echo off +if not defined HOST_PYTHON ( + if %1 EQU Debug ( + set HOST_PYTHON=python_d.exe + if not exist python30_d.dll exit 1 + ) ELSE ( + set HOST_PYTHON=python.exe + if not exist python30.dll exit 1 + ) +) +%HOST_PYTHON% build_ssl.py %1 %2 %3 + diff --git a/PCbuild/build_ssl.py b/PCbuild/build_ssl.py index 12a78e0..2ccceec 100644 --- a/PCbuild/build_ssl.py +++ b/PCbuild/build_ssl.py @@ -13,7 +13,17 @@ # it should configure and build SSL, then build the _ssl and _hashlib # Python extensions without intervention. -import os, sys, re +# Modified by Christian Heimes +# Now this script supports pre-generated makefiles and assembly files. +# Developers don't need an installation of Perl anymore to build Python. A svn +# checkout from our svn repository is enough. +# +# In Order to create the files in the case of an update you still need Perl. +# Run build_ssl in this order: +# python.exe build_ssl.py Release x64 +# python.exe build_ssl.py Release Win32 + +import os, sys, re, shutil # Find all "foo.exe" files on the PATH. def find_all_on_path(filename, extras = None): @@ -51,7 +61,6 @@ def find_working_perl(perls): else: print(" NO perl interpreters were found on this machine at all!") print(" Please install ActivePerl and ensure it appears on your path") - print("The Python SSL module was not built") return None # Locate the best SSL directory given a few roots to look into. @@ -86,38 +95,82 @@ def find_best_ssl_dir(sources): sys.stdout.flush() return best_name +def create_makefile64(makefile, m32): + """Create and fix makefile for 64bit + + Replace 32 with 64bit directories + """ + if not os.path.isfile(m32): + return + with open(m32) as fin: + with open(makefile, 'w') as fout: + for line in fin: + line = line.replace("=tmp32", "=tmp64") + line = line.replace("=out32", "=out64") + line = line.replace("=inc32", "=inc64") + # force 64 bit machine + line = line.replace("MKLIB=lib", "MKLIB=lib /MACHINE:X64") + line = line.replace("LFLAGS=", "LFLAGS=/MACHINE:X64 ") + # don't link against the lib on 64bit systems + line = line.replace("bufferoverflowu.lib", "") + fout.write(line) + os.unlink(m32) + +def fix_makefile(makefile): + """Fix some stuff in all makefiles + """ + if not os.path.isfile(makefile): + return + with open(makefile) as fin: + lines = fin.readlines() + with open(makefile, 'w') as fout: + for line in lines: + if line.startswith("PERL="): + continue + if line.startswith("CP="): + line = "CP=copy\n" + if line.startswith("MKDIR="): + line = "MKDIR=mkdir\n" + if line.startswith("CFLAG="): + line = line.strip() + for algo in ("RC5", "MDC2", "IDEA"): + noalgo = " -DOPENSSL_NO_%s" % algo + if noalgo not in line: + line = line + noalgo + line = line + '\n' + fout.write(line) + def run_configure(configure, do_script): + print("perl Configure "+configure) os.system("perl Configure "+configure) + print(do_script) os.system(do_script) def main(): build_all = "-a" in sys.argv if sys.argv[1] == "Release": - arch = "x86" debug = False - configure = "VC-WIN32" - do_script = "ms\\do_masm" - makefile = "ms\\nt.mak" elif sys.argv[1] == "Debug": - arch = "x86" debug = True + else: + raise ValueError(str(sys.argv)) + + if sys.argv[2] == "Win32": + arch = "x86" configure = "VC-WIN32" - do_script = "ms\\do_masm" - makefile="ms\\d32.mak" - elif sys.argv[1] == "ReleaseItanium": - arch = "ia64" - debug = False - configure = "VC-WIN64I" - do_script = "ms\\do_win64i" - makefile = "ms\\nt.mak" - os.environ["VSEXTCOMP_USECL"] = "MS_ITANIUM" - elif sys.argv[1] == "ReleaseAMD64": + do_script = "ms\\do_nasm" + makefile="ms\\nt.mak" + m32 = makefile + elif sys.argv[2] == "x64": arch="amd64" - debug=False configure = "VC-WIN64A" do_script = "ms\\do_win64a" - makefile = "ms\\nt.mak" - os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON" + makefile = "ms\\nt64.mak" + m32 = makefile.replace('64', '') + #os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON" + else: + raise ValueError(str(sys.argv)) + make_flags = "" if build_all: make_flags = "-a" @@ -126,7 +179,7 @@ def main(): perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"]) perl = find_working_perl(perls) if perl is None: - sys.exit(1) + print("No Perl installation was found. Existing Makefiles are used.") print("Found a working perl at '%s'" % (perl,)) sys.stdout.flush() @@ -138,10 +191,18 @@ def main(): old_cd = os.getcwd() try: os.chdir(ssl_dir) + # rebuild makefile when we do the role over from 32 to 64 build + if arch == "amd64" and os.path.isfile(m32) and not os.path.isfile(makefile): + os.unlink(m32) + # If the ssl makefiles do not exist, we invoke Perl to generate them. # Due to a bug in this script, the makefile sometimes ended up empty # Force a regeneration if it is. if not os.path.isfile(makefile) or os.path.getsize(makefile)==0: + if perl is None: + print("Perl is required to build the makefiles!") + sys.exit(1) + print("Creating the makefiles...") sys.stdout.flush() # Put our working Perl at the front of our path @@ -149,13 +210,31 @@ def main(): os.pathsep + \ os.environ["PATH"] run_configure(configure, do_script) - if arch=="x86" and debug: - # the do_masm script in openssl doesn't generate a debug - # build makefile so we generate it here: - os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile) + if debug: + print("OpenSSL debug builds aren't supported.") + #if arch=="x86" and debug: + # # the do_masm script in openssl doesn't generate a debug + # # build makefile so we generate it here: + # os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile) + + if arch == "amd64": + create_makefile64(makefile, m32) + fix_makefile(makefile) + shutil.copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch) + shutil.copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch) # Now run make. - makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) + if arch == "amd64": + rc = os.system(r"ml64 -c -Foms\uptable.obj ms\uptable.asm") + if rc: + print("ml64 assembler has failed.") + sys.exit(rc) + + shutil.copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h") + shutil.copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h") + + #makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) + makeCommand = "nmake /nologo -f \"%s\"" % makefile print("Executing ssl makefiles:", makeCommand) sys.stdout.flush() rc = os.system(makeCommand) @@ -165,16 +244,6 @@ def main(): sys.exit(rc) finally: os.chdir(old_cd) - # And finally, we can build the _ssl module itself for Python. - defs = "SSL_DIR=\"%s\"" % (ssl_dir,) - if debug: - defs = defs + " " + "DEBUG=1" - if arch in ('amd64', 'ia64'): - defs = defs + " EXTRA_CFLAGS=/GS- EXTRA_LIBS=bufferoverflowU.lib" - makeCommand = 'nmake /nologo -f _ssl.mak ' + defs + " " + make_flags - print("Executing:", makeCommand) - sys.stdout.flush() - rc = os.system(makeCommand) sys.exit(rc) if __name__=='__main__': diff --git a/PCbuild/build_tkinter.py b/PCbuild/build_tkinter.py new file mode 100644 index 0000000..dada386 --- /dev/null +++ b/PCbuild/build_tkinter.py @@ -0,0 +1,86 @@ +"""Script to compile the dependencies of _tkinter + +Copyright (c) 2007 by Christian Heimes + +Licensed to PSF under a Contributor Agreement. +""" + +import os +import sys +import shutil + +here = os.path.abspath(os.path.dirname(__file__)) +par = os.path.pardir + +if 1: + TCL = "tcl8.4.16" + TK = "tk8.4.16" + TIX = "tix-8.4.0" +else: + TCL = "tcl8.5b3" + TK = "tcl8.5b3" + TIX = "Tix8.4.2" + +ROOT = os.path.abspath(os.path.join(here, par, par)) +# Windows 2000 compatibility: WINVER 0x0500 +# http://msdn2.microsoft.com/en-us/library/aa383745.aspx +NMAKE = "nmake /nologo /f %s COMPILERFLAGS=-DWINVER=0x0500 %s %s" + +def nmake(makefile, command="", **kw): + defines = ' '.join(k+'='+v for k, v in kw.items()) + cmd = NMAKE % (makefile, defines, command) + print("\n\n"+cmd+"\n") + if os.system(cmd) != 0: + raise RuntimeError(cmd) + +def build(platform, clean): + if platform == "Win32": + dest = os.path.join(ROOT, "tcltk") + machine = "X86" + elif platform == "x64": + dest = os.path.join(ROOT, "tcltk64") + machine = "X64" + else: + raise ValueError(platform) + + # TCL + tcldir = os.path.join(ROOT, TCL) + if 1: + os.chdir(os.path.join(tcldir, "win")) + if clean: + nmake("makefile.vc", "clean") + nmake("makefile.vc") + nmake("makefile.vc", "install", INSTALLDIR=dest) + + # TK + if 1: + os.chdir(os.path.join(ROOT, TK, "win")) + if clean: + nmake("makefile.vc", "clean", TCLDIR=tcldir) + nmake("makefile.vc", TCLDIR=tcldir) + nmake("makefile.vc", "install", TCLDIR=tcldir, INSTALLDIR=dest) + + # TIX + if 1: + # python9.mak is available at http://svn.python.org + os.chdir(os.path.join(ROOT, TIX, "win")) + if clean: + nmake("python9.mak", "clean") + nmake("python9.mak", MACHINE=machine) + nmake("python9.mak", "install") + +def main(): + if len(sys.argv) < 2 or sys.argv[1] not in ("Win32", "x64"): + print("%s Win32|x64" % sys.argv[0]) + sys.exit(1) + + if "-c" in sys.argv: + clean = True + else: + clean = False + + build(sys.argv[1], clean) + + +if __name__ == '__main__': + main() diff --git a/PCbuild/bz2.vcproj b/PCbuild/bz2.vcproj index d86d325..2c16eb0 100644 --- a/PCbuild/bz2.vcproj +++ b/PCbuild/bz2.vcproj @@ -1,270 +1,544 @@ + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + AdditionalIncludeDirectories="$(bz2Dir)" + /> + + + + AdditionalDependencies="$(bz2Dir)\$(PlatformName)-Debug\libbz2.lib" + /> + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + + + + + + + + + + + + + Description="Build libbz2" + CommandLine="cd $(bz2Dir) if exist $(PlatformName)-Debug\libbz2.lib exit 0 if not exist $(PlatformName)-Debug mkdir $(PlatformName)-Debug nmake /nologo /f makefile.msc lib copy libbz2.lib $(PlatformName)-Debug nmake /nologo /f makefile.msc clean " + /> + + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(bz2Dir)" + /> + + + + AdditionalDependencies="$(bz2Dir)\$(PlatformName)-Release\libbz2.lib" + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + + + Description="Build libbz2" + CommandLine="cd $(bz2Dir) if exist $(PlatformName)-Release\libbz2.lib exit 0 if not exist $(PlatformName)-Release mkdir $(PlatformName)-Release nmake /nologo /f makefile.msc lib copy libbz2.lib $(PlatformName)-Release nmake /nologo /f makefile.msc clean " + /> + + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(bz2Dir)" + /> + + + + AdditionalDependencies="$(bz2Dir)\$(PlatformName)-Release\libbz2.lib" + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + + + Description="Build libbz2" + CommandLine="cd $(bz2Dir) if exist $(PlatformName)-Release\libbz2.lib exit 0 if not exist $(PlatformName)-Release mkdir $(PlatformName)-Release nmake /nologo /f makefile.msc lib copy libbz2.lib $(PlatformName)-Release nmake /nologo /f makefile.msc clean " + /> + + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories="$(bz2Dir)" + /> + + + + AdditionalDependencies="$(bz2Dir)\$(PlatformName)-Release\libbz2.lib" + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + + + Description="Build libbz2" + CommandLine="cd $(bz2Dir) if exist $(PlatformName)-Release\libbz2.lib exit 0 if not exist $(PlatformName)-Release mkdir $(PlatformName)-Release nmake /nologo /f makefile.msc lib copy libbz2.lib $(PlatformName)-Release nmake /nologo /f makefile.msc clean " + /> + + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - + + + + diff --git a/PCbuild/db.build b/PCbuild/db.build deleted file mode 100644 index 6a87f74..0000000 --- a/PCbuild/db.build +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/PCbuild/debug.vsprops b/PCbuild/debug.vsprops new file mode 100644 index 0000000..59acd90 --- /dev/null +++ b/PCbuild/debug.vsprops @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/PCbuild/env.bat b/PCbuild/env.bat index 05152fe..638b16c 100644 --- a/PCbuild/env.bat +++ b/PCbuild/env.bat @@ -1,22 +1,5 @@ @echo off -rem Set these values according to where you installed the software -rem You need to install the necessary bits mentioned in: -rem http://wiki.python.org/moin/Building_Python_with_the_free_MS_C_Toolkit - -set TOOLKIT=%ProgramFiles%\Microsoft Visual C++ Toolkit 2003 -set SDK=%ProgramFiles%\Microsoft Platform SDK for Windows Server 2003 R2 -set NET=%ProgramFiles%\Microsoft Visual Studio .NET 2003 -set NANT=%ProgramFiles%\Nant - -set PATH=%TOOLKIT%\bin;%PATH%;%SDK%\Bin\Win64;%NANT%\bin;%SDK%\bin -set INCLUDE=%TOOLKIT%\include;%SDK%\Include;%INCLUDE% -set LIB=%TOOLKIT%\lib;%NET%\VC7\lib;%SDK%\lib;%LIB% - -echo Build environment for Python -echo TOOLKIT=%TOOLKIT% -echo SDK=%SDK% -echo NET=%NET% -echo NANT=%NANT% -echo Commands: -echo * build -echo * rt +set VS9=%ProgramFiles%\Microsoft Visual Studio 9.0 +echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64 +echo. +call "%VS9%\VC\vcvarsall.bat" %1 diff --git a/PCbuild/idle.bat b/PCbuild/idle.bat new file mode 100644 index 0000000..dcb0485 --- /dev/null +++ b/PCbuild/idle.bat @@ -0,0 +1,15 @@ +@echo off +rem start idle +rem Usage: idle [-d] +rem -d Run Debug build (python_d.exe). Else release build. + +setlocal +set exe=python +PATH %PATH%;..\..\tcltk\bin + +if "%1"=="-d" (set exe=python_d) & shift + +set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 + +echo on +%cmd% diff --git a/PCbuild/make_buildinfo.c b/PCbuild/make_buildinfo.c index 4cebf45..22b9882 100644 --- a/PCbuild/make_buildinfo.c +++ b/PCbuild/make_buildinfo.c @@ -3,6 +3,8 @@ #include #include +#define CMD_SIZE 500 + /* This file creates the getbuildinfo.o object, by first invoking subwcrev.exe (if found), and then invoking cl.exe. As a side effect, it might generate PCBuild\getbuildinfo2.c @@ -23,7 +25,7 @@ int make_buildinfo2() { struct _stat st; HKEY hTortoise; - char command[500]; + char command[CMD_SIZE+1]; DWORD type, size; if (_stat(".svn", &st) < 0) return 0; @@ -40,11 +42,11 @@ int make_buildinfo2() type != REG_SZ) /* Registry corrupted */ return 0; - strcat(command, "bin\\subwcrev.exe"); + strcat_s(command, CMD_SIZE, "bin\\subwcrev.exe"); if (_stat(command+1, &st) < 0) /* subwcrev.exe not part of the release */ return 0; - strcat(command, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c"); + strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c"); puts(command); fflush(stdout); if (system(command) < 0) return 0; @@ -60,17 +62,17 @@ int main(int argc, char*argv[]) return EXIT_FAILURE; } if (strcmp(argv[1], "Release") == 0) { - strcat(command, "-MD "); + strcat_s(command, CMD_SIZE, "-MD "); } else if (strcmp(argv[1], "Debug") == 0) { - strcat(command, "-D_DEBUG -MDd "); + strcat_s(command, CMD_SIZE, "-D_DEBUG -MDd "); } else if (strcmp(argv[1], "ReleaseItanium") == 0) { - strcat(command, "-MD /USECL:MS_ITANIUM "); + strcat_s(command, CMD_SIZE, "-MD /USECL:MS_ITANIUM "); } else if (strcmp(argv[1], "ReleaseAMD64") == 0) { - strcat(command, "-MD "); - strcat(command, "-MD /USECL:MS_OPTERON "); + strcat_s(command, CMD_SIZE, "-MD "); + strcat_s(command, CMD_SIZE, "-MD /USECL:MS_OPTERON "); } else { fprintf(stderr, "unsupported configuration %s\n", argv[1]); @@ -78,14 +80,14 @@ int main(int argc, char*argv[]) } if ((do_unlink = make_buildinfo2())) - strcat(command, "getbuildinfo2.c -DSUBWCREV "); + strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV "); else - strcat(command, "..\\Modules\\getbuildinfo.c"); - strcat(command, " -Fogetbuildinfo.o -I..\\Include -I..\\PC"); + strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c"); + strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\Include -I..\\PC"); puts(command); fflush(stdout); result = system(command); if (do_unlink) - unlink("getbuildinfo2.c"); + _unlink("getbuildinfo2.c"); if (result < 0) return EXIT_FAILURE; return 0; diff --git a/PCbuild/make_buildinfo.vcproj b/PCbuild/make_buildinfo.vcproj index c49f0fd..c42229c 100644 --- a/PCbuild/make_buildinfo.vcproj +++ b/PCbuild/make_buildinfo.vcproj @@ -1,108 +1,146 @@ + RootNamespace="make_buildinfo" + Keyword="Win32Proj" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" + CharacterSet="0" + > + + + + + + InlineFunctionExpansion="1" + PreprocessorDefinitions="_CONSOLE" + RuntimeLibrary="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + PreprocessorDefinitions="_CONSOLE" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> @@ -111,9 +149,11 @@ + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + > + RelativePath=".\make_buildinfo.c" + > diff --git a/PCbuild/make_versioninfo.vcproj b/PCbuild/make_versioninfo.vcproj index 7bdaacc..dcb922b 100644 --- a/PCbuild/make_versioninfo.vcproj +++ b/PCbuild/make_versioninfo.vcproj @@ -1,141 +1,325 @@ + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + /> + + + + Name="VCBscMakeTool" + /> + + + CommandLine="cd $(SolutionDir) make_versioninfo.exe > ..\PC\python_nt.h " + /> + + + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + Description="Build PC/pythonnt_rc(_d).h" + CommandLine="cd $(SolutionDir) make_versioninfo.exe > ..\PC\pythonnt_rc.h " + Outputs="$(SolutionDir)..\PC\pythonnt_rc.h" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + EnableIntrinsicFunctions="true" + PreprocessorDefinitions="_CONSOLE" + /> + Name="VCManagedResourceCompilerTool" + /> + + + + Name="VCALinkTool" + /> + + + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="0" + > + + + + + + InlineFunctionExpansion="1" + EnableIntrinsicFunctions="false" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_CONSOLE" + StringPooling="true" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + /> + + + + Name="VCBscMakeTool" + /> + + + CommandLine="cd $(SolutionDir) make_versioninfo_d.exe > ..\PC\python_nt_d.h " + /> + + + + + + + + + + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + OutputFile="$(SolutionDir)make_versioninfo_d.exe" + TargetMachine="17" + /> + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + - - + + + + diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln index e44a39e..ba8b005 100644 --- a/PCbuild/pcbuild.sln +++ b/PCbuild/pcbuild.sln @@ -1,288 +1,471 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{E1DBB220-D64B-423D-A545-539A55AA7FE2}" +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} = {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{324F66C2-44D0-4D50-B979-F9DAE7FD36DB}" - ProjectSection(ProjectDependencies) = postProject - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} - EndProjectSection +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{F0E0541E-F17D-430B-97C4-93ADF0DD284E}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}" ProjectSection(ProjectDependencies) = postProject - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} - {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} = {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058} + {F0E0541E-F17D-430B-97C4-93ADF0DD284E} = {F0E0541E-F17D-430B-97C4-93ADF0DD284E} + {C73F0EC1-358B-4177-940F-0846AC8B04CD} = {C73F0EC1-358B-4177-940F-0846AC8B04CD} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{59CBF474-9E06-4C50-9142-C44A118BB447}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{5B51DFF7-5DC0-41F8-8791-A4AB7114A151}" - ProjectSection(ProjectDependencies) = postProject - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} - EndProjectSection +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w9xpopen", "w9xpopen.vcproj", "{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{AC557788-6354-43F7-BE05-C9C8C59A344A}" - ProjectSection(ProjectDependencies) = postProject - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buildinfo.vcproj", "{C73F0EC1-358B-4177-940F-0846AC8B04CD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}" + ProjectSection(SolutionItems) = preProject + ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c + readme.txt = readme.txt EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{F0E0541E-F17D-430B-97C4-93ADF0DD284E}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj", "{28B5D777-DDF2-4B6B-B34F-31D938813856}" ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{7E551393-3C43-47F8-9F3F-5BC368A6C487}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{B4D38F3F-68FB-42EC-A45D-E00657BB3627}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{0E9791DB-593A-465F-98BC-681011311618}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcproj", "{9EC7190A-249F-4180-A900-548FDCF3055F}" ProjectSection(ProjectDependencies) = postProject - {F0E0541E-F17D-430B-97C4-93ADF0DD284E} = {F0E0541E-F17D-430B-97C4-93ADF0DD284E} - {C73F0EC1-358B-4177-940F-0846AC8B04CD} = {C73F0EC1-358B-4177-940F-0846AC8B04CD} + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcproj", "{17E1E049-C309-4D79-843F-AE483C264AEA}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{97239A56-DBC0-41D2-BC14-C87D9B97D63B}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcproj", "{31FFC478-7B4A-43E8-9954-8D03E2187E9C}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{86937F53-C189-40EF-8CE8-8759D8E7D480}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w9xpopen", "w9xpopen.vcproj", "{E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{13CECB97-4119-4316-9D42-8534019A5A44}" ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj", "{51F35FAE-FB92-4B2C-9187-1542C065AD77}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}" ProjectSection(ProjectDependencies) = postProject + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} + {86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480} {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcproj", "{1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buildinfo.vcproj", "{C73F0EC1-358B-4177-940F-0846AC8B04CD}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}" ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcproj", "{2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{F22F40F4-D318-40DC-96B3-88DC81CE0894}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcproj", "{8CF334D9-4F82-42EB-97AF-83592C5AFD2F}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}" ProjectSection(ProjectDependencies) = postProject - {F22F40F4-D318-40DC-96B3-88DC81CE0894} = {F22F40F4-D318-40DC-96B3-88DC81CE0894} + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{2FF0A312-22F9-4C34-B070-842916DE27A9}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{D06B6426-4762-44CC-8BAD-D79052507F2F}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "bdist_wininst.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" +EndProject Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - ReleaseAMD64 = ReleaseAMD64 - ReleaseItanium = ReleaseItanium - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Debug.ActiveCfg = Debug|Win32 - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Debug.Build.0 = Debug|Win32 - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Release.ActiveCfg = Release|Win32 - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.Release.Build.0 = Release|Win32 - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {E1DBB220-D64B-423D-A545-539A55AA7FE2}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Debug.ActiveCfg = Debug|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Debug.Build.0 = Debug|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Release.ActiveCfg = Release|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.Release.Build.0 = Release|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {324F66C2-44D0-4D50-B979-F9DAE7FD36DB}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Debug.ActiveCfg = Debug|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Debug.Build.0 = Debug|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Release.ActiveCfg = Release|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.Release.Build.0 = Release|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {8E85BA54-8A47-4C8B-B72E-8E17579CC6D7}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.Debug.ActiveCfg = Debug|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.Debug.Build.0 = Debug|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.Release.ActiveCfg = Release|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.Release.Build.0 = Release|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {59CBF474-9E06-4C50-9142-C44A118BB447}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Debug.ActiveCfg = Debug|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Debug.Build.0 = Debug|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Release.ActiveCfg = Release|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.Release.Build.0 = Release|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {5B51DFF7-5DC0-41F8-8791-A4AB7114A151}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.Debug.ActiveCfg = Debug|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.Debug.Build.0 = Debug|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.Release.ActiveCfg = Release|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.Release.Build.0 = Release|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {AC557788-6354-43F7-BE05-C9C8C59A344A}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug.ActiveCfg = Debug|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug.Build.0 = Debug|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release.ActiveCfg = Release|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release.Build.0 = Release|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseAMD64.ActiveCfg = Release|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseAMD64.Build.0 = Release|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseItanium.ActiveCfg = Release|Win32 - {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.ReleaseItanium.Build.0 = Release|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Debug.ActiveCfg = Debug|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Debug.Build.0 = Debug|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Release.ActiveCfg = Release|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.Release.Build.0 = Release|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {7E551393-3C43-47F8-9F3F-5BC368A6C487}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug.ActiveCfg = Debug|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug.Build.0 = Debug|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release.ActiveCfg = Release|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release.Build.0 = Release|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug.ActiveCfg = Debug|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug.Build.0 = Debug|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release.ActiveCfg = Release|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release.Build.0 = Release|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug.ActiveCfg = Debug|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug.Build.0 = Debug|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release.ActiveCfg = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release.Build.0 = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Debug.ActiveCfg = Debug|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Debug.Build.0 = Debug|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Release.ActiveCfg = Release|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.Release.Build.0 = Release|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {97239A56-DBC0-41D2-BC14-C87D9B97D63B}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Debug.ActiveCfg = Debug|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Debug.Build.0 = Debug|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Release.ActiveCfg = Release|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.Release.Build.0 = Release|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {FA5FC7EB-C72F-415F-AE42-91DD605ABDDA}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug.ActiveCfg = Debug|Win32 - {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug.Build.0 = Debug|Win32 - {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release.ActiveCfg = Release|Win32 - {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release.Build.0 = Release|Win32 - {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.ReleaseAMD64.ActiveCfg = Release|Win32 - {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.ReleaseItanium.ActiveCfg = Release|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Debug.ActiveCfg = Debug|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Debug.Build.0 = Debug|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Release.ActiveCfg = Release|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.Release.Build.0 = Release|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {51F35FAE-FB92-4B2C-9187-1542C065AD77}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Debug.ActiveCfg = Debug|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Debug.Build.0 = Debug|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Release.ActiveCfg = Release|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.Release.Build.0 = Release|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {1966DDE2-4AB7-4E4E-ACC9-C121E4D37F8E}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug.ActiveCfg = Debug|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug.Build.0 = Debug|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release.ActiveCfg = Release|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release.Build.0 = Release|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseAMD64.ActiveCfg = Release|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseAMD64.Build.0 = Release|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseItanium.ActiveCfg = Release|Win32 - {C73F0EC1-358B-4177-940F-0846AC8B04CD}.ReleaseItanium.Build.0 = Release|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Debug.ActiveCfg = Debug|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Debug.Build.0 = Debug|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Release.ActiveCfg = Release|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.Release.Build.0 = Release|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {2C0BEFB9-70E2-4F80-AC5B-4AB8EE023574}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Debug.ActiveCfg = Debug|Win32 - {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Debug.Build.0 = Debug|Win32 - {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Release.ActiveCfg = Release|Win32 - {F22F40F4-D318-40DC-96B3-88DC81CE0894}.Release.Build.0 = Release|Win32 - {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {F22F40F4-D318-40DC-96B3-88DC81CE0894}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Debug.ActiveCfg = Debug|Win32 - {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Debug.Build.0 = Debug|Win32 - {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Release.ActiveCfg = Release|Win32 - {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.Release.Build.0 = Release|Win32 - {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {8CF334D9-4F82-42EB-97AF-83592C5AFD2F}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.Debug.ActiveCfg = Debug|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.Debug.Build.0 = Debug|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.Release.ActiveCfg = Release|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.Release.Build.0 = Release|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseAMD64.ActiveCfg = ReleaseAMD64|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseAMD64.Build.0 = ReleaseAMD64|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseItanium.ActiveCfg = ReleaseItanium|Win32 - {2FF0A312-22F9-4C34-B070-842916DE27A9}.ReleaseItanium.Build.0 = ReleaseItanium|Win32 - EndGlobalSection - GlobalSection(SolutionItems) = postSolution - ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c - readme.txt = readme.txt + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + PGInstrument|Win32 = PGInstrument|Win32 + PGInstrument|x64 = PGInstrument|x64 + PGUpdate|Win32 = PGUpdate|Win32 + PGUpdate|x64 = PGUpdate|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.ActiveCfg = Debug|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.Build.0 = Debug|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.ActiveCfg = Debug|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.Build.0 = Debug|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.ActiveCfg = Release|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.Build.0 = Release|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.ActiveCfg = Release|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.Build.0 = Release|x64 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|Win32.ActiveCfg = Debug|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|Win32.Build.0 = Debug|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|x64.ActiveCfg = Debug|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Debug|x64.Build.0 = Debug|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|Win32.Build.0 = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|x64.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGInstrument|x64.Build.0 = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|Win32.Build.0 = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|x64.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.PGUpdate|x64.Build.0 = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|Win32.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|Win32.Build.0 = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|x64.ActiveCfg = Release|Win32 + {F0E0541E-F17D-430B-97C4-93ADF0DD284E}.Release|x64.Build.0 = Release|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.ActiveCfg = Debug|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.Build.0 = Debug|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.ActiveCfg = Debug|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.Build.0 = Debug|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.ActiveCfg = Release|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.Build.0 = Release|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.ActiveCfg = Release|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.Build.0 = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.ActiveCfg = Debug|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.Build.0 = Debug|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.ActiveCfg = Debug|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.Build.0 = Debug|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.ActiveCfg = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.Build.0 = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.ActiveCfg = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.Build.0 = Release|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|Win32.ActiveCfg = Debug|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|Win32.Build.0 = Debug|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|x64.ActiveCfg = Debug|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Debug|x64.Build.0 = Debug|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|Win32.ActiveCfg = Release|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|Win32.Build.0 = Release|Win32 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|x64.ActiveCfg = Release|x64 + {E9E0A1F6-0009-4E8C-B8F8-1B8F5D49A058}.Release|x64.Build.0 = Release|x64 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|Win32.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|Win32.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|x64.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Debug|x64.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|Win32.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|x64.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGInstrument|x64.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|Win32.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|x64.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.PGUpdate|x64.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|Win32.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|Win32.Build.0 = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|x64.ActiveCfg = Release|Win32 + {C73F0EC1-358B-4177-940F-0846AC8B04CD}.Release|x64.Build.0 = Release|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.ActiveCfg = Debug|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.Build.0 = Debug|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.ActiveCfg = Debug|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.Build.0 = Debug|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.ActiveCfg = Release|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.Build.0 = Release|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.ActiveCfg = Release|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.Build.0 = Release|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|Win32.ActiveCfg = Debug|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|Win32.Build.0 = Debug|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|x64.ActiveCfg = Debug|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Debug|x64.Build.0 = Debug|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|Win32.ActiveCfg = Release|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|Win32.Build.0 = Release|Win32 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|x64.ActiveCfg = Release|x64 + {B4D38F3F-68FB-42EC-A45D-E00657BB3627}.Release|x64.Build.0 = Release|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.ActiveCfg = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.Build.0 = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.ActiveCfg = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.Build.0 = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.ActiveCfg = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.Build.0 = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.ActiveCfg = Release|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.Build.0 = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.ActiveCfg = Debug|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.Build.0 = Debug|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.ActiveCfg = Debug|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.Build.0 = Debug|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.ActiveCfg = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.Build.0 = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.ActiveCfg = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.Build.0 = Release|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.ActiveCfg = Debug|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.Build.0 = Debug|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.ActiveCfg = Debug|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.Build.0 = Debug|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.ActiveCfg = Release|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.Build.0 = Release|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.ActiveCfg = Release|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.Build.0 = Release|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.ActiveCfg = Debug|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.Build.0 = Debug|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.ActiveCfg = Debug|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.Build.0 = Debug|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.ActiveCfg = Release|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.Build.0 = Release|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.ActiveCfg = Release|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.Build.0 = Release|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.ActiveCfg = Debug|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.Build.0 = Debug|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.ActiveCfg = Debug|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.Build.0 = Debug|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.ActiveCfg = Release|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.Build.0 = Release|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.ActiveCfg = Release|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.Build.0 = Release|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.ActiveCfg = Debug|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.Build.0 = Debug|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.ActiveCfg = Debug|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.Build.0 = Debug|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.ActiveCfg = Release|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.Build.0 = Release|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.ActiveCfg = Release|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.Build.0 = Release|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.ActiveCfg = Debug|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.Build.0 = Debug|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.ActiveCfg = Debug|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.Build.0 = Debug|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.ActiveCfg = Release|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.Build.0 = Release|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.ActiveCfg = Release|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.Build.0 = Release|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.ActiveCfg = Debug|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.Build.0 = Debug|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.ActiveCfg = Debug|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.Build.0 = Debug|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.ActiveCfg = Release|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.Build.0 = Release|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.ActiveCfg = Release|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.Build.0 = Release|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.Build.0 = Debug|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.ActiveCfg = Debug|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.Build.0 = Debug|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.ActiveCfg = Release|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.Build.0 = Release|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.ActiveCfg = Release|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.Build.0 = Release|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.ActiveCfg = Debug|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.Build.0 = Debug|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.ActiveCfg = Debug|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.Build.0 = Debug|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.ActiveCfg = Release|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.Build.0 = Release|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.ActiveCfg = Release|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.Build.0 = Release|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.ActiveCfg = Debug|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.Build.0 = Debug|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.ActiveCfg = Debug|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.Build.0 = Debug|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.ActiveCfg = Release|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.Build.0 = Release|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.ActiveCfg = Release|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.Build.0 = Release|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.ActiveCfg = Debug|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.Build.0 = Debug|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.ActiveCfg = Debug|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.Build.0 = Debug|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.ActiveCfg = Release|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.Build.0 = Release|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.ActiveCfg = Release|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.Build.0 = Release|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.ActiveCfg = Debug|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.Build.0 = Debug|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.ActiveCfg = Debug|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.Build.0 = Debug|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.ActiveCfg = Release|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.Build.0 = Release|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.ActiveCfg = Release|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.Build.0 = Release|x64 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|x64.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|x64.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|x64.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal diff --git a/PCbuild/pginstrument.vsprops b/PCbuild/pginstrument.vsprops new file mode 100644 index 0000000..93b9687 --- /dev/null +++ b/PCbuild/pginstrument.vsprops @@ -0,0 +1,34 @@ + + + + + + diff --git a/PCbuild/pgupdate.vsprops b/PCbuild/pgupdate.vsprops new file mode 100644 index 0000000..7ce4a3a --- /dev/null +++ b/PCbuild/pgupdate.vsprops @@ -0,0 +1,14 @@ + + + + diff --git a/PCbuild/pyd.vsprops b/PCbuild/pyd.vsprops new file mode 100644 index 0000000..2e21a80 --- /dev/null +++ b/PCbuild/pyd.vsprops @@ -0,0 +1,22 @@ + + + + + + diff --git a/PCbuild/pyd_d.vsprops b/PCbuild/pyd_d.vsprops new file mode 100644 index 0000000..b8f98f6 --- /dev/null +++ b/PCbuild/pyd_d.vsprops @@ -0,0 +1,30 @@ + + + + + + + diff --git a/PCbuild/pyexpat.vcproj b/PCbuild/pyexpat.vcproj index 1c5b3ad..2d2cd9d 100644 --- a/PCbuild/pyexpat.vcproj +++ b/PCbuild/pyexpat.vcproj @@ -1,262 +1,552 @@ + ProjectGUID="{D06B6426-4762-44CC-8BAD-D79052507F2F}" + RootNamespace="pyexpat" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + AdditionalIncludeDirectories=".\..\Modules\expat" + PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories=".\..\Modules\expat" + PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories=".\..\Modules\expat" + PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + AdditionalIncludeDirectories=".\..\Modules\expat" + PreprocessorDefinitions="PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_NS;XML_DTD;BYTEORDER=1234;XML_CONTEXT_BYTES=1024;XML_STATIC;HAVE_MEMMOVE" + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/PCbuild/pyproject.vsprops b/PCbuild/pyproject.vsprops new file mode 100644 index 0000000..eaea0be --- /dev/null +++ b/PCbuild/pyproject.vsprops @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + diff --git a/PCbuild/python.build b/PCbuild/python.build deleted file mode 100644 index 61bbe89..0000000 --- a/PCbuild/python.build +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/PCbuild/python.iss b/PCbuild/python.iss deleted file mode 100644 index 480b8c1..0000000 --- a/PCbuild/python.iss +++ /dev/null @@ -1,337 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -; This is the whole ball of wax for an Inno installer for Python. -; To use, download Inno Setup from http://www.jrsoftware.org/isdl.htm/, -; install it, and double-click on this file. That launches the Inno -; script compiler. The GUI is extemely simple, and has only one button -; you may not recognize instantly: click it. You're done. It builds -; the installer into PCBuild/Python-2.2a1.exe. Size and speed of the -; installer are competitive with the Wise installer; Inno uninstall -; seems much quicker than Wise (but also feebler, and the uninstall -; log is in some un(human)readable binary format). -; -; What's Done -; ----------- -; All the usual Windows Python files are installed by this now. -; All the usual Windows Python Start menu entries are created and -; work fine. -; .py, .pyw, .pyc and .pyo extensions are registered. -; PROBLEM: Inno uninstall does not restore their previous registry -; associations (if any). Wise did. This will make life -; difficult for alpha (etc) testers. -; The Python install is fully functional for "typical" uses. -; -; What's Not Done -; --------------- -; None of "Mark Hammond's" registry entries are written. -; No installation of files is done into the system dir: -; The MS DLLs aren't handled at all by this yet. -; Python22.dll is unpacked into the main Python dir. -; -; Inno can't do different things on NT/2000 depending on whether the user -; has Admin privileges, so I don't know how to "solve" either of those, -; short of building two installers (one *requiring* Admin privs, the -; other not doing anything that needs Admin privs). -; -; Inno has no concept of variables, so lots of lines in this file need -; to be fiddled by hand across releases. Simplest way out: stick this -; file in a giant triple-quoted r-string (note that backslashes are -; required all over the place here -- forward slashes DON'T WORK in -; Inno), and use %(yadda)s string interpolation to do substitutions; i.e., -; write a very simple Python program to *produce* this script. - -[Setup] -AppName=Python and combined Win32 Extensions -AppVerName=Python 2.2.2 and combined Win32 Extensions 150 -AppId=Python 2.2.2.150 -AppVersion=2.2.2.150 -AppCopyright=Python is Copyright © 2001 Python Software Foundation. Win32 Extensions are Copyright © 1996-2001 Greg Stein and Mark Hammond. - -; Default install dir; value of {app} later (unless user overrides). -; {sd} = system root drive, probably "C:". -DefaultDirName={sd}\Python22 -;DefaultDirName={pf}\Python - -; Start menu folder name; value of {group} later (unless user overrides). -DefaultGroupName=Python 2.2 - -; Point SourceDir to one above PCBuild = src. -; means this script can run unchanged from anyone's CVS tree, no matter -; what they called the top-level directories. -SourceDir=. -OutputDir=.. -OutputBaseFilename=Python-2.2.2-Win32-150-Setup - -AppPublisher=PythonLabs at Digital Creations -AppPublisherURL=http://www.python.org -AppSupportURL=http://www.python.org -AppUpdatesURL=http://www.python.org - -AlwaysCreateUninstallIcon=true -ChangesAssociations=true -UninstallLogMode=new -AllowNoIcons=true -AdminPrivilegesRequired=true -UninstallDisplayIcon={app}\pyc.ico -WizardDebug=false - -; The fewer screens the better; leave these commented. - -Compression=bzip -InfoBeforeFile=LICENSE.txt -;InfoBeforeFile=Misc\NEWS - -; uncomment the following line if you want your installation to run on NT 3.51 too. -; MinVersion=4,3.51 - -[Types] -Name: normal; Description: Select desired components; Flags: iscustom - -[Components] -Name: main; Description: Python and Win32 Extensions; Types: normal -Name: docs; Description: Python documentation (HTML); Types: normal -Name: tk; Description: TCL/TK, tkinter, and Idle; Types: normal -Name: tools; Description: Python utility scripts (Tools\); Types: normal -Name: test; Description: Python test suite (Lib\test\); Types: normal - -[Tasks] -Name: extensions; Description: Register file associations (.py, .pyw, .pyc, .pyo); Components: main; Check: IsAdminLoggedOn - -[Files] -; Caution: Using forward slashes instead screws up in amazing ways. -; Unknown: By the time Components (and other attrs) are added to these lines, they're -; going to get awfully long. But don't see a way to continue logical lines across -; physical lines. - -Source: LICENSE.txt; DestDir: {app}; CopyMode: alwaysoverwrite -Source: README.txt; DestDir: {app}; CopyMode: alwaysoverwrite -Source: News.txt; DestDir: {app}; CopyMode: alwaysoverwrite -Source: *.ico; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main - -Source: python.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main -Source: pythonw.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main -Source: w9xpopen.exe; DestDir: {app}; CopyMode: alwaysoverwrite; Components: main - - -Source: DLLs\tcl83.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk -Source: DLLs\tk83.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk -Source: tcl\*.*; DestDir: {app}\tcl; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs - -Source: sysdir\python22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: sharedfile restartreplace -Source: sysdir\PyWinTypes22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: restartreplace sharedfile -Source: sysdir\pythoncom22.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Components: main; Flags: restartreplace sharedfile - -Source: DLLs\_socket.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\_socket.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\_sre.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\_sre.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\_symtable.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\_symtable.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\_testcapi.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\_testcapi.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\_tkinter.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: tk -Source: libs\_tkinter.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: tk - -Source: DLLs\bsddb.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\bsddb.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\mmap.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\mmap.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\parser.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\parser.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\pyexpat.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\pyexpat.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\select.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\select.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\unicodedata.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\unicodedata.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\_winreg.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\_winreg.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\winsound.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\winsound.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\zlib.pyd; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main -Source: libs\zlib.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: libs\python22.lib; DestDir: {app}\libs; CopyMode: alwaysoverwrite; Components: main - -Source: DLLs\expat.dll; DestDir: {app}\DLLs; CopyMode: alwaysoverwrite; Components: main - - - -Source: Lib\*.py; DestDir: {app}\Lib; CopyMode: alwaysoverwrite; Components: main -Source: Lib\distutils\*.*; DestDir: {app}\Lib\distutils; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs -Source: Lib\email\*.*; DestDir: {app}\Lib\email; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs -Source: Lib\encodings\*.*; DestDir: {app}\Lib\encodings; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs -Source: Lib\lib-old\*.*; DestDir: {app}\Lib\lib-old; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs -Source: Lib\xml\*.*; DestDir: {app}\Lib\xml; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs -Source: Lib\test\*.*; DestDir: {app}\Lib\test; CopyMode: alwaysoverwrite; Components: test; Flags: recursesubdirs - -Source: Lib\site-packages\README.txt; DestDir: {app}\Lib\site-packages; CopyMode: alwaysoverwrite; Components: main - -Source: Lib\site-packages\PyWin32.chm; DestDir: {app}\Lib\site-packages; CopyMode: alwaysoverwrite; Components: docs -Source: Lib\site-packages\win32\*.*; DestDir: {app}\Lib\site-packages\win32; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs -Source: Lib\site-packages\win32com\*.*; DestDir: {app}\Lib\site-packages\win32com; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs -Source: Lib\site-packages\win32comext\*.*; DestDir: {app}\Lib\site-packages\win32comext; CopyMode: alwaysoverwrite; Components: main; Flags: recursesubdirs - -Source: Lib\lib-tk\*.py; DestDir: {app}\Lib\lib-tk; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs - -Source: include\*.h; DestDir: {app}\include; CopyMode: alwaysoverwrite; Components: main - -Source: Tools\idle\*.*; DestDir: {app}\Tools\idle; CopyMode: alwaysoverwrite; Components: tk; Flags: recursesubdirs - -Source: Tools\pynche\*.*; DestDir: {app}\Tools\pynche; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs -Source: Tools\scripts\*.*; DestDir: {app}\Tools\Scripts; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs -Source: Tools\webchecker\*.*; DestDir: {app}\Tools\webchecker; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs -Source: Tools\versioncheck\*.*; DestDir: {app}\Tools\versioncheck; CopyMode: alwaysoverwrite; Components: tools; Flags: recursesubdirs - -Source: Doc\*.*; DestDir: {app}\Doc; CopyMode: alwaysoverwrite; Flags: recursesubdirs; Components: docs - - -[Icons] -Name: {group}\Python (command line); Filename: {app}\python.exe; WorkingDir: {app}; Components: main -Name: {group}\Python Manuals; Filename: {app}\Doc\index.html; WorkingDir: {app}; Components: docs -Name: {group}\Win32 Extensions Help; Filename: {app}\Lib\site-packages\PyWin32.chm; WorkingDir: {app}\Lib\site-packages; Components: docs -Name: {group}\Module Docs; Filename: {app}\pythonw.exe; WorkingDir: {app}; Parameters: """{app}\Tools\Scripts\pydoc.pyw"""; Components: tools -Name: {group}\IDLE (Python GUI); Filename: {app}\pythonw.exe; WorkingDir: {app}; Parameters: """{app}\Tools\idle\idle.pyw"""; Components: tools - -[Registry] -; Register .py -Tasks: extensions; Root: HKCR; Subkey: .py; ValueType: string; ValueName: ; ValueData: Python File; Flags: uninsdeletevalue -Tasks: extensions; Root: HKCR; Subkey: .py; ValueType: string; ValueName: Content Type; ValueData: text/plain; Flags: uninsdeletevalue -Tasks: extensions; Root: HKCR; Subkey: Python File; ValueType: string; ValueName: ; ValueData: Python File; Flags: uninsdeletekey -Tasks: extensions; Root: HKCR; Subkey: Python File\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\Py.ico -Tasks: extensions; Root: HKCR; Subkey: Python File\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\python.exe"" ""%1"" %*" - -; Register .pyc -Tasks: extensions; Root: HKCR; Subkey: .pyc; ValueType: string; ValueName: ; ValueData: Python CompiledFile; Flags: uninsdeletevalue -Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile; ValueType: string; ValueName: ; ValueData: Compiled Python File; Flags: uninsdeletekey -Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\pyc.ico -Tasks: extensions; Root: HKCR; Subkey: Python CompiledFile\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\python.exe"" ""%1"" %*" - -; Register .pyo -Tasks: extensions; Root: HKCR; Subkey: .pyo; ValueType: string; ValueName: ; ValueData: Python CompiledFile; Flags: uninsdeletevalue - -; Register .pyw -Tasks: extensions; Root: HKCR; Subkey: .pyw; ValueType: string; ValueName: ; ValueData: Python NoConFile; Flags: uninsdeletevalue -Tasks: extensions; Root: HKCR; Subkey: .pyw; ValueType: string; ValueName: Content Type; ValueData: text/plain; Flags: uninsdeletevalue -Tasks: extensions; Root: HKCR; Subkey: Python NoConFile; ValueType: string; ValueName: ; ValueData: Python File (no console); Flags: uninsdeletekey -Tasks: extensions; Root: HKCR; Subkey: Python NoConFile\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\Py.ico -Tasks: extensions; Root: HKCR; Subkey: Python NoConFile\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\pythonw.exe"" ""%1"" %*" - - -; Python Registry Keys -Root: HKLM; Subkey: SOFTWARE\Python; Flags: uninsdeletekeyifempty; Check: IsAdminLoggedOn -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore; Flags: uninsdeletekeyifempty -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2; Flags: uninsdeletekeyifempty -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath; ValueData: "{app}\Lib;{app}\DLLs"; Flags: uninsdeletekeyifempty -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\tk; ValueData: {app}\Lib\lib-tk; Flags: uninsdeletekey; Components: tk -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\win32; ValueData: "{app}\lib\site-packages\win32;{app}\lib\site-packages\win32\lib"; Flags: uninsdeletekey -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\PythonPath\win32com; ValueData: C:\Python\lib\site-packages; Flags: uninsdeletekey -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules; Flags: uninsdeletekeyifempty -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules\pythoncom; ValueData: {sys}\pythoncom22.dll; Flags: uninsdeletekey -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Modules\pywintypes; ValueData: {sys}\PyWinTypes22.dll; Flags: uninsdeletekey -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\InstallPath; ValueData: {app}; Flags: uninsdeletekeyifempty; ValueType: string -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\InstallPath\InstallGroup; ValueData: {group}; Flags: uninsdeletekey -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help; Flags: uninsdeletekeyifempty -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help\Main Python Documentation; ValueType: string; ValueData: {app}\Doc\index.html; Flags: uninsdeletekey; Components: docs -Root: HKLM; Subkey: SOFTWARE\Python\PythonCore\2.2\Help\Python Win32 Documentation; ValueType: string; ValueData: {app}\lib\site-packages\PyWin32.chm; Flags: uninsdeletekey; Components: docs - -[_ISTool] -EnableISX=true - - -[Code] -Program Setup; - -Function IsAdminNotLoggedOn(): Boolean; -begin - Result := Not IsAdminLoggedOn(); -end; - -begin -end. - - - - -[UninstallDelete] -Name: {app}\Lib\distutils\command\*.pyc; Type: files -Name: {app}\Lib\distutils\command\*.pyo; Type: files -Name: {app}\Lib\distutils\command; Type: dirifempty -Name: {app}\Lib\distutils\*.pyc; Type: files -Name: {app}\Lib\distutils\*.pyo; Type: files -Name: {app}\Lib\distutils; Type: dirifempty -Name: {app}\Lib\email\test\*.pyc; Type: files -Name: {app}\Lib\email\test\*.pyo; Type: files -Name: {app}\Lib\email\test; Type: dirifempty -Name: {app}\Lib\email\*.pyc; Type: files -Name: {app}\Lib\email\*.pyo; Type: files -Name: {app}\Lib\email; Type: dirifempty -Name: {app}\Lib\encodings\*.pyc; Type: files -Name: {app}\Lib\encodings\*.pyo; Type: files -Name: {app}\Lib\encodings; Type: dirifempty -Name: {app}\Lib\lib-old\*.pyc; Type: files -Name: {app}\Lib\lib-old\*.pyo; Type: files -Name: {app}\Lib\lib-old; Type: dirifempty -Name: {app}\Lib\lib-tk\*.pyc; Type: files -Name: {app}\Lib\lib-tk\*.pyo; Type: files -Name: {app}\Lib\lib-tk; Type: dirifempty -Name: {app}\Lib\test\*.pyc; Type: files -Name: {app}\Lib\test\*.pyo; Type: files -Name: {app}\Lib\test; Type: dirifempty -Name: {app}\Lib\xml\dom\*.pyc; Type: files -Name: {app}\Lib\xml\dom\*.pyo; Type: files -Name: {app}\Lib\xml\dom; Type: dirifempty -Name: {app}\Lib\xml\parsers\*.pyc; Type: files -Name: {app}\Lib\xml\parsers\*.pyo; Type: files -Name: {app}\Lib\xml\parsers; Type: dirifempty -Name: {app}\Lib\xml\sax\*.pyc; Type: files -Name: {app}\Lib\xml\sax\*.pyo; Type: files -Name: {app}\Lib\xml\sax; Type: dirifempty -Name: {app}\Lib\xml\*.pyc; Type: files -Name: {app}\Lib\xml\*.pyo; Type: files -Name: {app}\Lib\xml; Type: dirifempty - -Name: {app}\Lib\site-packages\win32; Type: filesandordirs -Name: {app}\Lib\site-packages\win32com; Type: filesandordirs -Name: {app}\Lib\site-packages\win32comext; Type: filesandordirs -Name: {app}\Lib\site-packages\pythoncom.py*; Type: files -Name: {app}\Lib\site-packages; Type: dirifempty - -Name: {app}\Lib\*.pyc; Type: files -Name: {app}\Lib; Type: dirifempty - -Name: {app}\Tools\pynche\*.pyc; Type: files -Name: {app}\Tools\pynche\*.pyo; Type: files -Name: {app}\Tools\pynche; Type: dirifempty - -Name: {app}\Tools\idle\*.pyc; Type: files -Name: {app}\Tools\idle\*.pyo; Type: files -Name: {app}\Tools\idle; Type: dirifempty - -Name: {app}\Tools\scripts\*.pyc; Type: files -Name: {app}\Tools\scripts\*.pyo; Type: files -Name: {app}\Tools\scripts; Type: dirifempty - -Name: {app}\Tools\versioncheck\*.pyc; Type: files -Name: {app}\Tools\versioncheck\*.pyo; Type: files -Name: {app}\Tools\versioncheck; Type: dirifempty - -Name: {app}\Tools\webchecker\*.pyc; Type: files -Name: {app}\Tools\webchecker\*.pyo; Type: files -Name: {app}\Tools\webchecker; Type: dirifempty - -Name: {app}\Tools; Type: dirifempty - diff --git a/PCbuild/python.vcproj b/PCbuild/python.vcproj index 8412e81..17b29a2 100644 --- a/PCbuild/python.vcproj +++ b/PCbuild/python.vcproj @@ -1,273 +1,644 @@ + ProjectGUID="{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + + /> + + + + + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + Name="VCPreBuildEventTool" + /> + + + + + + + Culture="1033" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="0" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> + /> + + + + + + + + + + + + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + TargetEnvironment="3" + /> + + Name="VCManagedResourceCompilerTool" + /> + AdditionalIncludeDirectories="..\Include" + /> + + + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + + ImportLibrary="" + /> + + + + + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + Name="VCPreBuildEventTool" + /> + + + + + + + Culture="1033" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> + ImportLibrary="" + /> + + + + + + + + + + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + + + + Culture="1033" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - - - - - + + + + + + + + + + diff --git a/PCbuild/python20.wse b/PCbuild/python20.wse deleted file mode 100644 index da2df69..0000000 --- a/PCbuild/python20.wse +++ /dev/null @@ -1,3127 +0,0 @@ -Document Type: WSE -item: Global - Version=9.0 - Title=Python 2.4a1 - Flags=00010100 - Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - Japanese Font Name=MS Gothic - Japanese Font Size=10 - Start Gradient=0 255 0 - End Gradient=0 128 0 - Windows Flags=00000100000011010010010100001010 - Log Pathname=%MAINDIR%\INSTALL.LOG - Message Font=MS Sans Serif - Font Size=8 - Pages Modified=00010000011101000000000100000111 - Extra Pages=00000000000000000000000010110010 - Disk Filename=SETUP - Patch Flags=0000000000001001 - Patch Threshold=85 - Patch Memory=4000 - MIF PDF Version=1.0 - MIF SMS Version=2.0 - EXE Filename=Python-2.4a1.exe - Dialogs Version=8 - Version File=2.4a1 - Version Description=Python Programming Language - Version Copyright=©2001-2007 Python Software Foundation - Version Company=Python Software Foundation - Crystal Format=10111100101100000010001001001001 - Step View=&All - Variable Name1=_WISE_ - Variable Description1=WISE root directory - Variable Default1=C:\Programme\Wise Installation System - Variable Flags1=00001000 - Variable Name2=_TCLDIR_ - Variable Description2=The directory in which the Tcl/Tk installation - Variable Description2=lives. This must be a sibling of the Python - Variable Description2=directory. - Variable Default2=tcl84 - Variable Flags2=00001000 - Variable Name3=_DOC_ - Variable Description3=The unpacked HTML doc directory. - Variable Default3=..\html - Variable Flags3=00001001 - Variable Name4=_SYS_ - Variable Description4=System directory (where to find MSVCRT.DLL) - Variable Default4=C:\Windows\System - Variable Values4=C:\Windows\System - Variable Values4=C:\WINNT\System32 - Variable Values4=C:\Code\MSDLLs - Variable Values4=C:\Windows\System32 - Variable Flags4=00000010 - Variable Name5=_PYMAJOR_ - Variable Description5=Python major version number; the 2 in 2.3. - Variable Default5=2 - Variable Flags5=00001000 - Variable Name6=_PYMINOR_ - Variable Description6=Python minor version number; the 3 in 2.3 - Variable Default6=3 - Variable Flags6=00001000 - Variable Name7=_DOADMIN_ - Variable Description7=The initial value for %DOADMIN%. - Variable Description7=When 0, we never try to write under HKLM, - Variable Description7=and install the Python + MS runtime DLLs in - Variable Description7=the Python directory instead of the system dir. - Variable Default7=1 - Variable Values7=1 - Variable Values7=0 - Variable Flags7=00001010 - Variable Name8=_ALIASNAME_ - Variable Flags8=00001000 - Variable Name9=_ALIASPATH_ - Variable Flags9=00001000 - Variable Name10=_ALIASTYPE_ - Variable Flags10=00001000 -end -item: Set Variable - Variable=PYVER_STRING - Value=2.3 -end -item: Remark -end -item: Remark - Text=When the version number changes, set the compiler -end -item: Remark - Text=vrbls _PYMAJOR_ and _PYMINOR_. -end -item: Remark - Text=Nothing in the script below should need fiddling then. -end -item: Remark - Text=Other things that need fiddling: -end -item: Remark - Text= PYVER_STRING above. -end -item: Remark - Text= The "Title:" in the upper left corner of the GUI. -end -item: Remark - Text= Build Settings and Version Resource on step 6 (Finish) of the Installation Expert -end -item: Remark - Text= Be sure to select Steps->All or you may not see these! -end -item: Remark -end -item: Remark - Text=When the version of Tcl/Tk changes, the compiler vrbl -end -item: Remark - Text=_TCLDIR_ may also need to be changed. -end -item: Remark -end -item: Set Variable - Variable=APPTITLE - Value=Python %PYVER_STRING% -end -item: Remark - Text=PY_VERSION should be major.minor only; used to create the registry key; must match MS_DLL_ID in python_nt.rc -end -item: Set Variable - Variable=PY_VERSION - Value=%_PYMAJOR_%.%_PYMINOR_% -end -item: Remark - Text=GROUP is the Start menu group name; user can override. -end -item: Set Variable - Variable=GROUP - Value=Python %PY_VERSION% - Flags=10000000 -end -item: Remark - Text=MAINDIR is the app directory; user can override. -end -item: Set Variable - Variable=MAINDIR - Value=Python%_PYMAJOR_%%_PYMINOR_% -end -item: Remark -end -item: Set Variable - Variable=DOADMIN - Value=%_DOADMIN_% -end -item: Remark - Text=Give non-admin users a chance to abort. -end -item: Check Configuration - Flags=10011111 -end -item: Set Variable - Variable=DOADMIN - Value=0 -end -item: Display Message - Title=Doing non-admin install - Text=The current login does not have Administrator Privileges on this machine. Python will install its registry information into the per-user area only for the current login, instead of into the per-machine area for every account on this machine. Some advanced uses of Python may not work as a result (for example, running a Python script as a service). - Text= - Text=If this is not what you want, please click Cancel to abort this installation, log on as an Administrator, and start the installation again. - Flags=00001000 -end -item: End Block -end -item: Remark -end -item: Remark - Text=BEGIN WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- -end -item: Remark - Text=Note from Tim: the "stop" on the next line is actually "pause". -end -item: Open/Close INSTALL.LOG - Flags=00000001 -end -item: Remark - Text=If the destination system does not have a writable Windows\System directory, system files will be written to the Windows\ directory -end -item: Check if File/Dir Exists - Pathname=%SYS% - Flags=10000100 -end -item: Set Variable - Variable=SYS - Value=%WIN% -end -item: End Block -end -item: Check Configuration - Flags=10111011 -end -item: Get Registry Key Value - Variable=COMMON - Key=SOFTWARE\Microsoft\Windows\CurrentVersion - Default=C:\Program Files\Common Files - Value Name=CommonFilesDir - Flags=00000100 -end -item: Get Registry Key Value - Variable=PROGRAM_FILES - Key=SOFTWARE\Microsoft\Windows\CurrentVersion - Default=C:\Program Files - Value Name=ProgramFilesDir - Flags=00000100 -end -item: Set Variable - Variable=EXPLORER - Value=1 -end -item: End Block -end -item: Remark - Text=Note from Tim: The Wizard hardcod "C:" at the start of the replacement text for MAINDIR. -end -item: Remark - Text=That's not appropriate if the system drive doesn't happen to be C:. -end -item: Remark - Text=I removed the "C:", and that did the right thing for two people who tested it on non-C: machines, -end -item: Remark - Text=but it's unclear whether it will always do the right thing. -end -item: Set Variable - Variable=MAINDIR - Value=\%MAINDIR% - Flags=00001100 -end -item: Remark - Text=BACKUP is the variable that holds the path that all backup files will be copied to when overwritten -end -item: Set Variable - Variable=BACKUP - Value=%MAINDIR%\BACKUP - Flags=10000000 -end -item: Remark - Text=DOBACKUP determines if a backup will be performed. The possible values are A (do backup) or B (do not do backup) -end -item: Set Variable - Variable=DOBACKUP - Value=A -end -item: Remark - Text=BRANDING determines if the installation will be branded with a name and company. By default, this is written to the INST directory (installation media). -end -item: Set Variable - Variable=BRANDING - Value=0 -end -item: If/While Statement - Variable=BRANDING - Value=1 -end -item: Read INI Value - Variable=NAME - Pathname=%INST%\CUSTDATA.INI - Section=Registration - Item=Name -end -item: Read INI Value - Variable=COMPANY - Pathname=%INST%\CUSTDATA.INI - Section=Registration - Item=Company -end -item: If/While Statement - Variable=NAME -end -item: Set Variable - Variable=DOBRAND - Value=1 -end -item: Get System Information - Variable=NAME - Flags=00000110 -end -item: Get System Information - Variable=COMPANY - Flags=00000111 -end -item: End Block -end -item: End Block -end -item: Remark - Text=END WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- -end -item: Remark -end -item: Remark - Text=Set vrbls for the "Advanced Options" subdialog of Components. -end -item: Set Variable - Variable=SELECT_ADMIN - Value=A -end -item: If/While Statement - Variable=DOADMIN - Value=0 -end -item: Set Variable - Variable=SELECT_ADMIN - Value=B -end -item: End Block -end -item: Remark -end -item: Remark - Text=TASKS values: -end -item: Remark - Text=A: Register file extensions -end -item: Remark - Text=B: Create Start Menu shortcuts -end -item: Set Variable - Variable=TASKS - Value=AB -end -item: Remark -end -item: Remark - Text=COMPONENTS values: -end -item: Remark - Text=A: interpreter and libraries -end -item: Remark - Text=B: Tcl/Tk -end -item: Remark - Text=C: docs -end -item: Remark - Text=D: tools -end -item: Remark - Text=E: test suite -end -item: Set Variable - Variable=COMPONENTS - Value=ABCDE -end -item: Remark -end -item: Remark - Text=March thru the user GUI. -end -item: Wizard Block - Direction Variable=DIRECTION - Display Variable=DISPLAY - Bitmap Pathname=.\installer.bmp - X Position=9 - Y Position=10 - Filler Color=11173759 - Dialog=Select Destination Directory - Dialog=Backup Replaced Files - Dialog=Select Components - Dialog=Select Program Manager Group - Variable= - Variable= - Variable= - Variable=TASKS - Value= - Value= - Value= - Value=B - Compare=0 - Compare=0 - Compare=0 - Compare=3 - Flags=00000011 -end -item: If/While Statement - Variable=DISPLAY - Value=Start Installation -end -item: Set Variable - Variable=SUMMARY - Value=Install directory: %MAINDIR%%CRLF% -end -item: Remark -end -item: If/While Statement - Variable=SELECT_ADMIN - Value=A -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Doing admin install.%CRLF% - Flags=00000001 -end -item: Else Statement -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Doing non-admin install.%CRLF% - Flags=00000001 -end -item: End Block -end -item: Remark -end -item: If/While Statement - Variable=DOBACKUP - Value=A -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Make backups, into %BACKUP%%CRLF% - Flags=00000001 -end -item: Else Statement -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Don't make backups.%CRLF% - Flags=00000001 -end -item: End Block -end -item: Remark -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Components:%CRLF% - Flags=00000001 -end -item: If/While Statement - Variable=COMPONENTS - Value=A - Flags=00000010 -end -item: Set Variable - Variable=SUMMARY - Value= Python interpreter and libraries%CRLF% - Flags=00000001 -end -item: End Block -end -item: If/While Statement - Variable=COMPONENTS - Value=B - Flags=00000010 -end -item: Set Variable - Variable=SUMMARY - Value= Tcl/Tk (Tkinter, IDLE, pydoc)%CRLF% - Flags=00000001 -end -item: End Block -end -item: If/While Statement - Variable=COMPONENTS - Value=C - Flags=00000010 -end -item: Set Variable - Variable=SUMMARY - Value= Python documentation%CRLF% - Flags=00000001 -end -item: End Block -end -item: If/While Statement - Variable=COMPONENTS - Value=D - Flags=00000010 -end -item: Set Variable - Variable=SUMMARY - Value= Tool and utility scripts%CRLF% - Flags=00000001 -end -item: End Block -end -item: If/While Statement - Variable=COMPONENTS - Value=E - Flags=00000010 -end -item: Set Variable - Variable=SUMMARY - Value= Python test suite%CRLF% - Flags=00000001 -end -item: End Block -end -item: Remark -end -item: If/While Statement - Variable=TASKS - Value=A - Flags=00000010 -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Register file extensions.%CRLF% - Flags=00000001 -end -item: Else Statement -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Don't register file extensions.%CRLF% - Flags=00000001 -end -item: End Block -end -item: Remark -end -item: If/While Statement - Variable=TASKS - Value=B - Flags=00000010 -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%Start Menu group: %GROUP%%CRLF% - Flags=00000001 -end -item: Else Statement -end -item: Set Variable - Variable=SUMMARY - Value=%CRLF%No Start Menu shortcuts.%CRLF% - Flags=00000001 -end -item: End Block -end -item: End Block -end -item: Remark -end -item: Custom Dialog Set - Name=Select Destination Directory - Display Variable=DISPLAY - item: Dialog - Title=%APPTITLE% Installation - Title French=Installation de %APPTITLE% - Title German=Installation von %APPTITLE% - Title Spanish=Instalación de %APPTITLE% - Title Italian=Installazione di %APPTITLE% - Width=339 - Height=280 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=188 234 244 253 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suite > - Text German=&Weiter > - Text Spanish=&Siguiente > - Text Italian=&Avanti > - end - item: Push Button - Rectangle=264 234 320 253 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=&Cancel - Text French=&Annuler - Text German=&Abbrechen - Text Spanish=&Cancelar - Text Italian=&Annulla - end - item: Static - Rectangle=10 225 320 226 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=108 11 323 33 - Create Flags=01010000000000000000000000000000 - Flags=0000000000000001 - Name=Times New Roman - Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 - Text=Select Destination Directory - Text French=Sélectionner le répertoire de destination - Text German=Zielverzeichnis wählen - Text Spanish=Seleccione el directorio de destino - Text Italian=Selezionare Directory di destinazione - end - item: Listbox - Rectangle=108 58 321 219 - Variable=MAINDIR - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000100000010000000101000001 - Flags=0000110000001010 - Text=%MAINDIR% - Text= - end - item: Static - Rectangle=108 40 313 58 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=Please select a directory for the %APPTITLE% files. - end - end - item: Dialog - Title=Select Destination Directory - Title French=Sélectionner le répertoire de destination - Title German=Zielverzeichnis wählen - Title Spanish=Seleccione el directorio de destino - Title Italian=Selezionare Directory di destinazione - Width=276 - Height=216 - Font Name=Helv - Font Size=8 - item: Listbox - Rectangle=6 6 204 186 - Variable=MAINDIR - Create Flags=01010000100000010000000101000000 - Flags=0000110000100010 - Text=%MAINDIR% - Text French=%MAINDIR% - Text German=%MAINDIR% - Text Spanish=%MAINDIR% - Text Italian=%MAINDIR% - end - item: Push Button - Rectangle=209 8 265 26 - Create Flags=01010000000000010000000000000001 - Text=OK - Text French=OK - Text German=OK - Text Spanish=Aceptar - Text Italian=OK - end - item: Push Button - Rectangle=209 31 265 50 - Variable=MAINDIR - Value=%MAINDIR_SAVE% - Create Flags=01010000000000010000000000000000 - Flags=0000000000000001 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Spanish=Cancelar - Text Italian=Annulla - end - end -end -item: Custom Dialog Set - Name=Backup Replaced Files - Display Variable=DISPLAY - item: Dialog - Title=%APPTITLE% Installation - Title French=Fichiers de Sauvegarde Remplacés - Title German=Sicherungskopie von ersetzten Dateien erstellen - Title Portuguese=Ficheiros substituídos de segurança - Title Spanish=Copias de seguridad de los archivos reemplazados - Title Italian=Backup file sostituiti - Title Danish=Sikkerhedskopiering af erstattede filer - Title Dutch=Vervangen bestanden kopiëren - Title Norwegian=Sikkerhetskopiere erstattede filer - Title Swedish=Säkerhetskopiera utbytta filer - Width=350 - Height=280 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=188 234 244 251 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suivant> - Text German=&Weiter> - Text Portuguese=&Próximo> - Text Spanish=&Siguiente > - Text Italian=&Avanti > - Text Danish=&Næste> - Text Dutch=&Volgende> - Text Norwegian=&Neste> - Text Swedish=&Nästa > - end - item: Push Button - Rectangle=131 234 188 251 - Variable=DIRECTION - Value=B - Create Flags=01010000000000010000000000000000 - Text=< &Back - Text French=<&Retour - Text German=<&Zurück - Text Portuguese=<&Retornar - Text Spanish=<&Retroceder - Text Italian=< &Indietro - Text Danish=<&Tilbage - Text Dutch=<&Terug - Text Norwegian=<&Tilbake - Text Swedish=< &Tillbaka - end - item: Push Button - Rectangle=278 234 330 251 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Portuguese=Cancelar - Text Spanish=Cancelar - Text Italian=Annulla - Text Danish=Annuller - Text Dutch=Annuleren - Text Norwegian=Avbryt - Text Swedish=Avbryt - end - item: Static - Rectangle=11 221 329 223 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=108 46 320 98 - Create Flags=01010000000000000000000000000000 - Text=This installation program can create backup copies of all files replaced during the installation. These files will be used when the software is uninstalled and a rollback is requested. If backup copies are not created, you will only be able to uninstall the software and not roll the system back to a previous state. - Text= - Text=Do you want to create backups of replaced files? - Text French=Le programme d'installation peut créer des copies de sauvegarde de tous les fichiers remplacés pendant l'installation. Ces fichiers sont utilisés au cas où le logiciel est désinstallé et que l'on procède à la reprise du système. Si les copies de sauvegarde ne sont pas créées, on ne pourra que désinstaller le logiciel sans reprendre le système à un état précédent. Voulez-vous créer une sauvegarde des fichiers remplacés ? - Text German=Dieses Installationsprogramm kann Sicherungskopien von allen während der Installation ersetzten Dateien erstellen. Diese Dateien werden zur Rückgängigmachung der Installation und bei Anforderung eines Rollbacks verwendet. Ohne Sicherungskopien ist nur eine Rückgängigmachung der Installation möglich, nicht aber ein Rollback des Systems. Sicherungskopien der ersetzten Dateien erstellen? - Text Portuguese=Este programa de instalação pode criar cópias de segurança de todos os ficheiros substituídos durante a instalação. Estes ficheiros serão utilizados quando o programa for desinstalado e for requisitada uma retomada. Se as cópias de segurança não forem criadas, só poderá desinstalar o programa e não pode retomar um estado anterior do sistema. Deseja criar cópias de segurança dos ficheiros substituídos? - Text Spanish=Este programa de instalación puede crear copias de seguridad de todos los archivos reemplazados durante la instalación. Estos archivos se utilizarán cuando se desinstale el software y se solicite volver al estado anterior. Si no se crean copias de seguridad, únicamente podrá desinstalar el software y no podrá devolver el sistema al estado anterior. ¿Desea crear archivos de seguridad de los archivos reemplazados? - Text Italian=Questo programma di installazione può creare copie di backup di tutti i file sostituiti durante l’installazione. Questi file saranno usati quando il software sarà disinstallato e sarà richiesto un ritorno allo stato precedente. Se non crei le copie di backup, potrai solo disinstallare il software, ma non potrai riportare il sistema allo stato precedente. Vuoi creare i file di backup dei file sostituiti? - Text Danish=Dette installationsprogram kan oprette sikkerhedskopier af alle filer, som erstattes under installationen. Disse filer benyttes, når softwaren fjernes, og den tidligere systemkonfiguration genetableres. Hvis der ikke oprettes sikkerhedskopier, kan du kun fjerne den installerede software og ikke genetablere den tidligere systemkonfiguration. Vil du oprette sikkerhedskopier af filer, som erstattes? - Text Dutch=Dit installatieprogramma kan kopieën maken van alle bestanden die tijdens de installatie worden vervangen. Deze worden dan gebruikt als de software-installatie ongedaan wordt gemaakt en u het systeem wilt laten terugkeren naar de oorspronkelijke staat. Als er geen back-up kopieën worden gemaakt, kunt u de software enkel verwijderen maar het systeem niet in de oorspronkelijke staat terugbrengen. Wilt u een back-up maken van de vervangen bestanden? - Text Norwegian=Dette installasjonsprogrammet kan lage sikkerhetskopier av alle filer som blir erstattet under installasjonen. Disse filene vil tas i bruk når programvaren er avinstallert og det er behov for tilbakestilling. Hvis det ikke er laget sikkerhetskopier, kan du kun avinstallere programvaren og ikke stille systemet tilbake til tidligere status. Ønsker du å lage sikkerhetskopier av de filene som blir erstattet nå? - Text Swedish=Installationsprogrammet kan skapa säkerhetskopior av alla filer som byts ut under installationen. Dessa filer kan sedan användas när programvaran avinstalleras och du begär rollback. Om du då inte har några säkerhetskopior kan du bara avinstallera programvaran, inte återskapa systemet i dess tidigare skick. Vill du göra säkerhetskopior av de ersatta filerna? - end - item: Radio Button - Rectangle=141 106 265 136 - Variable=DOBACKUP - Create Flags=01010000000000010000000000001001 - Text=&Yes, make backups - Text=N&o, do not make backups - Text= - Text French=&Oui - Text French=N&on - Text French= - Text German=&Ja - Text German=N&ein - Text German= - Text Portuguese=&Sim - Text Portuguese=Nã&o - Text Portuguese= - Text Spanish=&Sí - Text Spanish=N&o - Text Spanish= - Text Italian=&Sì - Text Italian=N&o - Text Italian= - Text Danish=&Ja - Text Danish=&Nej - Text Danish= - Text Dutch=&Ja - Text Dutch=N&ee - Text Dutch= - Text Norwegian=&Ja - Text Norwegian=&Nei - Text Norwegian= - Text Swedish=&Ja - Text Swedish=N&ej - Text Swedish= - end - item: Static - Control Name=BACK2 - Rectangle=108 173 320 208 - Action=1 - Create Flags=01010000000000000000000000000111 - Text=Backup File Destination Directory - Text French=Répertoire de destination des fichiers de sauvegarde - Text German=Zielverzeichnis für die Sicherungsdatei - Text Portuguese=Directório de destino de ficheiro de segurança - Text Spanish=Directorio de Destino de los Archivos de Seguridad - Text Italian=Directory di destinazione dei file di backup - Text Danish=Destinationsbibliotek til sikkerhedskopier - Text Dutch=Doeldirectory backup-bestand - Text Norwegian=Målkatalog for sikkerhetskopier - Text Swedish=Katalog för säkerhetskopierade filer - end - item: Push Button - Control Name=BACK3 - Rectangle=265 185 318 203 - Variable=BACKUP_SAVE - Value=%BACKUP% - Destination Dialog=1 - Action=2 - Create Flags=01010000000000010000000000000000 - Text=B&rowse... - Text French=P&arcourir - Text German=B&lättern... - Text Portuguese=P&rocurar - Text Spanish=V&isualizar... - Text Italian=Sfoglia... - Text Danish=&Gennemse... - Text Dutch=B&laderen... - Text Norwegian=Bla igjennom - Text Swedish=&Bläddra - end - item: Static - Control Name=BACK4 - Rectangle=129 188 254 200 - Destination Dialog=2 - Create Flags=01010000000000000000000000000000 - Text=%BACKUP% - Text French=%BACKUP% - Text German=%BACKUP% - Text Portuguese=%BACKUP% - Text Spanish=%BACKUP% - Text Italian=%BACKUP% - Text Danish=%BACKUP% - Text Dutch=%BACKUP% - Text Norwegian=%BACKUP% - Text Swedish=%BACKUP% - end - item: Static - Rectangle=108 11 323 36 - Create Flags=01010000000000000000000000000000 - Flags=0000000000000001 - Name=Times New Roman - Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 - Text=Backup Replaced Files - Text French=Sélectionner les composants - Text German=Komponenten auswählen - Text Spanish=Seleccione componentes - Text Italian=Selezionare i componenti - end - item: If/While Statement - Variable=DOBACKUP - Value=B - end - item: Set Control Attribute - Control Name=BACK3 - Operation=1 - end - item: Set Control Attribute - Control Name=BACK4 - Operation=1 - end - item: Else Statement - end - item: Set Control Attribute - Control Name=BACK3 - end - item: Set Control Attribute - Control Name=BACK4 - end - item: End Block - end - end - item: Dialog - Title=Select Destination Directory - Title French=Choisissez le répertoire de destination - Title German=Zielverzeichnis wählen - Title Portuguese=Seleccionar Directório de Destino - Title Spanish=Seleccione el Directorio de Destino - Title Italian=Seleziona Directory di destinazione - Title Danish=Vælg Destinationsbibliotek - Title Dutch=Kies Doeldirectory - Title Norwegian=Velg målkatalog - Title Swedish=Välj destinationskalatog - Width=276 - Height=216 - Font Name=Helv - Font Size=8 - item: Listbox - Rectangle=6 3 200 186 - Variable=BACKUP - Create Flags=01010000100000010000000101000000 - Flags=0000110000100010 - Text=%BACKUP% - Text= - Text French=%BACKUP% - Text French= - Text German=%BACKUP% - Text German= - Text Portuguese=%BACKUP% - Text Portuguese= - Text Spanish=%BACKUP% - Text Spanish= - Text Italian=%BACKUP% - Text Italian= - Text Danish=%BACKUP% - Text Danish= - Text Dutch=%BACKUP% - Text Dutch= - Text Norwegian=%BACKUP% - Text Norwegian= - Text Swedish=%BACKUP% - Text Swedish= - end - item: Push Button - Rectangle=209 8 265 26 - Create Flags=01010000000000010000000000000001 - Text=OK - Text French=OK - Text German=OK - Text Portuguese=OK - Text Spanish=ACEPTAR - Text Italian=OK - Text Danish=OK - Text Dutch=OK - Text Norwegian=OK - Text Swedish=OK - end - item: Push Button - Rectangle=209 31 265 50 - Variable=BACKUP - Value=%BACKUP_SAVE% - Create Flags=01010000000000010000000000000000 - Flags=0000000000000001 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Portuguese=Cancelar - Text Spanish=Cancelar - Text Italian=Annulla - Text Danish=Slet - Text Dutch=Annuleren - Text Norwegian=Avbryt - Text Swedish=Avbryt - end - end -end -item: Custom Dialog Set - Name=Select Components - Display Variable=DISPLAY - item: Dialog - Title=%APPTITLE% Installation - Title French=Installation de %APPTITLE% - Title German=Installation von %APPTITLE% - Title Spanish=Instalación de %APPTITLE% - Title Italian=Installazione di %APPTITLE% - Width=339 - Height=280 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=188 234 244 253 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suite > - Text German=&Weiter > - Text Spanish=&Siguiente > - Text Italian=&Avanti > - end - item: Push Button - Rectangle=131 234 188 253 - Variable=DIRECTION - Value=B - Create Flags=01010000000000010000000000000000 - Text=< &Back - Text French=< &Retour - Text German=< &Zurück - Text Spanish=< &Atrás - Text Italian=< &Indietro - end - item: Push Button - Rectangle=264 234 320 253 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=&Cancel - Text French=&Annuler - Text German=&Abbrechen - Text Spanish=&Cancelar - Text Italian=&Annulla - end - item: Checkbox - Rectangle=108 66 313 156 - Variable=COMPONENTS - Create Flags=01010000000000010000000000000011 - Flags=0000000000000110 - Text=Python interpreter and libraries - Text=Tcl/Tk (Tkinter, IDLE, pydoc) - Text=Python HTML docs - Text=Python utility scripts (Tools/) - Text=Python test suite (Lib/test/) - Text= - Text French=Python interpreter, library and IDLE - Text French=Python HTML docs - Text French=Python utility scripts (Tools/) - Text French=Python test suite (Lib/test/) - Text French= - Text German=Python interpreter, library and IDLE - Text German=Python HTML docs - Text German=Python utility scripts (Tools/) - Text German=Python test suite (Lib/test/) - Text German= - Text Spanish=Python interpreter, library and IDLE - Text Spanish=Python HTML docs - Text Spanish=Python utility scripts (Tools/) - Text Spanish=Python test suite (Lib/test/) - Text Spanish= - Text Italian=Python interpreter, library and IDLE - Text Italian=Python HTML docs - Text Italian=Python utility scripts (Tools/) - Text Italian=Python test suite (Lib/test/) - Text Italian= - end - item: Static - Rectangle=108 45 320 63 - Create Flags=01010000000000000000000000000000 - Text=Choose which components to install by checking the boxes below. - Text French=Choisissez les composants que vous voulez installer en cochant les cases ci-dessous. - Text German=Wählen Sie die zu installierenden Komponenten, indem Sie in die entsprechenden Kästchen klicken. - Text Spanish=Elija los componentes que desee instalar marcando los cuadros de abajo. - Text Italian=Scegliere quali componenti installare selezionando le caselle sottostanti. - end - item: Push Button - Rectangle=188 203 269 220 - Destination Dialog=1 - Action=2 - Enabled Color=00000000000000000000000011111111 - Create Flags=01010000000000010000000000000000 - Text=Advanced Options ... - end - item: Static - Rectangle=10 225 320 226 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=108 10 323 43 - Create Flags=01010000000000000000000000000000 - Flags=0000000000000001 - Name=Times New Roman - Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 - Text=Select Components - Text French=Sélectionner les composants - Text German=Komponenten auswählen - Text Spanish=Seleccione componentes - Text Italian=Selezionare i componenti - end - item: Static - Rectangle=251 180 311 193 - Variable=COMPONENTS - Value=MAINDIR - Create Flags=01010000000000000000000000000010 - end - item: Static - Rectangle=251 168 311 179 - Variable=COMPONENTS - Create Flags=01010000000000000000000000000010 - end - item: Static - Rectangle=123 168 234 181 - Create Flags=01010000000000000000000000000000 - Text=Disk Space Required: - Text French=Espace disque requis : - Text German=Notwendiger Speicherplatz: - Text Spanish=Espacio requerido en el disco: - Text Italian=Spazio su disco necessario: - end - item: Static - Rectangle=123 180 234 193 - Create Flags=01010000000000000000000000000000 - Text=Disk Space Remaining: - Text French=Espace disque disponible : - Text German=Verbleibender Speicherplatz: - Text Spanish=Espacio en disco disponible: - Text Italian=Spazio su disco disponibile: - end - item: Static - Rectangle=108 158 320 196 - Action=1 - Create Flags=01010000000000000000000000000111 - end - item: If/While Statement - Variable=DLG_EVENT_TYPE - Value=VERIFY - end - item: Remark - Text=If they're installing Tcl/Tk, Tools, or the test suite, doesn't make much sense unless they're installing Python too. - end - item: If/While Statement - Variable=COMPONENTS - Value=BDE - Flags=00001010 - end - item: If/While Statement - Variable=COMPONENTS - Value=A - Flags=00000011 - end - item: Display Message - Title=Are you sure? - Text=Installing Tcl/Tk, Tools or the test suite doesn't make much sense unless you install the Python interpreter and libraries too. - Text= - Text=Click Yes if that's really what you want. - Flags=00101101 - end - item: Remark - Text=Nothing -- just proceed to the next dialog. - end - item: Else Statement - end - item: Remark - Text=Return to the dialog. - end - item: Set Variable - Variable=DLG_EVENT_TYPE - end - item: End Block - end - item: End Block - end - item: End Block - end - item: End Block - end - end - item: Dialog - Title=Advanced Options - Width=339 - Height=213 - Font Name=Helv - Font Size=8 - item: Radio Button - Control Name=ADMIN2 - Rectangle=11 46 90 76 - Variable=SELECT_ADMIN - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000010000000000001001 - Text=Admin install - Text=Non-Admin installl - Text= - end - item: Push Button - Rectangle=188 170 244 189 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=OK - Text French=&Suite > - Text German=&Weiter > - Text Spanish=&Siguiente > - Text Italian=&Avanti > - end - item: Static - Rectangle=5 3 326 83 - Action=1 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000111 - end - item: Static - Control Name=ADMIN1 - Rectangle=11 11 321 45 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=By default, the install records settings in the per-machine area of the registry (HKLM), and installs the Python and C runtime DLLs to %SYS32%. Choose "Non-Admin install" if you would prefer settings made in the per-user registry (HKCU), and DLLs installed in %MAINDIR%. - end - item: Static - Rectangle=5 90 326 157 - Action=1 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000111 - end - item: Checkbox - Rectangle=11 121 243 151 - Variable=TASKS - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000010000000000000011 - Text=Register file extensions (.py, .pyw, .pyc, .pyo) - Text=Create Start Menu shortcuts - Text= - end - item: Static - Rectangle=11 103 320 121 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=Choose tasks to perform by checking the boxes below. - end - item: If/While Statement - Variable=DLG_EVENT_TYPE - Value=INIT - end - item: If/While Statement - Variable=DOADMIN - Value=1 - end - item: Set Control Attribute - Control Name=ADMIN2 - end - item: Else Statement - end - item: Set Control Text - Control Name=ADMIN1 - Control Text=This section is available only if logged in to an account with Administrator privileges. - end - item: Set Control Attribute - Control Name=ADMIN2 - Operation=1 - end - item: End Block - end - item: End Block - end - end -end -item: Custom Dialog Set - Name=Select Program Manager Group - Display Variable=DISPLAY - item: Dialog - Title=%APPTITLE% Installation - Title French=Installation de %APPTITLE% - Title German=Installation von %APPTITLE% - Title Spanish=Instalación de %APPTITLE% - Title Italian=Installazione di %APPTITLE% - Width=339 - Height=280 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=188 234 244 253 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suite > - Text German=&Weiter > - Text Spanish=&Siguiente > - Text Italian=&Avanti > - end - item: Push Button - Rectangle=131 234 188 253 - Variable=DIRECTION - Value=B - Create Flags=01010000000000010000000000000000 - Flags=0000000000000001 - Text=< &Back - Text French=< &Retour - Text German=< &Zurück - Text Spanish=< &Atrás - Text Italian=< &Indietro - end - item: Push Button - Rectangle=264 234 320 253 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=&Cancel - Text French=&Annuler - Text German=&Abbrechen - Text Spanish=&Cancelar - Text Italian=&Annulla - end - item: Static - Rectangle=10 225 320 226 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=108 10 323 53 - Create Flags=01010000000000000000000000000000 - Flags=0000000000000001 - Name=Times New Roman - Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 - Text=Select Start Menu Group - Text French=Sélectionner le groupe du Gestionnaire de programme - Text German=Bestimmung der Programm-Managergruppe - Text Spanish=Seleccione grupo del Administrador de programas - Text Italian=Selezionare il gruppo ProgMan - end - item: Static - Rectangle=108 35 320 65 - Create Flags=01010000000000000000000000000000 - Text=Enter the name of the Start Menu program group to which to add the %APPTITLE% icons: - Text French=Entrez le nom du groupe du Gestionnaire de programme dans lequel vous souhaitez ajouter les icônes de %APPTITLE% : - Text German=Geben Sie den Namen der Programmgruppe ein, der das Symbol %APPTITLE% hinzugefügt werden soll: - Text Spanish=Escriba el nombre del grupo del Administrador de programas en el que desea agregar los iconos de %APPTITLE%: - Text Italian=Inserire il nome del gruppo Program Manager per aggiungere le icone %APPTITLE% a: - end - item: Combobox - Rectangle=108 56 320 219 - Variable=GROUP - Create Flags=01010000001000010000001100000001 - Flags=0000000000000001 - Text=%GROUP% - Text= - Text French=%GROUP% - Text German=%GROUP% - Text Spanish=%GROUP% - Text Italian=%GROUP% - end - end -end -item: Custom Dialog Set - Name=Start Installation - Display Variable=DISPLAY - item: Dialog - Title=%APPTITLE% Installation - Title French=Installation de %APPTITLE% - Title German=Installation von %APPTITLE% - Title Spanish=Instalación de %APPTITLE% - Title Italian=Installazione di %APPTITLE% - Width=339 - Height=280 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=188 234 244 253 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suite > - Text German=&Weiter > - Text Spanish=&Siguiente > - Text Italian=&Avanti > - end - item: Push Button - Rectangle=131 234 188 253 - Variable=DIRECTION - Value=B - Create Flags=01010000000000010000000000000000 - Text=< &Back - Text French=< &Retour - Text German=< &Zurück - Text Spanish=< &Atrás - Text Italian=< &Indietro - end - item: Push Button - Rectangle=264 234 320 253 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=&Cancel - Text French=&Annuler - Text German=&Abbrechen - Text Spanish=&Cancelar - Text Italian=&Annulla - end - item: Static - Rectangle=10 225 320 226 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=108 10 323 53 - Create Flags=01010000000000000000000000000000 - Flags=0000000000000001 - Name=Times New Roman - Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 - Text=Ready to Install! - Text French=Prêt à installer ! - Text German=Installationsbereit! - Text Spanish=¡Preparado para la instalación! - Text Italian=Pronto per l'installazione! - end - item: Static - Rectangle=108 40 320 62 - Create Flags=01010000000000000000000000000000 - Text=Click the Next button to install %APPTITLE%, or the Back button to change choices: - Text French=Vous êtes maintenant prêt à installer les fichiers %APPTITLE%. - Text French= - Text French=Cliquez sur le bouton Suite pour commencer l'installation ou sur le bouton Retour pour entrer les informations d'installation à nouveau. - Text German=Sie können %APPTITLE% nun installieren. - Text German= - Text German=Klicken Sie auf "Weiter", um mit der Installation zu beginnen. Klicken Sie auf "Zurück", um die Installationsinformationen neu einzugeben. - Text Spanish=Ya está listo para instalar %APPTITLE%. - Text Spanish= - Text Spanish=Presione el botón Siguiente para comenzar la instalación o presione Atrás para volver a ingresar la información para la instalación. - Text Italian=Ora è possibile installare %APPTITLE%. - Text Italian= - Text Italian=Premere il pulsante Avanti per avviare l'installazione o il pulsante Indietro per reinserire le informazioni di installazione. - end - item: Editbox - Rectangle=108 66 324 219 - Help Context=16711681 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000100000000001100011000100 - Text=%SUMMARY% - end - end -end -item: Remark -end -item: If/While Statement - Variable=DISPLAY - Value=Select Destination Directory -end -item: Remark - Text=User may have changed MAINDIR, so reset BACKUP to match. -end -item: Set Variable - Variable=BACKUP - Value=%MAINDIR%\BACKUP -end -item: End Block -end -item: Remark -end -item: End Block -end -item: Remark -end -item: Remark - Text=BEGIN WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- -end -item: Remark - Text=When the BACKUP feature is enabled, the BACKUPDIR is initialized -end -item: If/While Statement - Variable=DOBACKUP - Value=A -end -item: Set Variable - Variable=BACKUPDIR - Value=%BACKUP% -end -item: End Block -end -item: Remark - Text=The BRANDING information is written to the INI file on the installation media. -end -item: If/While Statement - Variable=BRANDING - Value=1 -end -item: If/While Statement - Variable=DOBRAND - Value=1 -end -item: Edit INI File - Pathname=%INST%\CUSTDATA.INI - Settings=[Registration] - Settings=NAME=%NAME% - Settings=COMPANY=%COMPANY% - Settings= -end -item: End Block -end -item: End Block -end -item: Remark - Text=Begin writing to the INSTALL.LOG -end -item: Open/Close INSTALL.LOG -end -item: Remark - Text=Check free disk space calculates free disk space as well as component sizes. -end -item: Remark - Text=It should be located before all Install File actions. -end -item: Check Disk Space - Component=COMPONENTS -end -item: Remark - Text=This include script allows uninstall support -end -item: Remark - Text=Note from Tim: this is our own Uninstal.wse, a copy of Wise's except -end -item: Remark - Text=it writes to HKCU (instead of HKLM) if the user doesn't have admin privs. -end -item: Include Script - Pathname=.\Uninstal.wse -end -item: Remark - Text=Note from Tim: these seeming no-ops actually convert to short filenames. -end -item: Set Variable - Variable=COMMON - Value=%COMMON% - Flags=00010100 -end -item: Set Variable - Variable=MAINDIR - Value=%MAINDIR% - Flags=00010100 -end -item: Remark - Text=This IF/THEN/ELSE reads the correct registry entries for shortcut/icon placement -end -item: Check Configuration - Flags=10111011 -end -item: Get Registry Key Value - Variable=STARTUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Start Menu\Programs\StartUp - Value Name=StartUp - Flags=00000010 -end -item: Get Registry Key Value - Variable=DESKTOPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Desktop - Value Name=Desktop - Flags=00000010 -end -item: Get Registry Key Value - Variable=STARTMENUDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Start Menu - Value Name=Start Menu - Flags=00000010 -end -item: Get Registry Key Value - Variable=GROUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Start Menu\Programs - Value Name=Programs - Flags=00000010 -end -item: Get Registry Key Value - Variable=CSTARTUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%STARTUPDIR% - Value Name=Common Startup - Flags=00000100 -end -item: Get Registry Key Value - Variable=CDESKTOPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%DESKTOPDIR% - Value Name=Common Desktop - Flags=00000100 -end -item: Get Registry Key Value - Variable=CSTARTMENUDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%STARTMENUDIR% - Value Name=Common Start Menu - Flags=00000100 -end -item: Get Registry Key Value - Variable=CGROUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%GROUPDIR% - Value Name=Common Programs - Flags=00000100 -end -item: Else Statement -end -item: Remark - Text=Note from Tim: the Wizard left this block empty! -end -item: Remark - Text=Perhaps it's only relevant on Windows 3.1. -end -item: End Block -end -item: Remark - Text=END WIZARD STUFF ----------------------------------------------------------------------------------------------------------------------------- -end -item: Remark -end -item: If/While Statement - Variable=SELECT_ADMIN - Value=B -end -item: Remark - Text=The user chose a non-admin install in "Advanced Options". -end -item: Remark - Text=This should come after the include of Uninstal.wse above, because -end -item: Remark - Text=writing uninstall info to HKCU is ineffective except under Win2K. -end -item: Set Variable - Variable=DOADMIN - Value=0 -end -item: End Block -end -item: Remark -end -item: Set Variable - Variable=CGROUP_SAVE - Value=%GROUP% -end -item: If/While Statement - Variable=TASKS - Value=B - Flags=00000010 -end -item: If/While Statement - Variable=DOADMIN - Value=1 -end -item: Set Variable - Variable=GROUP - Value=%CGROUPDIR%\%GROUP% -end -item: Else Statement -end -item: Set Variable - Variable=GROUP - Value=%GROUPDIR%\%GROUP% -end -item: End Block -end -item: End Block -end -item: Remark -end -item: Remark - Text=Long section to install files. -end -item: Remark -end -item: If/While Statement - Variable=DOADMIN - Value=1 -end -item: Set Variable - Variable=DLLDEST - Value=%SYS32% -end -item: Else Statement -end -item: Set Variable - Variable=DLLDEST - Value=%MAINDIR% -end -item: End Block -end -item: Remark -end -item: Remark - Text=Install the license even if they deselect everything . -end -item: Install File - Source=..\license - Destination=%MAINDIR%\LICENSE.txt - Flags=0000000000000010 -end -item: Install File - Source=..\readme - Destination=%MAINDIR%\README.txt - Flags=0000000000000010 -end -item: Install File - Source=..\misc\news - Destination=%MAINDIR%\NEWS.txt - Flags=0000000000000010 -end -item: Remark - Text=Icons -- always install so that the uninstaller can use them for its own display. -end -item: Install File - Source=..\pc\pycon.ico - Destination=%MAINDIR%\pycon.ico - Flags=0000000010000010 -end -item: Install File - Source=..\pc\pyc.ico - Destination=%MAINDIR%\pyc.ico - Flags=0000000010000010 -end -item: Install File - Source=..\pc\py.ico - Destination=%MAINDIR%\py.ico - Flags=0000000010000010 -end -item: Remark -end -item: Remark - Text=These arrange to (recursively!) delete all .pyc and .pyo files at uninstall time. -end -item: Remark - Text=This "does the right thing": any directories left empty at the end are removed. -end -item: Add Text to INSTALL.LOG - Text=File Tree: %MAINDIR%\*.pyc -end -item: Add Text to INSTALL.LOG - Text=File Tree: %MAINDIR%\*.pyo -end -item: Remark -end -item: Remark - Text=A: interpreter and libraries -end -item: If/While Statement - Variable=COMPONENTS - Value=A - Flags=00000010 -end -item: Remark - Text=Executables -end -item: Install File - Source=.\python.exe - Destination=%MAINDIR%\python.exe - Flags=0000000000000010 -end -item: Install File - Source=.\pythonw.exe - Destination=%MAINDIR%\pythonw.exe - Flags=0000000000000010 -end -item: Install File - Source=.\w9xpopen.exe - Destination=%MAINDIR%\w9xpopen.exe - Flags=0000000000000010 -end -item: Remark -end -item: Remark - Text=Extension module DLLs (.pyd); keep in synch with libs directory next -end -item: Install File - Source=.\_winreg.pyd - Destination=%MAINDIR%\DLLs\_winreg.pyd - Description=Extension modules - Flags=0000000000000010 -end -item: Install File - Source=.\_csv.pyd - Destination=%MAINDIR%\DLLs\_csv.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\_sre.pyd - Destination=%MAINDIR%\DLLs\_sre.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\_ssl.pyd - Destination=%MAINDIR%\DLLs\_ssl.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\_symtable.pyd - Destination=%MAINDIR%\DLLs\_symtable.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\_testcapi.pyd - Destination=%MAINDIR%\DLLs\_testcapi.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\_tkinter.pyd - Destination=%MAINDIR%\DLLs\_tkinter.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\_socket.pyd - Destination=%MAINDIR%\DLLs\_socket.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\_bsddb.pyd - Destination=%MAINDIR%\DLLs\_bsddb.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\bz2.pyd - Destination=%MAINDIR%\DLLs\bz2.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\datetime.pyd - Destination=%MAINDIR%\DLLs\datetime.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\mmap.pyd - Destination=%MAINDIR%\DLLs\mmap.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\parser.pyd - Destination=%MAINDIR%\DLLs\parser.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\pyexpat.pyd - Destination=%MAINDIR%\DLLs\pyexpat.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\select.pyd - Destination=%MAINDIR%\DLLs\select.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\unicodedata.pyd - Destination=%MAINDIR%\DLLs\unicodedata.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\winsound.pyd - Destination=%MAINDIR%\DLLs\winsound.pyd - Flags=0000000000000010 -end -item: Install File - Source=.\zlib.pyd - Destination=%MAINDIR%\DLLs\zlib.pyd - Flags=0000000000000010 -end -item: Remark -end -item: Remark - Text=Link libraries (.lib); keep in synch with DLLs above, except that the Python lib lives here. -end -item: Install File - Source=.\_winreg.lib - Destination=%MAINDIR%\libs\_winreg.lib - Description=Link library files - Flags=0000000000000010 -end -item: Install File - Source=.\_csv.lib - Destination=%MAINDIR%\libs\_csv.lib - Flags=0000000000000010 -end -item: Install File - Source=.\_sre.lib - Destination=%MAINDIR%\libs\_sre.lib - Flags=0000000000000010 -end -item: Install File - Source=.\_ssl.lib - Destination=%MAINDIR%\libs\_ssl.lib - Flags=0000000000000010 -end -item: Install File - Source=.\_symtable.lib - Destination=%MAINDIR%\libs\_symtable.lib - Flags=0000000000000010 -end -item: Install File - Source=.\_testcapi.lib - Destination=%MAINDIR%\libs\_testcapi.lib - Flags=0000000000000010 -end -item: Install File - Source=.\_tkinter.lib - Destination=%MAINDIR%\libs\_tkinter.lib - Description=Extension modules - Flags=0000000000000010 -end -item: Install File - Source=.\_socket.lib - Destination=%MAINDIR%\libs\_socket.lib - Flags=0000000000000010 -end -item: Install File - Source=.\_bsddb.lib - Destination=%MAINDIR%\libs\_bsddb.lib - Flags=0000000000000010 -end -item: Install File - Source=.\bz2.lib - Destination=%MAINDIR%\libs\bz2.lib - Flags=0000000000000010 -end -item: Install File - Source=.\datetime.lib - Destination=%MAINDIR%\libs\datetime.lib - Flags=0000000000000010 -end -item: Install File - Source=.\mmap.lib - Destination=%MAINDIR%\libs\mmap.lib - Flags=0000000000000010 -end -item: Install File - Source=.\parser.lib - Destination=%MAINDIR%\libs\parser.lib - Flags=0000000000000010 -end -item: Install File - Source=.\pyexpat.lib - Destination=%MAINDIR%\libs\pyexpat.lib - Flags=0000000000000010 -end -item: Install File - Source=.\select.lib - Destination=%MAINDIR%\libs\select.lib - Flags=0000000000000010 -end -item: Install File - Source=.\unicodedata.lib - Destination=%MAINDIR%\libs\unicodedata.lib - Flags=0000000000000010 -end -item: Install File - Source=.\winsound.lib - Destination=%MAINDIR%\libs\winsound.lib - Flags=0000000000000010 -end -item: Install File - Source=.\zlib.lib - Destination=%MAINDIR%\libs\zlib.lib - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=.\python%_pymajor_%%_pyminor_%.lib - Destination=%MAINDIR%\libs\python%_PYMAJOR_%%_PYMINOR_%.lib - Flags=0000000000000010 -end -item: Remark -end -item: Remark - Text=Main Python DLL -end -item: Remark - Text=Tell Wise it's OK to delete the Python DLL at uninstall time, -end -item: Remark - Text=despite that we (may) write it into a system directory. -end -item: Add Text to INSTALL.LOG - Text=Non-System File: -end -item: Install File - Source=.\python%_pymajor_%%_pyminor_%.dll - Destination=%DLLDEST%\python%_PYMAJOR_%%_PYMINOR_%.dll - Flags=0000000000000010 -end -item: Remark -end -item: Remark - Text=Libraries (Lib/) -end -item: Install File - Source=..\lib\*.py - Destination=%MAINDIR%\Lib - Description=Library Modules - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\bsddb\*.py - Destination=%MAINDIR%\Lib\bsddb - Description=Berkeley database package - Flags=0000000100000010 -end -item: Remark -end -item: Install File - Source=..\lib\compiler\*.py - Destination=%MAINDIR%\Lib\compiler - Description=Python compiler written in Python - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\distutils\*.py - Destination=%MAINDIR%\Lib\distutils - Description=Distribution utility modules - Flags=0000000000000010 -end -item: Install File - Source=..\lib\distutils\readme - Destination=%MAINDIR%\Lib\distutils\README.txt - Flags=0000000000000010 -end -item: Install File - Source=..\lib\distutils\command\*.py - Destination=%MAINDIR%\Lib\distutils\command - Flags=0000000000000010 -end -item: Install File - Source=..\lib\distutils\command\wininst.exe - Destination=%MAINDIR%\Lib\distutils\command\wininst.exe - Flags=0000000000000010 -end -item: Install File - Source=..\lib\distutils\command\command_template - Destination=%MAINDIR%\Lib\distutils\command\command_template - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\email\*.py - Destination=%MAINDIR%\Lib\email - Description=Library email package - Flags=0000000000000010 -end -item: Install File - Source=..\lib\email\test\*.py - Destination=%MAINDIR%\Lib\email\test - Description=email tests - Flags=0000000000000010 -end -item: Install File - Source=..\lib\email\test\data\*.txt - Destination=%MAINDIR%\Lib\email\test\data - Description=email test data - Flags=0000000000000010 -end -item: Install File - Source=..\lib\email\test\data\*.gif - Destination=%MAINDIR%\Lib\email\test\data - Description=email test data - Flags=0000000000000010 -end -item: Install File - Source=..\lib\email\test\data\*.au - Destination=%MAINDIR%\Lib\email\test\data - Description=email test data - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\encodings\*.py - Destination=%MAINDIR%\Lib\encodings - Description=Unicode encoding tables - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\lib-old\*.py - Destination=%MAINDIR%\Lib\lib-old - Description=Obsolete modules - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\lib-tk\*.py - Destination=%MAINDIR%\Lib\lib-tk - Description=Tkinter related library modules - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\logging\*.py - Destination=%MAINDIR%\Lib\logging - Description=Logging package - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\site-packages\readme - Destination=%MAINDIR%\Lib\site-packages\README.txt - Description=Site packages - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\xml\*.py - Destination=%MAINDIR%\Lib\xml - Description=XML support packages - Flags=0000000000000010 -end -item: Install File - Source=..\lib\xml\dom\*.py - Destination=%MAINDIR%\Lib\xml\dom - Flags=0000000000000010 -end -item: Install File - Source=..\lib\xml\parsers\*.py - Destination=%MAINDIR%\Lib\xml\parsers - Flags=0000000000000010 -end -item: Install File - Source=..\lib\xml\sax\*.py - Destination=%MAINDIR%\Lib\xml\sax - Flags=0000000000000010 -end -item: Remark -end -item: Remark - Text=C Include files -end -item: Install File - Source=..\include\*.h - Destination=%MAINDIR%\include - Description=Header files - Flags=0000000000000010 -end -item: Install File - Source=..\pc\pyconfig.h - Destination=%MAINDIR%\include\pyconfig.h - Description=Header files (pyconfig.h) - Flags=0000000000000010 -end -item: Remark -end -item: Remark - Text=Microsoft C runtime libraries -end -item: Install File - Source=%_SYS_%\MSVCIRT.DLL - Destination=%DLLDEST%\MSVCIRT.DLL - Description=Visual C++ Runtime DLLs - Flags=0000011000010011 -end -item: Install File - Source=%_SYS_%\MSVCRT.DLL - Destination=%DLLDEST%\MSVCRT.DLL - Description=Visual C++ Runtime DLLs - Flags=0000011000010011 -end -item: End Block -end -item: Remark -end -item: Remark - Text=B: Tcl/Tk (Tkinter, IDLE, pydoc) -end -item: If/While Statement - Variable=COMPONENTS - Value=B - Flags=00000010 -end -item: Remark - Text=Tcl/Tk -end -item: Install File - Source=..\..\%_tcldir_%\bin\*.dll - Destination=%MAINDIR%\DLLs - Description=Tcl/Tk binaries and libraries - Flags=0000000000000010 -end -item: Install File - Source=..\..\%_tcldir_%\lib\*.* - Destination=%MAINDIR%\tcl - Description=Tcl/Tk binaries and libraries - Flags=0000000100000010 -end -item: Remark -end -item: Remark - Text=IDLE -end -item: Install File - Source=..\Lib\idlelib\*.py - Destination=%MAINDIR%\Lib\idlelib - Description=Integrated DeveLopment Environment for Python - Flags=0000000000000010 -end -item: Install File - Source=..\Lib\idlelib\*.txt - Destination=%MAINDIR%\Lib\idlelib - Description=Integrated DeveLopment Environment for Python - Flags=0000000000000010 -end -item: Install File - Source=..\Lib\idlelib\*.def - Destination=%MAINDIR%\Lib\idlelib - Description=Integrated DeveLopment Environment for Python - Flags=0000000000000010 -end -item: Install File - Source=..\Lib\idlelib\Icons\* - Destination=%MAINDIR%\Lib\idlelib\Icons - Description=Integrated DeveLopment Environment for Python - Flags=0000000000000010 -end -item: Install File - Source=..\Tools\scripts\idle - Destination=%MAINDIR%\Lib\idlelib\idle.pyw - Description=IDLE bootstrap script - Flags=0000000000000010 -end -item: Remark -end -item: Remark - Text=Windows pydoc driver -end -item: Install File - Source=..\tools\scripts\*.pyw - Destination=%MAINDIR%\Tools\Scripts - Description=Windows pydoc driver - Flags=0000000000000010 -end -item: End Block -end -item: Remark -end -item: Remark - Text=C: docs -end -item: If/While Statement - Variable=COMPONENTS - Value=C - Flags=00000010 -end -item: Install File - Source=%_DOC_%\*.* - Destination=%MAINDIR%\Doc - Description=Python Documentation (HTML) - Flags=0000000100000010 -end -item: End Block -end -item: Remark -end -item: Remark - Text=D: tools -end -item: If/While Statement - Variable=COMPONENTS - Value=D - Flags=00000010 -end -item: Install File - Source=..\tools\scripts\*.py - Destination=%MAINDIR%\Tools\Scripts - Description=Utility Scripts - Flags=0000000000000010 -end -item: Install File - Source=..\tools\scripts\*.doc - Destination=%MAINDIR%\Tools\Scripts - Description=Utility Scripts - Flags=0000000000000010 -end -item: Install File - Source=..\tools\scripts\readme - Destination=%MAINDIR%\Tools\Scripts\README.txt - Description=Utility Scripts - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\tools\webchecker\*.py - Destination=%MAINDIR%\Tools\webchecker - Description=Web checker tool - Flags=0000000000000010 -end -item: Install File - Source=..\tools\webchecker\readme - Destination=%MAINDIR%\Tools\webchecker\README.txt - Description=Web checker tool - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\tools\versioncheck\*.py - Destination=%MAINDIR%\Tools\versioncheck - Description=Version checker tool - Flags=0000000000000010 -end -item: Install File - Source=..\tools\versioncheck\readme - Destination=%MAINDIR%\Tools\versioncheck\README.txt - Description=Version checker tool - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\tools\pynche\*.py - Destination=%MAINDIR%\Tools\pynche - Description=pynche color editor - Flags=0000000000000010 -end -item: Install File - Source=..\tools\pynche\*.txt - Destination=%MAINDIR%\Tools\pynche - Description=pynche color editor - Flags=0000000000000010 -end -item: Install File - Source=..\tools\pynche\x\*.txt - Destination=%MAINDIR%\Tools\pynche\X - Description=pynche color editor - X files - Flags=0000000000000010 -end -item: Install File - Source=..\tools\pynche\readme - Destination=%MAINDIR%\Tools\pynche\README.txt - Description=pynche color editor - README - Flags=0000000100000010 -end -item: Install File - Source=..\tools\pynche\pynche - Destination=%MAINDIR%\Tools\pynche\pynche.py - Description=pynche color editor - main - Flags=0000000100000010 -end -item: Install File - Source=..\tools\pynche\pynche.pyw - Destination=%MAINDIR%\Tools\pynche\pynche.pyw - Description=pynche color editor - noconsole main - Flags=0000000100000010 -end -item: Remark -end -item: Install File - Source=..\tools\i18n\*.py - Destination=%MAINDIR%\Tools\i18n - Description=Internationalization helpers - Flags=0000000000000010 -end -item: End Block -end -item: Remark -end -item: Remark - Text=E: test suite -end -item: If/While Statement - Variable=COMPONENTS - Value=E - Flags=00000010 -end -item: Install File - Source=..\lib\test\audiotest.au - Destination=%MAINDIR%\Lib\test\audiotest.au - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.uue - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.py - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.xml - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.out - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.bz2 - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.tar - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.gz - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Install File - Source=..\lib\test\*.txt - Destination=%MAINDIR%\Lib\test - Description=Python Test files - Flags=0000000000000010 -end -item: Remark -end -item: Install File - Source=..\lib\test\output\*.* - Destination=%MAINDIR%\Lib\test\output - Description=Python Test output files - Flags=0000000000000010 -end -item: End Block -end -item: Remark -end -item: Remark - Text=DONE with file copying. -end -item: Remark - Text=The rest is registry and Start Menu fiddling. -end -item: Remark -end -item: If/While Statement - Variable=COMPONENTS - Value=A - Flags=00000010 -end -item: If/While Statement - Variable=TASKS - Value=A - Flags=00000010 -end -item: Remark - Text=Register file extensions. As usual, Admin privs get in the way, but with a twist: -end -item: Remark - Text=You don't need admin privs to write to HKEY_CLASSES_ROOT *except* under Win2K. -end -item: Remark - Text=On Win2K, a user without Admin privs has to register extensions under HKCU\Software\CLASSES instead. -end -item: Remark - Text=But while you can *do* that under other flavors of Windows too, it has no useful effect except in Win2K. -end -item: Set Variable - Variable=USE_HKCR - Value=1 -end -item: Check Configuration - Flags=11110010 -end -item: If/While Statement - Variable=DOADMIN - Value=0 -end -item: Set Variable - Variable=USE_HKCR - Value=0 -end -item: End Block -end -item: End Block -end -item: If/While Statement - Variable=USE_HKCR - Value=1 -end -item: Remark - Text=File types. -end -item: Edit Registry - Total Keys=1 - Key=Python.File - New Value=Python File -end -item: Edit Registry - Total Keys=1 - Key=Python.File\shell\open\command - New Value=%MAINDIR%\python.exe "%%1" %%* -end -item: Edit Registry - Total Keys=1 - Key=Python.File\DefaultIcon - New Value=%MAINDIR%\Py.ico -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=Python.NoConFile - New Value=Python File (no console) -end -item: Edit Registry - Total Keys=1 - Key=Python.NoConFile\shell\open\command - New Value=%MAINDIR%\pythonw.exe "%%1" %%* -end -item: Edit Registry - Total Keys=1 - Key=Python.NoConFile\DefaultIcon - New Value=%MAINDIR%\Py.ico -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=Python.CompiledFile - New Value=Compiled Python File -end -item: Edit Registry - Total Keys=1 - Key=Python.CompiledFile\shell\open\command - New Value=%MAINDIR%\python.exe "%%1" %%* -end -item: Edit Registry - Total Keys=1 - Key=Python.CompiledFile\DefaultIcon - New Value=%MAINDIR%\pyc.ico -end -item: Remark -end -item: Remark - Text=File extensions. -end -item: Edit Registry - Total Keys=1 - Key=.py - New Value=Python.File -end -item: Edit Registry - Total Keys=1 - Key=.py - New Value=text/plain - Value Name=Content Type -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=.pyw - New Value=Python.NoConFile -end -item: Edit Registry - Total Keys=1 - Key=.pyw - New Value=text/plain - Value Name=Content Type -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=.pyc - New Value=Python.CompiledFile -end -item: Edit Registry - Total Keys=1 - Key=.pyo - New Value=Python.CompiledFile -end -item: Else Statement -end -item: Remark - Text=File types. -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.File - New Value=Python File - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.File\shell\open\command - New Value=%MAINDIR%\python.exe "%%1" %%* - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.File\DefaultIcon - New Value=%MAINDIR%\Py.ico - Root=1 -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.NoConFile - New Value=Python File (no console) - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.NoConFile\shell\open\command - New Value=%MAINDIR%\pythonw.exe "%%1" %%* - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.NoConFile\DefaultIcon - New Value=%MAINDIR%\Py.ico - Root=1 -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.CompiledFile - New Value=Compiled Python File - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.CompiledFile\shell\open\command - New Value=%MAINDIR%\python.exe "%%1" %%* - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.CompiledFile\DefaultIcon - New Value=%MAINDIR%\pyc.ico - Root=1 -end -item: Remark -end -item: Remark - Text=File extensions. -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\.py - New Value=Python.File - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\.py - New Value=text/plain - Value Name=Content Type - Root=1 -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\.pyw - New Value=Python.NoConFile - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\.pyw - New Value=text/plain - Value Name=Content Type - Root=1 -end -item: Remark -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\.pyc - New Value=Python.CompiledFile - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\.pyo - New Value=Python.CompiledFile - Root=1 -end -item: End Block -end -item: Remark -end -item: Remark - Text=If we're installing IDLE, also set an Edit context menu action to use IDLE, for .py and .pyw files. -end -item: If/While Statement - Variable=COMPONENTS - Value=B - Flags=00000010 -end -item: If/While Statement - Variable=USE_HKCR - Value=1 -end -item: Edit Registry - Total Keys=1 - Key=Python.NoConFile\shell\Edit with IDLE\command - New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" -end -item: Edit Registry - Total Keys=1 - Key=Python.File\shell\Edit with IDLE\command - New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" -end -item: Else Statement -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.NoConFile\shell\Edit with IDLE\command - New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\CLASSES\Python.File\shell\Edit with IDLE\command - New Value=%MAINDIR%\pythonw.exe %MAINDIR%\Lib\idlelib\idle.pyw -n -e "%%1" - Root=1 -end -item: End Block -end -item: End Block -end -item: End Block -end -item: Remark -end -item: Remark - Text=Register Python paths. -end -item: Remark - Text=Write to HKLM for admin, else HKCU. Keep these blocks otherwise identical! -end -item: If/While Statement - Variable=DOADMIN - Value=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\CurrentVersion - Root=130 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath - New Value=%MAINDIR% - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath\InstallGroup - New Value=%CGROUP_SAVE% - New Value= - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\PythonPath - New Value=%MAINDIR%\Lib;%MAINDIR%\DLLs;%MAINDIR%\Lib\lib-tk - New Value= - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\Modules - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe - New Value=%MAINDIR%\Python.exe - Root=2 -end -item: Else Statement -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\CurrentVersion - Root=129 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath - New Value=%MAINDIR% - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\InstallPath\InstallGroup - New Value=%CGROUP_SAVE% - New Value= - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\PythonPath - New Value=%MAINDIR%\Lib;%MAINDIR%\DLLs;%MAINDIR%\Lib\lib-tk - New Value= - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\Modules - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe - New Value=%MAINDIR%\Python.exe - Root=1 -end -item: End Block -end -item: End Block -end -item: Remark -end -item: Remark - Text=Registry fiddling for docs. -end -item: Remark - Text=Write to HKLM for admin, else HKCU. Keep these blocks otherwise identical! -end -item: If/While Statement - Variable=COMPONENTS - Value=C - Flags=00000010 -end -item: If/While Statement - Variable=DOADMIN - Value=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\Help\Main Python Documentation - New Value=%MAINDIR%\Doc\index.html - Root=2 -end -item: Else Statement -end -item: Edit Registry - Total Keys=1 - Key=Software\Python\PythonCore\%PY_VERSION%\Help\Main Python Documentation - New Value=%MAINDIR%\Doc\index.html - Root=1 -end -item: End Block -end -item: End Block -end -item: Remark -end -item: Remark - Text=Set the app publisher and URL entries for Win2K add/remove. -end -item: Remark - Text=It doesn't hurt on other systems. -end -item: Remark - Text=As usual, write to HKLM or HKCU depending on Admin privs. -end -item: Remark - Text=CAUTION: If you set this info on the "Windows 2000" page (step 6) of the -end -item: Remark - Text=Installation Expert, it only shows up in the "If" block below. Keep in synch! -end -item: If/While Statement - Variable=DOADMIN - Value=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=http://www.python.org/ - Value Name=HelpLink - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=PythonLabs at Zope Corporation - Value Name=Publisher - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=http://www.python.org/ - Value Name=URLInfoAbout - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%PYVER_STRING% - Value Name=DisplayVersion - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%MAINDIR%\py.ico,-0 - Value Name=DisplayIcon - Root=2 -end -item: Else Statement -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=http://www.python.org/ - Value Name=HelpLink - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=PythonLabs at Zope Corporation - Value Name=Publisher - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=http://www.python.org/ - Value Name=URLInfoAbout - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%PYVER_STRING% - Value Name=DisplayVersion - Root=1 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%MAINDIR%\py.ico,-0 - Value Name=DisplayIcon - Root=1 -end -item: End Block -end -item: Remark -end -item: Remark - Text=Populate Start Menu group -end -item: If/While Statement - Variable=TASKS - Value=B - Flags=00000010 -end -item: Remark - Text=Shortcut to installer no matter what. -end -item: Create Shortcut - Source=%MAINDIR%\unwise.exe - Destination=%GROUP%\Uninstall Python.lnk - Working Directory=%MAINDIR% - Key Type=1536 - Flags=00000001 -end -item: Remark -end -item: If/While Statement - Variable=COMPONENTS - Value=A - Flags=00000010 -end -item: Create Shortcut - Source=%MAINDIR%\python.exe - Destination=%GROUP%\Python (command line).lnk - Working Directory=%MAINDIR% - Icon Pathname=%MAINDIR%\pycon.ico - Key Type=1536 - Flags=00000001 -end -item: End Block -end -item: Remark -end -item: If/While Statement - Variable=COMPONENTS - Value=B - Flags=00000010 -end -item: Create Shortcut - Source=%MAINDIR%\pythonw.exe - Destination=%GROUP%\IDLE (Python GUI).lnk - Command Options="%MAINDIR%\Lib\idlelib\idle.pyw" - Working Directory=%MAINDIR% - Key Type=1536 - Flags=00000001 -end -item: Create Shortcut - Source=%MAINDIR%\pythonw.exe - Destination=%GROUP%\Module Docs.lnk - Command Options="%MAINDIR%\Tools\Scripts\pydocgui.pyw" - Working Directory=%MAINDIR% - Key Type=1536 - Flags=00000001 -end -item: End Block -end -item: Remark -end -item: If/While Statement - Variable=COMPONENTS - Value=C - Flags=00000010 -end -item: Create Shortcut - Source=%MAINDIR%\Doc\index.html - Destination=%GROUP%\Python Manuals.lnk - Working Directory=%MAINDIR% - Key Type=1536 - Flags=00000001 -end -item: End Block -end -item: End Block -end -item: Remark -end -item: Remark - Text=I don't think we need this, but have always done it. -end -item: Self-Register OCXs/DLLs - Description=Updating System Configuration, Please Wait... -end -item: Remark -end -remarked item: Remark - Text=Don't enable "Delete in-use files". Here's what happens: -end -remarked item: Remark - Text=Install Python; uninstall Python; install Python again. Reboot the machine. -end -remarked item: Remark - Text=Now UNWISE.EXE is missing. I think this is a Wise bug, but so it goes. -end -remarked item: Add Text to INSTALL.LOG - Text=Delete in-use files: On -end -item: Remark -end -item: Wizard Block - Direction Variable=DIRECTION - Display Variable=DISPLAY - Bitmap Pathname=.\installer.bmp - X Position=9 - Y Position=10 - Filler Color=11173759 - Flags=00000011 -end -item: Custom Dialog Set - Name=Finished - Display Variable=DISPLAY - item: Dialog - Title=%APPTITLE% Installation - Title French=Installation de %APPTITLE% - Title German=Installation von %APPTITLE% - Title Spanish=Instalación de %APPTITLE% - Title Italian=Installazione di %APPTITLE% - Width=339 - Height=280 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=188 234 244 253 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Finish - Text French=&Fin - Text German=&Weiter - Text Spanish=&Terminar - Text Italian=&Fine - end - item: Push Button - Rectangle=264 234 320 253 - Variable=DISABLED - Value=! - Action=3 - Create Flags=01010000000000010000000000000000 - Text=&Cancel - Text French=&Annuler - Text German=&Abbrechen - Text Spanish=&Cancelar - Text Italian=&Annulla - end - item: Static - Rectangle=108 10 323 48 - Create Flags=01010000000000000000000000000000 - Flags=0000000000000001 - Name=Times New Roman - Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18 - Text=Installation Completed! - Text French=Installation terminée ! - Text German=Die Installation ist abgeschlossen! - Text Spanish=¡Instalación terminada! - Text Italian=Installazione completata! - end - item: Static - Rectangle=108 44 320 82 - Create Flags=01010000000000000000000000000000 - Text=%APPTITLE% has been successfully installed. - Text= - Text=Press the Finish button to exit this installation. - Text French=%APPTITLE% est maintenant installé. - Text French= - Text French=Cliquez sur le bouton Fin pour quitter l'installation. - Text German=%APPTITLE% wurde erfolgreich installiert. - Text German= - Text German=Klicken Sie auf "Weiter", um die Installation zu beenden. - Text Spanish=%APPTITLE% se ha instalado con éxito. - Text Spanish= - Text Spanish=Presione el botón Terminar para salir de esta instalación. - Text Italian=L'installazione %APPTITLE% è stata portata a termine con successo. - Text Italian= - Text Italian=Premere il pulsante Fine per uscire dall'installazione. - end - item: Static - Rectangle=10 225 320 226 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=106 105 312 210 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=Special Windows thanks to: - Text= - Text=Wise Solutions, for the use of InstallMaster 8.1. - Text= http://www.wisesolutions.com/ - Text= - Text= - Text=LettError, Erik van Blokland, for the Python for Windows graphic. - Text= http://www.letterror.com/ - Text= - Text= - Text=Mark Hammond, without whose years of freely shared Windows expertise, Python for Windows would still be Python for DOS. - end - item: Static - Rectangle=106 95 312 96 - Action=3 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000001001 - end - end -end -item: End Block -end -item: New Event - Name=Cancel -end -item: Remark - Text=This include script supports a rollback to preinstallation state if the user chooses to cancel before the installation is complete. -end -item: Include Script - Pathname=%_WISE_%\INCLUDE\rollback.wse -end diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj index 9f2fa00..ff27052 100644 --- a/PCbuild/pythoncore.vcproj +++ b/PCbuild/pythoncore.vcproj @@ -1,805 +1,1772 @@ + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + AdditionalIncludeDirectories="..\Include" + /> + + ImportLibrary="$(OutDir)$(PyDllName).lib" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + + + + + + + + + + + + + AdditionalIncludeDirectories="..\Include" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="0" + > + + + + + + /> + + + Name="VCPreLinkEventTool" + Description="generate buildinfo" + CommandLine=""$(SolutionDir)make_buildinfo.exe" $(ConfigurationName)" + /> + ImportLibrary="$(OutDir)$(PyDllName)_d.lib" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + + + + + + + + + + + + + AdditionalIncludeDirectories="..\Include" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + AdditionalIncludeDirectories="..\Include" + /> + + ImportLibrary="$(OutDirPGI)$(PyDllName).lib" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + + + + + + + + + + + + + AdditionalIncludeDirectories="..\Include" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + /> + + + Name="VCPreLinkEventTool" + Description="generate buildinfo" + CommandLine="$(SolutionDir)make_buildinfo.exe Release" + /> + ImportLibrary="$(OutDirPGI)$(PyDllName).lib" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + + + + + + + + + + + + + AdditionalIncludeDirectories="..\Include" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + Name="Include" + > + RelativePath="..\Include\abstract.h" + > + RelativePath="..\Include\asdl.h" + > + RelativePath="..\Include\ast.h" + > + RelativePath="..\Include\bitset.h" + > + RelativePath="..\Include\boolobject.h" + > + RelativePath="..\Include\bufferobject.h" + > + RelativePath="..\Include\cellobject.h" + > + RelativePath="..\Include\ceval.h" + > + RelativePath="..\Include\classobject.h" + > + RelativePath="..\Include\cobject.h" + > + RelativePath="..\Include\code.h" + > - - - - - - - - - - - - + RelativePath="..\Include\codecs.h" + > + RelativePath="..\Include\compile.h" + > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PCbuild/pythonw.vcproj b/PCbuild/pythonw.vcproj index d00142f..add4684 100644 --- a/PCbuild/pythonw.vcproj +++ b/PCbuild/pythonw.vcproj @@ -1,260 +1,617 @@ + ProjectGUID="{F4229CC3-873C-49AE-9729-DD308ED4CD4A}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="0" + > + + + + + + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + /> + + TargetMachine="1" + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + + + + Culture="1033" + /> + + + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> + TargetMachine="1" + /> + + + + + + + Name="VCPostBuildEventTool" + /> + + + + + + + Name="VCMIDLTool" + TargetEnvironment="3" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_WINDOWS" + StringPooling="true" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + Culture="1033" + /> + + + + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + + ImportLibrary="" + TargetMachine="1" + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + + + + Culture="1033" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + EnableFunctionLevelLinking="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> + ImportLibrary="" + TargetMachine="1" + /> + + + + + + + + + + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + + + + Name="VCManagedResourceCompilerTool" + /> + Culture="1033" + /> + + + + + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> - - - - + + + + + + + + diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 2e34312..fe264e3 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -1,31 +1,41 @@ -Building Python using VC++ 7.1 -------------------------------------- +Building Python using VC++ 9.0 +------------------------------ This directory is used to build Python for Win32 platforms, e.g. Windows -95, 98 and NT. It requires Microsoft Visual C++ 7.1 -(a.k.a. Visual Studio .NET 2003). +2000, XP and Vista. It requires Microsoft Visual C++ 9.0 +(a.k.a. Visual Studio .NET 2008). (For other Windows platforms and compilers, see ../PC/readme.txt.) -All you need to do is open the workspace "pcbuild.sln" in MSVC++, select -the Debug or Release setting (using "Solution Configuration" from -the "Standard" toolbar"), and build the projects. +All you need to do is open the workspace "pcbuild.sln" in Visual Studio, +select the desired combination of configuration and platform and eventually +build the solution. Unless you are going to debug a problem in the core or +you are going to create an optimized build you want to select "Release" as +configuration. -The proper order to build subprojects: +The PCbuild directory is compatible with all versions of Visual Studio from +VS C++ Express Edition over the standard edition up to the professional +edition. However the express edition does support features like solution +folders or profile guided optimization (PGO). The missing bits and pieces +won't stop you from building Python. -1) pythoncore (this builds the main Python DLL and library files, - python30.{dll, lib} in Release mode) +The solution is configured to build the projects in the correct order. "Build +Solution" or F6 takes care of dependencies except for x64 builds. To make +cross compiling x64 builds on a 32bit OS possible the x64 builds require a +32bit version of Python. -2) python (this builds the main Python executable, - python.exe in Release mode) -3) the other subprojects, as desired or needed (note: you probably don't - want to build most of the other subprojects, unless you're building an - entire Python distribution from scratch, or specifically making changes - to the subsystems they implement, or are running a Python core buildbot - test slave; see SUBPROJECTS below) +NOTE: + You probably don't want to build most of the other subprojects, unless + you're building an entire Python distribution from scratch, or + specifically making changes to the subsystems they implement, or are + running a Python core buildbot test slave; see SUBPROJECTS below) When using the Debug setting, the output files have a _d added to their name: python30_d.dll, python_d.exe, parser_d.pyd, and so on. +The 32bit builds end up in the solution folder PCbuild while the x64 builds +land in the amd64 subfolder. The PGI and PGO builds for profile guided +optimization end up in their own folders, too. + SUBPROJECTS ----------- These subprojects should build out of the box. Subprojects other than the @@ -54,29 +64,40 @@ unicodedata winsound play sounds (typically .wav files) under Windows -The following subprojects will generally NOT build out of the box. They +The following subprojects will generally NOT build out of the box. They wrap code Python doesn't control, and you'll need to download the base packages first and unpack them into siblings of PCbuilds's parent -directory; for example, if your PCbuild is .......\dist\src\PCbuild\, -unpack into new subdirectories of dist\. +directory; for example, if your PCbuild is ..\dist\py3k\PCbuild\, +unpack into new subdirectories of ..\dist\. _tkinter Python wrapper for the Tk windowing system. Requires building - Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.12. + Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.16. + + NOTE: The 64 build builds must land in tcltk64 instead of tcltk. Get source ---------- In the dist directory, run - svn export http://svn.python.org/projects/external/tcl8.4.12 - svn export http://svn.python.org/projects/external/tk8.4.12 + svn export http://svn.python.org/projects/external/tcl8.4.16 + svn export http://svn.python.org/projects/external/tk8.4.16 svn export http://svn.python.org/projects/external/tix-8.4.0 - Build Tcl first (done here w/ MSVC 7.1 on Windows XP) + Build with build_tkinter.py + --------------------------- + The PCbuild directory contains a Python script which automates all + steps. Run the script in a Visual Studio 2009 command prompt with + + python build_tkinter.py Win32 + + Use x64 instead of Win32 for the x64 platform. + + Build Tcl first --------------- - Use "Start -> All Programs -> Microsoft Visual Studio .NET 2003 - -> Visual Studio .NET Tools -> Visual Studio .NET 2003 Command Prompt" + Use "Start -> All Programs -> Microsoft Visual Studio 2008 + -> Visual Studio Tools -> Visual Studio 2008 Command Prompt" to get a shell window with the correct environment settings - cd dist\tcl8.4.12\win + cd dist\tcl8.4.16\win nmake -f makefile.vc nmake -f makefile.vc INSTALLDIR=..\..\tcltk install @@ -91,9 +112,9 @@ _tkinter Build Tk -------- - cd dist\tk8.4.12\win - nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 - nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install + cd dist\tk8.4.16\win + nmake -f makefile.vc TCLDIR=..\..\tcl8.4.16 + nmake -f makefile.vc TCLDIR=..\..\tcl8.4.16 INSTALLDIR=..\..\tcltk install XXX Should we compile with OPTS=threads? @@ -101,7 +122,7 @@ _tkinter XXX directory. Is all of that really needed for Python use of Tcl/Tk? Optional: run tests, via - nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 test + nmake -f makefile.vc TCLDIR=..\..\tcl8.4.16 test On WinXP Pro, wholly up to date as of 30-Aug-2004: all.tcl: Total 8420 Passed 6826 Skipped 1581 Failed 13 @@ -111,8 +132,8 @@ _tkinter Built Tix --------- cd dist\tix-8.4.0\win - nmake -f python.mak - nmake -f python.mak install + nmake -f python9.mak + nmake -f python9.mak install bz2 Python wrapper for the libbz2 compression library. Homepage @@ -129,28 +150,25 @@ bz2 bzip2-1.0.3\ when you do a clean, so if you want to rebuild bzip2.lib you need to clean up bzip2-1.0.3\ by hand. - The build step shouldn't yield any warnings or errors, and should end - by displaying 6 blocks each terminated with - FC: no differences encountered - - All of this managed to build bzip2-1.0.3\libbz2.lib, which the Python - project links in. + All of this managed to build libbz2.lib in + bzip2-1.0.3\$platform-$configuration\, which the Python project links in. _bsddb To use the version of bsddb that Python is built with by default, invoke (in the dist directory) - svn export http://svn.python.org/projects/external/db-4.4.20 - - - Then open a VS.NET 2003 shell, and invoke: - - devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static + svn export http://svn.python.org/projects/external/db-4.4.20 - and do that a second time for a Debug build too: - - devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static + Next open the solution file db-4.4.20\build_win32\Berkeley_DB.sln with + Visual Studio and convert the projects to the new format. The standard + and professional version of VS 2008 builds the necessary libraries + in a pre-link step of _bsddb. However the express edition is missing + some pieces and you have to build the libs yourself. + + The _bsddb subprojects depends only on the db_static project of + Berkeley DB. You have to choose either "Release", "Release AMD64", "Debug" + or "Debug AMD64" as configuration. Alternatively, if you want to start with the original sources, go to Sleepycat's download page: @@ -168,7 +186,7 @@ _bsddb Now apply any patches that apply to your version. Open - dist\db-4.4.20\docs\index.html + db-4.4.20\docs\ref\build_win\intro.html and follow the "Windows->Building Berkeley DB with Visual C++ .NET" instructions for building the Sleepycat @@ -178,40 +196,6 @@ _bsddb To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py is then enabled. Running in verbose mode may be helpful. - XXX The test_bsddb3 tests don't always pass, on Windows (according to - XXX me) or on Linux (according to Barry). (I had much better luck - XXX on Win2K than on Win98SE.) The common failure mode across platforms - XXX is - XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable - XXX to join the environment') - XXX - XXX and it appears timing-dependent. On Win2K I also saw this once: - XXX - XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ... - XXX Exception in thread reader 1: - XXX Traceback (most recent call last): - XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap - XXX self.run() - XXX File "C:\Code\python\lib\threading.py", line 399, in run - XXX self.__target(*self.__args, **self.__kwargs) - XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in - XXX readerThread - XXX rec = c.next() - XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed - XXX to resolve a deadlock') - XXX - XXX I'm told that DBLockDeadlockError is expected at times. It - XXX doesn't cause a test to fail when it happens (exceptions in - XXX threads are invisible to unittest). - - Building for Win64: - - open a VS.NET 2003 command prompt - - run the SDK setenv.cmd script, passing /RETAIL and the target - architecture (/SRV64 for Itanium, /X64 for AMD64) - - build BerkeleyDB with the solution configuration matching the - target ("Release IA64" for Itanium, "Release AMD64" for AMD64), e.g. - devenv db-4.4.20\build_win32\Berkeley_DB.sln /build "Release AMD64" /project db_static /useenv - _sqlite3 Python wrapper for SQLite library. @@ -220,22 +204,35 @@ _sqlite3 svn export http://svn.python.org/projects/external/sqlite-source-3.3.4 To use the extension module in a Python build tree, copy sqlite3.dll into - the PCbuild folder. + the PCbuild folder. The source directory in svn also contains a .def file + from the binary release of sqlite3. _ssl Python wrapper for the secure sockets library. Get the source code through - svn export http://svn.python.org/projects/external/openssl-0.9.8a + svn export http://svn.python.org/projects/external/openssl-0.9.8g Alternatively, get the latest version from http://www.openssl.org. You can (theoretically) use any version of OpenSSL you like - the build process will automatically select the latest version. - You must also install ActivePerl from + You must install the NASM assembler from + http://www.kernel.org/pub/software/devel/nasm/binaries/win32/ + for x86 builds. Put nasmw.exe anywhere in your PATH. + + You can also install ActivePerl from http://www.activestate.com/Products/ActivePerl/ - as this is used by the OpenSSL build process. Complain to them . + if you like to use the official sources instead of the files from + python's subversion repository. The svn version contains pre-build + makefiles and assembly files. + + The build process makes sure that no patented algorithms are included. + For now RC5, MDC2 and IDEA are excluded from the build. You may have + to manually remove $(OBJ_D)\i_*.obj from ms\nt.mak if the build process + complains about missing files or forbidden IDEA. Again the files provided + in the subversion repository are already fixed. The MSVC project simply invokes PCBuild/build_ssl.py to perform the build. This Python script locates and builds your OpenSSL @@ -255,6 +252,10 @@ _ssl Building for Itanium -------------------- +NOTE: +Official support for Itanium builds have been dropped from the build. Please +contact as and provide patches if you are interested in Itanium builds. + The project files support a ReleaseItanium configuration which creates Win64/Itanium binaries. For this to work, you need to install the Platform SDK, in particular the 64-bit support. This includes an Itanium compiler @@ -267,158 +268,67 @@ accordingly. The project files require atleast version 0.9. Building for AMD64 ------------------ -The build process for the ReleaseAMD64 configuration is very similar -to the Itanium configuration; make sure you use the latest version of -vsextcomp. +The build process for AMD64 / x64 is very similar to standard builds. You just +have to set x64 as platform. Building Python Using the free MS Toolkit Compiler -------------------------------------------------- -The build process for Visual C++ can be used almost unchanged with the free MS -Toolkit Compiler. This provides a way of building Python using freely -available software. - -Note that Microsoft have withdrawn the free MS Toolkit Compiler, so this can -no longer be considered a supported option. The instructions are still -correct, but you need to already have a copy of the compiler in order to use -them. Microsoft now supply Visual C++ 2005 Express Edition for free, but this -is NOT compatible with Visual C++ 7.1 (it uses a different C runtime), and so -cannot be used to build a version of Python compatible with the standard -python.org build. If you are interested in using Visual C++ 2005 Express -Edition, however, you should look at the PCBuild8 directory. - -Requirements - - To build Python, the following tools are required: - - * The Visual C++ Toolkit Compiler - no longer available for download - see above - * A recent Platform SDK - from http://www.microsoft.com/downloads/details.aspx?FamilyID=484269e2-3b89-47e3-8eb7-1f2be6d7123a - * The .NET 1.1 SDK - from http://www.microsoft.com/downloads/details.aspx?FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d - - [Does anyone have better URLs for the last 2 of these?] - - The toolkit compiler is needed as it is an optimising compiler (the - compiler supplied with the .NET SDK is a non-optimising version). The - platform SDK is needed to provide the Windows header files and libraries - (the Windows 2003 Server SP1 edition, typical install, is known to work - - other configurations or versions are probably fine as well). The .NET 1.1 - SDK is needed because it contains a version of msvcrt.dll which links to - the msvcr71.dll CRT. Note that the .NET 2.0 SDK is NOT acceptable, as it - references msvcr80.dll. - - All of the above items should be installed as normal. - - If you intend to build the openssl (needed for the _ssl extension) you - will need the C runtime sources installed as part of the platform SDK. - - In addition, you will need Nant, available from - http://nant.sourceforge.net. The 0.85 release candidate 3 version is known - to work. This is the latest released version at the time of writing. Later - "nightly build" versions are known NOT to work - it is not clear at - present whether future released versions will work. - -Setting up the environment - - Start a platform SDK "build environment window" from the start menu. The - "Windows XP 32-bit retail" version is known to work. - - Add the following directories to your PATH: - * The toolkit compiler directory - * The SDK "Win64" binaries directory - * The Nant directory - Add to your INCLUDE environment variable: - * The toolkit compiler INCLUDE directory - Add to your LIB environment variable: - * The toolkit compiler LIB directory - * The .NET SDK Visual Studio 2003 VC7\lib directory - - The following commands should set things up as you need them: - - rem Set these values according to where you installed the software - set TOOLKIT=C:\Program Files\Microsoft Visual C++ Toolkit 2003 - set SDK=C:\Program Files\Microsoft Platform SDK - set NET=C:\Program Files\Microsoft Visual Studio .NET 2003 - set NANT=C:\Utils\Nant - - set PATH=%TOOLKIT%\bin;%PATH%;%SDK%\Bin\win64;%NANT%\bin - set INCLUDE=%TOOLKIT%\include;%INCLUDE% - set LIB=%TOOLKIT%\lib;%NET%\VC7\lib;%LIB% - - The "win64" directory from the SDK is added to supply executables such as - "cvtres" and "lib", which are not available elsewhere. The versions in the - "win64" directory are 32-bit programs, so they are fine to use here. - - That's it. To build Python (the core only, no binary extensions which - depend on external libraries) you just need to issue the command - - nant -buildfile:python.build all - - from within the PCBuild directory. - -Extension modules - - To build those extension modules which require external libraries - (_tkinter, bz2, _bsddb, _sqlite3, _ssl) you can follow the instructions - for the Visual Studio build above, with a few minor modifications. These - instructions have only been tested using the sources in the Python - subversion repository - building from original sources should work, but - has not been tested. - - For each extension module you wish to build, you should remove the - associated include line from the excludeprojects section of pc.build. - - The changes required are: - - _tkinter - The tix makefile (tix-8.4.0\win\makefile.vc) must be modified to - remove references to TOOLS32. The relevant lines should be changed to - read: - cc32 = cl.exe - link32 = link.exe - include32 = - The remainder of the build instructions will work as given. - - bz2 - No changes are needed - - _bsddb - The file db.build should be copied from the Python PCBuild directory - to the directory db-4.4.20\build_win32. - - The file db_static.vcproj in db-4.4.20\build_win32 should be edited to - remove the string "$(SolutionDir)" - this occurs in 2 places, only - relevant for 64-bit builds. (The edit is required as otherwise, nant - wants to read the solution file, which is not in a suitable form). - - The bsddb library can then be build with the command - nant -buildfile:db.build all - run from the db-4.4.20\build_win32 directory. - - _sqlite3 - No changes are needed. However, in order for the tests to succeed, a - copy of sqlite3.dll must be downloaded, and placed alongside - python.exe. - - _ssl - The documented build process works as written. However, it needs a - copy of the file setargv.obj, which is not supplied in the platform - SDK. However, the sources are available (in the crt source code). To - build setargv.obj, proceed as follows: - - Copy setargv.c, cruntime.h and internal.h from %SDK%\src\crt to a - temporary directory. - Compile using "cl /c /I. /MD /D_CRTBLD setargv.c" - Copy the resulting setargv.obj to somewhere on your LIB environment - (%SDK%\lib is a reasonable place). - - With setargv.obj in place, the standard build process should work - fine. +Microsoft has withdrawn the free MS Toolkit Compiler, so this can no longer +be considered a supported option. Instead you can use the free VS C++ Express +Edition. + +Profile Guided Optimization +--------------------------- + +The solution has two configurations for PGO. The PGInstrument configuration +must be build first. The PGInstrument binaries are lniked against a profiling +library and contain extra debug information. The PGUpdate configuration takes the profiling data and generates optimized binaries. + +The build_pgo.bat script automates the creation of optimized binaries. It +creates the PGI files, runs the unit test suite or PyBench with the PGI +python and finally creates the optimized files. + +http://msdn2.microsoft.com/en-us/library/e7k32f4k(VS.90).aspx + +Static library +-------------- + +The solution has no configuration for static libraries. However it is easy +it build a static library instead of a DLL. You simply have to set the +"Configuration Type" to "Static Library (.lib)" and alter the preprocessor +macro "Py_ENABLE_SHARED" to "Py_NO_ENABLE_SHARED". You may also have to +change the "Runtime Library" from "Multi-threaded DLL (/MD)" to +"Multi-threaded (/MT)". + +Visual Studio properties +------------------------ + +The PCbuild solution makes heavy use of Visual Studio property files +(*.vsprops). The properties can be viewed and altered in the Property +Manager (View -> Other Windows -> Property Manager). + + * debug (debug macro: _DEBUG) + * pginstrument (PGO) + * pgupdate (PGO) + +-- pginstrument + * pyd (python extension, release build) + +-- release + +-- pyproject + * pyd_d (python extension, debug build) + +-- debug + +-- pyproject + * pyproject (base settings for all projects, user macros like PyDllName) + * release (release macro: NDEBUG) + * x64 (AMD64 / x64 platform specific settings) + +The pyproject propertyfile defines _WIN32 and x64 defines _WIN64 and _M_X64 +although the macros are set by the compiler, too. The GUI doesn't always know +about the macros and confuse the user with false information. YOUR OWN EXTENSION DLLs ----------------------- + If you want to create your own extension module DLL, there's an example with easy-to-follow instructions in ../PC/example/; read the file readme.txt there first. diff --git a/PCbuild/release.vsprops b/PCbuild/release.vsprops new file mode 100644 index 0000000..4bbda68 --- /dev/null +++ b/PCbuild/release.vsprops @@ -0,0 +1,11 @@ + + + + diff --git a/PCbuild/rt.bat b/PCbuild/rt.bat old mode 100755 new mode 100644 diff --git a/PCbuild/select.vcproj b/PCbuild/select.vcproj index 615cc0f..b97cb4d 100644 --- a/PCbuild/select.vcproj +++ b/PCbuild/select.vcproj @@ -1,257 +1,536 @@ + ProjectGUID="{18CAE28C-B454-46C1-87A0-493D91D97F03}" + RootNamespace="select" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + Name="Win32" + /> + + + + InheritedPropertySheets=".\pyd_d.vsprops" + CharacterSet="0" + > + + + + + - + /> + + + + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + + Name="VCCLCompilerTool" + /> + + + + Name="VCLinkerTool" + AdditionalDependencies="wsock32.lib" + IgnoreDefaultLibraryNames="libc" + BaseAddress="0x1D110000" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + InheritedPropertySheets=".\pyd.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + + + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + + + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + + + + + + + + Name="VCCLCompilerTool" + /> + + + + Name="VCLinkerTool" + AdditionalDependencies="wsock32.lib" + IgnoreDefaultLibraryNames="libc" + BaseAddress="0x1D110000" + TargetMachine="17" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops" + CharacterSet="0" + WholeProgramOptimization="1" + > + + + + + - + /> + + + + /> + + + + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + + +