From guido.van.rossum at python.org Tue Nov 1 00:31:40 2005 From: guido.van.rossum at python.org (guido.van.rossum@python.org) Date: Tue, 1 Nov 2005 00:31:40 +0100 (CET) Subject: [Python-checkins] commit of r41363 - peps/trunk Message-ID: <20051031233140.7853A1E4009@bag.python.org> Author: guido.van.rossum Date: Tue Nov 1 00:31:40 2005 New Revision: 41363 Modified: peps/trunk/pep-0352.txt Log: Tweaking $Revision$ and $Date$. Modified: peps/trunk/pep-0352.txt ============================================================================== --- peps/trunk/pep-0352.txt (original) +++ peps/trunk/pep-0352.txt Tue Nov 1 00:31:40 2005 @@ -1,7 +1,7 @@ PEP: 352 Title: Required Superclass for Exceptions -Version: $Revision: 1.5 $ -Last-Modified: $Date: 2005/06/07 13:17:37 $ +Version: $Revision$ +Last-Modified: $Date$ Author: Brett Cannon , Guido van Rossum Status: Draft Type: Standards Track From guido.van.rossum at python.org Tue Nov 1 01:17:42 2005 From: guido.van.rossum at python.org (guido.van.rossum@python.org) Date: Tue, 1 Nov 2005 01:17:42 +0100 (CET) Subject: [Python-checkins] commit of r41364 - peps/trunk Message-ID: <20051101001742.0AA881E4009@bag.python.org> Author: guido.van.rossum Date: Tue Nov 1 01:17:41 2005 New Revision: 41364 Modified: peps/trunk/pep-0352.txt (props changed) peps/trunk/pep2html.py Log: - Fix the link to the svn equivalent of viewcvs. - Expand keywords in PEP 352.txt. Modified: peps/trunk/pep2html.py ============================================================================== --- peps/trunk/pep2html.py (original) +++ peps/trunk/pep2html.py Tue Nov 1 01:17:41 2005 @@ -49,8 +49,7 @@ PROGRAM = sys.argv[0] RFCURL = 'http://www.faqs.org/rfcs/rfc%d.html' PEPURL = 'pep-%04d.html' -PEPCVSURL = ('http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/python' - '/nondist/peps/pep-%04d.txt') +PEPCVSURL = ('http://svn.python.org/view/peps/trunk/pep-%04d.txt') PEPDIRRUL = 'http://www.python.org/peps/' From guido.van.rossum at python.org Tue Nov 1 01:19:44 2005 From: guido.van.rossum at python.org (guido.van.rossum@python.org) Date: Tue, 1 Nov 2005 01:19:44 +0100 (CET) Subject: [Python-checkins] commit of r41365 - peps/trunk Message-ID: <20051101001944.D5D331E4009@bag.python.org> Author: guido.van.rossum Date: Tue Nov 1 01:19:44 2005 New Revision: 41365 Modified: peps/trunk/pep-0352.txt (props changed) Log: Native line endings for PEP 352. From info at mediavisa.net Tue Nov 1 13:19:37 2005 From: info at mediavisa.net (MediaVisa.net) Date: Tue, 1 Nov 2005 13:19:37 +0100 Subject: [Python-checkins] The Schengen visa and Schengen travel insurance portal ! Message-ID: <200511011219.jA1C245H014608@outmx021.isp.belgacom.be> - This mail is a HTML mail. Not all elements could be shown in plain text mode. - Hello, Please visit the first Schengen visa portal : Me diaVisa.net ! The site offers : 1. free and accurate information on Schengen visas 2. a selection of travel insurance policies complying with the european legislation 3. an online enquiry solution Very best regards. The team of MediaVisa.net ! Martin MediaVisa.net -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/python-checkins/attachments/20051101/e94898d5/attachment.html From walter.doerwald at python.org Wed Nov 2 09:57:12 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Wed, 2 Nov 2005 09:57:12 +0100 (CET) Subject: [Python-checkins] commit of r41372 - python/trunk/Objects Message-ID: <20051102085712.713F11E4002@bag.python.org> Author: walter.doerwald Date: Wed Nov 2 09:57:11 2005 New Revision: 41372 Modified: python/trunk/Objects/unicodeobject.c Log: Fix typo in comment. Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Wed Nov 2 09:57:11 2005 @@ -3035,7 +3035,7 @@ space is available. Return a new reference to the object that was put in the output buffer, or Py_None, if the mapping was undefined (in which case no character was written) or NULL, if a - reallocation error ocurred. The called must decref the result */ + reallocation error ocurred. The caller must decref the result */ static PyObject *charmapencode_output(Py_UNICODE c, PyObject *mapping, PyObject **outobj, int *outpos) From andrew.kuchling at python.org Wed Nov 2 17:36:12 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Wed, 2 Nov 2005 17:36:12 +0100 (CET) Subject: [Python-checkins] commit of r41373 - python/trunk/Objects Message-ID: <20051102163612.A3B5B1E54F0@bag.python.org> Author: andrew.kuchling Date: Wed Nov 2 17:36:12 2005 New Revision: 41373 Modified: python/trunk/Objects/unicodeobject.c Log: Another comment typo fix Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Wed Nov 2 17:36:12 2005 @@ -3035,7 +3035,7 @@ space is available. Return a new reference to the object that was put in the output buffer, or Py_None, if the mapping was undefined (in which case no character was written) or NULL, if a - reallocation error ocurred. The caller must decref the result */ + reallocation error occurred. The caller must decref the result */ static PyObject *charmapencode_output(Py_UNICODE c, PyObject *mapping, PyObject **outobj, int *outpos) From brett.cannon at python.org Wed Nov 2 23:58:15 2005 From: brett.cannon at python.org (brett.cannon@python.org) Date: Wed, 2 Nov 2005 23:58:15 +0100 (CET) Subject: [Python-checkins] commit of r41374 - python/trunk/Doc/dist Message-ID: <20051102225815.5C1661E4002@bag.python.org> Author: brett.cannon Date: Wed Nov 2 23:58:12 2005 New Revision: 41374 Modified: python/trunk/Doc/dist/dist.tex Log: Add an import line to a code fragment. Closes bug #1346395. Modified: python/trunk/Doc/dist/dist.tex ============================================================================== --- python/trunk/Doc/dist/dist.tex (original) +++ python/trunk/Doc/dist/dist.tex Wed Nov 2 23:58:12 2005 @@ -921,7 +921,8 @@ \begin{verbatim} # patch distutils if it can't cope with the "classifiers" or # "download_url" keywords -if sys.version < '2.2.3': +from sys import version +if version < '2.2.3': from distutils.dist import DistributionMetadata DistributionMetadata.classifiers = None DistributionMetadata.download_url = None From brett.cannon at python.org Thu Nov 3 00:00:23 2005 From: brett.cannon at python.org (brett.cannon@python.org) Date: Thu, 3 Nov 2005 00:00:23 +0100 (CET) Subject: [Python-checkins] commit of r41375 - python/branches/release24-maint/Doc/dist Message-ID: <20051102230023.BC1C41E4032@bag.python.org> Author: brett.cannon Date: Thu Nov 3 00:00:23 2005 New Revision: 41375 Modified: python/branches/release24-maint/Doc/dist/dist.tex Log: Add an import to a code fragment. Backport of fix for bug #1346395. Modified: python/branches/release24-maint/Doc/dist/dist.tex ============================================================================== --- python/branches/release24-maint/Doc/dist/dist.tex (original) +++ python/branches/release24-maint/Doc/dist/dist.tex Thu Nov 3 00:00:23 2005 @@ -845,7 +845,8 @@ \begin{verbatim} # patch distutils if it can't cope with the "classifiers" or # "download_url" keywords -if sys.version < '2.2.3': +from sys import version +if version < '2.2.3': from distutils.dist import DistributionMetadata DistributionMetadata.classifiers = None DistributionMetadata.download_url = None From brett.cannon at python.org Thu Nov 3 00:04:27 2005 From: brett.cannon at python.org (brett.cannon@python.org) Date: Thu, 3 Nov 2005 00:04:27 +0100 (CET) Subject: [Python-checkins] commit of r41376 - in python/trunk: Lib Lib/test Misc Message-ID: <20051102230427.20E901E4064@bag.python.org> Author: brett.cannon Date: Thu Nov 3 00:04:26 2005 New Revision: 41376 Modified: python/trunk/Lib/_strptime.py python/trunk/Lib/test/test_strptime.py python/trunk/Misc/NEWS Log: Change time.strptime() to raise ValueError whenever there is an error in the format string. Before exceptions generated by the internal code propagated up to the user and were not helpful. Closes bug #1340337. Modified: python/trunk/Lib/_strptime.py ============================================================================== --- python/trunk/Lib/_strptime.py (original) +++ python/trunk/Lib/_strptime.py Thu Nov 3 00:04:26 2005 @@ -287,7 +287,20 @@ _regex_cache.clear() format_regex = _regex_cache.get(format) if not format_regex: - format_regex = time_re.compile(format) + try: + format_regex = time_re.compile(format) + # KeyError raised when a bad format is found; can be specified as + # \\, in which case it was a stray % but with a space after it + except KeyError, err: + bad_directive = err.args[0] + if bad_directive == "\\": + bad_directive = "%" + del err + raise ValueError("'%s' is a bad directive in format '%s'" % + (bad_directive, format)) + # IndexError only occurs when the format string is "%" + except IndexError: + raise ValueError("stray %% in format '%s'" % format) _regex_cache[format] = format_regex finally: _cache_lock.release() Modified: python/trunk/Lib/test/test_strptime.py ============================================================================== --- python/trunk/Lib/test/test_strptime.py (original) +++ python/trunk/Lib/test/test_strptime.py Thu Nov 3 00:04:26 2005 @@ -197,10 +197,20 @@ """Create testing time tuple.""" self.time_tuple = time.gmtime() - def test_TypeError(self): - # Make sure ValueError is raised when match fails + def test_ValueError(self): + # Make sure ValueError is raised when match fails or format is bad self.assertRaises(ValueError, _strptime.strptime, data_string="%d", format="%A") + for bad_format in ("%", "% ", "%e"): + try: + _strptime.strptime("2005", bad_format) + except ValueError: + continue + except Exception, err: + self.fail("'%s' raised %s, not ValueError" % + (bad_format, err.__class__.__name__)) + else: + self.fail("'%s' did not raise ValueError" % bad_format) def test_unconverteddata(self): # Check ValueError is raised when there is unconverted data Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Nov 3 00:04:26 2005 @@ -276,6 +276,9 @@ Library ------- +- Bug #1340337: change time.strptime() to always return ValueError when there + is an error in the format string. + - Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). - Bug #729103: pydoc.py: Fix docother() method to accept additional From phillip.eby at python.org Thu Nov 3 00:55:36 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 00:55:36 +0100 (CET) Subject: [Python-checkins] commit of r41377 - in sandbox/trunk/setuptools: . setuptools setuptools.egg-info setuptools/command setuptools/tests Message-ID: <20051102235536.8F84A1E4009@bag.python.org> Author: phillip.eby Date: Thu Nov 3 00:55:34 2005 New Revision: 41377 Modified: sandbox/trunk/setuptools/setup.py sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt sandbox/trunk/setuptools/setuptools/__init__.py sandbox/trunk/setuptools/setuptools/command/build_py.py sandbox/trunk/setuptools/setuptools/tests/test_resources.py Log: 0.6a7 bugfix release Modified: sandbox/trunk/setuptools/setup.py ============================================================================== --- sandbox/trunk/setuptools/setup.py (original) +++ sandbox/trunk/setuptools/setup.py Thu Nov 3 00:55:34 2005 @@ -15,7 +15,7 @@ f.close() return ''.join(lines) -VERSION = "0.6a6" +VERSION = "0.6a7" from setuptools import setup, find_packages import sys from setuptools.command import __all__ as SETUP_COMMANDS @@ -43,7 +43,7 @@ entry_points = { "distutils.commands" : [ "%(cmd)s = setuptools.command.%(cmd)s:%(cmd)s" % locals() - for cmd in SETUP_COMMANDS if cmd!="build_py" or sys.version<"2.4" + for cmd in SETUP_COMMANDS ], "distutils.setup_keywords": [ "eager_resources = setuptools.dist:assert_string_list", Modified: sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt (original) +++ sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt Thu Nov 3 00:55:34 2005 @@ -24,6 +24,7 @@ rotate = setuptools.command.rotate:rotate develop = setuptools.command.develop:develop setopt = setuptools.command.setopt:setopt +build_py = setuptools.command.build_py:build_py saveopts = setuptools.command.saveopts:saveopts egg_info = setuptools.command.egg_info:egg_info upload = setuptools.command.upload:upload Modified: sandbox/trunk/setuptools/setuptools/__init__.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/__init__.py (original) +++ sandbox/trunk/setuptools/setuptools/__init__.py Thu Nov 3 00:55:34 2005 @@ -8,7 +8,7 @@ from distutils.util import convert_path import os.path -__version__ = '0.6a6' +__version__ = '0.6a7' __all__ = [ 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require', 'find_packages' Modified: sandbox/trunk/setuptools/setuptools/command/build_py.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/build_py.py (original) +++ sandbox/trunk/setuptools/setuptools/command/build_py.py Thu Nov 3 00:55:34 2005 @@ -1,5 +1,4 @@ -import os.path - +import os.path, sys from distutils.command.build_py import build_py as _build_py from distutils.util import convert_path from glob import glob @@ -36,6 +35,10 @@ # output files are. self.byte_compile(_build_py.get_outputs(self, include_bytecode=0)) + + + + def get_data_files(self): """Generate list of '(package,src_dir,build_dir,filenames)' tuples""" data = [] @@ -75,6 +78,8 @@ self.mkpath(os.path.dirname(target)) self.copy_file(os.path.join(src_dir, filename), target) + + def get_outputs(self, include_bytecode=1): """Return complete list of files copied to the build directory @@ -88,3 +93,31 @@ for package, src_dir, build_dir,filenames in self.data_files for filename in filenames ] + + +if sys.version>="2.4": + # Python 2.4 already has the above code + build_py = _build_py + + + + + + + + + + + + + + + + + + + + + + + Modified: sandbox/trunk/setuptools/setuptools/tests/test_resources.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/tests/test_resources.py (original) +++ sandbox/trunk/setuptools/setuptools/tests/test_resources.py Thu Nov 3 00:55:34 2005 @@ -134,7 +134,7 @@ "/foo_dir/Foo-1.2.egg", metadata=Metadata(('depends.txt', "[bar]\nBaz>=2.0")) ) - ad.add(Foo) + ad.add(Foo); ad.add(Distribution.from_filename("Foo-0.9.egg")) # Request thing(s) that are available -> list to activate for i in range(3): From phillip.eby at python.org Thu Nov 3 00:57:45 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 00:57:45 +0100 (CET) Subject: [Python-checkins] commit of r41378 - sandbox/trunk/setuptools Message-ID: <20051102235745.9802A1E4009@bag.python.org> Author: phillip.eby Date: Thu Nov 3 00:57:44 2005 New Revision: 41378 Modified: sandbox/trunk/setuptools/EasyInstall.txt sandbox/trunk/setuptools/pkg_resources.txt sandbox/trunk/setuptools/setuptools.txt Log: Fix documentation typos, and note that Python 2.4 is required on 64-bit platforms (due to a bugfix in zipimport.c that was never backported to the 2.3 branch). Modified: sandbox/trunk/setuptools/EasyInstall.txt ============================================================================== --- sandbox/trunk/setuptools/EasyInstall.txt (original) +++ sandbox/trunk/setuptools/EasyInstall.txt Thu Nov 3 00:57:44 2005 @@ -42,7 +42,9 @@ Download `ez_setup.py `_, and run it; this will download and install the appropriate ``setuptools`` egg for -your Python version. +your Python version. (You will need at least Python 2.3.5, or if you are on a +64-bit platform, Python 2.4.) + You may receive a message telling you about an obsolete version of setuptools being present; if so, you must be sure to delete it entirely, along @@ -599,7 +601,7 @@ installed package to work, like manually adding it to ``PYTHONPATH`` or to ``sys.path`` at runtime. -``--index-url=URL, -u URL`` (New in 0.4a1) +``--index-url=URL, -i URL`` (New in 0.4a1) Specifies the base URL of the Python Package Index. The default is http://www.python.org/pypi if not specified. When a package is requested that is not locally available or linked from a ``--find-links`` download @@ -863,6 +865,9 @@ * There's no automatic retry for borked Sourceforge mirrors, which can easily time out or be missing a file. +0.6a7 + * Fixed not being able to install Windows script wrappers using Python 2.3 + 0.6a6 * Added support for "traditional" PYTHONPATH-based non-root installation, and also the convenient ``virtual-python.py`` script, based on a contribution Modified: sandbox/trunk/setuptools/pkg_resources.txt ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.txt (original) +++ sandbox/trunk/setuptools/pkg_resources.txt Thu Nov 3 00:57:44 2005 @@ -1491,7 +1491,7 @@ 0.6a6 * Activated distributions are now inserted in ``sys.path`` (and the working set) just before the directory that contains them, instead of at the end. - This allows e.g. eggs in ``site-packages`` to override unmanged modules in + This allows e.g. eggs in ``site-packages`` to override unmanaged modules in the same location, and allows eggs found earlier on ``sys.path`` to override ones found later. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Thu Nov 3 00:57:44 2005 @@ -3,8 +3,9 @@ ====================================================== ``setuptools`` is a collection of enhancements to the Python ``distutils`` -(for Python 2.3 and up) that allow you to more easily build and distribute -Python packages, especially ones that have dependencies on other packages. +(for Python 2.3.5 and up on most platforms; 64-bit platforms require a minimum +of Python 2.4) that allow you to more easily build and distribute Python +packages, especially ones that have dependencies on other packages. Packages built and distributed using ``setuptools`` look to the user like ordinary Python packages based on the ``distutils``. Your users don't need to @@ -88,6 +89,8 @@ To install setuptools, first download `ez_setup.py`_ and run it; this will automatically download and install the appropriate egg for your Python version. +(You will need at least Python 2.3.5, or if you are on a 64-bit platform, +Python 2.4.) .. _ez_setup.py: `bootstrap module`_ From phillip.eby at python.org Thu Nov 3 00:58:21 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 00:58:21 +0100 (CET) Subject: [Python-checkins] commit of r41379 - sandbox/trunk/setuptools Message-ID: <20051102235821.C21B21E4009@bag.python.org> Author: phillip.eby Date: Thu Nov 3 00:58:21 2005 New Revision: 41379 Modified: sandbox/trunk/setuptools/ez_setup.py Log: Oops, this was part of 0.6a7 too. Modified: sandbox/trunk/setuptools/ez_setup.py ============================================================================== --- sandbox/trunk/setuptools/ez_setup.py (original) +++ sandbox/trunk/setuptools/ez_setup.py Thu Nov 3 00:58:21 2005 @@ -14,7 +14,7 @@ This file can also be run as a script to install or upgrade setuptools. """ import sys -DEFAULT_VERSION = "0.6a6" +DEFAULT_VERSION = "0.6a7" DEFAULT_URL = "http://cheeseshop.python.org/packages/%s/s/setuptools/" % sys.version[:3] md5_data = { @@ -30,6 +30,10 @@ 'setuptools-0.6a4-py2.4.egg': '7f33c3ac2ef1296f0ab4fac1de4767d8', 'setuptools-0.6a5-py2.3.egg': '748408389c49bcd2d84f6ae0b01695b1', 'setuptools-0.6a5-py2.4.egg': '999bacde623f4284bfb3ea77941d2627', + 'setuptools-0.6a6-py2.3.egg': '7858139f06ed0600b0d9383f36aca24c', + 'setuptools-0.6a6-py2.4.egg': 'c10d20d29acebce0dc76219dc578d058', + 'setuptools-0.6a7-py2.3.egg': 'cfc4125ddb95c07f9500adc5d6abef6f', + 'setuptools-0.6a7-py2.4.egg': 'c6d62dab4461f71aed943caea89e6f20', } import sys, os From phillip.eby at python.org Thu Nov 3 03:24:50 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 03:24:50 +0100 (CET) Subject: [Python-checkins] commit of r41380 - in sandbox/trunk/setuptools: . setuptools/tests Message-ID: <20051103022450.2F42B1E4002@bag.python.org> Author: phillip.eby Date: Thu Nov 3 03:24:49 2005 New Revision: 41380 Modified: sandbox/trunk/setuptools/pkg_resources.py sandbox/trunk/setuptools/pkg_resources.txt sandbox/trunk/setuptools/setuptools/tests/test_resources.py Log: Fixed a problem with ``WorkingSet.resolve()`` that prevented version conflicts from being detected at runtime. (As reported by Ian Bicking.) Modified: sandbox/trunk/setuptools/pkg_resources.py ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.py (original) +++ sandbox/trunk/setuptools/pkg_resources.py Thu Nov 3 03:24:49 2005 @@ -482,7 +482,7 @@ if dist is None: raise DistributionNotFound(req) # XXX put more info here to_activate.append(dist) - elif dist not in req: + if dist not in req: # Oops, the "best" so far conflicts with a dependency raise VersionConflict(dist,req) # XXX put more info here requirements.extend(dist.requires(req.extras)[::-1]) Modified: sandbox/trunk/setuptools/pkg_resources.txt ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.txt (original) +++ sandbox/trunk/setuptools/pkg_resources.txt Thu Nov 3 03:24:49 2005 @@ -1488,6 +1488,10 @@ Release Notes/Change History ---------------------------- +0.6a8 + * Fixed a problem with ``WorkingSet.resolve()`` that prevented version + conflicts from being detected at runtime. + 0.6a6 * Activated distributions are now inserted in ``sys.path`` (and the working set) just before the directory that contains them, instead of at the end. Modified: sandbox/trunk/setuptools/setuptools/tests/test_resources.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/tests/test_resources.py (original) +++ sandbox/trunk/setuptools/setuptools/tests/test_resources.py Thu Nov 3 03:24:49 2005 @@ -125,7 +125,6 @@ ad = Environment([]); ws = WorkingSet([]) # Resolving no requirements -> nothing to install self.assertEqual( list(ws.resolve([],ad)), [] ) - # Request something not in the collection -> DistributionNotFound self.assertRaises( DistributionNotFound, ws.resolve, parse_requirements("Foo"), ad @@ -141,6 +140,8 @@ targets = list(ws.resolve(parse_requirements("Foo"), ad)) self.assertEqual(targets, [Foo]) map(ws.add,targets) + self.assertRaises(VersionConflict, ws.resolve, + parse_requirements("Foo==0.9"), ad) ws = WorkingSet([]) # reset # Request an extra that causes an unresolved dependency for "Baz" @@ -157,11 +158,10 @@ list(ws.resolve(parse_requirements("Foo[bar]"), ad)), [Foo,Baz] ) # Requests for conflicting versions produce VersionConflict - self.assertRaises( - VersionConflict, + self.assertRaises( VersionConflict, ws.resolve, parse_requirements("Foo==1.2\nFoo!=1.2"), ad ) - + def testDistroDependsOptions(self): d = self.distRequires(""" Twisted>=1.5 From phillip.eby at python.org Thu Nov 3 03:34:26 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 03:34:26 +0100 (CET) Subject: [Python-checkins] commit of r41381 - in sandbox/trunk/setuptools: . setuptools Message-ID: <20051103023426.0017D1E4002@bag.python.org> Author: phillip.eby Date: Thu Nov 3 03:34:26 2005 New Revision: 41381 Modified: sandbox/trunk/setuptools/ez_setup.py sandbox/trunk/setuptools/setup.cfg sandbox/trunk/setuptools/setup.py sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/__init__.py Log: Switch setuptools to use 'dev-rNNNN' version tags by default, and configure so that people can use 'ez_setup.py setuptools==dev' to fetch the latest in-development version. Modified: sandbox/trunk/setuptools/ez_setup.py ============================================================================== --- sandbox/trunk/setuptools/ez_setup.py (original) +++ sandbox/trunk/setuptools/ez_setup.py Thu Nov 3 03:34:26 2005 @@ -14,7 +14,7 @@ This file can also be run as a script to install or upgrade setuptools. """ import sys -DEFAULT_VERSION = "0.6a7" +DEFAULT_VERSION = "0.6a8" DEFAULT_URL = "http://cheeseshop.python.org/packages/%s/s/setuptools/" % sys.version[:3] md5_data = { Modified: sandbox/trunk/setuptools/setup.cfg ============================================================================== --- sandbox/trunk/setuptools/setup.cfg (original) +++ sandbox/trunk/setuptools/setup.cfg Thu Nov 3 03:34:26 2005 @@ -3,3 +3,6 @@ develop = develop source = register sdist binary +[egg_info] +tag_build = dev +tag_svn_revision = 1 Modified: sandbox/trunk/setuptools/setup.py ============================================================================== --- sandbox/trunk/setuptools/setup.py (original) +++ sandbox/trunk/setuptools/setup.py Thu Nov 3 03:34:26 2005 @@ -15,7 +15,7 @@ f.close() return ''.join(lines) -VERSION = "0.6a7" +VERSION = "0.6a8" from setuptools import setup, find_packages import sys from setuptools.command import __all__ as SETUP_COMMANDS Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Thu Nov 3 03:34:26 2005 @@ -62,6 +62,10 @@ * Create extensible applications and frameworks that automatically discover extensions, using simple "entry points" declared in a project's setup script. +In addition to the PyPI downloads, the development version of ``setuptools`` +is available from the `Python SVN sandbox`_. + +.. _Python SVN sandbox: http://svn.python.org/projects/sandbox/trunk/setuptools/#egg=setuptools-dev .. contents:: **Table of Contents** @@ -98,13 +102,13 @@ setuptools being present; if so, you must be sure to delete it entirely, along with the old ``pkg_resources`` module if it's present on ``sys.path``. -To get the in-development version of setuptools, run:: +To get the in-development version of setuptools, first install a stable version +using the instructions above. Then run:: - cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/python login - cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/python \ - co -d setuptools python/nondist/sandbox/setuptools + ez_setup.py setuptools==dev -You can then install it using the usual "setup.py install" incantation. +This will download and install the latest development (i.e. unstable) version +of setuptools from the Python Subversion sandbox. (Note that ``setuptools`` *must* be installed as an egg directory; it will not operate correctly otherwise. If you are unable to install to a valid Modified: sandbox/trunk/setuptools/setuptools/__init__.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/__init__.py (original) +++ sandbox/trunk/setuptools/setuptools/__init__.py Thu Nov 3 03:34:26 2005 @@ -8,7 +8,7 @@ from distutils.util import convert_path import os.path -__version__ = '0.6a7' +__version__ = '0.6a8' __all__ = [ 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require', 'find_packages' From phillip.eby at python.org Thu Nov 3 04:28:45 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 04:28:45 +0100 (CET) Subject: [Python-checkins] commit of r41382 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051103032845.6E3C21E4002@bag.python.org> Author: phillip.eby Date: Thu Nov 3 04:28:44 2005 New Revision: 41382 Modified: sandbox/trunk/setuptools/EasyInstall.txt sandbox/trunk/setuptools/setuptools/command/easy_install.py Log: Fix some Subversion-related problems reported by John J. Lee: * Fixed not installing dependencies for some packages fetched via Subversion * Fixed dependency installation with ``--always-copy`` not using the same dependency resolution procedure as other operations. * Fixed not fully removing temporary directories on Windows, if a Subversion checkout left read-only files behind Modified: sandbox/trunk/setuptools/EasyInstall.txt ============================================================================== --- sandbox/trunk/setuptools/EasyInstall.txt (original) +++ sandbox/trunk/setuptools/EasyInstall.txt Thu Nov 3 04:28:44 2005 @@ -865,6 +865,15 @@ * There's no automatic retry for borked Sourceforge mirrors, which can easily time out or be missing a file. +0.6a8 + * Fixed not installing dependencies for some packages fetched via Subversion + + * Fixed dependency installation with ``--always-copy`` not using the same + dependency resolution procedure as other operations. + + * Fixed not fully removing temporary directories on Windows, if a Subversion + checkout left read-only files behind + 0.6a7 * Fixed not being able to install Windows script wrappers using Python 2.3 Modified: sandbox/trunk/setuptools/setuptools/command/easy_install.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/easy_install.py (original) +++ sandbox/trunk/setuptools/setuptools/command/easy_install.py Thu Nov 3 04:28:44 2005 @@ -10,7 +10,7 @@ __ http://peak.telecommunity.com/DevCenter/EasyInstall """ -import sys, os.path, zipimport, shutil, tempfile, zipfile, re +import sys, os.path, zipimport, shutil, tempfile, zipfile, re, stat from glob import glob from setuptools import Command from setuptools.sandbox import run_setup @@ -318,7 +318,7 @@ finally: if os.path.exists(tmpdir): - shutil.rmtree(tmpdir) + smart_rmtree(tmpdir) @@ -374,27 +374,22 @@ self.install_egg_scripts(dist) self.installed_projects[dist.key] = dist log.warn(self.installation_report(dist, *info)) - - if requirement is None: - requirement = dist.as_requirement() - - if dist not in requirement: - return - - if deps or self.always_copy: - log.info("Processing dependencies for %s", requirement) - else: - return - - if self.always_copy: - # Recursively install *all* dependencies - for req in dist.requires(requirement.extras): - if req.key not in self.installed_projects: - self.easy_install(req) + if not deps and not self.always_copy: return + elif requirement is not None and dist.key != requirement.key: + log.warn("Skipping dependencies for %s", dist) + return # XXX this is not the distribution we were looking for + + if requirement is None or dist not in requirement: + # if we wound up with a different version, resolve what we've got + distreq = dist.as_requirement() + requirement = Requirement( + distreq.project_name, distreq.specs, requirement.extras + ) + log.info("Processing dependencies for %s", requirement) try: - WorkingSet([]).resolve( + distros = WorkingSet([]).resolve( [requirement], self.local_index, self.easy_install ) except DistributionNotFound, e: @@ -407,6 +402,11 @@ % e.args ) + if self.always_copy: + # Force all the relevant distros to be copied or activated + for dist in distros: + if dist.key not in self.installed_projects: + self.easy_install(dist.as_requirement()) def should_unzip(self, dist): if self.zip_ok is not None: @@ -824,7 +824,7 @@ args = list(args) if self.verbose>2: - v = 'v' * self.verbose - 1 + v = 'v' * (self.verbose - 1) args.insert(0,'-'+v) elif self.verbose<2: args.insert(0,'-q') @@ -1187,3 +1187,44 @@ +def smart_rmtree(path): + """Recursively delete a directory tree.""" + cmdtuples = [] + shutil._build_cmdtuple(path, cmdtuples) + for func, arg in cmdtuples: + try: + func(arg) + except OSError: + if os.name=='nt' and func is not os.rmdir: + os.chmod(arg, stat.S_IWRITE) + try: + func(arg) + continue + except OSError: + pass + exc = sys.exc_info() + raise exc[0], (exc[1][0], exc[1][1] + ' removing '+arg) + + + + + + + + + + + + + + + + + + + + + + + + From phillip.eby at python.org Thu Nov 3 04:52:06 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 04:52:06 +0100 (CET) Subject: [Python-checkins] commit of r41383 - sandbox/trunk/setuptools/setuptools/command Message-ID: <20051103035206.8322C1E4002@bag.python.org> Author: phillip.eby Date: Thu Nov 3 04:52:06 2005 New Revision: 41383 Modified: sandbox/trunk/setuptools/setuptools/command/easy_install.py Log: Handle non-requirement installs correctly for dependency processing (e.g. "setup.py install", or "easy_install somefile/someurl"). Modified: sandbox/trunk/setuptools/setuptools/command/easy_install.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/easy_install.py (original) +++ sandbox/trunk/setuptools/setuptools/command/easy_install.py Thu Nov 3 04:52:06 2005 @@ -379,10 +379,10 @@ elif requirement is not None and dist.key != requirement.key: log.warn("Skipping dependencies for %s", dist) return # XXX this is not the distribution we were looking for - - if requirement is None or dist not in requirement: + elif requirement is None or dist not in requirement: # if we wound up with a different version, resolve what we've got distreq = dist.as_requirement() + requirement = requirement or distreq requirement = Requirement( distreq.project_name, distreq.specs, requirement.extras ) From phillip.eby at python.org Thu Nov 3 04:55:43 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 3 Nov 2005 04:55:43 +0100 (CET) Subject: [Python-checkins] commit of r41384 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051103035543.387E51E4002@bag.python.org> Author: phillip.eby Date: Thu Nov 3 04:55:42 2005 New Revision: 41384 Modified: sandbox/trunk/setuptools/EasyInstall.txt sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/build_ext.py Log: Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. Modified: sandbox/trunk/setuptools/EasyInstall.txt ============================================================================== --- sandbox/trunk/setuptools/EasyInstall.txt (original) +++ sandbox/trunk/setuptools/EasyInstall.txt Thu Nov 3 04:55:42 2005 @@ -874,6 +874,9 @@ * Fixed not fully removing temporary directories on Windows, if a Subversion checkout left read-only files behind + * Fixed some problems building extensions when Pyrex was installed, especially + with Python 2.4 and/or packages using SWIG. + 0.6a7 * Fixed not being able to install Windows script wrappers using Python 2.3 Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Thu Nov 3 04:55:42 2005 @@ -1873,6 +1873,10 @@ Release Notes/Change History ---------------------------- +0.6a8 + * Fixed some problems building extensions when Pyrex was installed, especially + with Python 2.4 and/or packages using SWIG. + 0.6a5 * Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests. Modified: sandbox/trunk/setuptools/setuptools/command/build_ext.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/build_ext.py (original) +++ sandbox/trunk/setuptools/setuptools/command/build_ext.py Thu Nov 3 04:55:42 2005 @@ -1,11 +1,11 @@ -# Attempt to use Pyrex for building extensions, if available - +from distutils.command.build_ext import build_ext as _du_build_ext try: + # Attempt to use Pyrex for building extensions, if available from Pyrex.Distutils.build_ext import build_ext as _build_ext except ImportError: - from distutils.command.build_ext import build_ext as _build_ext + _build_ext = _du_build_ext -import os +import os, sys from distutils.file_util import copy_file class build_ext(_build_ext): @@ -39,3 +39,44 @@ dry_run=self.dry_run ) + if _build_ext is not _du_build_ext: + # Workaround for problems using some Pyrex versions w/SWIG and/or 2.4 + def swig_sources(self, sources, *otherargs): + # first do any Pyrex processing + sources = _build_ext.swig_sources(self, sources) or sources + # Then do any actual SWIG stuff on the remainder + return _du_build_ext.swig_sources(self, sources, *otherargs) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From neal.norwitz at python.org Thu Nov 3 05:35:39 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 3 Nov 2005 05:35:39 +0100 (CET) Subject: [Python-checkins] commit of r41385 - python/branches/release24-maint/Doc/lib Message-ID: <20051103043539.E0B4D1E4002@bag.python.org> Author: neal.norwitz Date: Thu Nov 3 05:35:39 2005 New Revision: 41385 Modified: python/branches/release24-maint/Doc/lib/libsets.tex Log: Fix SF #1346026, doc typo Modified: python/branches/release24-maint/Doc/lib/libsets.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/libsets.tex (original) +++ python/branches/release24-maint/Doc/lib/libsets.tex Thu Nov 3 05:35:39 2005 @@ -170,7 +170,7 @@ Also note, the module also includes a \method{union_update()} method which is an alias for \method{update()}. The method is included for backwards compatibility. Programmers should prefer the -\method{update()} method because it the one supported by the builtin +\method{update()} method because it is supported by the builtin \class{set()} and \class{frozenset()} types. \subsection{Example \label{set-example}} From neal.norwitz at python.org Thu Nov 3 05:39:10 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 3 Nov 2005 05:39:10 +0100 (CET) Subject: [Python-checkins] commit of r41386 - python/trunk/Doc/lib Message-ID: <20051103043910.9B2791E4002@bag.python.org> Author: neal.norwitz Date: Thu Nov 3 05:39:09 2005 New Revision: 41386 Modified: python/trunk/Doc/lib/libsets.tex Log: Make consistent with 2.4 Modified: python/trunk/Doc/lib/libsets.tex ============================================================================== --- python/trunk/Doc/lib/libsets.tex (original) +++ python/trunk/Doc/lib/libsets.tex Thu Nov 3 05:39:09 2005 @@ -170,7 +170,7 @@ Also note, the module also includes a \method{union_update()} method which is an alias for \method{update()}. The method is included for backwards compatibility. Programmers should prefer the -\method{update()} method because it is the one supported by the builtin +\method{update()} method because it is supported by the builtin \class{set()} and \class{frozenset()} types. \subsection{Example \label{set-example}} From neal.norwitz at python.org Thu Nov 3 05:39:47 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 3 Nov 2005 05:39:47 +0100 (CET) Subject: [Python-checkins] commit of r41387 - python/branches/release24-maint/Doc/lib Message-ID: <20051103043947.533E61E4002@bag.python.org> Author: neal.norwitz Date: Thu Nov 3 05:39:46 2005 New Revision: 41387 Modified: python/branches/release24-maint/Doc/lib/libsets.tex Log: Make consistent with HEAD (some change was not backported) Modified: python/branches/release24-maint/Doc/lib/libsets.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/libsets.tex (original) +++ python/branches/release24-maint/Doc/lib/libsets.tex Thu Nov 3 05:39:46 2005 @@ -254,7 +254,7 @@ \item The built-in versions have more space efficient pickles. \item The built-in versions do not have a \method{union_update()} method. Instead, use the \method{update()} method which is equivalent. -\item The built-in versions do not have a \method{_repr(sort=True)} method. +\item The built-in versions do not have a \method{_repr(sorted=True)} method. Instead, use the built-in \function{repr()} and \function{sorted()} functions: \code{repr(sorted(s))}. \item The built-in version does not have a protocol for automatic conversion From neal.norwitz at python.org Thu Nov 3 06:00:26 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 3 Nov 2005 06:00:26 +0100 (CET) Subject: [Python-checkins] commit of r41388 - in python/trunk: Lib/test Misc Modules Message-ID: <20051103050026.8CB871E401F@bag.python.org> Author: neal.norwitz Date: Thu Nov 3 06:00:25 2005 New Revision: 41388 Modified: python/trunk/Lib/test/test_poll.py python/trunk/Misc/NEWS python/trunk/Modules/selectmodule.c Log: Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint Need to check return result of PyInt_AsLong() Will backport. Modified: python/trunk/Lib/test/test_poll.py ============================================================================== --- python/trunk/Lib/test/test_poll.py (original) +++ python/trunk/Lib/test/test_poll.py Thu Nov 3 06:00:25 2005 @@ -168,5 +168,25 @@ p.close() print 'Poll test 2 complete' +def test_poll3(): + # test int overflow + print 'Running poll test 3' + pollster = select.poll() + pollster.register(1) + + try: + pollster.poll(1L << 64) + except OverflowError: + pass + else: + print 'Expected OverflowError with excessive timeout' + + x = 2 + 3 + if x != 5: + print 'Overflow must have occurred' + print 'Poll test 3 complete' + + test_poll1() test_poll2() +test_poll3() Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Nov 3 06:00:25 2005 @@ -177,6 +177,8 @@ Extension Modules ----------------- +- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint + - Bug #1344508, Fix UNIX mmap leaking file descriptors - Patch #1338314, Bug #1336623: fix tarfile so it can extract Modified: python/trunk/Modules/selectmodule.c ============================================================================== --- python/trunk/Modules/selectmodule.c (original) +++ python/trunk/Modules/selectmodule.c Thu Nov 3 06:00:25 2005 @@ -470,6 +470,8 @@ return NULL; timeout = PyInt_AsLong(tout); Py_DECREF(tout); + if (timeout == -1 && PyErr_Occurred()) + return NULL; } /* Ensure the ufd array is up to date */ From neal.norwitz at python.org Thu Nov 3 06:07:16 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 3 Nov 2005 06:07:16 +0100 (CET) Subject: [Python-checkins] commit of r41389 - python/trunk/Lib/test/output Message-ID: <20051103050716.26AAF1E4002@bag.python.org> Author: neal.norwitz Date: Thu Nov 3 06:07:15 2005 New Revision: 41389 Modified: python/trunk/Lib/test/output/test_poll Log: Oops, forgot to add the output file to 41388. Modified: python/trunk/Lib/test/output/test_poll ============================================================================== --- python/trunk/Lib/test/output/test_poll (original) +++ python/trunk/Lib/test/output/test_poll Thu Nov 3 06:07:15 2005 @@ -15,3 +15,5 @@ Poll test 1 complete Running poll test 2 Poll test 2 complete +Running poll test 3 +Poll test 3 complete From neal.norwitz at python.org Thu Nov 3 06:11:19 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 3 Nov 2005 06:11:19 +0100 (CET) Subject: [Python-checkins] commit of r41390 - in python/branches/release24-maint: Lib/test Lib/test/output Misc Modules Message-ID: <20051103051119.C4A581E4029@bag.python.org> Author: neal.norwitz Date: Thu Nov 3 06:11:17 2005 New Revision: 41390 Modified: python/branches/release24-maint/Lib/test/output/test_poll python/branches/release24-maint/Lib/test/test_poll.py python/branches/release24-maint/Misc/NEWS python/branches/release24-maint/Modules/selectmodule.c Log: Backport (with output/test_poll): Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint Need to check return result of PyInt_AsLong() Modified: python/branches/release24-maint/Lib/test/output/test_poll ============================================================================== --- python/branches/release24-maint/Lib/test/output/test_poll (original) +++ python/branches/release24-maint/Lib/test/output/test_poll Thu Nov 3 06:11:17 2005 @@ -15,3 +15,5 @@ Poll test 1 complete Running poll test 2 Poll test 2 complete +Running poll test 3 +Poll test 3 complete Modified: python/branches/release24-maint/Lib/test/test_poll.py ============================================================================== --- python/branches/release24-maint/Lib/test/test_poll.py (original) +++ python/branches/release24-maint/Lib/test/test_poll.py Thu Nov 3 06:11:17 2005 @@ -168,5 +168,25 @@ p.close() print 'Poll test 2 complete' +def test_poll3(): + # test int overflow + print 'Running poll test 3' + pollster = select.poll() + pollster.register(1) + + try: + pollster.poll(1L << 64) + except OverflowError: + pass + else: + print 'Expected OverflowError with excessive timeout' + + x = 2 + 3 + if x != 5: + print 'Overflow must have occurred' + print 'Poll test 3 complete' + + test_poll1() test_poll2() +test_poll3() Modified: python/branches/release24-maint/Misc/NEWS ============================================================================== --- python/branches/release24-maint/Misc/NEWS (original) +++ python/branches/release24-maint/Misc/NEWS Thu Nov 3 06:11:17 2005 @@ -151,6 +151,8 @@ Extension Modules ----------------- +- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint + - Fix memory leak in posix.access(). - Patch #1213831: Fix typo in unicodedata._getcode. Modified: python/branches/release24-maint/Modules/selectmodule.c ============================================================================== --- python/branches/release24-maint/Modules/selectmodule.c (original) +++ python/branches/release24-maint/Modules/selectmodule.c Thu Nov 3 06:11:17 2005 @@ -470,6 +470,8 @@ return NULL; timeout = PyInt_AsLong(tout); Py_DECREF(tout); + if (timeout == -1 && PyErr_Occurred()) + return NULL; } /* Ensure the ufd array is up to date */ From phillip.eby at python.org Fri Nov 4 02:53:27 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 4 Nov 2005 02:53:27 +0100 (CET) Subject: [Python-checkins] commit of r41391 - sandbox/trunk/setuptools Message-ID: <20051104015327.12CDF1E4002@bag.python.org> Author: phillip.eby Date: Fri Nov 4 02:53:25 2005 New Revision: 41391 Modified: sandbox/trunk/setuptools/pkg_resources.py sandbox/trunk/setuptools/pkg_resources.txt Log: * Improved runtime conflict warning message to identify a line in the user's program, rather than flagging the ``warn()`` call in ``pkg_resources``. * Avoid giving runtime conflict warnings for namespace packages, even if they were declared by a different package than the one currently being activated. Modified: sandbox/trunk/setuptools/pkg_resources.py ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.py (original) +++ sandbox/trunk/setuptools/pkg_resources.py Fri Nov 4 02:53:25 2005 @@ -1932,17 +1932,30 @@ nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt')) for modname in self._get_metadata('top_level.txt'): - if modname not in sys.modules or modname in nsp: + if (modname not in sys.modules or modname in nsp + or modname in _namespace_packages + ): continue fn = getattr(sys.modules[modname], '__file__', None) if fn and fn.startswith(self.location): continue + level = 1 + g = globals() + try: + # find the first stack frame that is *not* code in + # the pkg_resources module, to use for the warning + while sys._getframe(level).f_globals is g: + level += 1 + except ValueError: + pass + from warnings import warn warn( "Module %s was already imported from %s, but %s is being added" - " to sys.path" % (modname, fn, self.location) + " to sys.path" % (modname, fn, self.location), + stacklevel = level+1 ) @@ -1953,19 +1966,6 @@ - - - - - - - - - - - - - def parse_requirements(strs): """Yield ``Requirement`` objects for each specification in `strs` Modified: sandbox/trunk/setuptools/pkg_resources.txt ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.txt (original) +++ sandbox/trunk/setuptools/pkg_resources.txt Fri Nov 4 02:53:25 2005 @@ -1492,6 +1492,12 @@ * Fixed a problem with ``WorkingSet.resolve()`` that prevented version conflicts from being detected at runtime. + * Improved runtime conflict warning message to identify a line in the user's + program, rather than flagging the ``warn()`` call in ``pkg_resources``. + + * Avoid giving runtime conflict warnings for namespace packages, even if they + were declared by a different package than the one currently being activated. + 0.6a6 * Activated distributions are now inserted in ``sys.path`` (and the working set) just before the directory that contains them, instead of at the end. From phillip.eby at python.org Fri Nov 4 03:29:35 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 4 Nov 2005 03:29:35 +0100 (CET) Subject: [Python-checkins] commit of r41392 - sandbox/trunk/setuptools Message-ID: <20051104022935.2617A1E4002@bag.python.org> Author: phillip.eby Date: Fri Nov 4 03:29:34 2005 New Revision: 41392 Modified: sandbox/trunk/setuptools/setuptools.txt Log: Document best practices for managing continuous releases with Subversion, #egg links, --tag-svn-revision, etc., to reflect the community experience with the tools to date. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 4 03:29:34 2005 @@ -1110,6 +1110,71 @@ in order to check out the in-development version of ``projectname``. +Managing "Continuous Releases" Using Subversion +----------------------------------------------- + +If you expect your users to track in-development versions of your project via +Subversion, there are a few additional steps you should take to ensure that +things work smoothly with EasyInstall. First, you should add the following +to your project's ``setup.cfg`` file:: + + [egg_info] + tag_build = .dev + tag_svn_revision = 1 + +This will tell ``setuptools`` to generate package version numbers like +``1.0a1.dev-r1263``, which will be considered to be an *older* release than +``1.0a1``. Thus, when you actually release ``1.0a1``, the entire egg +infrastructure (including ``setuptools``, ``pkg_resources`` and EasyInstall) +will know that ``1.0a1`` supersedes any interim snapshots from Subversion, and +handle upgrades accordingly. + +Note, by the way, that this means that you need to remove these settings from +``setup.cfg`` when you make an official release. This is easy to do if you +are developing on the trunk and using tags or branches for your releases - just +make the change after branching or tagging the release, so the trunk will still +produce development snapshots. + +Also notice that this procedure means that the project version number you +specify in ``setup.py`` should always be the *next* version of your software, +not the last released version. + +(Alternately, you can leave out the ``tag_build=.dev``, and always use the +*last* release as a version number, so that your post-1.0 builds are labelled +``1.0-r1263``, indicating a post-1.0 patchlevel. Most projects so far, +however, seem to prefer to think of their project as being a future version +still under development, rather than a past version being patched. It is of +course possible for a single project to have both situations, using +post-release numbering on release branches, and pre-release numbering on the +trunk. But you don't have to make things this complex if you don't want to.) + +Commonly, projects releasing code from Subversion will include a PyPI link to +their checkout URL (as described in the previous section) with an +``#egg=projectname-dev`` suffix. This allows users to request EasyInstall +to download ``projectname==dev`` in order to get the latest in-development +code. Note that if your project depends on such in-progress code, you may wish +to specify your ``install_requires`` (or other requirements) to include +``==dev``, e.g.:: + + install_requires = ["OtherProject>=0.2a1.dev-r143,==dev"] + +The above example says, "I really want at least this particular development +revision number, but feel free to follow and use an ``#egg=OtherProject-dev`` +link if you find one". This avoids the need to have actual source or binary +distribution snapshots of in-development code available, just to be able to +depend on the latest and greatest a project has to offer. + +A final note for Subversion development: if you are using SVN revision tags +as described in this section, it's a good idea to run ``setup.py develop`` +after each Subversion checkin or update, because your project's version number +will be changing, and your script wrappers need to be updated accordingly. +Also, if the project's requirements have changed, the ``develop`` command will +take care of fetching the updated dependencies, building changed extensions, +etc. You should also inform your users of the need to run this command, if +they are working from a Subversion checkout, rather than using EasyInstall to +periodically fetch the latest version. + + Distributing Extensions compiled with Pyrex ------------------------------------------- From phillip.eby at python.org Fri Nov 4 04:06:54 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 4 Nov 2005 04:06:54 +0100 (CET) Subject: [Python-checkins] commit of r41393 - sandbox/trunk/setuptools/setuptools/command Message-ID: <20051104030654.403121E400F@bag.python.org> Author: phillip.eby Date: Fri Nov 4 04:06:52 2005 New Revision: 41393 Modified: sandbox/trunk/setuptools/setuptools/command/install.py Log: Workaround for broken DISTUTILS_DEBUG output. Modified: sandbox/trunk/setuptools/setuptools/command/install.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/install.py (original) +++ sandbox/trunk/setuptools/setuptools/command/install.py Fri Nov 4 04:06:52 2005 @@ -13,6 +13,7 @@ def initialize_options(self): _install.initialize_options(self) self.old_and_unmanageable = None + self.no_compile = None # make DISTUTILS_DEBUG work right! def handle_extra_path(self): # We always ignore extra_path, because we always install eggs @@ -38,7 +39,6 @@ ) cmd.ensure_finalized() # finalize before bdist_egg munges install cmd - self.run_command('bdist_egg') args = [self.distribution.get_command_obj('bdist_egg').egg_output] From phillip.eby at python.org Fri Nov 4 04:08:31 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 4 Nov 2005 04:08:31 +0100 (CET) Subject: [Python-checkins] commit of r41394 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051104030831.8A88E1E4002@bag.python.org> Author: phillip.eby Date: Fri Nov 4 04:08:30 2005 New Revision: 41394 Modified: sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/develop.py Log: Made ``develop`` command accept all the same options as ``easy_install``, and use the ``easy_install`` command's configuration settings as defaults. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 4 04:08:30 2005 @@ -1376,13 +1376,13 @@ script (e.g. changing an entry point definition) require you to re-run the ``develop`` or ``test`` commands to keep the distribution updated. -Here are the options that the ``develop`` command accepts. Note that they -affect the project's dependencies as well as the project itself, so if you have -dependencies that need to be installed and you use ``--exclude-scripts`` (for -example), the dependencies' scripts will not be installed either! For this -reason, you may want to use EasyInstall to install the project's dependencies -before using the ``develop`` command, if you need finer control over the -installation options for dependencies. +Here are some of the options that the ``develop`` command accepts. Note that +they affect the project's dependencies as well as the project itself, so if you +have dependencies that need to be installed and you use ``--exclude-scripts`` +(for example), the dependencies' scripts will not be installed either! For +this reason, you may want to use EasyInstall to install the project's +dependencies before using the ``develop`` command, if you need finer control +over the installation options for dependencies. ``--uninstall, -u`` Un-deploy the current project. You may use the ``--install-dir`` or ``-d`` @@ -1442,6 +1442,12 @@ a requirement can be met using a distribution that is already available in a directory on ``sys.path``, it will not be copied to the staging area. +In addition to the above options, the ``develop`` command also accepts all of +the same options accepted by ``easy_install``. If you've configured any +``easy_install`` settings in your ``setup.cfg`` (or other distutils config +files), the ``develop`` command will use them as defaults, unless you override +them in a ``[develop]`` section or on the command line. + .. _egg_info: @@ -1942,6 +1948,9 @@ * Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. + * Made ``develop`` command accept all the same options as ``easy_install``, + and use the ``easy_install`` command's configuration settings as defaults. + 0.6a5 * Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests. Modified: sandbox/trunk/setuptools/setuptools/command/develop.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/develop.py (original) +++ sandbox/trunk/setuptools/setuptools/command/develop.py Fri Nov 4 04:08:30 2005 @@ -9,23 +9,14 @@ description = "install package in 'development mode'" - user_options = [ - ("install-dir=", "d", "link package from DIR"), - ("script-dir=", "s", "create script wrappers in DIR"), - ("multi-version", "m", "make apps have to require() a version"), - ("exclude-scripts", "x", "Don't install scripts"), - ("always-copy", "a", "Copy all needed dependencies to install dir"), + user_options = easy_install.user_options + [ ("uninstall", "u", "Uninstall this source package"), ] - boolean_options = [ - 'multi-version', 'exclude-scripts', 'always-copy', 'uninstall' - ] + boolean_options = easy_install.boolean_options + ['uninstall'] command_consumes_arguments = False # override base - negative_opt = {} - def run(self): if self.uninstall: self.multi_version = True @@ -37,11 +28,21 @@ self.uninstall = None easy_install.initialize_options(self) + # Pull in any easy_install configuration options + self.distribution._set_command_options( + self, self.distribution.get_option_dict('easy_install') + ) + + + + + def finalize_options(self): ei = self.get_finalized_command("egg_info") self.args = [ei.egg_name] + easy_install.finalize_options(self) self.egg_link = os.path.join(self.install_dir, ei.egg_name+'.egg-link') self.egg_base = ei.egg_base @@ -57,13 +58,11 @@ def install_for_development(self): # Ensure metadata is up-to-date self.run_command('egg_info') - ei = self.get_finalized_command("egg_info") # Build extensions in-place self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') - # create an .egg-link in the installation dir, pointing to our egg log.info("Creating %s (link to %s)", self.egg_link, self.egg_base) if not self.dry_run: @@ -80,6 +79,7 @@ + def uninstall_link(self): if os.path.exists(self.egg_link): log.info("Removing %s (link to %s)", self.egg_link, self.egg_base) @@ -92,6 +92,7 @@ if not self.dry_run: self.update_pth(self.dist) # remove any .pth link to us if self.distribution.scripts: + # XXX should also check for entry point scripts! log.warn("Note: you must uninstall or replace scripts manually!") @@ -120,4 +121,3 @@ - From phillip.eby at python.org Fri Nov 4 04:18:49 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 4 Nov 2005 04:18:49 +0100 (CET) Subject: [Python-checkins] commit of r41395 - sandbox/trunk/setuptools/setuptools Message-ID: <20051104031849.7A0F71E4002@bag.python.org> Author: phillip.eby Date: Fri Nov 4 04:18:44 2005 New Revision: 41395 Modified: sandbox/trunk/setuptools/setuptools/package_index.py Log: Reduce the number of redundant host blocking warnings by not retrying the same previously-blocked URLs. Modified: sandbox/trunk/setuptools/setuptools/package_index.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/package_index.py (original) +++ sandbox/trunk/setuptools/setuptools/package_index.py Fri Nov 4 04:18:44 2005 @@ -163,6 +163,7 @@ return # don't need the actual page if not self.url_ok(url): + self.fetched_urls[url] = True return self.info("Reading %s", url) @@ -202,7 +203,6 @@ - def process_index(self,url,page): """Process the contents of a PyPI page""" From phillip.eby at python.org Fri Nov 4 06:38:25 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 4 Nov 2005 06:38:25 +0100 (CET) Subject: [Python-checkins] commit of r41396 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051104053825.0AB861E4002@bag.python.org> Author: phillip.eby Date: Fri Nov 4 06:38:22 2005 New Revision: 41396 Modified: sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/egg_info.py Log: Made ``egg_info --tag-svn-revision`` fall back to extracting the revision number from ``PKG-INFO`` in case it is being run on a source distribution of a snapshot taken from a Subversion-based project. That is, if a project builds an sdist with --tag-svn-revision in setup.cfg, then the built sdist will create binaries with the same version number as the checkout that was used to create the sdist. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 4 06:38:22 2005 @@ -1471,10 +1471,11 @@ Append NAME to the project's version string. Due to the way setuptools processes "pre-release" version suffixes beginning with the letters "a" through "e" (like "alpha", "beta", and "candidate"), you will usually want - to use a tag like "build" or "dev", as this will cause the version number + to use a tag like ".build" or ".dev", as this will cause the version number to be considered *lower* than the project's default version. (If you want to make the version number *higher* than the default version, you can - always leave off --tag-build and use one or both of the following options.) + always leave off --tag-build and then use one or both of the following + options.) ``--tag-svn-revision, -r`` If the current directory is a Subversion checkout (i.e. has a ``.svn`` @@ -1483,6 +1484,16 @@ modification to the current directory, as obtained from the ``svn info`` command. + If the current directory is not a Subversion checkout, the command will + look for a ``PKG-INFO`` file instead, and try to find the revision number + from that, by looking for a "-rNNNN" string at the end of the version + number. (This is so that building a package from a source distribution of + a Subversion snapshot will produce a binary with the correct version + number.) + + If there is no ``PKG-INFO`` file, or the version number contained therein + does not end with ``-r`` and a number, then ``-r0`` is used. + ``--tag-date, -d`` Add a date stamp of the form "-YYYYMMDD" (e.g. "-20050528") to the project's version number. @@ -1951,6 +1962,10 @@ * Made ``develop`` command accept all the same options as ``easy_install``, and use the ``easy_install`` command's configuration settings as defaults. + * Made ``egg_info --tag-svn-revision`` fall back to extracting the revision + number from ``PKG-INFO`` in case it is being run on a source distribution of + a snapshot taken from a Subversion-based project. + 0.6a5 * Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests. Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/egg_info.py Fri Nov 4 06:38:22 2005 @@ -160,7 +160,7 @@ continue # not part of the same svn tree, skip it for match in revre.finditer(data): revision = max(revision, int(match.group(1))) - return str(revision) + return str(revision or get_pkg_info_revision()) def write_pkg_info(cmd, basename, filename): log.info("writing %s", filename) @@ -226,17 +226,17 @@ cmd.write_or_delete_file('entry points', filename, data) - - - - - - - - - - - +def get_pkg_info_revision(): + # See if we can get a -r### off of PKG-INFO, in case this is an sdist of + # a subversion revision + # + if os.path.exists('PKG-INFO'): + f = open('PKG-INFO','rU') + for line in f: + match = re.match(r"Version:.*-r(\d+)\s*$", line) + if match: + return int(match.group(1)) + return 0 From marc-andre.lemburg at python.org Fri Nov 4 10:42:53 2005 From: marc-andre.lemburg at python.org (marc-andre.lemburg@python.org) Date: Fri, 4 Nov 2005 10:42:53 +0100 (CET) Subject: [Python-checkins] commit of r41397 - peps/trunk Message-ID: <20051104094253.680BD1E4002@bag.python.org> Author: marc-andre.lemburg Date: Fri Nov 4 10:42:51 2005 New Revision: 41397 Modified: peps/trunk/pep-0263.txt Log: Add examples section to help users reading the PEP due to a parser error which pointed them to the text. Modified: peps/trunk/pep-0263.txt ============================================================================== --- peps/trunk/pep-0263.txt (original) +++ peps/trunk/pep-0263.txt Fri Nov 4 10:42:51 2005 @@ -67,6 +67,75 @@ magic encoding comment, the only allowed encoding for the comment is 'utf-8'. Any other encoding will cause an error. +Examples + + These are some examples to clarify the different styles for + defining the source code encoding at the top of a Python source + file: + + 1. With interpreter binary and using Emacs style file encoding + comment: + + #!/usr/bin/python + # -*- coding: latin-1 -*- + import os, sys + ... + + #!/usr/bin/python + # -*- coding: iso-8859-15 -*- + import os, sys + ... + + #!/usr/bin/python + # -*- coding: ascii -*- + import os, sys + ... + + 2. Without interpreter line, using plain text: + + # This Python file uses the following encoding: utf-8 + import os, sys + ... + + 3. Text editors might have different ways of defining the file's + encoding, e.g. + + #!/usr/local/bin/python + # coding: latin-1 + import os, sys + ... + + 4. Without encoding comment, Python's parser will assume ASCII + text: + + #!/usr/local/bin/python + import os, sys + ... + + 3. Encoding comments which don't work: + + Missing "coding:" prefix: + + #!/usr/local/bin/python + # latin-1 + import os, sys + ... + + Encoding comment not on line 1 or 2: + + #!/usr/local/bin/python + # + # -*- coding: latin-1 -*- + import os, sys + ... + + Unsupported encoding: + + #!/usr/local/bin/python + # -*- coding: utf-42 -*- + import os, sys + ... + Concepts The PEP is based on the following concepts which would have to be From marc-andre.lemburg at python.org Fri Nov 4 10:45:14 2005 From: marc-andre.lemburg at python.org (marc-andre.lemburg@python.org) Date: Fri, 4 Nov 2005 10:45:14 +0100 (CET) Subject: [Python-checkins] commit of r41398 - peps/trunk Message-ID: <20051104094514.2EA0E1E4002@bag.python.org> Author: marc-andre.lemburg Date: Fri Nov 4 10:45:13 2005 New Revision: 41398 Modified: peps/trunk/pep-0263.txt Log: Correct numbering. Modified: peps/trunk/pep-0263.txt ============================================================================== --- peps/trunk/pep-0263.txt (original) +++ peps/trunk/pep-0263.txt Fri Nov 4 10:45:13 2005 @@ -112,7 +112,7 @@ import os, sys ... - 3. Encoding comments which don't work: + 5. Encoding comments which don't work: Missing "coding:" prefix: From ka-ping.yee at python.org Sat Nov 5 05:49:19 2005 From: ka-ping.yee at python.org (ka-ping.yee@python.org) Date: Sat, 5 Nov 2005 05:49:19 +0100 (CET) Subject: [Python-checkins] commit of r41399 - python/trunk/Lib Message-ID: <20051105044919.138151E4002@bag.python.org> Author: ka-ping.yee Date: Sat Nov 5 05:49:18 2005 New Revision: 41399 Modified: python/trunk/Lib/pydoc.py Log: Accept patch to resolve SF bug #651124. Modified: python/trunk/Lib/pydoc.py ============================================================================== --- python/trunk/Lib/pydoc.py (original) +++ python/trunk/Lib/pydoc.py Sat Nov 5 05:49:18 2005 @@ -1299,8 +1299,6 @@ return plainpager if not sys.stdin.isatty() or not sys.stdout.isatty(): return plainpager - if os.environ.get('TERM') in ('dumb', 'emacs'): - return plainpager if 'PAGER' in os.environ: if sys.platform == 'win32': # pipes completely broken in Windows return lambda text: tempfilepager(plain(text), os.environ['PAGER']) @@ -1308,6 +1306,8 @@ return lambda text: pipepager(plain(text), os.environ['PAGER']) else: return lambda text: pipepager(text, os.environ['PAGER']) + if os.environ.get('TERM') in ('dumb', 'emacs'): + return plainpager if sys.platform == 'win32' or sys.platform.startswith('os2'): return lambda text: tempfilepager(plain(text), 'more <') if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0: From ka-ping.yee at python.org Sat Nov 5 06:04:44 2005 From: ka-ping.yee at python.org (ka-ping.yee@python.org) Date: Sat, 5 Nov 2005 06:04:44 +0100 (CET) Subject: [Python-checkins] commit of r41400 - python/trunk/Lib Message-ID: <20051105050444.7676D1E4002@bag.python.org> Author: ka-ping.yee Date: Sat Nov 5 06:04:41 2005 New Revision: 41400 Modified: python/trunk/Lib/pydoc.py Log: Fix SF bug #417833 (pydoc HTTP reload failure) by removing from sys.modules all submodules of a the given module/package path when trying to reload a module. Modified: python/trunk/Lib/pydoc.py ============================================================================== --- python/trunk/Lib/pydoc.py (original) +++ python/trunk/Lib/pydoc.py Sat Nov 5 06:04:41 2005 @@ -254,20 +254,24 @@ package path is specified, the module at the end of the path is returned, not the package at the beginning. If the optional 'forceload' argument is 1, we reload the module from disk (unless it's a dynamic extension).""" - if forceload and path in sys.modules: - # This is the only way to be sure. Checking the mtime of the file - # isn't good enough (e.g. what if the module contains a class that - # inherits from another module that has changed?). - if path not in sys.builtin_module_names: - # Python never loads a dynamic extension a second time from the - # same path, even if the file is changed or missing. Deleting - # the entry in sys.modules doesn't help for dynamic extensions, - # so we're not even going to try to keep them up to date. - info = inspect.getmoduleinfo(sys.modules[path].__file__) - if info[3] != imp.C_EXTENSION: - cache[path] = sys.modules[path] # prevent module from clearing - del sys.modules[path] try: + # If forceload is 1 and the module has been previously loaded from + # disk, we always have to reload the module. Checking the file's + # mtime isn't good enough (e.g. the module could contain a class + # that inherits from another module that has changed). + if forceload and path in sys.modules: + if path not in sys.builtin_module_names: + # Avoid simply calling reload() because it leaves names in + # the currently loaded module lying around if they're not + # defined in the new source file. Instead, remove the + # module from sys.modules and re-import. Also remove any + # submodules because they won't appear in the newly loaded + # module's namespace if they're already in sys.modules. + subs = [m for m in sys.modules if m.startswith(path + '.')] + for key in [path] + subs: + # Prevent garbage collection. + cache[key] = sys.modules[key] + del sys.modules[key] module = __import__(path) except: # Did the error occur before or after the module was found? From phillip.eby at python.org Sat Nov 5 06:50:27 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Sat, 5 Nov 2005 06:50:27 +0100 (CET) Subject: [Python-checkins] commit of r41401 - in sandbox/trunk/setuptools: . setuptools setuptools/command Message-ID: <20051105055027.BB3F41E4002@bag.python.org> Author: phillip.eby Date: Sat Nov 5 06:50:26 2005 New Revision: 41401 Modified: sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/egg_info.py sandbox/trunk/setuptools/setuptools/dist.py Log: Fixed some problems with fresh checkouts of projects that don't include ``.egg-info/PKG-INFO`` under revision control and put the project's source code directly in the project directory. If such a package had any requirements that get processed before the ``egg_info`` command can be run, the setup scripts would fail with a "Missing 'Version:' header and/or PKG-INFO file" error, because the egg runtime interpreted the unbuilt metadata in a directory on ``sys.path`` (i.e. the current directory) as being a corrupted egg. Setuptools now monkeypatches the distribution metadata cache to pretend that the egg has valid version information, until it has a chance to make it actually be so (via the ``egg_info`` command). Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Sat Nov 5 06:50:26 2005 @@ -1966,6 +1966,17 @@ number from ``PKG-INFO`` in case it is being run on a source distribution of a snapshot taken from a Subversion-based project. + * Fixed some problems with fresh checkouts of projects that don't include + ``.egg-info/PKG-INFO`` under revision control and put the project's source + code directly in the project directory. If such a package had any + requirements that get processed before the ``egg_info`` command can be run, + the setup scripts would fail with a "Missing 'Version:' header and/or + PKG-INFO file" error, because the egg runtime interpreted the unbuilt + metadata in a directory on ``sys.path`` (i.e. the current directory) as + being a corrupted egg. Setuptools now monkeypatches the distribution + metadata cache to pretend that the egg has valid version information, until + it has a chance to make it actually be so (via the ``egg_info`` command). + 0.6a5 * Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests. Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/egg_info.py Sat Nov 5 06:50:26 2005 @@ -7,7 +7,7 @@ from setuptools import Command from distutils.errors import * from distutils import log -from pkg_resources import parse_requirements, safe_name, \ +from pkg_resources import parse_requirements, safe_name, parse_version, \ safe_version, yield_lines, EntryPoint, iter_entry_points class egg_info(Command): @@ -65,16 +65,16 @@ # self.distribution.metadata.version = self.egg_version - - - - - - - - - - + # If we bootstrapped around the lack of a PKG-INFO, as might be the + # case in a fresh checkout, make sure that any special tags get added + # to the version info + # + pd = self.distribution._patched_dist + if pd is not None and pd.key==self.egg_name.lower(): + pd._version = self.egg_version + pd._parsed_version = parse_version(self.egg_version) + self.distribution._patched_dist = None + Modified: sandbox/trunk/setuptools/setuptools/dist.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/dist.py (original) +++ sandbox/trunk/setuptools/setuptools/dist.py Sat Nov 5 06:50:26 2005 @@ -188,20 +188,20 @@ distribution for the included and excluded features. """ + _patched_dist = None - - - - - - - - - - - - - + def patch_missing_pkg_info(self, attrs): + # Fake up a replacement for the data that would normally come from + # PKG-INFO, but which might not yet be built if this is a fresh + # checkout. + # + if not attrs or 'name' not in attrs or 'version' not in attrs: + return + key = pkg_resources.safe_name(str(attrs['name'])).lower() + dist = pkg_resources.working_set.by_key.get(key) + if dist is not None and not dist.has_metadata('PKG-INFO'): + dist._version = pkg_resources.safe_version(str(attrs['version'])) + self._patched_dist = dist def __init__ (self, attrs=None): have_package_data = hasattr(self, "package_data") @@ -210,7 +210,7 @@ self.requires = [] # XXX self.features = {} self.dist_files = [] - + self.patch_missing_pkg_info(attrs) if attrs and 'setup_requires' in attrs: # Make sure we have any eggs needed to interpret 'attrs' self.fetch_build_eggs(attrs.pop('setup_requires')) From phillip.eby at python.org Sat Nov 5 17:32:40 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Sat, 5 Nov 2005 17:32:40 +0100 (CET) Subject: [Python-checkins] commit of r41402 - sandbox/trunk/setuptools/setuptools/command Message-ID: <20051105163240.9ED131E4002@bag.python.org> Author: phillip.eby Date: Sat Nov 5 17:32:36 2005 New Revision: 41402 Modified: sandbox/trunk/setuptools/setuptools/command/easy_install.py Log: Fix rmtree() brokenness with Python 2.4 by breaking down and copying shutil.rmtree from 2.4 directly into easy_install.py. Modified: sandbox/trunk/setuptools/setuptools/command/easy_install.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/easy_install.py (original) +++ sandbox/trunk/setuptools/setuptools/command/easy_install.py Sat Nov 5 17:32:36 2005 @@ -106,7 +106,7 @@ log.info("Deleting %s", filename) if not self.dry_run: if os.path.isdir(filename) and not os.path.islink(filename): - shutil.rmtree(filename) + rmtree(filename) else: os.unlink(filename) @@ -318,7 +318,7 @@ finally: if os.path.exists(tmpdir): - smart_rmtree(tmpdir) + rmtree(tmpdir) @@ -856,7 +856,7 @@ dist_dir) return eggs finally: - shutil.rmtree(dist_dir) + rmtree(dist_dir) log.set_verbosity(self.verbose) # restore our log verbosity def update_pth(self,dist): @@ -1173,7 +1173,6 @@ executable = os.path.normpath(sys.executable) return "#!%(executable)s%(options)s\n" % locals() - def main(argv=None, **kw): from setuptools import setup if argv is None: @@ -1181,46 +1180,47 @@ setup(script_args = ['-q','easy_install', '-v']+argv, **kw) +def auto_chmod(func, arg, exc): + if func is os.remove and os.name=='nt': + os.chmod(arg, stat.S_IWRITE) + return func(arg) + exc = sys.exc_info() + raise exc[0], (exc[1][0], exc[1][1] + (" %s %s" % (func,arg))) +def rmtree(path, ignore_errors=False, onerror=auto_chmod): + """Recursively delete a directory tree. - - - - -def smart_rmtree(path): - """Recursively delete a directory tree.""" - cmdtuples = [] - shutil._build_cmdtuple(path, cmdtuples) - for func, arg in cmdtuples: + This code is taken from the Python 2.4 version of 'shutil', because + the 2.3 version doesn't really work right. + """ + if ignore_errors: + def onerror(*args): + pass + elif onerror is None: + def onerror(*args): + raise + names = [] + try: + names = os.listdir(path) + except os.error, err: + onerror(os.listdir, path, sys.exc_info()) + for name in names: + fullname = os.path.join(path, name) try: - func(arg) - except OSError: - if os.name=='nt' and func is not os.rmdir: - os.chmod(arg, stat.S_IWRITE) - try: - func(arg) - continue - except OSError: - pass - exc = sys.exc_info() - raise exc[0], (exc[1][0], exc[1][1] + ' removing '+arg) - - - - - - - - - - - - - - - - - + mode = os.lstat(fullname).st_mode + except os.error: + mode = 0 + if stat.S_ISDIR(mode): + rmtree(fullname, ignore_errors, onerror) + else: + try: + os.remove(fullname) + except os.error, err: + onerror(os.remove, fullname, sys.exc_info()) + try: + os.rmdir(path) + except os.error: + onerror(os.rmdir, path, sys.exc_info()) From armin.rigo at python.org Mon Nov 7 08:15:49 2005 From: armin.rigo at python.org (armin.rigo@python.org) Date: Mon, 7 Nov 2005 08:15:49 +0100 (CET) Subject: [Python-checkins] commit of r41403 - in python/trunk: Lib/test Modules Message-ID: <20051107071549.37FF61E4009@bag.python.org> Author: armin.rigo Date: Mon Nov 7 08:15:48 2005 New Revision: 41403 Modified: python/trunk/Lib/test/test_datetime.py python/trunk/Modules/datetimemodule.c Log: similar to SF bug 847019: a quick check in the time() constructor, which accepts strings only for unpickling reasons. This check prevents the honest mistake of passing a string like '2:59.0' to time() and getting an insane object. Modified: python/trunk/Lib/test/test_datetime.py ============================================================================== --- python/trunk/Lib/test/test_datetime.py (original) +++ python/trunk/Lib/test/test_datetime.py Mon Nov 7 08:15:48 2005 @@ -1830,6 +1830,13 @@ self.assertEqual(dt1.isoformat(), dt2.isoformat()) self.assertEqual(dt2.newmeth(-7), dt1.hour + dt1.second - 7) + def test_backdoor_resistance(self): + # see TestDate.test_backdoor_resistance(). + base = '2:59.0' + for hour_byte in ' ', '9', chr(24), '\xff': + self.assertRaises(TypeError, self.theclass, + hour_byte + base[1:]) + # A mixin for classes with a tzinfo= argument. Subclasses must define # theclass as a class atribute, and theclass(1, 1, 1, tzinfo=whatever) # must be legit (which is true for time and datetime). Modified: python/trunk/Modules/datetimemodule.c ============================================================================== --- python/trunk/Modules/datetimemodule.c (original) +++ python/trunk/Modules/datetimemodule.c Mon Nov 7 08:15:48 2005 @@ -3046,7 +3046,8 @@ if (PyTuple_GET_SIZE(args) >= 1 && PyTuple_GET_SIZE(args) <= 2 && PyString_Check(state = PyTuple_GET_ITEM(args, 0)) && - PyString_GET_SIZE(state) == _PyDateTime_TIME_DATASIZE) + PyString_GET_SIZE(state) == _PyDateTime_TIME_DATASIZE && + ((unsigned char) (PyString_AS_STRING(state)[0])) < 24) { PyDateTime_Time *me; char aware; From armin.rigo at python.org Mon Nov 7 08:47:31 2005 From: armin.rigo at python.org (armin.rigo@python.org) Date: Mon, 7 Nov 2005 08:47:31 +0100 (CET) Subject: [Python-checkins] commit of r41404 - in python/trunk/Lib: . bsddb bsddb/test compiler curses distutils distutils/command distutils/tests email email/test encodings hotshot idlelib lib-old lib-tk logging plat-aix3 plat-aix4 plat-atheos plat-beos5 plat-darwin plat-freebsd2 plat-freebsd3 plat-freebsd4 plat-freebsd5 plat-freebsd6 plat-freebsd7 plat-irix5 plat-irix6 plat-linux2 plat-mac plat-mac/Carbon plat-mac/lib-scriptpackages/CodeWarrior plat-mac/lib-scriptpackages/Explorer plat-mac/lib-scriptpackages/Finder plat-mac/lib-scriptpackages/Netscape plat-mac/lib-scriptpackages/StdSuites plat-mac/lib-scriptpackages/SystemEvents plat-mac/lib-scriptpackages/Terminal plat-mac/lib-scriptpackages/_builtinSuites plat-netbsd1 plat-os2emx plat-riscos plat-sunos5 plat-unixware7 test xml xml/dom xml/parsers xml/sax Message-ID: <20051107074731.792471E400A@bag.python.org> Author: armin.rigo Date: Mon Nov 7 08:47:30 2005 New Revision: 41404 Modified: python/trunk/Lib/ (props changed) python/trunk/Lib/bsddb/ (props changed) python/trunk/Lib/bsddb/test/ (props changed) python/trunk/Lib/compiler/ (props changed) python/trunk/Lib/curses/ (props changed) python/trunk/Lib/distutils/ (props changed) python/trunk/Lib/distutils/command/ (props changed) python/trunk/Lib/distutils/tests/ (props changed) python/trunk/Lib/email/ (props changed) python/trunk/Lib/email/test/ (props changed) python/trunk/Lib/encodings/ (props changed) python/trunk/Lib/hotshot/ (props changed) python/trunk/Lib/idlelib/ (props changed) python/trunk/Lib/lib-old/ (props changed) python/trunk/Lib/lib-tk/ (props changed) python/trunk/Lib/logging/ (props changed) python/trunk/Lib/plat-aix3/ (props changed) python/trunk/Lib/plat-aix4/ (props changed) python/trunk/Lib/plat-atheos/ (props changed) python/trunk/Lib/plat-beos5/ (props changed) python/trunk/Lib/plat-darwin/ (props changed) python/trunk/Lib/plat-freebsd2/ (props changed) python/trunk/Lib/plat-freebsd3/ (props changed) python/trunk/Lib/plat-freebsd4/ (props changed) python/trunk/Lib/plat-freebsd5/ (props changed) python/trunk/Lib/plat-freebsd6/ (props changed) python/trunk/Lib/plat-freebsd7/ (props changed) python/trunk/Lib/plat-irix5/ (props changed) python/trunk/Lib/plat-irix6/ (props changed) python/trunk/Lib/plat-linux2/ (props changed) python/trunk/Lib/plat-mac/ (props changed) python/trunk/Lib/plat-mac/Carbon/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/CodeWarrior/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/Explorer/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/Finder/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/Netscape/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/StdSuites/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/SystemEvents/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/Terminal/ (props changed) python/trunk/Lib/plat-mac/lib-scriptpackages/_builtinSuites/ (props changed) python/trunk/Lib/plat-netbsd1/ (props changed) python/trunk/Lib/plat-os2emx/ (props changed) python/trunk/Lib/plat-riscos/ (props changed) python/trunk/Lib/plat-sunos5/ (props changed) python/trunk/Lib/plat-unixware7/ (props changed) python/trunk/Lib/test/ (props changed) python/trunk/Lib/xml/ (props changed) python/trunk/Lib/xml/dom/ (props changed) python/trunk/Lib/xml/parsers/ (props changed) python/trunk/Lib/xml/sax/ (props changed) Log: svn:ignoring all .pyc and .pyo files in all subdirectories of Lib/ that contain .py files. From armin.rigo at python.org Mon Nov 7 09:38:02 2005 From: armin.rigo at python.org (armin.rigo@python.org) Date: Mon, 7 Nov 2005 09:38:02 +0100 (CET) Subject: [Python-checkins] commit of r41405 - in python/trunk: Lib/test Objects Message-ID: <20051107083802.A003A1E401C@bag.python.org> Author: armin.rigo Date: Mon Nov 7 09:38:00 2005 New Revision: 41405 Modified: python/trunk/Lib/test/test_descr.py python/trunk/Objects/descrobject.c Log: Added proper reflection on instances of , e.g. '[].__add__', to match what the other internal descriptor types provide: '__objclass__' attribute, '__self__' member, and reasonable repr and comparison. Added a test. Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Mon Nov 7 09:38:00 2005 @@ -3977,6 +3977,18 @@ else: raise TestFailed, "did not test __init__() for None return" +def methodwrapper(): + # did not support any reflection before 2.5 + if verbose: + print "Testing method-wrapper objects..." + + l = [] + vereq(l.__add__, l.__add__) + verify(l.__add__ != [].__add__) + verify(l.__add__.__name__ == '__add__') + verify(l.__add__.__self__ is l) + verify(l.__add__.__objclass__ is list) + vereq(l.__add__.__doc__, list.__add__.__doc__) def test_main(): weakref_segfault() # Must be first, somehow @@ -4071,6 +4083,7 @@ filefault() vicious_descriptor_nonsense() test_init() + methodwrapper() if verbose: print "All OK" Modified: python/trunk/Objects/descrobject.c ============================================================================== --- python/trunk/Objects/descrobject.c (original) +++ python/trunk/Objects/descrobject.c Mon Nov 7 09:38:00 2005 @@ -50,7 +50,7 @@ } static PyObject * -wrapper_repr(PyWrapperDescrObject *descr) +wrapperdescr_repr(PyWrapperDescrObject *descr) { return descr_repr((PyDescrObject *)descr, ""); @@ -152,7 +152,7 @@ } static PyObject * -wrapper_get(PyWrapperDescrObject *descr, PyObject *obj, PyObject *type) +wrapperdescr_get(PyWrapperDescrObject *descr, PyObject *obj, PyObject *type) { PyObject *res; @@ -359,7 +359,7 @@ }; static PyObject * -wrapper_get_doc(PyWrapperDescrObject *descr, void *closure) +wrapperdescr_get_doc(PyWrapperDescrObject *descr, void *closure) { if (descr->d_base->doc == NULL) { Py_INCREF(Py_None); @@ -368,8 +368,8 @@ return PyString_FromString(descr->d_base->doc); } -static PyGetSetDef wrapper_getset[] = { - {"__doc__", (getter)wrapper_get_doc}, +static PyGetSetDef wrapperdescr_getset[] = { + {"__doc__", (getter)wrapperdescr_get_doc}, {0} }; @@ -551,7 +551,7 @@ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ - (reprfunc)wrapper_repr, /* tp_repr */ + (reprfunc)wrapperdescr_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ @@ -571,10 +571,10 @@ 0, /* tp_iternext */ 0, /* tp_methods */ descr_members, /* tp_members */ - wrapper_getset, /* tp_getset */ + wrapperdescr_getset, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ - (descrgetfunc)wrapper_get, /* tp_descr_get */ + (descrgetfunc)wrapperdescr_get, /* tp_descr_get */ 0, /* tp_descr_set */ }; @@ -910,11 +910,43 @@ PyObject_GC_Del(wp); } -static PyMethodDef wrapper_methods[] = { +static int +wrapper_compare(wrapperobject *a, wrapperobject *b) +{ + if (a->descr == b->descr) { + if (a->self == b->self) + return 0; + else + return (a->self < b->self) ? -1 : 1; + } + else + return (a->descr < b->descr) ? -1 : 1; +} + +static PyObject * +wrapper_repr(wrapperobject *wp) +{ + return PyString_FromFormat("", + wp->descr->d_base->name, + wp->self->ob_type->tp_name, + wp->self); +} + +static PyMemberDef wrapper_members[] = { + {"__self__", T_OBJECT, offsetof(wrapperobject, self), READONLY}, {0} }; static PyObject * +wrapper_objclass(wrapperobject *wp) +{ + PyObject *c = (PyObject *)wp->descr->d_type; + + Py_INCREF(c); + return c; +} + +static PyObject * wrapper_name(wrapperobject *wp) { char *s = wp->descr->d_base->name; @@ -937,6 +969,7 @@ } static PyGetSetDef wrapper_getsets[] = { + {"__objclass__", (getter)wrapper_objclass}, {"__name__", (getter)wrapper_name}, {"__doc__", (getter)wrapper_doc}, {0} @@ -992,8 +1025,8 @@ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ + (cmpfunc)wrapper_compare, /* tp_compare */ + (reprfunc)wrapper_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ @@ -1011,8 +1044,8 @@ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ - wrapper_methods, /* tp_methods */ - 0, /* tp_members */ + 0, /* tp_methods */ + wrapper_members, /* tp_members */ wrapper_getsets, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ From marc-andre.lemburg at python.org Mon Nov 7 17:11:03 2005 From: marc-andre.lemburg at python.org (marc-andre.lemburg@python.org) Date: Mon, 7 Nov 2005 17:11:03 +0100 (CET) Subject: [Python-checkins] commit of r41406 - python/trunk/Lib Message-ID: <20051107161103.305F21E4019@bag.python.org> Author: marc-andre.lemburg Date: Mon Nov 7 17:11:02 2005 New Revision: 41406 Modified: python/trunk/Lib/platform.py Log: Patch by pythonic to support Fedora as Linux distro. Modified: python/trunk/Lib/platform.py ============================================================================== --- python/trunk/Lib/platform.py (original) +++ python/trunk/Lib/platform.py Mon Nov 7 17:11:02 2005 @@ -31,6 +31,9 @@ # Colin Kong, Trent Mick, Guido van Rossum # # History: +# +# +# # 1.0.3 - added normalization of Windows system name # 1.0.2 - added more Windows support # 1.0.1 - reformatted to make doc.py happy @@ -104,7 +107,7 @@ """ -__version__ = '1.0.2' +__version__ = '1.0.4' import sys,string,os,re @@ -217,9 +220,12 @@ _release_filename = re.compile(r'(\w+)[-_](release|version)') _release_version = re.compile(r'([\d.]+)[^(]*(?:\((.+)\))?') +# Note:In supported_dists below we need 'fedora' before 'redhat' as in +# Fedora redhat-release is a link to fedora-release. + def dist(distname='',version='',id='', - supported_dists=('SuSE','debian','redhat','mandrake')): + supported_dists=('SuSE', 'debian', 'fedora', 'redhat', 'mandrake')): """ Tries to determine the name of the Linux OS distribution name. From brett.cannon at python.org Mon Nov 7 22:42:43 2005 From: brett.cannon at python.org (brett.cannon@python.org) Date: Mon, 7 Nov 2005 22:42:43 +0100 (CET) Subject: [Python-checkins] commit of r41407 - python/trunk/Misc Message-ID: <20051107214243.102A41E400C@bag.python.org> Author: brett.cannon Date: Mon Nov 7 22:42:42 2005 New Revision: 41407 Modified: python/trunk/Misc/SpecialBuilds.txt Log: Fix typo in envvar name. Modified: python/trunk/Misc/SpecialBuilds.txt ============================================================================== --- python/trunk/Misc/SpecialBuilds.txt (original) +++ python/trunk/Misc/SpecialBuilds.txt Mon Nov 7 22:42:42 2005 @@ -1,7 +1,7 @@ This file describes some special Python build types enabled via compile-time preprocessor defines. -It is best to define these options in the EXTRA_FLAGS environment variable; +It is best to define these options in the EXTRA_CFLAGS environment variable; ``EXTRA_CFLAGS="-DPy_REF_DEBUG" ./configure``. --------------------------------------------------------------------------- From maillist at roomity.com Mon Nov 7 22:58:07 2005 From: maillist at roomity.com (shenanigans) Date: Mon, 7 Nov 2005 13:58:07 -0800 (PST) Subject: [Python-checkins] [OTAnn] Feedback Message-ID: <23865417.1281131400687239.JavaMail.tomcat5@slave1.roomity.com> I was interested in getting feedback from current mail group users. We have mirrored your mail list in a new application that provides a more aggregated and safe environment which utilizes the power of broadband. Roomity.com v 1.5 is a web 2.01 community webapp. Our newest version adds broadcast video and social networking such as favorite authors and an html editor. It?s free to join and any feedback would be appreciated. S. ------------------------------------------------------------------------------------------------------------------------------------ Broadband interface (RIA) + mail box saftey = Python_Checkins_List.roomity.com *Your* clubs, no sign up to read, ad supported; try broadband internet. ~~1131400687236~~ ------------------------------------------------------------------------------------------------------------------------------------ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/python-checkins/attachments/20051107/07659f9a/attachment.html From phillip.eby at python.org Wed Nov 9 04:02:31 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Wed, 9 Nov 2005 04:02:31 +0100 (CET) Subject: [Python-checkins] commit of r41408 - sandbox/trunk/setuptools Message-ID: <20051109030231.4B5721E400A@bag.python.org> Author: phillip.eby Date: Wed Nov 9 04:02:30 2005 New Revision: 41408 Modified: sandbox/trunk/setuptools/pkg_resources.py Log: Normalize items in sys.path when determining where to insert a new item. Modified: sandbox/trunk/setuptools/pkg_resources.py ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.py (original) +++ sandbox/trunk/setuptools/pkg_resources.py Wed Nov 9 04:02:30 2005 @@ -1915,6 +1915,7 @@ self.check_version_conflict() best, pos = 0, -1 for p,item in enumerate(path): + item = normalize_path(item) if loc.startswith(item) and len(item)>best and loc<>item: best, pos = len(item), p if pos==-1: @@ -1924,7 +1925,6 @@ path.insert(pos,loc) - def check_version_conflict(self): if self.key=='setuptools': return # ignore the inevitable setuptools self-conflicts :( From phillip.eby at python.org Wed Nov 9 04:23:34 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Wed, 9 Nov 2005 04:23:34 +0100 (CET) Subject: [Python-checkins] commit of r41409 - sandbox/trunk/setuptools/setuptools/command Message-ID: <20051109032334.ACAC41E400F@bag.python.org> Author: phillip.eby Date: Wed Nov 9 04:23:34 2005 New Revision: 41409 Modified: sandbox/trunk/setuptools/setuptools/command/bdist_egg.py Log: Detect .dll, .so, .dylib and .pyd files that might have been included in a project as data files rather than as Python extensions. Modified: sandbox/trunk/setuptools/setuptools/command/bdist_egg.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/bdist_egg.py (original) +++ sandbox/trunk/setuptools/setuptools/command/bdist_egg.py Wed Nov 9 04:23:34 2005 @@ -288,31 +288,31 @@ def get_ext_outputs(self): """Get a list of relative paths to C extensions in the output distro""" + outputs = [] + paths = {self.bdist_dir:''} + for base, dirs, files in os.walk(self.bdist_dir): + for filename in files: + if os.path.splitext(filename)[1].lower() in NATIVE_EXTENSIONS: + outputs.append(paths[base]+filename) + for filename in dirs: + paths[os.path.join(base,filename)] = paths[base]+filename+'/' + if not self.distribution.has_ext_modules(): - return [] + return outputs build_cmd = self.get_finalized_command('build_ext') prefix_len = len(build_cmd.build_lib) + len(os.sep) - outputs = [] for filename in build_cmd.get_outputs(): - outputs.append(filename[prefix_len:]) + if os.path.splitext(filename)[1].lower() not in NATIVE_EXTENSIONS: + # only add files w/unrecognized extensions, since the + # recognized ones will already be in the list + outputs.append(filename[prefix_len:]) return outputs - - - - - - - - - - - - +NATIVE_EXTENSIONS = dict.fromkeys('.dll .so .dylib .pyd'.split()) From phillip.eby at python.org Wed Nov 9 04:28:58 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Wed, 9 Nov 2005 04:28:58 +0100 (CET) Subject: [Python-checkins] commit of r41410 - sandbox/trunk/setuptools Message-ID: <20051109032858.0C54B1E400F@bag.python.org> Author: phillip.eby Date: Wed Nov 9 04:28:57 2005 New Revision: 41410 Modified: sandbox/trunk/setuptools/setuptools.txt Log: Document shared library autodetection Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Wed Nov 9 04:28:57 2005 @@ -636,11 +636,16 @@ project includes non-extension native libraries or other files that your C extensions expect to be able to access, you may need to list those files in the ``eager_resources`` argument to ``setup()``, so that the files will be -extracted together, whenever a C extension in the project is imported. This -is especially important if your project includes shared libraries *other* than -distutils-built C extensions. Those shared libraries should be listed as -``eager_resources``, because they need to be present in the filesystem when the -C extensions that link to them are used. +extracted together, whenever a C extension in the project is imported. + +This is especially important if your project includes shared libraries *other* +than distutils-built C extensions, and those shared libraries use file +extensions other than ``.dll``, ``.so``, or ``.dylib``, which are the +extensions that setuptools 0.6a8 and higher automatically detects as shared +libraries and adds to the ``native_libs.txt`` file for you. Any shared +libraries whose names do not end with one of those extensions should be listed +as ``eager_resources``, because they need to be present in the filesystem when +he C extensions that link to them are used. The ``pkg_resources`` runtime for compressed packages will automatically extract *all* C extensions and ``eager_resources`` at the same time, whenever @@ -1966,6 +1971,9 @@ number from ``PKG-INFO`` in case it is being run on a source distribution of a snapshot taken from a Subversion-based project. + * Automatically detect ``.dll``, ``.so`` and ``.dylib`` files that are being + installed as data, adding them to ``native_libs.txt`` automatically. + * Fixed some problems with fresh checkouts of projects that don't include ``.egg-info/PKG-INFO`` under revision control and put the project's source code directly in the project directory. If such a package had any From phillip.eby at python.org Wed Nov 9 04:30:44 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Wed, 9 Nov 2005 04:30:44 +0100 (CET) Subject: [Python-checkins] commit of r41411 - sandbox/trunk/setuptools Message-ID: <20051109033044.78CAB1E401F@bag.python.org> Author: phillip.eby Date: Wed Nov 9 04:30:43 2005 New Revision: 41411 Modified: sandbox/trunk/setuptools/pkg_resources.txt Log: Record case-insensitivity fix. Modified: sandbox/trunk/setuptools/pkg_resources.txt ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.txt (original) +++ sandbox/trunk/setuptools/pkg_resources.txt Wed Nov 9 04:30:43 2005 @@ -1498,6 +1498,8 @@ * Avoid giving runtime conflict warnings for namespace packages, even if they were declared by a different package than the one currently being activated. + * Fix path insertion algorithm for case-insensitive filesystems. + 0.6a6 * Activated distributions are now inserted in ``sys.path`` (and the working set) just before the directory that contains them, instead of at the end. From neal.norwitz at python.org Wed Nov 9 07:59:36 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Wed, 9 Nov 2005 07:59:36 +0100 (CET) Subject: [Python-checkins] commit of r41412 - in python/trunk: Misc Python Message-ID: <20051109065936.BF9C01E400A@bag.python.org> Author: neal.norwitz Date: Wed Nov 9 07:59:35 2005 New Revision: 41412 Modified: python/trunk/Misc/NEWS python/trunk/Python/dynload_shlib.c Log: - SF Bug #1350188, "setdlopenflags" leads to crash upon "import" It was possible dlerror() returns a NULL pointer, use a default error message in this case. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Nov 9 07:59:35 2005 @@ -12,6 +12,10 @@ Core and builtins ----------------- +- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" + It was possible dlerror() returns a NULL pointer, use a default error + message in this case. + - Replaced most Unicode charmap codecs with new ones using the new Unicode translate string feature in the builtin charmap codec; the codecs were created from the mapping tables available Modified: python/trunk/Python/dynload_shlib.c ============================================================================== --- python/trunk/Python/dynload_shlib.c (original) +++ python/trunk/Python/dynload_shlib.c Wed Nov 9 07:59:35 2005 @@ -130,7 +130,10 @@ handle = dlopen(pathname, dlopenflags); if (handle == NULL) { - PyErr_SetString(PyExc_ImportError, dlerror()); + char *error = dlerror(); + if (error == NULL) + error = "unknown dlopen() error"; + PyErr_SetString(PyExc_ImportError, error); return NULL; } if (fp != NULL && nhandles < 128) From neal.norwitz at python.org Wed Nov 9 08:02:41 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Wed, 9 Nov 2005 08:02:41 +0100 (CET) Subject: [Python-checkins] commit of r41413 - in python/branches/release24-maint: Misc Python Message-ID: <20051109070241.765441E400A@bag.python.org> Author: neal.norwitz Date: Wed Nov 9 08:02:40 2005 New Revision: 41413 Modified: python/branches/release24-maint/Misc/NEWS python/branches/release24-maint/Python/dynload_shlib.c Log: Backport: SF Bug #1350188, "setdlopenflags" leads to crash upon "import" It was possible dlerror() returns a NULL pointer, use a default error message in this case. Modified: python/branches/release24-maint/Misc/NEWS ============================================================================== --- python/branches/release24-maint/Misc/NEWS (original) +++ python/branches/release24-maint/Misc/NEWS Wed Nov 9 08:02:40 2005 @@ -12,6 +12,10 @@ Core and builtins ----------------- +- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" + It was possible dlerror() returns a NULL pointer, use a default error + message in this case. + - SF bug #1167751: fix incorrect code being for generator expressions. The following code now raises a SyntaxError: foo(a = i for i in range(10)) Modified: python/branches/release24-maint/Python/dynload_shlib.c ============================================================================== --- python/branches/release24-maint/Python/dynload_shlib.c (original) +++ python/branches/release24-maint/Python/dynload_shlib.c Wed Nov 9 08:02:40 2005 @@ -130,7 +130,10 @@ handle = dlopen(pathname, dlopenflags); if (handle == NULL) { - PyErr_SetString(PyExc_ImportError, dlerror()); + char *error = dlerror(); + if (error == NULL) + error = "unknown dlopen() error"; + PyErr_SetString(PyExc_ImportError, error); return NULL; } if (fp != NULL && nhandles < 128) From neal.norwitz at python.org Wed Nov 9 08:07:59 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Wed, 9 Nov 2005 08:07:59 +0100 (CET) Subject: [Python-checkins] commit of r41414 - python/trunk/Demo/comparisons Message-ID: <20051109070759.45F0E1E400A@bag.python.org> Author: neal.norwitz Date: Wed Nov 9 08:07:58 2005 New Revision: 41414 Modified: python/trunk/Demo/comparisons/regextest.py Log: SF Bug #1348477, regextest can't be pydoc'ed. Will backport. Modified: python/trunk/Demo/comparisons/regextest.py ============================================================================== --- python/trunk/Demo/comparisons/regextest.py (original) +++ python/trunk/Demo/comparisons/regextest.py Wed Nov 9 08:07:58 2005 @@ -43,4 +43,5 @@ def chomp(s): return s.rstrip('\n') -main() +if __name__ == '__main__': + main() From neal.norwitz at python.org Wed Nov 9 08:08:42 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Wed, 9 Nov 2005 08:08:42 +0100 (CET) Subject: [Python-checkins] commit of r41415 - python/branches/release24-maint/Demo/comparisons Message-ID: <20051109070842.3DBCA1E400A@bag.python.org> Author: neal.norwitz Date: Wed Nov 9 08:08:41 2005 New Revision: 41415 Modified: python/branches/release24-maint/Demo/comparisons/regextest.py Log: Backport: SF Bug #1348477, regextest can't be pydoc'ed. Modified: python/branches/release24-maint/Demo/comparisons/regextest.py ============================================================================== --- python/branches/release24-maint/Demo/comparisons/regextest.py (original) +++ python/branches/release24-maint/Demo/comparisons/regextest.py Wed Nov 9 08:08:41 2005 @@ -43,4 +43,5 @@ def chomp(s): return s.rstrip('\n') -main() +if __name__ == '__main__': + main() From vinay.sajip at python.org Wed Nov 9 14:55:20 2005 From: vinay.sajip at python.org (vinay.sajip@python.org) Date: Wed, 9 Nov 2005 14:55:20 +0100 (CET) Subject: [Python-checkins] commit of r41416 - python/trunk/Lib/logging Message-ID: <20051109135520.2BB241E400A@bag.python.org> Author: vinay.sajip Date: Wed Nov 9 14:55:13 2005 New Revision: 41416 Modified: python/trunk/Lib/logging/handlers.py Log: Fixed indentation bug in _connect_unixsocket (thanks to Ken Lalonde for reporting it/supplying a patch) Modified: python/trunk/Lib/logging/handlers.py ============================================================================== --- python/trunk/Lib/logging/handlers.py (original) +++ python/trunk/Lib/logging/handlers.py Wed Nov 9 14:55:13 2005 @@ -589,7 +589,7 @@ except socket.error: self.socket.close() self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - self.socket.connect(address) + self.socket.connect(address) # curious: when talking to the unix-domain '/dev/log' socket, a # zero-terminator seems to be required. this string is placed From vinay.sajip at python.org Wed Nov 9 14:56:11 2005 From: vinay.sajip at python.org (vinay.sajip@python.org) Date: Wed, 9 Nov 2005 14:56:11 +0100 (CET) Subject: [Python-checkins] commit of r41417 - python/branches/release24-maint/Lib/logging Message-ID: <20051109135611.A4ADD1E400A@bag.python.org> Author: vinay.sajip Date: Wed Nov 9 14:56:10 2005 New Revision: 41417 Modified: python/branches/release24-maint/Lib/logging/handlers.py Log: Fixed indentation bug in _connect_unixsocket (thanks to Ken Lalonde for reporting it/supplying a patch) Modified: python/branches/release24-maint/Lib/logging/handlers.py ============================================================================== --- python/branches/release24-maint/Lib/logging/handlers.py (original) +++ python/branches/release24-maint/Lib/logging/handlers.py Wed Nov 9 14:56:10 2005 @@ -589,7 +589,7 @@ except socket.error: self.socket.close() self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - self.socket.connect(address) + self.socket.connect(address) # curious: when talking to the unix-domain '/dev/log' socket, a # zero-terminator seems to be required. this string is placed From walter.doerwald at python.org Wed Nov 9 18:12:44 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Wed, 9 Nov 2005 18:12:44 +0100 (CET) Subject: [Python-checkins] commit of r41418 - python/trunk/Lib/lib-tk Message-ID: <20051109171244.3CD611E400A@bag.python.org> Author: walter.doerwald Date: Wed Nov 9 18:12:43 2005 New Revision: 41418 Modified: python/trunk/Lib/lib-tk/Tix.py python/trunk/Lib/lib-tk/Tkinter.py Log: Fix typos. Modified: python/trunk/Lib/lib-tk/Tix.py ============================================================================== --- python/trunk/Lib/lib-tk/Tix.py (original) +++ python/trunk/Lib/lib-tk/Tix.py Wed Nov 9 18:12:43 2005 @@ -1541,8 +1541,8 @@ '''This command is used to indicate whether the entry given by entryPath has children entries and whether the children are visible. mode must be one of open, close or none. If mode is set to open, a (+) - indicator is drawn next the the entry. If mode is set to close, a (-) - indicator is drawn next the the entry. If mode is set to none, no + indicator is drawn next to the entry. If mode is set to close, a (-) + indicator is drawn next to the entry. If mode is set to none, no indicators will be drawn for this entry. The default mode is none. The open mode indicates the entry has hidden children and this entry can be opened by the user. The close mode indicates that all the children of the Modified: python/trunk/Lib/lib-tk/Tkinter.py ============================================================================== --- python/trunk/Lib/lib-tk/Tkinter.py (original) +++ python/trunk/Lib/lib-tk/Tkinter.py Wed Nov 9 18:12:43 2005 @@ -130,7 +130,7 @@ (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion) char - pressed character (KeyPress, KeyRelease) send_event - see X/Windows documentation - keysym - keysym of the the event as a string (KeyPress, KeyRelease) + keysym - keysym of the event as a string (KeyPress, KeyRelease) keysym_num - keysym of the event as a number (KeyPress, KeyRelease) type - type of the event as a number widget - widget in which the event occurred From reinhold.birkenfeld at python.org Wed Nov 9 22:42:49 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Wed, 9 Nov 2005 22:42:49 +0100 (CET) Subject: [Python-checkins] commit of r41419 - python/trunk/Lib Message-ID: <20051109214249.5B1A81E400A@bag.python.org> Author: reinhold.birkenfeld Date: Wed Nov 9 22:42:48 2005 New Revision: 41419 Modified: python/trunk/Lib/webbrowser.py Log: Bug #1338995: fix problem with new webbrowser.py. Modified: python/trunk/Lib/webbrowser.py ============================================================================== --- python/trunk/Lib/webbrowser.py (original) +++ python/trunk/Lib/webbrowser.py Wed Nov 9 22:42:48 2005 @@ -180,8 +180,11 @@ cmd += ' &' rc = os.system(cmd) if rc: + cmd = "%s %s" % (self.name, url) + if self.remote_background: + cmd += " &" # bad return status, try again with simpler command - rc = os.system("%s %s" % (self.name, url)) + rc = os.system(cmd) return not rc def open(self, url, new=0, autoraise=1): @@ -209,6 +212,7 @@ remote_action = "openURL(%s)" remote_action_newwin = "openURL(%s,new-window)" remote_action_newtab = "openURL(%s,new-tab)" + remote_background = True Netscape = Mozilla @@ -240,7 +244,7 @@ if _iscommand("konqueror"): rc = os.system(self.name + " --silent '%s' &" % url) elif _iscommand("kfm"): - rc = os.system(self.name + " -d '%s'" % url) + rc = os.system(self.name + " -d '%s' &" % url) return not rc def open(self, url, new=0, autoraise=1): @@ -264,6 +268,7 @@ remote_action = "openURL(%s)" remote_action_newwin = "openURL(%s,new-window)" remote_action_newtab = "openURL(%s,new-page)" + remote_background = True class Elinks(UnixBrowser): @@ -459,7 +464,7 @@ new = int(bool(new)) if self.name == "default": # User called open, open_new or get without a browser parameter - script = _safequote('open location "%s"', url) # opens in default browser + script = 'open location "%s"' % url.replace('"', '%22') # opens in default browser else: # User called get and chose a browser if self.name == "OmniWeb": @@ -468,7 +473,7 @@ # Include toWindow parameter of OpenURL command for browsers # that support it. 0 == new window; -1 == existing toWindow = "toWindow %d" % (new - 1) - cmd = _safequote('OpenURL "%s"', url) + cmd = 'OpenURL "%s"' % url.replace('"', '%22') script = '''tell application "%s" activate %s %s From david.goodger at python.org Thu Nov 10 15:42:01 2005 From: david.goodger at python.org (david.goodger@python.org) Date: Thu, 10 Nov 2005 15:42:01 +0100 (CET) Subject: [Python-checkins] commit of r41420 - peps/trunk Message-ID: <20051110144201.190821E4022@bag.python.org> Author: david.goodger Date: Thu Nov 10 15:42:00 2005 New Revision: 41420 Modified: peps/trunk/pep-0352.txt (props changed) Log: fixed properties From david.goodger at python.org Thu Nov 10 15:42:21 2005 From: david.goodger at python.org (david.goodger@python.org) Date: Thu, 10 Nov 2005 15:42:21 +0100 (CET) Subject: [Python-checkins] commit of r41421 - peps/trunk Message-ID: <20051110144221.741DE1E4032@bag.python.org> Author: david.goodger Date: Thu Nov 10 15:42:20 2005 New Revision: 41421 Modified: peps/trunk/pep-0009.txt peps/trunk/pep-0012.txt Log: clarified keywords Modified: peps/trunk/pep-0009.txt ============================================================================== --- peps/trunk/pep-0009.txt (original) +++ peps/trunk/pep-0009.txt Thu Nov 10 15:42:20 2005 @@ -57,7 +57,11 @@ - Change the Title header to the title of your PEP. - Leave the Version and Last-Modified headers alone; we'll take - care of those when we check your PEP into CVS. + care of those when we check your PEP into Python's Subversion + repository. These headers consist of keywords ("Revision" and + "Date" enclosed in "$"-signs) which are automatically expanded + by the repository. Please do not edit the expanded date or + revision text. - Change the Author header to include your name, and optionally your email address. Be sure to follow the format carefully: Modified: peps/trunk/pep-0012.txt ============================================================================== --- peps/trunk/pep-0012.txt (original) +++ peps/trunk/pep-0012.txt Thu Nov 10 15:42:20 2005 @@ -68,7 +68,10 @@ - Change the Title header to the title of your PEP. - Leave the Version and Last-Modified headers alone; we'll take care - of those when we check your PEP into CVS. + of those when we check your PEP into Python's Subversion repository. + These headers consist of keywords ("Revision" and "Date" enclosed in + "$"-signs) which are automatically expanded by the repository. + Please do not edit the expanded date or revision text. - Change the Author header to include your name, and optionally your email address. Be sure to follow the format carefully: your name From walter.doerwald at python.org Fri Nov 11 19:18:51 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Fri, 11 Nov 2005 19:18:51 +0100 (CET) Subject: [Python-checkins] commit of r41422 - python/trunk/Lib Message-ID: <20051111181851.BC0981E400A@bag.python.org> Author: walter.doerwald Date: Fri Nov 11 19:18:51 2005 New Revision: 41422 Modified: python/trunk/Lib/pprint.py Log: Change PrettyPrinter.pprint(), so that output is written directly to the output stream, instead of writing it to a StringIO first and writing the result of this to the output stream. This should speed up the initial output. Modified: python/trunk/Lib/pprint.py ============================================================================== --- python/trunk/Lib/pprint.py (original) +++ python/trunk/Lib/pprint.py Fri Nov 11 19:18:51 2005 @@ -103,7 +103,8 @@ self._stream = _sys.stdout def pprint(self, object): - self._stream.write(self.pformat(object) + "\n") + self._format(object, self._stream, 0, 0, {}, 0) + self._stream.write("\n") def pformat(self, object): sio = _StringIO() From fred.drake at python.org Fri Nov 11 20:34:57 2005 From: fred.drake at python.org (fred.drake@python.org) Date: Fri, 11 Nov 2005 20:34:57 +0100 (CET) Subject: [Python-checkins] commit of r41423 - python/trunk/Modules Message-ID: <20051111193457.32AF41E400A@bag.python.org> Author: fred.drake Date: Fri Nov 11 20:34:56 2005 New Revision: 41423 Modified: python/trunk/Modules/zipimport.c Log: update busted comment Modified: python/trunk/Modules/zipimport.c ============================================================================== --- python/trunk/Modules/zipimport.c (original) +++ python/trunk/Modules/zipimport.c Fri Nov 11 20:34:56 2005 @@ -639,7 +639,8 @@ A toc_entry is a tuple: - (compress, # compression kind; 0 for uncompressed + (__file__, # value to use for __file__, available for all files + compress, # compression kind; 0 for uncompressed data_size, # size of compressed data on disk file_size, # size of decompressed data file_offset, # offset of file header from start of archive From fred.drake at python.org Fri Nov 11 20:35:02 2005 From: fred.drake at python.org (fred.drake@python.org) Date: Fri, 11 Nov 2005 20:35:02 +0100 (CET) Subject: [Python-checkins] commit of r41424 - python/branches/release24-maint/Modules Message-ID: <20051111193502.BBBA01E400A@bag.python.org> Author: fred.drake Date: Fri Nov 11 20:35:02 2005 New Revision: 41424 Modified: python/branches/release24-maint/Modules/zipimport.c Log: update busted comment Modified: python/branches/release24-maint/Modules/zipimport.c ============================================================================== --- python/branches/release24-maint/Modules/zipimport.c (original) +++ python/branches/release24-maint/Modules/zipimport.c Fri Nov 11 20:35:02 2005 @@ -640,7 +640,8 @@ A toc_entry is a tuple: - (compress, # compression kind; 0 for uncompressed + (__file__, # value to use for __file__, available for all files + compress, # compression kind; 0 for uncompressed data_size, # size of compressed data on disk file_size, # size of decompressed data file_offset, # offset of file header from start of archive From kurt.kaiser at python.org Sat Nov 12 01:36:08 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Sat, 12 Nov 2005 01:36:08 +0100 (CET) Subject: [Python-checkins] commit of r41425 - python/branches/IDLE-syntax-branch/Lib/idlelib Message-ID: <20051112003608.417B31E400A@bag.python.org> Author: kurt.kaiser Date: Sat Nov 12 01:36:07 2005 New Revision: 41425 Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/AutoComplete.py python/branches/IDLE-syntax-branch/Lib/idlelib/AutoCompleteWindow.py python/branches/IDLE-syntax-branch/Lib/idlelib/CallTipWindow.py python/branches/IDLE-syntax-branch/Lib/idlelib/EditorWindow.py python/branches/IDLE-syntax-branch/Lib/idlelib/HyperParser.py python/branches/IDLE-syntax-branch/Lib/idlelib/MultiCall.py python/branches/IDLE-syntax-branch/Lib/idlelib/ParenMatch.py python/branches/IDLE-syntax-branch/Lib/idlelib/configDialog.py Log: Whitespace Normalization M idlelib/AutoCompleteWindow.py M idlelib/AutoComplete.py M idlelib/HyperParser.py M idlelib/ParenMatch.py M idlelib/configDialog.py M idlelib/EditorWindow.py M idlelib/CallTipWindow.py M idlelib/MultiCall.py Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/AutoComplete.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/AutoComplete.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/AutoComplete.py Sat Nov 12 01:36:07 2005 @@ -116,7 +116,7 @@ if self._delayed_completion_id is not None: self.text.after_cancel(self._delayed_completion_id) self._delayed_completion_id = None - + hp = HyperParser(self.editwin, "insert") curline = self.text.get("insert linestart", "insert") i = j = len(curline) @@ -159,11 +159,11 @@ mode, userWantsWin) return True - + def fetch_completions(self, what, mode): """Return a pair of lists of completions for something. The first list is a sublist of the second. Both are sorted. - + If there is a Python subprocess, get the comp. list there. Otherwise, either fetch_completions() is running in the subprocess itself or it was called in an IDLE EditorWindow before any script had been run. @@ -171,7 +171,7 @@ The subprocess environment is that of the most recently run script. If two unrelated modules are being edited some calltips in the current module may be inoperative if the module was not the last to run. - """ + """ try: rpcclt = self.editwin.flist.pyshell.interp.rpcclt except: @@ -203,7 +203,7 @@ smalll = filter(lambda s: s[:1] != '_', bigl) except: return [], [] - + elif mode == COMPLETE_FILES: if what == "": what = "." Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/AutoCompleteWindow.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/AutoCompleteWindow.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/AutoCompleteWindow.py Sat Nov 12 01:36:07 2005 @@ -102,7 +102,7 @@ self.completions[first][i] == self.completions[last][i]: i += 1 return self.completions[first][:i] - + def _selection_changed(self): """Should be called when the selection of the Listbox has changed. Updates the Listbox display and calls _change_start.""" @@ -160,7 +160,7 @@ return self.userwantswindow = userWantsWin self.lasttypedstart = self.start - + # Put widgets in place self.autocompletewindow = acw = Toplevel(self.widget) # Put it in a position so that it is not seen. @@ -171,7 +171,7 @@ # This command is only needed and available on Tk >= 8.4.0 for OSX # Without it, call tips intrude on the typing process by grabbing # the focus. - acw.tk.call("::tk::unsupported::MacWindowStyle", "style", acw._w, + acw.tk.call("::tk::unsupported::MacWindowStyle", "style", acw._w, "help", "noActivates") except TclError: pass @@ -185,7 +185,7 @@ scrollbar.config(command=listbox.yview) scrollbar.pack(side=RIGHT, fill=Y) listbox.pack(side=LEFT, fill=BOTH, expand=True) - + # Initialize the listbox selection self.listbox.select_set(self._binary_search(self.start)) self._selection_changed() @@ -218,7 +218,7 @@ acw.wm_geometry("+%d+%d" % (x + self.widget.winfo_rootx(), y + self.widget.winfo_rooty() \ -acw.winfo_height())) - + def hide_event(self, event): if not self.is_active(): @@ -236,7 +236,7 @@ cursel = int(self.listbox.curselection()[0]) self._change_start(self.completions[cursel]) self.hide_window() - + def keypress_event(self, event): if not self.is_active(): return @@ -245,7 +245,7 @@ state = event.mc_state else: state = 0 - + if (len(keysym) == 1 or keysym in ("underscore", "BackSpace") or (self.mode==AutoComplete.COMPLETE_FILES and keysym in ("period", "minus"))) \ @@ -270,7 +270,7 @@ self.listbox.select_set(self._binary_search(self.start)) self._selection_changed() return "break" - + elif keysym == "Return" and not state: # If start is a prefix of the selection, or there was an indication # that the user used the completion window, put the selected @@ -391,5 +391,3 @@ self.listbox = None self.autocompletewindow.destroy() self.autocompletewindow = None - - Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/CallTipWindow.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/CallTipWindow.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/CallTipWindow.py Sat Nov 12 01:36:07 2005 @@ -53,11 +53,11 @@ self.text = text if self.tipwindow or not self.text: return - + self.widget.mark_set(MARK_RIGHT, parenright) self.parenline, self.parencol = map( int, self.widget.index(parenleft).split(".")) - + self.tipwindow = tw = Toplevel(self.widget) self.position_window() # XXX 12 Dec 2002 KBK The following command has two effects: It removes Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/EditorWindow.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/EditorWindow.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/EditorWindow.py Sat Nov 12 01:36:07 2005 @@ -1105,7 +1105,7 @@ rawtext = text.get(startatindex, "insert") y.set_str(rawtext) y.set_lo(0) - + c = y.get_continuation_type() if c != PyParse.C_NONE: # The current stmt hasn't ended yet. Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/HyperParser.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/HyperParser.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/HyperParser.py Sat Nov 12 01:36:07 2005 @@ -18,16 +18,16 @@ """Initialize the HyperParser to analyze the surroundings of the given index. """ - + self.editwin = editwin self.text = text = editwin.text parser = PyParse.Parser(editwin.indentwidth, editwin.tabwidth) - + def index2line(index): return int(float(index)) lno = index2line(text.index(index)) - + if not editwin.context_use_ps1: for context in editwin.num_context_lines: startat = max(lno - context, 1) @@ -145,7 +145,7 @@ _id_chars = string.ascii_letters + string.digits + "_" # This string includes all chars that may be the first char of an identifier _id_first_chars = string.ascii_letters + "_" - + # Given a string and pos, return the number of chars in the identifier # which ends at pos, or 0 if there is no such one. Saved words are not # identifiers. @@ -157,7 +157,7 @@ keyword.iskeyword(str[i:pos])): i = pos return pos - i - + def get_expression(self): """Return a string with the Python expression which ends at the given index, which is empty if there is no real one. @@ -165,17 +165,17 @@ if not self.is_in_code(): raise ValueError("get_expression should only be called if index "\ "is inside a code.") - + rawtext = self.rawtext bracketing = self.bracketing - + brck_index = self.indexbracket brck_limit = bracketing[brck_index][0] pos = self.indexinrawtext last_identifier_pos = pos postdot_phase = True - + while 1: # Eat whitespaces, comments, and if postdot_phase is False - one dot while 1: @@ -212,7 +212,7 @@ # Now, in order to continue the search, we must find a dot. postdot_phase = False # (the loop continues now) - + elif pos == brck_limit: # We are at a bracketing limit. If it is a closing bracket, # eat the bracket, otherwise, stop the search. @@ -237,6 +237,5 @@ else: # We've found an operator or something. break - - return rawtext[last_identifier_pos:self.indexinrawtext] + return rawtext[last_identifier_pos:self.indexinrawtext] Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/MultiCall.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/MultiCall.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/MultiCall.py Sat Nov 12 01:36:07 2005 @@ -160,7 +160,7 @@ if r: return r return handler - + def __init__(self, type, widget, widgetinst): self.type = type self.typename = _types[type][0] @@ -231,7 +231,7 @@ _type_names = dict([(name, number) for number in range(len(_types)) for name in _types[number]]) - + _keysym_re = re.compile(r"^\w+$") _button_re = re.compile(r"^[1-5]$") def _parse_sequence(sequence): @@ -266,7 +266,7 @@ type_re = _keysym_re else: type_re = _button_re - + if not words: detail = None elif len(words) == 1 and type_re.match(words[0]): @@ -336,7 +336,7 @@ #print "event_add(%s,%s) was called"%(repr(virtual),repr(sequences)) if virtual not in self.__eventinfo: self.__eventinfo[virtual] = [None, []] - + func, triplets = self.__eventinfo[virtual] for seq in sequences: triplet = _parse_sequence(seq) @@ -374,7 +374,7 @@ if func: for triplet in triplets: self.__binders[triplet[1]].unbind(triplet, func) - + _multicall_dict[widget] = MultiCall return MultiCall Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/ParenMatch.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/ParenMatch.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/ParenMatch.py Sat Nov 12 01:36:07 2005 @@ -73,7 +73,7 @@ for seq in self.RESTORE_SEQUENCES: self.text.event_add(self.RESTORE_VIRTUAL_EVENT_NAME, seq) self.is_restore_active = True - + def deactivate_restore(self): if self.is_restore_active: for seq in self.RESTORE_SEQUENCES: @@ -169,4 +169,3 @@ self.editwin.text_frame.after(self.FLASH_DELAY, lambda self=self, c=self.counter: \ self.handle_restore_timer(c)) - Modified: python/branches/IDLE-syntax-branch/Lib/idlelib/configDialog.py ============================================================================== --- python/branches/IDLE-syntax-branch/Lib/idlelib/configDialog.py (original) +++ python/branches/IDLE-syntax-branch/Lib/idlelib/configDialog.py Sat Nov 12 01:36:07 2005 @@ -1112,7 +1112,7 @@ winInstances=self.parent.instance_dict.keys() for instance in winInstances: instance.RemoveKeybindings() - + def ActivateConfigChanges(self): "Dynamically apply configuration changes" winInstances=self.parent.instance_dict.keys() From fredrik.lundh at python.org Sat Nov 12 11:15:04 2005 From: fredrik.lundh at python.org (fredrik.lundh@python.org) Date: Sat, 12 Nov 2005 11:15:04 +0100 (CET) Subject: [Python-checkins] commit of r41426 - in python/trunk: . PC Message-ID: <20051112101504.B32F01E400A@bag.python.org> Author: fredrik.lundh Date: Sat Nov 12 11:15:03 2005 New Revision: 41426 Modified: python/trunk/ (props changed) python/trunk/PC/_subprocess.c Log: r849 at spiff: Fredrik | 2005-11-09 10:00:04 +0100 fixed resource leak in _subprocess.CreateProcess when using explicit environments Modified: python/trunk/PC/_subprocess.c ============================================================================== --- python/trunk/PC/_subprocess.c (original) +++ python/trunk/PC/_subprocess.c Sat Nov 12 11:15:03 2005 @@ -333,6 +333,9 @@ /* PyObject_Print(out, stdout, 0); */ + Py_XDECREF(keys); + Py_XDECREF(values); + return out; error: From fredrik.lundh at python.org Sat Nov 12 11:15:15 2005 From: fredrik.lundh at python.org (fredrik.lundh@python.org) Date: Sat, 12 Nov 2005 11:15:15 +0100 (CET) Subject: [Python-checkins] commit of r41427 - in python/trunk: . PC Message-ID: <20051112101515.CA8D51E4025@bag.python.org> Author: fredrik.lundh Date: Sat Nov 12 11:15:14 2005 New Revision: 41427 Modified: python/trunk/ (props changed) python/trunk/PC/_subprocess.c Log: r858 at spiff: Fredrik | 2005-11-10 23:40:04 +0100 #1346547 added basic error checking to the STARTUPINFO code in CreateProcess. Modified: python/trunk/PC/_subprocess.c ============================================================================== --- python/trunk/PC/_subprocess.c (original) +++ python/trunk/PC/_subprocess.c Sat Nov 12 11:15:14 2005 @@ -385,6 +385,9 @@ si.hStdOutput = gethandle(startup_info, "hStdOutput"); si.hStdError = gethandle(startup_info, "hStdError"); + if (PyErr_Occurred()) + return NULL; + if (env_mapping == Py_None) environment = NULL; else { From fredrik.lundh at python.org Sat Nov 12 16:21:05 2005 From: fredrik.lundh at python.org (fredrik.lundh@python.org) Date: Sat, 12 Nov 2005 16:21:05 +0100 (CET) Subject: [Python-checkins] commit of r41428 - in python/trunk: . Lib Message-ID: <20051112152105.976DE1E4011@bag.python.org> Author: fredrik.lundh Date: Sat Nov 12 16:21:05 2005 New Revision: 41428 Modified: python/trunk/ (props changed) python/trunk/Lib/colorsys.py Log: r879 at spiff: Fredrik | 2005-11-12 14:38:03 +0100 r878 at spiff: Fredrik | 2005-11-12 14:37:22 +0100 minor docstring and comment tweaks (wikipedia might not be the ultimate reference, but it's a lot better than "XXX" ;-) Modified: python/trunk/Lib/colorsys.py ============================================================================== --- python/trunk/Lib/colorsys.py (original) +++ python/trunk/Lib/colorsys.py Sat Nov 12 16:21:05 2005 @@ -5,17 +5,21 @@ rgb_to_abc(r, g, b) --> a, b, c abc_to_rgb(a, b, c) --> r, g, b -All inputs and outputs are triples of floats in the range [0.0...1.0]. -Inputs outside this range may cause exceptions or invalid outputs. +All inputs and outputs are triples of floats in the range [0.0...1.0] +(with the exception of I and Q, which covers a slightly larger range). +Inputs outside the valid range may cause exceptions or invalid outputs. Supported color systems: RGB: Red, Green, Blue components -YIQ: used by composite video signals +YIQ: Luminance, Chrominance (used by composite video signals) HLS: Hue, Luminance, Saturation HSV: Hue, Saturation, Value """ + # References: -# XXX Where's the literature? +# http://en.wikipedia.org/wiki/YIQ +# http://en.wikipedia.org/wiki/HLS_color_space +# http://en.wikipedia.org/wiki/HSV_color_space __all__ = ["rgb_to_yiq","yiq_to_rgb","rgb_to_hls","hls_to_rgb", "rgb_to_hsv","hsv_to_rgb"] @@ -26,7 +30,6 @@ ONE_SIXTH = 1.0/6.0 TWO_THIRD = 2.0/3.0 - # YIQ: used by composite video signals (linear combinations of RGB) # Y: perceived grey level (0.0 == black, 1.0 == white) # I, Q: color components @@ -50,10 +53,10 @@ return (r, g, b) -# HLS: Hue, Luminance, S??? +# HLS: Hue, Luminance, Saturation # H: position in the spectrum -# L: ??? -# S: ??? +# L: color lightness +# S: color saturation def rgb_to_hls(r, g, b): maxc = max(r, g, b) @@ -87,10 +90,10 @@ return m1 -# HSV: Hue, Saturation, Value(?) +# HSV: Hue, Saturation, Value # H: position in the spectrum -# S: ??? -# V: ??? +# S: color saturation ("purity") +# V: color brightness def rgb_to_hsv(r, g, b): maxc = max(r, g, b) From fredrik.lundh at python.org Sat Nov 12 16:28:54 2005 From: fredrik.lundh at python.org (fredrik.lundh@python.org) Date: Sat, 12 Nov 2005 16:28:54 +0100 (CET) Subject: [Python-checkins] commit of r41429 - in python/trunk: . Lib/lib-tk Message-ID: <20051112152854.DB2E01E4009@bag.python.org> Author: fredrik.lundh Date: Sat Nov 12 16:28:52 2005 New Revision: 41429 Modified: python/trunk/ (props changed) python/trunk/Lib/lib-tk/tkColorChooser.py python/trunk/Lib/lib-tk/tkCommonDialog.py python/trunk/Lib/lib-tk/tkFont.py python/trunk/Lib/lib-tk/tkMessageBox.py Log: r903 at spiff: Fredrik | 2005-11-12 16:28:37 +0100 removed outdated copyright notices (etc) Modified: python/trunk/Lib/lib-tk/tkColorChooser.py ============================================================================== --- python/trunk/Lib/lib-tk/tkColorChooser.py (original) +++ python/trunk/Lib/lib-tk/tkColorChooser.py Sat Nov 12 16:28:52 2005 @@ -1,7 +1,3 @@ -# -# Instant Python -# $Id$ -# # tk common colour chooser dialogue # # this module provides an interface to the native color dialogue Modified: python/trunk/Lib/lib-tk/tkCommonDialog.py ============================================================================== --- python/trunk/Lib/lib-tk/tkCommonDialog.py (original) +++ python/trunk/Lib/lib-tk/tkCommonDialog.py Sat Nov 12 16:28:52 2005 @@ -1,7 +1,3 @@ -# -# Instant Python -# $Id$ -# # base class for tk common dialogues # # this module provides a base class for accessing the common Modified: python/trunk/Lib/lib-tk/tkFont.py ============================================================================== --- python/trunk/Lib/lib-tk/tkFont.py (original) +++ python/trunk/Lib/lib-tk/tkFont.py Sat Nov 12 16:28:52 2005 @@ -1,19 +1,10 @@ +# Tkinter font wrapper # -# Tkinter -# $Id$ -# -# font wrapper -# -# written by Fredrik Lundh , February 1998 +# written by Fredrik Lundh, February 1998 # # FIXME: should add 'displayof' option where relevant (actual, families, # measure, and metrics) # -# Copyright (c) Secret Labs AB 1998. -# -# info at pythonware.com -# http://www.pythonware.com -# __version__ = "0.9" Modified: python/trunk/Lib/lib-tk/tkMessageBox.py ============================================================================== --- python/trunk/Lib/lib-tk/tkMessageBox.py (original) +++ python/trunk/Lib/lib-tk/tkMessageBox.py Sat Nov 12 16:28:52 2005 @@ -1,7 +1,3 @@ -# -# Instant Python -# $Id$ -# # tk common message boxes # # this module provides an interface to the native message boxes From fredrik.lundh at python.org Sat Nov 12 16:55:04 2005 From: fredrik.lundh at python.org (fredrik.lundh@python.org) Date: Sat, 12 Nov 2005 16:55:04 +0100 (CET) Subject: [Python-checkins] commit of r41430 - in python/trunk: . Lib Message-ID: <20051112155504.E21E81E4013@bag.python.org> Author: fredrik.lundh Date: Sat Nov 12 16:55:04 2005 New Revision: 41430 Modified: python/trunk/ (props changed) python/trunk/Lib/os.py Log: SF#1343671. The removedirs function removes empty directories, it doesn't empty them. Modified: python/trunk/Lib/os.py ============================================================================== --- python/trunk/Lib/os.py (original) +++ python/trunk/Lib/os.py Sat Nov 12 16:55:04 2005 @@ -168,7 +168,7 @@ def removedirs(name): """removedirs(path) - Super-rmdir; remove a leaf directory and empty all intermediate + Super-rmdir; remove a leaf directory and all empty intermediate ones. Works like rmdir except that, if the leaf directory is successfully removed, directories corresponding to rightmost path segments will be pruned away until either the whole path is From phillip.eby at python.org Sun Nov 13 02:08:33 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Sun, 13 Nov 2005 02:08:33 +0100 (CET) Subject: [Python-checkins] commit of r41431 - sandbox/trunk/setuptools Message-ID: <20051113010833.E5DE31E4009@bag.python.org> Author: phillip.eby Date: Sun Nov 13 02:08:33 2005 New Revision: 41431 Modified: sandbox/trunk/setuptools/pkg_resources.py sandbox/trunk/setuptools/pkg_resources.txt Log: Fixed a problem with nested namespace packages (e.g. ``peak.util``) not being set as an attribute of their parent package. Modified: sandbox/trunk/setuptools/pkg_resources.py ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.py (original) +++ sandbox/trunk/setuptools/pkg_resources.py Sun Nov 13 02:08:33 2005 @@ -843,7 +843,7 @@ and the result is always lowercased. """ return re.sub('[^A-Za-z0-9]+', '_', extra).lower() - + @@ -1423,7 +1423,7 @@ module = sys.modules.get(packageName) if module is None: module = sys.modules[packageName] = new.module(packageName) - module.__path__ = [] + module.__path__ = []; _set_parent_ns(packageName) elif not hasattr(module,'__path__'): raise TypeError("Not a package:", packageName) handler = _find_adapter(_namespace_handlers, importer) @@ -1501,12 +1501,12 @@ return os.path.normcase(os.path.realpath(filename)) - - - - - - +def _set_parent_ns(packageName): + parts = packageName.split('.') + name = parts.pop() + if parts: + parent = '.'.join(parts) + setattr(sys.modules[parent], name, sys.modules[packageName]) @@ -1945,7 +1945,7 @@ g = globals() try: # find the first stack frame that is *not* code in - # the pkg_resources module, to use for the warning + # the pkg_resources module, to use for the warning while sys._getframe(level).f_globals is g: level += 1 except ValueError: Modified: sandbox/trunk/setuptools/pkg_resources.txt ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.txt (original) +++ sandbox/trunk/setuptools/pkg_resources.txt Sun Nov 13 02:08:33 2005 @@ -1500,6 +1500,9 @@ * Fix path insertion algorithm for case-insensitive filesystems. + * Fixed a problem with nested namespace packages (e.g. ``peak.util``) not + being set as an attribute of their parent package. + 0.6a6 * Activated distributions are now inserted in ``sys.path`` (and the working set) just before the directory that contains them, instead of at the end. From neal.norwitz at python.org Sun Nov 13 02:08:39 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 02:08:39 +0100 (CET) Subject: [Python-checkins] commit of r41432 - python/trunk/Python Message-ID: <20051113010839.267C71E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 02:08:38 2005 New Revision: 41432 Modified: python/trunk/Python/compile.c Log: make internal method static Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Sun Nov 13 02:08:38 2005 @@ -3625,7 +3625,7 @@ a->a_postorder[a->a_nblocks++] = b; } -int +static int stackdepth_walk(struct compiler *c, basicblock *b, int depth, int maxdepth) { int i; From skip.montanaro at python.org Sun Nov 13 16:54:16 2005 From: skip.montanaro at python.org (skip.montanaro@python.org) Date: Sun, 13 Nov 2005 16:54:16 +0100 (CET) Subject: [Python-checkins] commit of r41433 - python/trunk Message-ID: <20051113155416.740771E4009@bag.python.org> Author: skip.montanaro Date: Sun Nov 13 16:54:15 2005 New Revision: 41433 Modified: python/trunk/Makefile.pre.in Log: delete Python-ast.[ch] in distclean Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Sun Nov 13 16:54:15 2005 @@ -987,6 +987,7 @@ distclean: clobber -rm -f core Makefile Makefile.pre buildno config.status \ Modules/Setup Modules/Setup.local Modules/Setup.config + -rm -f $(AST_H) $(AST_C) find $(srcdir) '(' -name '*.fdc' -o -name '*~' \ -o -name '[@,#]*' -o -name '*.old' \ -o -name '*.orig' -o -name '*.rej' \ From neal.norwitz at python.org Sun Nov 13 19:41:29 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 19:41:29 +0100 (CET) Subject: [Python-checkins] commit of r41434 - in python/trunk: Include Objects Parser Python Message-ID: <20051113184129.8221C1E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 19:41:28 2005 New Revision: 41434 Modified: python/trunk/Include/Python-ast.h python/trunk/Objects/setobject.c python/trunk/Parser/asdl_c.py python/trunk/Python/Python-ast.c python/trunk/Python/future.c Log: Prevent name pollution by making lots of internal functions static. Modified: python/trunk/Include/Python-ast.h ============================================================================== --- python/trunk/Include/Python-ast.h (original) +++ python/trunk/Include/Python-ast.h Sun Nov 13 19:41:28 2005 @@ -1,4 +1,4 @@ -/* File automatically generated by ../Parser/asdl_c.py */ +/* File automatically generated by ./Parser/asdl_c.py */ #include "asdl.h" @@ -402,17 +402,3 @@ void free_arguments(arguments_ty); void free_keyword(keyword_ty); void free_alias(alias_ty); -int marshal_write_mod(PyObject **, int *, mod_ty); -int marshal_write_stmt(PyObject **, int *, stmt_ty); -int marshal_write_expr(PyObject **, int *, expr_ty); -int marshal_write_expr_context(PyObject **, int *, expr_context_ty); -int marshal_write_slice(PyObject **, int *, slice_ty); -int marshal_write_boolop(PyObject **, int *, boolop_ty); -int marshal_write_operator(PyObject **, int *, operator_ty); -int marshal_write_unaryop(PyObject **, int *, unaryop_ty); -int marshal_write_cmpop(PyObject **, int *, cmpop_ty); -int marshal_write_comprehension(PyObject **, int *, comprehension_ty); -int marshal_write_excepthandler(PyObject **, int *, excepthandler_ty); -int marshal_write_arguments(PyObject **, int *, arguments_ty); -int marshal_write_keyword(PyObject **, int *, keyword_ty); -int marshal_write_alias(PyObject **, int *, alias_ty); Modified: python/trunk/Objects/setobject.c ============================================================================== --- python/trunk/Objects/setobject.c (original) +++ python/trunk/Objects/setobject.c Sun Nov 13 19:41:28 2005 @@ -1214,7 +1214,7 @@ return (PyObject *)so; } -int +static int set_difference_update_internal(PySetObject *so, PyObject *other) { if ((PyObject *)so == other) Modified: python/trunk/Parser/asdl_c.py ============================================================================== --- python/trunk/Parser/asdl_c.py (original) +++ python/trunk/Parser/asdl_c.py Sun Nov 13 19:41:28 2005 @@ -334,7 +334,7 @@ def prototype(self, sum, name): ctype = get_c_type(name) - self.emit("int marshal_write_%s(PyObject **, int *, %s);" + self.emit("static int marshal_write_%s(PyObject **, int *, %s);" % (name, ctype), 0) visitProduct = visitSum = prototype @@ -487,7 +487,7 @@ def func_begin(self, name, has_seq): ctype = get_c_type(name) - self.emit("int", 0) + self.emit("static int", 0) self.emit("marshal_write_%s(PyObject **buf, int *off, %s o)" % (name, ctype), 0) self.emit("{", 0) @@ -580,7 +580,6 @@ StructVisitor(f), PrototypeVisitor(f), FreePrototypeVisitor(f), - MarshalPrototypeVisitor(f), ) c.visit(mod) f.close() @@ -594,7 +593,8 @@ print >> f, '#include "Python.h"' print >> f, '#include "%s-ast.h"' % mod.name print >> f - v = ChainOfVisitors(FunctionVisitor(f), + v = ChainOfVisitors(MarshalPrototypeVisitor(f), + FunctionVisitor(f), StaticVisitor(f), FreeVisitor(f), MarshalFunctionVisitor(f), Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Sun Nov 13 19:41:28 2005 @@ -3,6 +3,20 @@ #include "Python.h" #include "Python-ast.h" +static int marshal_write_mod(PyObject **, int *, mod_ty); +static int marshal_write_stmt(PyObject **, int *, stmt_ty); +static int marshal_write_expr(PyObject **, int *, expr_ty); +static int marshal_write_expr_context(PyObject **, int *, expr_context_ty); +static int marshal_write_slice(PyObject **, int *, slice_ty); +static int marshal_write_boolop(PyObject **, int *, boolop_ty); +static int marshal_write_operator(PyObject **, int *, operator_ty); +static int marshal_write_unaryop(PyObject **, int *, unaryop_ty); +static int marshal_write_cmpop(PyObject **, int *, cmpop_ty); +static int marshal_write_comprehension(PyObject **, int *, comprehension_ty); +static int marshal_write_excepthandler(PyObject **, int *, excepthandler_ty); +static int marshal_write_arguments(PyObject **, int *, arguments_ty); +static int marshal_write_keyword(PyObject **, int *, keyword_ty); +static int marshal_write_alias(PyObject **, int *, alias_ty); mod_ty Module(asdl_seq * body) { @@ -1519,7 +1533,7 @@ free(o); } -int +static int marshal_write_mod(PyObject **buf, int *off, mod_ty o) { int i; @@ -1557,7 +1571,7 @@ return 1; } -int +static int marshal_write_stmt(PyObject **buf, int *off, stmt_ty o) { int i; @@ -1818,7 +1832,7 @@ return 1; } -int +static int marshal_write_expr(PyObject **buf, int *off, expr_ty o) { int i; @@ -1989,7 +2003,7 @@ return 1; } -int +static int marshal_write_expr_context(PyObject **buf, int *off, expr_context_ty o) { switch (o) { @@ -2015,7 +2029,7 @@ return 1; } -int +static int marshal_write_slice(PyObject **buf, int *off, slice_ty o) { int i; @@ -2063,7 +2077,7 @@ return 1; } -int +static int marshal_write_boolop(PyObject **buf, int *off, boolop_ty o) { switch (o) { @@ -2077,7 +2091,7 @@ return 1; } -int +static int marshal_write_operator(PyObject **buf, int *off, operator_ty o) { switch (o) { @@ -2121,7 +2135,7 @@ return 1; } -int +static int marshal_write_unaryop(PyObject **buf, int *off, unaryop_ty o) { switch (o) { @@ -2141,7 +2155,7 @@ return 1; } -int +static int marshal_write_cmpop(PyObject **buf, int *off, cmpop_ty o) { switch (o) { @@ -2179,7 +2193,7 @@ return 1; } -int +static int marshal_write_comprehension(PyObject **buf, int *off, comprehension_ty o) { int i; @@ -2193,7 +2207,7 @@ return 1; } -int +static int marshal_write_excepthandler(PyObject **buf, int *off, excepthandler_ty o) { int i; @@ -2219,7 +2233,7 @@ return 1; } -int +static int marshal_write_arguments(PyObject **buf, int *off, arguments_ty o) { int i; @@ -2250,7 +2264,7 @@ return 1; } -int +static int marshal_write_keyword(PyObject **buf, int *off, keyword_ty o) { marshal_write_identifier(buf, off, o->arg); @@ -2258,7 +2272,7 @@ return 1; } -int +static int marshal_write_alias(PyObject **buf, int *off, alias_ty o) { marshal_write_identifier(buf, off, o->name); Modified: python/trunk/Python/future.c ============================================================================== --- python/trunk/Python/future.c (original) +++ python/trunk/Python/future.c Sun Nov 13 19:41:28 2005 @@ -46,7 +46,7 @@ return 1; } -int +static int future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename) { int i, found_docstring = 0, done = 0, prev_line = 0; From neal.norwitz at python.org Sun Nov 13 19:50:34 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 19:50:34 +0100 (CET) Subject: [Python-checkins] commit of r41435 - python/trunk/Python Message-ID: <20051113185034.E2A9E1E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 19:50:34 2005 New Revision: 41435 Modified: python/trunk/Python/compile.c python/trunk/Python/symtable.c Log: Fix a lot of memory and ref leaks in error paths. (Call symtable_exit_block or compiler_exit_scope as appropriate) Use PyMem_Free on c_future since it was allocated with PyMem_Malloc Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Sun Nov 13 19:50:34 2005 @@ -302,7 +302,7 @@ if (c->c_st) PySymtable_Free(c->c_st); if (c->c_future) - PyObject_Free((void *)c->c_future); + PyMem_Free(c->c_future); Py_DECREF(c->c_stack); } @@ -1607,6 +1607,13 @@ return 0; \ } +#define ADDOP_IN_SCOPE(C, OP) { \ + if (!compiler_addop((C), (OP))) { \ + compiler_exit_scope(c); \ + return 0; \ + } \ +} + #define ADDOP_O(C, OP, O, TYPE) { \ if (!compiler_addop_o((C), (OP), (C)->u->u_ ## TYPE, (O))) \ return 0; \ @@ -1641,6 +1648,13 @@ return 0; \ } +#define VISIT_IN_SCOPE(C, TYPE, V) {\ + if (!compiler_visit_ ## TYPE((C), (V))) { \ + compiler_exit_scope(c); \ + return 0; \ + } \ +} + #define VISIT_SLICE(C, V, CTX) {\ if (!compiler_visit_slice((C), (V), (CTX))) \ return 0; \ @@ -1656,6 +1670,18 @@ } \ } +#define VISIT_SEQ_IN_SCOPE(C, TYPE, SEQ) { \ + int i; \ + asdl_seq *seq = (SEQ); /* avoid variable capture */ \ + for (i = 0; i < asdl_seq_LEN(seq); i++) { \ + TYPE ## _ty elt = asdl_seq_GET(seq, i); \ + if (!compiler_visit_ ## TYPE((C), elt)) { \ + compiler_exit_scope(c); \ + return 0; \ + } \ + } \ +} + static int compiler_isdocstring(stmt_ty s) { @@ -1708,15 +1734,15 @@ break; case Interactive_kind: c->c_interactive = 1; - VISIT_SEQ(c, stmt, mod->v.Interactive.body); + VISIT_SEQ_IN_SCOPE(c, stmt, mod->v.Interactive.body); break; case Expression_kind: - VISIT(c, expr, mod->v.Expression.body); + VISIT_IN_SCOPE(c, expr, mod->v.Expression.body); addNone = 0; break; case Suite_kind: assert(0); /* XXX: what should we do here? */ - VISIT_SEQ(c, stmt, mod->v.Suite.body); + VISIT_SEQ_IN_SCOPE(c, stmt, mod->v.Suite.body); break; default: assert(0); @@ -1890,7 +1916,7 @@ if (i == 0 && s2->kind == Expr_kind && s2->v.Expr.value->kind == Str_kind) continue; - VISIT(c, stmt, s2); + VISIT_IN_SCOPE(c, stmt, s2); } co = assemble(c, 1); compiler_exit_scope(c); @@ -1945,8 +1971,8 @@ return 0; } - ADDOP(c, LOAD_LOCALS); - ADDOP(c, RETURN_VALUE); + ADDOP_IN_SCOPE(c, LOAD_LOCALS); + ADDOP_IN_SCOPE(c, RETURN_VALUE); co = assemble(c, 1); compiler_exit_scope(c); if (co == NULL) @@ -1981,8 +2007,8 @@ compiler_arguments(c, args); c->u->u_argcount = asdl_seq_LEN(args->args); - VISIT(c, expr, e->v.Lambda.body); - ADDOP(c, RETURN_VALUE); + VISIT_IN_SCOPE(c, expr, e->v.Lambda.body); + ADDOP_IN_SCOPE(c, RETURN_VALUE); co = assemble(c, 1); compiler_exit_scope(c); if (co == NULL) Modified: python/trunk/Python/symtable.c ============================================================================== --- python/trunk/Python/symtable.c (original) +++ python/trunk/Python/symtable.c Sun Nov 13 19:50:34 2005 @@ -16,7 +16,7 @@ void *key, int lineno) { PySTEntryObject *ste = NULL; - PyObject *k, *v; + PyObject *k; k = PyLong_FromVoidPtr(key); if (k == NULL) @@ -29,21 +29,22 @@ ste->ste_name = name; Py_INCREF(name); - - v = PyDict_New(); - if (v == NULL) + + ste->ste_symbols = NULL; + ste->ste_varnames = NULL; + ste->ste_children = NULL; + + ste->ste_symbols = PyDict_New(); + if (ste->ste_symbols == NULL) goto fail; - ste->ste_symbols = v; - v = PyList_New(0); - if (v == NULL) + ste->ste_varnames = PyList_New(0); + if (ste->ste_varnames == NULL) goto fail; - ste->ste_varnames = v; - v = PyList_New(0); - if (v == NULL) + ste->ste_children = PyList_New(0); + if (ste->ste_children == NULL) goto fail; - ste->ste_children = v; ste->ste_type = block; ste->ste_unoptimized = 0; @@ -187,6 +188,8 @@ return NULL; st->st_filename = NULL; + st->st_symbols = NULL; + if ((st->st_stack = PyList_New(0)) == NULL) goto fail; if ((st->st_symbols = PyDict_New()) == NULL) @@ -236,13 +239,18 @@ case Suite_kind: PyErr_SetString(PyExc_RuntimeError, "this compiler does not handle Suites"); - return NULL; + goto error; } - if (!symtable_exit_block(st, (void *)mod)) + if (!symtable_exit_block(st, (void *)mod)) { + PySymtable_Free(st); return NULL; + } if (symtable_analyze(st)) return st; + PySymtable_Free(st); + return NULL; error: + (void) symtable_exit_block(st, (void *)mod); PySymtable_Free(st); return NULL; } @@ -266,15 +274,15 @@ v = PyDict_GetItem(st->st_symbols, k); if (v) { assert(PySTEntry_Check(v)); - Py_DECREF(k); Py_INCREF(v); - return (PySTEntryObject *)v; } else { PyErr_SetString(PyExc_KeyError, "unknown symbol table entry"); - return NULL; } + + Py_DECREF(k); + return (PySTEntryObject *)v; } int @@ -329,8 +337,11 @@ PyObject *o = PyInt_FromLong(I); \ if (!o) \ return 0; \ - if (PyDict_SetItem((DICT), (NAME), o) < 0) \ + if (PyDict_SetItem((DICT), (NAME), o) < 0) { \ + Py_DECREF(o); \ return 0; \ + } \ + Py_DECREF(o); \ } /* Decide on scope of name, given flags. @@ -536,6 +547,7 @@ Py_DECREF(free_value); return 0; } + Py_DECREF(o); } /* else it's not free, probably a cell */ continue; @@ -663,7 +675,7 @@ return 0; global = PyDict_New(); if (!global) { - Py_DECREF(global); + Py_DECREF(free); return 0; } r = analyze_block(st->st_top, NULL, free, global); @@ -820,7 +832,13 @@ #define VISIT(ST, TYPE, V) \ if (!symtable_visit_ ## TYPE((ST), (V))) \ return 0; - + +#define VISIT_IN_BLOCK(ST, TYPE, V, S) \ + if (!symtable_visit_ ## TYPE((ST), (V))) { \ + symtable_exit_block((ST), (S)); \ + return 0; \ + } + #define VISIT_SEQ(ST, TYPE, SEQ) { \ int i; \ asdl_seq *seq = (SEQ); /* avoid variable capture */ \ @@ -830,7 +848,19 @@ return 0; \ } \ } - + +#define VISIT_SEQ_IN_BLOCK(ST, TYPE, SEQ, S) { \ + int i; \ + asdl_seq *seq = (SEQ); /* avoid variable capture */ \ + for (i = 0; i < asdl_seq_LEN(seq); i++) { \ + TYPE ## _ty elt = asdl_seq_GET(seq, i); \ + if (!symtable_visit_ ## TYPE((ST), elt)) { \ + symtable_exit_block((ST), (S)); \ + return 0; \ + } \ + } \ +} + #define VISIT_SEQ_TAIL(ST, TYPE, SEQ, START) { \ int i; \ asdl_seq *seq = (SEQ); /* avoid variable capture */ \ @@ -840,7 +870,19 @@ return 0; \ } \ } - + +#define VISIT_SEQ_TAIL_IN_BLOCK(ST, TYPE, SEQ, START, S) { \ + int i; \ + asdl_seq *seq = (SEQ); /* avoid variable capture */ \ + for (i = (START); i < asdl_seq_LEN(seq); i++) { \ + TYPE ## _ty elt = asdl_seq_GET(seq, i); \ + if (!symtable_visit_ ## TYPE((ST), elt)) { \ + symtable_exit_block((ST), (S)); \ + return 0; \ + } \ + } \ +} + static int symtable_visit_stmt(struct symtable *st, stmt_ty s) { @@ -855,8 +897,8 @@ if (!symtable_enter_block(st, s->v.FunctionDef.name, FunctionBlock, (void *)s, s->lineno)) return 0; - VISIT(st, arguments, s->v.FunctionDef.args); - VISIT_SEQ(st, stmt, s->v.FunctionDef.body); + VISIT_IN_BLOCK(st, arguments, s->v.FunctionDef.args, s); + VISIT_SEQ_IN_BLOCK(st, stmt, s->v.FunctionDef.body, s); if (!symtable_exit_block(st, s)) return 0; break; @@ -870,7 +912,7 @@ return 0; tmp = st->st_private; st->st_private = s->v.ClassDef.name; - VISIT_SEQ(st, stmt, s->v.ClassDef.body); + VISIT_SEQ_IN_BLOCK(st, stmt, s->v.ClassDef.body, s); st->st_private = tmp; if (!symtable_exit_block(st, s)) return 0; @@ -977,7 +1019,7 @@ if (cur < 0) return 0; if (cur & (DEF_LOCAL | USE)) { - char buf[1000]; + char buf[256]; if (cur & DEF_LOCAL) PyOS_snprintf(buf, sizeof(buf), GLOBAL_AFTER_ASSIGN, @@ -991,9 +1033,7 @@ } if (!symtable_add_def(st, name, DEF_GLOBAL)) return 0; - } - break; } case Expr_kind: @@ -1031,8 +1071,8 @@ if (!symtable_enter_block(st, GET_IDENTIFIER(lambda), FunctionBlock, (void *)e, 0)) return 0; - VISIT(st, arguments, e->v.Lambda.args); - VISIT(st, expr, e->v.Lambda.body); + VISIT_IN_BLOCK(st, arguments, e->v.Lambda.args, (void*)e); + VISIT_IN_BLOCK(st, expr, e->v.Lambda.body, (void*)e); if (!symtable_exit_block(st, (void *)e)) return 0; break; @@ -1302,12 +1342,14 @@ st->st_cur->ste_generator = 1; /* Outermost iter is received as an argument */ if (!symtable_implicit_arg(st, 0)) { + symtable_exit_block(st, (void *)e); return 0; } - VISIT(st, expr, outermost->target); - VISIT_SEQ(st, expr, outermost->ifs); - VISIT_SEQ_TAIL(st, comprehension, e->v.GeneratorExp.generators, 1); - VISIT(st, expr, e->v.GeneratorExp.elt); + VISIT_IN_BLOCK(st, expr, outermost->target, (void*)e); + VISIT_SEQ_IN_BLOCK(st, expr, outermost->ifs, (void*)e); + VISIT_SEQ_TAIL_IN_BLOCK(st, comprehension, + e->v.GeneratorExp.generators, 1, (void*)e); + VISIT_IN_BLOCK(st, expr, e->v.GeneratorExp.elt, (void*)e); if (!symtable_exit_block(st, (void *)e)) return 0; return 1; From neal.norwitz at python.org Sun Nov 13 19:55:39 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 19:55:39 +0100 (CET) Subject: [Python-checkins] commit of r41436 - python/trunk/Objects Message-ID: <20051113185539.860A31E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 19:55:39 2005 New Revision: 41436 Modified: python/trunk/Objects/obmalloc.c Log: Do a better job of not inlining Py_ADDRESS_IN_RANGE() for newer gcc's. Perhaps Py_NO_INLINE should be moved to pyport.h or some other header? Modified: python/trunk/Objects/obmalloc.c ============================================================================== --- python/trunk/Objects/obmalloc.c (original) +++ python/trunk/Objects/obmalloc.c Sun Nov 13 19:55:39 2005 @@ -557,8 +557,15 @@ #undef Py_ADDRESS_IN_RANGE -/* Don't make static, to ensure this isn't inlined. */ -int Py_ADDRESS_IN_RANGE(void *P, poolp pool); +#if defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) +#define Py_NO_INLINE __attribute__((__noinline__)) +#else +#define Py_NO_INLINE +#endif + +/* Don't make static, to try to ensure this isn't inlined. */ +int Py_ADDRESS_IN_RANGE(void *P, poolp pool) Py_NO_INLINE; +#undef Py_NO_INLINE #endif /*==========================================================================*/ From neal.norwitz at python.org Sun Nov 13 19:58:32 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 19:58:32 +0100 (CET) Subject: [Python-checkins] commit of r41437 - python/trunk/Misc Message-ID: <20051113185832.A6A611E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 19:58:32 2005 New Revision: 41437 Modified: python/trunk/Misc/valgrind-python.supp Log: Updated gentoo to 2005.0 Modified: python/trunk/Misc/valgrind-python.supp ============================================================================== --- python/trunk/Misc/valgrind-python.supp (original) +++ python/trunk/Misc/valgrind-python.supp Sun Nov 13 19:58:32 2005 @@ -29,7 +29,7 @@ } { - ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64) + ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64) Memcheck:Value8 fun:Py_ADDRESS_IN_RANGE } @@ -40,6 +40,57 @@ fun:Py_ADDRESS_IN_RANGE } +# +# Leaks (including possible leaks) +# Hmmm, I wonder if this masks some real leaks. I think it does. +# Will need to fix that. +# + +{ + Handle PyMalloc confusing valgrind (possibly leaked) + Memcheck:Leak + fun:realloc + fun:_PyObject_GC_Resize + fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING +} + +{ + Handle PyMalloc confusing valgrind (possibly leaked) + Memcheck:Leak + fun:malloc + fun:_PyObject_GC_New + fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING +} + +{ + Handle PyMalloc confusing valgrind (possibly leaked) + Memcheck:Leak + fun:malloc + fun:_PyObject_GC_NewVar + fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING +} + +# +# Non-python specific leaks +# + +{ + Handle pthread issue (possibly leaked) + Memcheck:Leak + fun:calloc + fun:allocate_dtv + fun:_dl_allocate_tls_storage + fun:_dl_allocate_tls +} + +{ + Handle pthread issue (possibly leaked) + Memcheck:Leak + fun:memalign + fun:_dl_allocate_tls_storage + fun:_dl_allocate_tls +} + ###{ ### ADDRESS_IN_RANGE/Invalid read of size 4 ### Memcheck:Addr4 @@ -81,6 +132,53 @@ ### that Python uses. The problems to not appear to be related to Python's ### use of the libraries. ### + +{ + DBM problems, see test_dbm + Memcheck:Param + write(buf) + fun:write + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + fun:dbm_close +} + +{ + DBM problems, see test_dbm + Memcheck:Value8 + fun:memmove + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + fun:dbm_store + fun:dbm_ass_sub +} + +{ + DBM problems, see test_dbm + Memcheck:Cond + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + fun:dbm_store + fun:dbm_ass_sub +} + +{ + DBM problems, see test_dbm + Memcheck:Cond + fun:memmove + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + obj:/usr/lib/libdb1.so.2 + fun:dbm_store + fun:dbm_ass_sub +} + { GDBM problems, see test_gdbm Memcheck:Param @@ -91,76 +189,11 @@ } { - Avoid problem in libc on gentoo + ZLIB problems, see test_gzip Memcheck:Cond - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so -} - -{ - Avoid problem in glibc on gentoo - Memcheck:Addr8 - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/libc-2.3.4.so - obj:/lib/ld-2.3.4.so - fun:_dl_open - obj:/lib/libdl-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/libdl-2.3.4.so - fun:dlopen -} - -{ - Avoid problem in glibc on gentoo - Memcheck:Addr8 - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/libc-2.3.4.so - obj:/lib/ld-2.3.4.so - fun:_dl_open - obj:/lib/libdl-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/libdl-2.3.4.so - fun:dlopen -} - -{ - Avoid problem in glibc on gentoo - Memcheck:Cond - obj:/lib/ld-2.3.4.so - obj:/lib/libc-2.3.4.so - obj:/lib/ld-2.3.4.so - fun:_dl_open - obj:/lib/libdl-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/libdl-2.3.4.so - fun:dlopen -} - -{ - Avoid problem in glibc on gentoo - Memcheck:Cond - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/libc-2.3.4.so - obj:/lib/ld-2.3.4.so - fun:_dl_open - obj:/lib/libdl-2.3.4.so - obj:/lib/ld-2.3.4.so - obj:/lib/libdl-2.3.4.so - fun:dlopen + obj:/lib/libz.so.1.2.3 + obj:/lib/libz.so.1.2.3 + fun:deflate } { @@ -173,33 +206,6 @@ fun:_rl_init_terminal_io obj:/lib/libreadline.so.4.3 fun:rl_initialize - fun:setup_readline - fun:initreadline - fun:_PyImport_LoadDynamicModule - fun:load_module - fun:import_submodule - fun:load_next - fun:import_module_ex - fun:PyImport_ImportModuleEx -} - -{ - Mysterious leak that seems to deal w/pthreads - Memcheck:Leak - fun:calloc - obj:/lib/ld-2.3.4.so - obj:/lib/ld-2.3.4.so - fun:_dl_allocate_tls - fun:__pthread_initialize_minimal -} - -{ - Mysterious leak that seems to deal w/pthreads - Memcheck:Leak - fun:memalign - obj:/lib/ld-2.3.4.so - fun:_dl_allocate_tls - fun:__pthread_initialize_minimal } ### From neal.norwitz at python.org Sun Nov 13 20:14:22 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 20:14:22 +0100 (CET) Subject: [Python-checkins] commit of r41438 - in python/trunk: Include Parser Python Message-ID: <20051113191422.D1AE31E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 20:14:20 2005 New Revision: 41438 Modified: python/trunk/Include/Python-ast.h python/trunk/Include/asdl.h python/trunk/Parser/asdl_c.py python/trunk/Python/Python-ast.c python/trunk/Python/asdl.c Log: Whoops, checkin consistent versions of *all* files to stop polluting a bunch of names Modified: python/trunk/Include/Python-ast.h ============================================================================== --- python/trunk/Include/Python-ast.h (original) +++ python/trunk/Include/Python-ast.h Sun Nov 13 20:14:20 2005 @@ -34,6 +34,7 @@ typedef struct _alias *alias_ty; + struct _mod { enum { Module_kind=1, Interactive_kind=2, Expression_kind=3, Suite_kind=4 } kind; @@ -326,6 +327,7 @@ identifier asname; }; + mod_ty Module(asdl_seq * body); mod_ty Interactive(asdl_seq * body); mod_ty Expression(expr_ty body); @@ -388,6 +390,7 @@ asdl_seq * defaults); keyword_ty keyword(identifier arg, expr_ty value); alias_ty alias(identifier name, identifier asname); + void free_mod(mod_ty); void free_stmt(stmt_ty); void free_expr(expr_ty); @@ -402,3 +405,4 @@ void free_arguments(arguments_ty); void free_keyword(keyword_ty); void free_alias(alias_ty); + Modified: python/trunk/Include/asdl.h ============================================================================== --- python/trunk/Include/asdl.h (original) +++ python/trunk/Include/asdl.h Sun Nov 13 20:14:20 2005 @@ -44,11 +44,4 @@ #endif #define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size) -/* Routines to marshal the basic types. */ -int marshal_write_int(PyObject **, int *, int); -int marshal_write_bool(PyObject **, int *, bool); -int marshal_write_identifier(PyObject **, int *, identifier); -int marshal_write_string(PyObject **, int *, string); -int marshal_write_object(PyObject **, int *, object); - #endif /* !Py_ASDL_H */ Modified: python/trunk/Parser/asdl_c.py ============================================================================== --- python/trunk/Parser/asdl_c.py (original) +++ python/trunk/Parser/asdl_c.py Sun Nov 13 20:14:20 2005 @@ -367,7 +367,12 @@ class StaticVisitor(PickleVisitor): - '''Very simple, always emit this static code''' + CODE = '''Very simple, always emit this static code. Overide CODE''' + + def visit(self, object): + self.emit(self.CODE, 0, reflow=False) + +class FreeUtilVisitor(StaticVisitor): CODE = '''static void free_seq_exprs(asdl_seq *seq) @@ -390,10 +395,6 @@ } ''' - def visit(self, object): - self.emit(self.CODE, 0, reflow=False) - - class FreeVisitor(PickleVisitor): def func_begin(self, name, has_seq): @@ -483,6 +484,77 @@ self.emit("free_%s((%s)%s);" % (field.type, ctype, value), depth) +class MarshalUtilVisitor(StaticVisitor): + + CODE = ''' +#define CHECKSIZE(BUF, OFF, MIN) { \\ + int need = *(OFF) + MIN; \\ + if (need >= PyString_GET_SIZE(*(BUF))) { \\ + int newsize = PyString_GET_SIZE(*(BUF)) * 2; \\ + if (newsize < need) \\ + newsize = need; \\ + if (_PyString_Resize((BUF), newsize) < 0) \\ + return 0; \\ + } \\ +} + +static int +marshal_write_int(PyObject **buf, int *offset, int x) +{ + char *s; + + CHECKSIZE(buf, offset, 4) + s = PyString_AS_STRING(*buf) + (*offset); + s[0] = (x & 0xff); + s[1] = (x >> 8) & 0xff; + s[2] = (x >> 16) & 0xff; + s[3] = (x >> 24) & 0xff; + *offset += 4; + return 1; +} + +static int +marshal_write_bool(PyObject **buf, int *offset, bool b) +{ + if (b) + marshal_write_int(buf, offset, 1); + else + marshal_write_int(buf, offset, 0); + return 1; +} + +static int +marshal_write_identifier(PyObject **buf, int *offset, identifier id) +{ + int l = PyString_GET_SIZE(id); + marshal_write_int(buf, offset, l); + CHECKSIZE(buf, offset, l); + memcpy(PyString_AS_STRING(*buf) + *offset, + PyString_AS_STRING(id), l); + *offset += l; + return 1; +} + +static int +marshal_write_string(PyObject **buf, int *offset, string s) +{ + int len = PyString_GET_SIZE(s); + marshal_write_int(buf, offset, len); + CHECKSIZE(buf, offset, len); + memcpy(PyString_AS_STRING(*buf) + *offset, + PyString_AS_STRING(s), len); + *offset += len; + return 1; +} + +static int +marshal_write_object(PyObject **buf, int *offset, object s) +{ + /* XXX */ + return 0; +} +''' + class MarshalFunctionVisitor(PickleVisitor): def func_begin(self, name, has_seq): @@ -563,6 +635,7 @@ def visit(self, object): for v in self.visitors: v.visit(object) + v.emit("", 0) def main(srcfile): auto_gen_msg = '/* File automatically generated by %s */\n' % sys.argv[0] @@ -595,8 +668,9 @@ print >> f v = ChainOfVisitors(MarshalPrototypeVisitor(f), FunctionVisitor(f), - StaticVisitor(f), + FreeUtilVisitor(f), FreeVisitor(f), + MarshalUtilVisitor(f), MarshalFunctionVisitor(f), ) v.visit(mod) Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Sun Nov 13 20:14:20 2005 @@ -17,6 +17,7 @@ static int marshal_write_arguments(PyObject **, int *, arguments_ty); static int marshal_write_keyword(PyObject **, int *, keyword_ty); static int marshal_write_alias(PyObject **, int *, alias_ty); + mod_ty Module(asdl_seq * body) { @@ -1087,6 +1088,7 @@ return p; } + static void free_seq_exprs(asdl_seq *seq) { @@ -1107,6 +1109,7 @@ asdl_seq_free(seq); } + void free_mod(mod_ty o) { @@ -1533,6 +1536,76 @@ free(o); } + + +#define CHECKSIZE(BUF, OFF, MIN) { \ + int need = *(OFF) + MIN; \ + if (need >= PyString_GET_SIZE(*(BUF))) { \ + int newsize = PyString_GET_SIZE(*(BUF)) * 2; \ + if (newsize < need) \ + newsize = need; \ + if (_PyString_Resize((BUF), newsize) < 0) \ + return 0; \ + } \ +} + +static int +marshal_write_int(PyObject **buf, int *offset, int x) +{ + char *s; + + CHECKSIZE(buf, offset, 4) + s = PyString_AS_STRING(*buf) + (*offset); + s[0] = (x & 0xff); + s[1] = (x >> 8) & 0xff; + s[2] = (x >> 16) & 0xff; + s[3] = (x >> 24) & 0xff; + *offset += 4; + return 1; +} + +static int +marshal_write_bool(PyObject **buf, int *offset, bool b) +{ + if (b) + marshal_write_int(buf, offset, 1); + else + marshal_write_int(buf, offset, 0); + return 1; +} + +static int +marshal_write_identifier(PyObject **buf, int *offset, identifier id) +{ + int l = PyString_GET_SIZE(id); + marshal_write_int(buf, offset, l); + CHECKSIZE(buf, offset, l); + memcpy(PyString_AS_STRING(*buf) + *offset, + PyString_AS_STRING(id), l); + *offset += l; + return 1; +} + +static int +marshal_write_string(PyObject **buf, int *offset, string s) +{ + int len = PyString_GET_SIZE(s); + marshal_write_int(buf, offset, len); + CHECKSIZE(buf, offset, len); + memcpy(PyString_AS_STRING(*buf) + *offset, + PyString_AS_STRING(s), len); + *offset += len; + return 1; +} + +static int +marshal_write_object(PyObject **buf, int *offset, object s) +{ + /* XXX */ + return 0; +} + + static int marshal_write_mod(PyObject **buf, int *off, mod_ty o) { @@ -2286,3 +2359,4 @@ return 1; } + Modified: python/trunk/Python/asdl.c ============================================================================== --- python/trunk/Python/asdl.c (original) +++ python/trunk/Python/asdl.c Sun Nov 13 20:14:20 2005 @@ -24,69 +24,3 @@ PyObject_Free(seq); } -#define CHECKSIZE(BUF, OFF, MIN) { \ - int need = *(OFF) + MIN; \ - if (need >= PyString_GET_SIZE(*(BUF))) { \ - int newsize = PyString_GET_SIZE(*(BUF)) * 2; \ - if (newsize < need) \ - newsize = need; \ - if (_PyString_Resize((BUF), newsize) < 0) \ - return 0; \ - } \ -} - -int -marshal_write_int(PyObject **buf, int *offset, int x) -{ - char *s; - - CHECKSIZE(buf, offset, 4) - s = PyString_AS_STRING(*buf) + (*offset); - s[0] = (x & 0xff); - s[1] = (x >> 8) & 0xff; - s[2] = (x >> 16) & 0xff; - s[3] = (x >> 24) & 0xff; - *offset += 4; - return 1; -} - -int -marshal_write_bool(PyObject **buf, int *offset, bool b) -{ - if (b) - marshal_write_int(buf, offset, 1); - else - marshal_write_int(buf, offset, 0); - return 1; -} - -int -marshal_write_identifier(PyObject **buf, int *offset, identifier id) -{ - int l = PyString_GET_SIZE(id); - marshal_write_int(buf, offset, l); - CHECKSIZE(buf, offset, l); - memcpy(PyString_AS_STRING(*buf) + *offset, - PyString_AS_STRING(id), l); - *offset += l; - return 1; -} - -int -marshal_write_string(PyObject **buf, int *offset, string s) -{ - int len = PyString_GET_SIZE(s); - marshal_write_int(buf, offset, len); - CHECKSIZE(buf, offset, len); - memcpy(PyString_AS_STRING(*buf) + *offset, - PyString_AS_STRING(s), len); - *offset += len; - return 1; -} - -int -marshal_write_object(PyObject **buf, int *offset, object s) -{ - /* XXX */ - return 0; -} From neal.norwitz at python.org Sun Nov 13 20:51:45 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 20:51:45 +0100 (CET) Subject: [Python-checkins] commit of r41439 - peps/trunk Message-ID: <20051113195145.0ECED1E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 20:51:42 2005 New Revision: 41439 Modified: peps/trunk/pep-0341.txt Log: Add patch info to pep Modified: peps/trunk/pep-0341.txt ============================================================================== --- peps/trunk/pep-0341.txt (original) +++ peps/trunk/pep-0341.txt Sun Nov 13 20:51:42 2005 @@ -94,7 +94,7 @@ As the PEP author currently does not have sufficient knowledge of the CPython implementation, he is unfortunately not able - to deliver one. + to deliver one. Thomas Lee has submitted a patch[2]. However, according to Guido, it should be a piece of cake to implement[1] -- at least for a core hacker. @@ -103,6 +103,7 @@ References [1] http://mail.python.org/pipermail/python-dev/2005-May/053319.html + [2] http://python.org/sf/1355913 Copyright From neal.norwitz at python.org Sun Nov 13 22:17:31 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 13 Nov 2005 22:17:31 +0100 (CET) Subject: [Python-checkins] commit of r41440 - python/trunk/Python Message-ID: <20051113211731.4122A1E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 13 22:17:28 2005 New Revision: 41440 Modified: python/trunk/Python/ast.c Log: remove useless debug print helper. fix a couple of exceptions Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Sun Nov 13 22:17:28 2005 @@ -14,10 +14,6 @@ #include -#if 0 -#define fprintf if (0) fprintf -#endif - /* XXX TO DO - re-indent this file (should be done) - internal error checking (freeing memory, etc.) @@ -908,7 +904,7 @@ } else { /* Should never be reached */ - PyErr_SetString(PyExc_Exception, "logic error in count_list_fors"); + PyErr_SetString(PyExc_SystemError, "logic error in count_list_fors"); return -1; } } @@ -1076,7 +1072,8 @@ } else { /* Should never be reached */ - PyErr_SetString(PyExc_Exception, "logic error in count_gen_fors"); + PyErr_SetString(PyExc_SystemError, + "logic error in count_gen_fors"); return -1; } } @@ -2760,7 +2757,7 @@ return TryExcept(suite_seq1, handlers, suite_seq2, LINENO(n)); } else { - PyErr_SetString(PyExc_Exception, "malformed 'try' statement"); + ast_error(n, "malformed 'try' statement"); return NULL; } } From neal.norwitz at python.org Mon Nov 14 01:18:05 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Mon, 14 Nov 2005 01:18:05 +0100 (CET) Subject: [Python-checkins] commit of r41441 - python/trunk/Python Message-ID: <20051114001805.C6FAF1E401B@bag.python.org> Author: neal.norwitz Date: Mon Nov 14 01:18:03 2005 New Revision: 41441 Modified: python/trunk/Python/ast.c Log: Fix memory leak with bad generator expression Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Mon Nov 14 01:18:03 2005 @@ -1901,6 +1901,7 @@ if (!expr1) return NULL; if (expr1->kind == GeneratorExp_kind) { + free_expr(expr1); ast_error(ch, "augmented assignment to generator " "expression not possible"); return NULL; @@ -1908,6 +1909,7 @@ if (expr1->kind == Name_kind) { char *var_name = PyString_AS_STRING(expr1->v.Name.id); if (var_name[0] == 'N' && !strcmp(var_name, "None")) { + free_expr(expr1); ast_error(ch, "assignment to None"); return NULL; } @@ -1918,12 +1920,17 @@ expr2 = ast_for_testlist(c, ch); else expr2 = Yield(ast_for_expr(c, ch), LINENO(ch)); - if (!expr2) + if (!expr2) { + free_expr(expr1); return NULL; + } operator = ast_for_augassign(CHILD(n, 1)); - if (!operator) + if (!operator) { + free_expr(expr1); + free_expr(expr2); return NULL; + } return AugAssign(expr1, operator, expr2, LINENO(n)); } @@ -1964,7 +1971,7 @@ else expression = ast_for_expr(c, value); if (!expression) - return NULL; + goto error; return Assign(targets, expression, LINENO(n)); error: for (i = i / 2; i >= 0; i--) From neal.norwitz at python.org Mon Nov 14 01:47:59 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Mon, 14 Nov 2005 01:47:59 +0100 (CET) Subject: [Python-checkins] commit of r41442 - python/trunk/Python Message-ID: <20051114004759.910111E4009@bag.python.org> Author: neal.norwitz Date: Mon Nov 14 01:47:57 2005 New Revision: 41442 Modified: python/trunk/Python/asdl.c Log: Use convenience function Modified: python/trunk/Python/asdl.c ============================================================================== --- python/trunk/Python/asdl.c (original) +++ python/trunk/Python/asdl.c Mon Nov 14 01:47:57 2005 @@ -10,7 +10,7 @@ seq = (asdl_seq *)PyObject_Malloc(n); if (!seq) { - PyErr_SetString(PyExc_MemoryError, "no memory"); + PyErr_NoMemory(); return NULL; } memset(seq, 0, n); From neal.norwitz at python.org Mon Nov 14 05:25:04 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Mon, 14 Nov 2005 05:25:04 +0100 (CET) Subject: [Python-checkins] commit of r41443 - python/trunk/Python Message-ID: <20051114042504.F074A1E4009@bag.python.org> Author: neal.norwitz Date: Mon Nov 14 05:25:03 2005 New Revision: 41443 Modified: python/trunk/Python/ast.c Log: Convert all internal errors from Exception to SystemError Remove an abort() and let a SystemError be raised. Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Mon Nov 14 05:25:03 2005 @@ -448,7 +448,7 @@ else return Mult; default: - PyErr_Format(PyExc_Exception, "invalid augassign: %s", STR(n)); + PyErr_Format(PyExc_SystemError, "invalid augassign: %s", STR(n)); return 0; } } @@ -481,7 +481,7 @@ if (strcmp(STR(n), "is") == 0) return Is; default: - PyErr_Format(PyExc_Exception, "invalid comp_op: %s", + PyErr_Format(PyExc_SystemError, "invalid comp_op: %s", STR(n)); return 0; } @@ -495,12 +495,12 @@ if (strcmp(STR(CHILD(n, 0)), "is") == 0) return IsNot; default: - PyErr_Format(PyExc_Exception, "invalid comp_op: %s %s", + PyErr_Format(PyExc_SystemError, "invalid comp_op: %s %s", STR(CHILD(n, 0)), STR(CHILD(n, 1))); return 0; } } - PyErr_Format(PyExc_Exception, "invalid comp_op: has %d children", + PyErr_Format(PyExc_SystemError, "invalid comp_op: has %d children", NCH(n)); return 0; } @@ -669,7 +669,7 @@ i += 3; break; default: - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "unexpected node in varargslist: %d @ %d", TYPE(ch), i); goto error; @@ -1309,8 +1309,7 @@ return Repr(expression, LINENO(n)); } default: - PyErr_Format(PyExc_Exception, "unhandled atom %d", - TYPE(ch)); + PyErr_Format(PyExc_SystemError, "unhandled atom %d", TYPE(ch)); return NULL; } } @@ -1680,8 +1679,7 @@ case power: return ast_for_power(c, n); default: - abort(); - PyErr_Format(PyExc_Exception, "unhandled expr: %d", TYPE(n)); + PyErr_Format(PyExc_SystemError, "unhandled expr: %d", TYPE(n)); return NULL; } /* should never get here */ @@ -2131,7 +2129,7 @@ return Raise(expr1, expr2, expr3, LINENO(n)); } default: - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "unexpected flow_stmt: %d", TYPE(ch)); return NULL; } @@ -2202,7 +2200,7 @@ case STAR: return alias(PyString_InternFromString("*"), NULL); default: - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "unexpected import name: %d", TYPE(n)); return NULL; } @@ -2304,7 +2302,7 @@ free_alias(mod); return import; } - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "unknown import statement: starts with command '%s'", STR(CHILD(n, 0))); return NULL; @@ -2339,7 +2337,7 @@ expr_ty expr1, globals = NULL, locals = NULL; int n_children = NCH(n); if (n_children != 2 && n_children != 4 && n_children != 6) { - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "poorly formed 'exec' statement: %d parts to statement", n_children); return NULL; @@ -2387,7 +2385,7 @@ return Assert(expr1, expr2, LINENO(n)); } - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "improper number of parts to 'assert' statement: %d", NCH(n)); return NULL; @@ -2574,7 +2572,7 @@ orelse, LINENO(n)); } else { - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "unexpected token in 'if' statement: %s", s); return NULL; } @@ -2615,7 +2613,7 @@ return While(expression, seq1, seq2, LINENO(n)); } else { - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "wrong number of tokens for 'while' statement: %d", NCH(n)); return NULL; @@ -2702,7 +2700,7 @@ return excepthandler(expression, e, suite_seq); } else { - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "wrong number of children for 'except' clause: %d", NCH(exc)); return NULL; @@ -2847,7 +2845,7 @@ case assert_stmt: return ast_for_assert_stmt(c, n); default: - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "unhandled small_stmt: TYPE=%d NCH=%d\n", TYPE(n), NCH(n)); return NULL; @@ -2873,7 +2871,7 @@ case classdef: return ast_for_classdef(c, ch); default: - PyErr_Format(PyExc_Exception, + PyErr_Format(PyExc_SystemError, "unhandled small_stmt: TYPE=%d NCH=%d\n", TYPE(n), NCH(n)); return NULL; From jim.fulton at python.org Tue Nov 15 00:10:18 2005 From: jim.fulton at python.org (jim.fulton@python.org) Date: Tue, 15 Nov 2005 00:10:18 +0100 (CET) Subject: [Python-checkins] commit of r41444 - python/branches/jim-doctest Message-ID: <20051114231018.13C061E400E@bag.python.org> Author: jim.fulton Date: Tue Nov 15 00:10:16 2005 New Revision: 41444 Added: python/branches/jim-doctest/ - copied from r41443, python/trunk/ Log: Making branch to work on some doctest changes From jim.fulton at python.org Tue Nov 15 00:44:17 2005 From: jim.fulton at python.org (jim.fulton@python.org) Date: Tue, 15 Nov 2005 00:44:17 +0100 (CET) Subject: [Python-checkins] commit of r41445 - in python/branches/jim-doctest/Lib: . test Message-ID: <20051114234417.3D1D01E400A@bag.python.org> Author: jim.fulton Date: Tue Nov 15 00:44:16 2005 New Revision: 41445 Added: python/branches/jim-doctest/Lib/test/test_doctest4.txt (contents, props changed) Modified: python/branches/jim-doctest/Lib/doctest.py python/branches/jim-doctest/Lib/test/test_doctest.py Log: Applied the patch from bug "[ 1080727 ] Add encoding to DocFileSuite", http://www.python.org/sf/1080727. Modified: python/branches/jim-doctest/Lib/doctest.py ============================================================================== --- python/branches/jim-doctest/Lib/doctest.py (original) +++ python/branches/jim-doctest/Lib/doctest.py Tue Nov 15 00:44:16 2005 @@ -1853,7 +1853,8 @@ def testfile(filename, module_relative=True, name=None, package=None, globs=None, verbose=None, report=True, optionflags=0, - extraglobs=None, raise_on_error=False, parser=DocTestParser()): + extraglobs=None, raise_on_error=False, parser=DocTestParser(), + encoding=None): """ Test examples in the given file. Return (#failures, #tests). @@ -1918,6 +1919,9 @@ Optional keyword arg "parser" specifies a DocTestParser (or subclass) that should be used to extract tests from the files. + Optional keyword arg "encoding" specifies an encoding that should + be used to convert the file to unicode. + Advanced tomfoolery: testmod runs methods of a local instance of class doctest.Tester, then merges the results into (or creates) global Tester instance doctest.master. Methods of doctest.master @@ -1956,6 +1960,8 @@ # Read the file, convert it to a test, and run it. s = open(filename).read() + if encoding: + s = s.decode(encoding) test = parser.get_doctest(s, globs, name, filename, 0) runner.run(test) @@ -2325,7 +2331,8 @@ ) def DocFileTest(path, module_relative=True, package=None, - globs=None, parser=DocTestParser(), **options): + globs=None, parser=DocTestParser(), + encoding=None, **options): if globs is None: globs = {} else: @@ -2346,6 +2353,10 @@ name = os.path.basename(path) doc = open(path).read() + # If an encoding is specified, use it to convert the file to unicode + if encoding: + doc = doc.decode(encoding) + # Convert it to a test, and wrap it in a DocFileCase. test = parser.get_doctest(doc, globs, name, path, 0) return DocFileCase(test, **options) @@ -2402,6 +2413,9 @@ parser A DocTestParser (or subclass) that should be used to extract tests from the files. + + encoding + An encoding that will be used to convert the files to unicode. """ suite = unittest.TestSuite() Modified: python/branches/jim-doctest/Lib/test/test_doctest.py ============================================================================== --- python/branches/jim-doctest/Lib/test/test_doctest.py (original) +++ python/branches/jim-doctest/Lib/test/test_doctest.py Tue Nov 15 00:44:16 2005 @@ -1898,9 +1898,10 @@ >>> import unittest >>> suite = doctest.DocFileSuite('test_doctest.txt', - ... 'test_doctest2.txt') + ... 'test_doctest2.txt', + ... 'test_doctest4.txt') >>> suite.run(unittest.TestResult()) - + The test files are looked for in the directory containing the calling module. A package keyword argument can be provided to @@ -1909,9 +1910,10 @@ >>> import unittest >>> suite = doctest.DocFileSuite('test_doctest.txt', ... 'test_doctest2.txt', + ... 'test_doctest4.txt', ... package='test') >>> suite.run(unittest.TestResult()) - + '/' should be used as a path separator. It will be converted to a native separator at run time: @@ -1956,19 +1958,21 @@ >>> suite = doctest.DocFileSuite('test_doctest.txt', ... 'test_doctest2.txt', + ... 'test_doctest4.txt', ... globs={'favorite_color': 'blue'}) >>> suite.run(unittest.TestResult()) - + In this case, we supplied a missing favorite color. You can provide doctest options: >>> suite = doctest.DocFileSuite('test_doctest.txt', ... 'test_doctest2.txt', + ... 'test_doctest4.txt', ... optionflags=doctest.DONT_ACCEPT_BLANKLINE, ... globs={'favorite_color': 'blue'}) >>> suite.run(unittest.TestResult()) - + And, you can provide setUp and tearDown functions: @@ -1986,9 +1990,10 @@ >>> suite = doctest.DocFileSuite('test_doctest.txt', ... 'test_doctest2.txt', + ... 'test_doctest4.txt', ... setUp=setUp, tearDown=tearDown) >>> suite.run(unittest.TestResult()) - + But the tearDown restores sanity: @@ -2021,6 +2026,17 @@ >>> suite.run(unittest.TestResult()) + If the tests contain non-ASCII characters, we have to specify which + encoding the file is encoded with. We do so by using the `encoding` + parameter: + + >>> suite = doctest.DocFileSuite('test_doctest.txt', + ... 'test_doctest2.txt', + ... 'test_doctest4.txt', + ... encoding='utf-8') + >>> suite.run(unittest.TestResult()) + + """ def test_trailing_space_in_test(): @@ -2227,6 +2243,32 @@ Traceback (most recent call last): UnexpectedException: ... >>> doctest.master = None # Reset master. + +If the tests contain non-ASCII characters, the tests might fail, since +it's unknown which encoding is used. The encoding can be specified +using the optional keyword argument `encoding`: + + >>> doctest.testfile('test_doctest4.txt') # doctest: +ELLIPSIS + ********************************************************************** + File "...", line 7, in test_doctest4.txt + Failed example: + u'...' + Expected: + u'f\xf6\xf6' + Got: + u'f\xc3\xb6\xc3\xb6' + ********************************************************************** + ... + ********************************************************************** + 1 items had failures: + 2 of 4 in test_doctest4.txt + ***Test Failed*** 2 failures. + (2, 4) + >>> doctest.master = None # Reset master. + + >>> doctest.testfile('test_doctest4.txt', encoding='utf-8') + (0, 4) + >>> doctest.master = None # Reset master. """ # old_test1, ... used to live in doctest.py, but cluttered it. Note Added: python/branches/jim-doctest/Lib/test/test_doctest4.txt ============================================================================== --- (empty file) +++ python/branches/jim-doctest/Lib/test/test_doctest4.txt Tue Nov 15 00:44:16 2005 @@ -0,0 +1,17 @@ +This is a sample doctest in a text file that contains non-ASCII characters. +This file is encoded using UTF-8. + +In order to get this test to pass, we have to manually specify the +encoding. + + >>> u'f??' + u'f\xf6\xf6' + + >>> u'b?r' + u'b\u0105r' + + >>> 'f??' + 'f\xc3\xb6\xc3\xb6' + + >>> 'b?r' + 'b\xc4\x85r' From neal.norwitz at python.org Tue Nov 15 05:52:18 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Tue, 15 Nov 2005 05:52:18 +0100 (CET) Subject: [Python-checkins] commit of r41446 - python/trunk/Parser Message-ID: <20051115045218.450DF1E4009@bag.python.org> Author: neal.norwitz Date: Tue Nov 15 05:52:16 2005 New Revision: 41446 Modified: python/trunk/Parser/Python.asdl Log: Thou shalt not lie, there are really 5 types now Modified: python/trunk/Parser/Python.asdl ============================================================================== --- python/trunk/Parser/Python.asdl (original) +++ python/trunk/Parser/Python.asdl Tue Nov 15 05:52:16 2005 @@ -1,4 +1,4 @@ --- ASDL's three builtin types are identifier, int, string +-- ASDL's five builtin types are identifier, int, string, object, bool module Python { From neal.norwitz at python.org Tue Nov 15 05:54:24 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Tue, 15 Nov 2005 05:54:24 +0100 (CET) Subject: [Python-checkins] commit of r41447 - python/trunk/Parser Message-ID: <20051115045424.6C1AF1E4009@bag.python.org> Author: neal.norwitz Date: Tue Nov 15 05:54:23 2005 New Revision: 41447 Modified: python/trunk/Parser/parsetok.c Log: Prevent unlikely memory leak, tok should always be freed when parsetok() returns Modified: python/trunk/Parser/parsetok.c ============================================================================== --- python/trunk/Parser/parsetok.c (original) +++ python/trunk/Parser/parsetok.c Tue Nov 15 05:54:23 2005 @@ -108,6 +108,7 @@ if ((ps = PyParser_New(g, start)) == NULL) { fprintf(stderr, "no mem for new parser\n"); err_ret->error = E_NOMEM; + PyTokenizer_Free(tok); return NULL; } #if 0 /* future keyword */ From neal.norwitz at python.org Tue Nov 15 06:04:32 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Tue, 15 Nov 2005 06:04:32 +0100 (CET) Subject: [Python-checkins] commit of r41448 - python/trunk/Python Message-ID: <20051115050432.9ACED1E4009@bag.python.org> Author: neal.norwitz Date: Tue Nov 15 06:04:31 2005 New Revision: 41448 Modified: python/trunk/Python/ast.c Log: Fix a whole bunch of potential memory leaks (and some real ones too) in error conditions. Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Tue Nov 15 06:04:31 2005 @@ -56,11 +56,11 @@ if (!seq) return; - + n = asdl_seq_LEN(seq); for (i = 0; i < n; i++) free_stmt(asdl_seq_GET(seq, i)); - asdl_seq_free(seq); + asdl_seq_free(seq); /* ok */ } static void @@ -70,11 +70,39 @@ if (!seq) return; - + n = asdl_seq_LEN(seq); for (i = 0; i < n; i++) free_expr(asdl_seq_GET(seq, i)); - asdl_seq_free(seq); + asdl_seq_free(seq); /* ok */ +} + +static void +asdl_alias_seq_free(asdl_seq* seq) +{ + int n, i; + + if (!seq) + return; + + n = asdl_seq_LEN(seq); + for (i = 0; i < n; i++) + free_alias(asdl_seq_GET(seq, i)); + asdl_seq_free(seq); /* ok */ +} + +static void +asdl_comprehension_seq_free(asdl_seq* seq) +{ + int n, i; + + if (!seq) + return; + + n = asdl_seq_LEN(seq); + for (i = 0; i < n; i++) + free_comprehension(asdl_seq_GET(seq, i)); + asdl_seq_free(seq); /* ok */ } /* This routine provides an invalid object for the syntax error. @@ -527,7 +555,7 @@ expression = ast_for_expr(c, CHILD(n, i)); if (!expression) { - asdl_seq_free(seq); + asdl_expr_seq_free(seq); return NULL; } @@ -679,10 +707,12 @@ return arguments(args, vararg, kwarg, defaults); error: + Py_XDECREF(vararg); + Py_XDECREF(kwarg); if (args) - asdl_seq_free(args); + asdl_expr_seq_free(args); if (defaults) - asdl_seq_free(defaults); + asdl_expr_seq_free(defaults); return NULL; } @@ -771,7 +801,7 @@ ast_for_decorators(struct compiling *c, const node *n) { asdl_seq* decorator_seq = NULL; - expr_ty d = NULL; + expr_ty d; int i; REQ(n, decorators); @@ -785,12 +815,10 @@ if (!d) goto error; asdl_seq_APPEND(decorator_seq, d); - d = NULL; } return decorator_seq; error: asdl_expr_seq_free(decorator_seq); - free_expr(d); return NULL; } @@ -820,8 +848,8 @@ if (!name) goto error; else if (!strcmp(STR(CHILD(n, name_i)), "None")) { - ast_error(CHILD(n, name_i), "assignment to None"); - goto error; + ast_error(CHILD(n, name_i), "assignment to None"); + goto error; } args = ast_for_arguments(c, CHILD(n, name_i + 1)); if (!args) @@ -973,14 +1001,14 @@ t = ast_for_exprlist(c, CHILD(ch, 1), Store); if (!t) { - asdl_seq_free(listcomps); + asdl_comprehension_seq_free(listcomps); free_expr(elt); return NULL; } expression = ast_for_testlist(c, CHILD(ch, 3)); if (!expression) { - asdl_seq_free(t); - asdl_seq_free(listcomps); + asdl_expr_seq_free(t); + asdl_comprehension_seq_free(listcomps); free_expr(elt); return NULL; } @@ -991,8 +1019,8 @@ lc = comprehension(Tuple(t, Store, LINENO(ch)), expression, NULL); if (!lc) { - asdl_seq_free(t); - asdl_seq_free(listcomps); + asdl_expr_seq_free(t); + asdl_comprehension_seq_free(listcomps); free_expr(expression); free_expr(elt); return NULL; @@ -1005,14 +1033,16 @@ ch = CHILD(ch, 4); n_ifs = count_list_ifs(ch); if (n_ifs == -1) { - asdl_seq_free(listcomps); + free_comprehension(lc); + asdl_comprehension_seq_free(listcomps); free_expr(elt); return NULL; } ifs = asdl_seq_new(n_ifs); if (!ifs) { - asdl_seq_free(listcomps); + free_comprehension(lc); + asdl_comprehension_seq_free(listcomps); free_expr(elt); return NULL; } @@ -1138,13 +1168,15 @@ t = ast_for_exprlist(c, CHILD(ch, 1), Store); if (!t) { - asdl_seq_free(genexps); + asdl_comprehension_seq_free(genexps); + asdl_expr_seq_free(t); free_expr(elt); return NULL; } expression = ast_for_expr(c, CHILD(ch, 3)); if (!expression) { - asdl_seq_free(genexps); + asdl_comprehension_seq_free(genexps); + asdl_expr_seq_free(t); free_expr(elt); return NULL; } @@ -1157,7 +1189,8 @@ expression, NULL); if (!ge) { - asdl_seq_free(genexps); + asdl_comprehension_seq_free(genexps); + asdl_expr_seq_free(t); free_expr(elt); return NULL; } @@ -1169,14 +1202,16 @@ ch = CHILD(ch, 4); n_ifs = count_gen_ifs(ch); if (n_ifs == -1) { - asdl_seq_free(genexps); + asdl_comprehension_seq_free(genexps); + free_comprehension(ge); free_expr(elt); return NULL; } ifs = asdl_seq_new(n_ifs); if (!ifs) { - asdl_seq_free(genexps); + asdl_comprehension_seq_free(genexps); + free_comprehension(ge); free_expr(elt); return NULL; } @@ -1189,7 +1224,10 @@ expression = ast_for_expr(c, CHILD(ch, 1)); if (!expression) { - asdl_seq_free(genexps); + asdl_expr_seq_free(ifs); + asdl_comprehension_seq_free(genexps); + free_comprehension(ge); + free_expr(elt); return NULL; } asdl_seq_APPEND(ifs, expression); @@ -1279,7 +1317,7 @@ values = asdl_seq_new(size); if (!values) { - asdl_seq_free(keys); + asdl_seq_free(keys); /* ok */ return NULL; } @@ -1287,15 +1325,21 @@ expr_ty expression; expression = ast_for_expr(c, CHILD(ch, i)); - if (!expression) + if (!expression) { + asdl_expr_seq_free(keys); + asdl_expr_seq_free(values); return NULL; + } asdl_seq_SET(keys, i / 4, expression); expression = ast_for_expr(c, CHILD(ch, i + 2)); - if (!expression) + if (!expression) { + asdl_expr_seq_free(keys); + asdl_expr_seq_free(values); return NULL; - + } + asdl_seq_SET(values, i / 4, expression); } return Dict(keys, values, LINENO(n)); @@ -1469,14 +1513,18 @@ for (j = 0; j < NCH(n); j += 2) { slc = ast_for_slice(c, CHILD(n, j)); if (!slc) { - asdl_seq_free(slices); + for (j = j / 2; j >= 0; j--) + free_slice(asdl_seq_GET(slices, j)); + asdl_seq_free(slices); /* ok */ return NULL; } asdl_seq_SET(slices, j / 2, slc); } e = Subscript(left_expr, ExtSlice(slices), Load, LINENO(n)); if (!e) { - asdl_seq_free(slices); + for (j = 0; j < asdl_seq_LEN(slices); j++) + free_slice(asdl_seq_GET(slices, j)); + asdl_seq_free(slices); /* ok */ return NULL; } } @@ -1604,7 +1652,7 @@ return NULL; cmps = asdl_seq_new(NCH(n) / 2); if (!cmps) { - asdl_seq_free(ops); + asdl_seq_free(ops); /* ok */ return NULL; } for (i = 1; i < NCH(n); i += 2) { @@ -1612,19 +1660,28 @@ cmpop_ty operator; operator = ast_for_comp_op(CHILD(n, i)); - if (!operator) + if (!operator) { + asdl_expr_seq_free(ops); + asdl_expr_seq_free(cmps); return NULL; + } expression = ast_for_expr(c, CHILD(n, i + 1)); - if (!expression) + if (!expression) { + asdl_expr_seq_free(ops); + asdl_expr_seq_free(cmps); return NULL; + } asdl_seq_SET(ops, i / 2, (void *)operator); asdl_seq_SET(cmps, i / 2, expression); } expression = ast_for_expr(c, CHILD(n, 0)); - if (!expression) + if (!expression) { + asdl_expr_seq_free(ops); + asdl_expr_seq_free(cmps); return NULL; + } return Compare(expression, ops, cmps, LINENO(n)); } @@ -1674,6 +1731,8 @@ case TILDE: return UnaryOp(Invert, expression, LINENO(n)); } + PyErr_Format(PyExc_SystemError, "unhandled factor: %d", + TYPE(CHILD(n, 0))); break; } case power: @@ -1772,7 +1831,7 @@ goto error; } key = e->v.Name.id; - free(e); + free(e); /* XXX: is free correct here? */ e = ast_for_expr(c, CHILD(ch, 2)); if (!e) goto error; @@ -1795,10 +1854,15 @@ return Call(func, args, keywords, vararg, kwarg, LINENO(n)); error: + free_expr(vararg); + free_expr(kwarg); if (args) - asdl_seq_free(args); - if (keywords) - asdl_seq_free(keywords); + asdl_expr_seq_free(args); + if (keywords) { + for (i = 0; i < asdl_seq_LEN(keywords); i++) + free_keyword(asdl_seq_GET(keywords, i)); + asdl_seq_free(keywords); /* ok */ + } return NULL; } @@ -1856,7 +1920,7 @@ return NULL; base = ast_for_expr(c, CHILD(n, 0)); if (!base) { - asdl_seq_free(bases); + asdl_seq_free(bases); /* ok */ return NULL; } asdl_seq_SET(bases, 0, base); @@ -1972,10 +2036,7 @@ goto error; return Assign(targets, expression, LINENO(n)); error: - for (i = i / 2; i >= 0; i--) - free_expr((expr_ty)asdl_seq_GET(targets, i)); - asdl_seq_free(targets); - return NULL; + asdl_expr_seq_free(targets); } return NULL; } @@ -2004,7 +2065,8 @@ for (i = start; i < NCH(n); i += 2) { expression = ast_for_expr(c, CHILD(n, i)); if (!expression) { - asdl_seq_free(seq); + free_expr(dest); + asdl_expr_seq_free(seq); return NULL; } @@ -2028,17 +2090,19 @@ return NULL; for (i = 0; i < NCH(n); i += 2) { e = ast_for_expr(c, CHILD(n, i)); - if (!e) { - asdl_seq_free(seq); - return NULL; - } + if (!e) + goto error; if (context) { if (!set_context(e, context, CHILD(n, i))) - return NULL; + goto error; } asdl_seq_SET(seq, i / 2, e); } return seq; + +error: + asdl_expr_seq_free(seq); + return NULL; } static stmt_ty @@ -2231,7 +2295,7 @@ for (i = 0; i < NCH(n); i += 2) { alias_ty import_alias = alias_for_import_name(CHILD(n, i)); if (!import_alias) { - asdl_seq_free(aliases); + asdl_alias_seq_free(aliases); return NULL; } asdl_seq_SET(aliases, i / 2, import_alias); @@ -2254,6 +2318,7 @@ n = CHILD(n, 3); /* from ... import x, y, z */ if (NCH(n) % 2 == 0) { /* it ends with a comma, not valid but the parser allows it */ + free_alias(mod); ast_error(n, "trailing comma not allowed without" " surrounding parentheses"); return NULL; @@ -2264,8 +2329,11 @@ } else if (from_modules[0] == '(') n = CHILD(n, 4); /* from ... import (x, y, z) */ - else + else { + /* XXX: don't we need to call ast_error(n, "..."); */ + free_alias(mod); return NULL; + } n_children = NCH(n); if (from_modules && from_modules[0] == '*') @@ -2281,7 +2349,7 @@ if (from_modules && from_modules[0] == '*') { alias_ty import_alias = alias_for_import_name(n); if (!import_alias) { - asdl_seq_free(aliases); + asdl_alias_seq_free(aliases); free_alias(mod); return NULL; } @@ -2291,7 +2359,7 @@ for (i = 0; i < NCH(n); i += 2) { alias_ty import_alias = alias_for_import_name(CHILD(n, i)); if (!import_alias) { - asdl_seq_free(aliases); + asdl_alias_seq_free(aliases); free_alias(mod); return NULL; } @@ -2323,7 +2391,9 @@ for (i = 1; i < NCH(n); i += 2) { name = NEW_IDENTIFIER(CHILD(n, i)); if (!name) { - asdl_seq_free(s); + for (i = i / 2; i > 0; i--) + Py_XDECREF((identifier) asdl_seq_GET(s, i)); + asdl_seq_free(s); /* ok */ return NULL; } asdl_seq_SET(s, i / 2, name); @@ -2452,7 +2522,7 @@ return seq; error: if (seq) - asdl_seq_free(seq); + asdl_stmt_seq_free(seq); return NULL; } @@ -2474,8 +2544,10 @@ if (!expression) return NULL; suite_seq = ast_for_suite(c, CHILD(n, 3)); - if (!suite_seq) + if (!suite_seq) { + free_expr(expression); return NULL; + } return If(expression, suite_seq, NULL, LINENO(n)); } @@ -2492,11 +2564,16 @@ if (!expression) return NULL; seq1 = ast_for_suite(c, CHILD(n, 3)); - if (!seq1) + if (!seq1) { + free_expr(expression); return NULL; + } seq2 = ast_for_suite(c, CHILD(n, 6)); - if (!seq2) + if (!seq2) { + asdl_stmt_seq_free(seq1); + free_expr(expression); return NULL; + } return If(expression, seq1, seq2, LINENO(n)); } @@ -2522,17 +2599,20 @@ return NULL; expression = ast_for_expr(c, CHILD(n, NCH(n) - 6)); if (!expression) { - asdl_seq_free(orelse); + asdl_seq_free(orelse); /* ok */ return NULL; } seq1 = ast_for_suite(c, CHILD(n, NCH(n) - 4)); if (!seq1) { - asdl_seq_free(orelse); + free_expr(expression); + asdl_seq_free(orelse); /* ok */ return NULL; } seq2 = ast_for_suite(c, CHILD(n, NCH(n) - 1)); if (!seq2) { - asdl_seq_free(orelse); + free_expr(expression); + asdl_stmt_seq_free(seq1); + asdl_seq_free(orelse); /* ok */ return NULL; } @@ -2549,16 +2629,21 @@ expr_ty expression; asdl_seq *suite_seq; asdl_seq *new = asdl_seq_new(1); - if (!new) + if (!new) { + asdl_stmt_seq_free(orelse); return NULL; + } expression = ast_for_expr(c, CHILD(n, off)); if (!expression) { - asdl_seq_free(new); + asdl_stmt_seq_free(orelse); + asdl_seq_free(new); /* ok */ return NULL; } suite_seq = ast_for_suite(c, CHILD(n, off + 2)); if (!suite_seq) { - asdl_seq_free(new); + asdl_stmt_seq_free(orelse); + free_expr(expression); + asdl_seq_free(new); /* ok */ return NULL; } @@ -2592,8 +2677,10 @@ if (!expression) return NULL; suite_seq = ast_for_suite(c, CHILD(n, 3)); - if (!suite_seq) + if (!suite_seq) { + free_expr(expression); return NULL; + } return While(expression, suite_seq, NULL, LINENO(n)); } else if (NCH(n) == 7) { @@ -2604,11 +2691,16 @@ if (!expression) return NULL; seq1 = ast_for_suite(c, CHILD(n, 3)); - if (!seq1) + if (!seq1) { + free_expr(expression); return NULL; + } seq2 = ast_for_suite(c, CHILD(n, 6)); - if (!seq2) + if (!seq2) { + asdl_stmt_seq_free(seq1); + free_expr(expression); return NULL; + } return While(expression, seq1, seq2, LINENO(n)); } @@ -2636,21 +2728,30 @@ } _target = ast_for_exprlist(c, CHILD(n, 1), Store); - if (!_target) + if (!_target) { + asdl_stmt_seq_free(seq); return NULL; + } if (asdl_seq_LEN(_target) == 1) { target = asdl_seq_GET(_target, 0); - asdl_seq_free(_target); + asdl_seq_free(_target); /* ok */ } else target = Tuple(_target, Store, LINENO(n)); expression = ast_for_testlist(c, CHILD(n, 3)); - if (!expression) + if (!expression) { + free_expr(target); + asdl_stmt_seq_free(seq); return NULL; + } suite_seq = ast_for_suite(c, CHILD(n, 5)); - if (!suite_seq) + if (!suite_seq) { + free_expr(target); + free_expr(expression); + asdl_stmt_seq_free(seq); return NULL; + } return For(target, expression, suite_seq, seq, LINENO(n)); } @@ -2677,8 +2778,10 @@ if (!expression) return NULL; suite_seq = ast_for_suite(c, body); - if (!suite_seq) + if (!suite_seq) { + free_expr(expression); return NULL; + } return excepthandler(expression, NULL, suite_seq); } @@ -2688,14 +2791,21 @@ expr_ty e = ast_for_expr(c, CHILD(exc, 3)); if (!e) return NULL; - if (!set_context(e, Store, CHILD(exc, 3))) + if (!set_context(e, Store, CHILD(exc, 3))) { + free_expr(e); return NULL; + } expression = ast_for_expr(c, CHILD(exc, 1)); - if (!expression) + if (!expression) { + free_expr(e); return NULL; + } suite_seq = ast_for_suite(c, body); - if (!suite_seq) + if (!suite_seq) { + free_expr(expression); + free_expr(e); return NULL; + } return excepthandler(expression, e, suite_seq); } @@ -2719,8 +2829,10 @@ if (!s1) return NULL; s2 = ast_for_suite(c, CHILD(n, 5)); - if (!s2) + if (!s2) { + asdl_stmt_seq_free(s1); return NULL; + } return TryFinally(s1, s2, LINENO(n)); } @@ -2743,18 +2855,31 @@ excepthandler_ty e = ast_for_except_clause(c, CHILD(n, 3 + i * 3), CHILD(n, 5 + i * 3)); - if (!e) + if (!e) { + for ( ; i >= 0; i--) + free_excepthandler(asdl_seq_GET(handlers, i)); + asdl_seq_free(handlers); /* ok */ return NULL; + } asdl_seq_SET(handlers, i, e); } suite_seq1 = ast_for_suite(c, CHILD(n, 2)); - if (!suite_seq1) + if (!suite_seq1) { + for (i = 0; i < asdl_seq_LEN(handlers); i++) + free_excepthandler(asdl_seq_GET(handlers, i)); + asdl_seq_free(handlers); /* ok */ return NULL; + } if (has_else) { suite_seq2 = ast_for_suite(c, CHILD(n, NCH(n) - 1)); - if (!suite_seq2) + if (!suite_seq2) { + for (i = 0; i < asdl_seq_LEN(handlers); i++) + free_excepthandler(asdl_seq_GET(handlers, i)); + asdl_seq_free(handlers); /* ok */ + asdl_stmt_seq_free(suite_seq1); return NULL; + } } else suite_seq2 = NULL; @@ -2801,7 +2926,7 @@ s = ast_for_suite(c, CHILD(n, 6)); if (!s) { - asdl_seq_free(bases); + asdl_expr_seq_free(bases); return NULL; } return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), bases, s, LINENO(n)); From neal.norwitz at python.org Tue Nov 15 06:09:49 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Tue, 15 Nov 2005 06:09:49 +0100 (CET) Subject: [Python-checkins] commit of r41449 - python/trunk/Python Message-ID: <20051115050949.EBAAC1E4009@bag.python.org> Author: neal.norwitz Date: Tue Nov 15 06:09:44 2005 New Revision: 41449 Modified: python/trunk/Python/ast.c Log: Add a note about how to do the memory deallocation a bit. This needs a lot of work. Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Tue Nov 15 06:09:44 2005 @@ -20,6 +20,26 @@ - syntax errors */ +/* + Note: + + You should rarely need to use the asdl_seq_free() in this file. + If you use asdl_seq_free(), you will leak any objects held in the seq. + If there is an appropriate asdl_*_seq_free() function, use it. + If there isn't an asdl_*_seq_free() function for you, you will + need to loop over the data in the sequence and free it. + + asdl_seq* seq; + int i; + + for (i = 0; i < asdl_seq_LEN(seq); i++) + free_***(asdl_seq_GET(seq, i)); + asdl_seq_free(seq); + + Almost all of the ast functions return a seq of expr, so you should + use asdl_expr_seq_free(). The exception is ast_for_suite() which + returns a seq of stmt's, so use asdl_stmt_seq_free() to free it. +*/ /* Data structure used internally */ struct compiling { From neal.norwitz at python.org Tue Nov 15 08:17:54 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Tue, 15 Nov 2005 08:17:54 +0100 (CET) Subject: [Python-checkins] commit of r41450 - python/trunk/Python Message-ID: <20051115071754.621341E4007@bag.python.org> Author: neal.norwitz Date: Tue Nov 15 08:17:53 2005 New Revision: 41450 Modified: python/trunk/Python/ast.c Log: Fix another memory leak or two (one real, one potential) Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Tue Nov 15 08:17:53 2005 @@ -1588,6 +1588,7 @@ } tmp = BinOp(e, Pow, f, LINENO(n)); if (!tmp) { + free_expr(f); free_expr(e); return NULL; } @@ -2112,11 +2113,11 @@ e = ast_for_expr(c, CHILD(n, i)); if (!e) goto error; + asdl_seq_SET(seq, i / 2, e); if (context) { if (!set_context(e, context, CHILD(n, i))) goto error; } - asdl_seq_SET(seq, i / 2, e); } return seq; From kurt.kaiser at python.org Tue Nov 15 08:20:07 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Tue, 15 Nov 2005 08:20:07 +0100 (CET) Subject: [Python-checkins] commit of r41451 - python/trunk/Lib/idlelib Message-ID: <20051115072007.70A1A1E4007@bag.python.org> Author: kurt.kaiser Date: Tue Nov 15 08:20:06 2005 New Revision: 41451 Modified: python/trunk/Lib/idlelib/EditorWindow.py python/trunk/Lib/idlelib/NEWS.txt python/trunk/Lib/idlelib/PyParse.py Log: Better indentation after first line of string continuation. IDLEfork Patch 681992, Noam Raphael Modified: python/trunk/Lib/idlelib/EditorWindow.py ============================================================================== --- python/trunk/Lib/idlelib/EditorWindow.py (original) +++ python/trunk/Lib/idlelib/EditorWindow.py Tue Nov 15 08:20:06 2005 @@ -1078,8 +1078,12 @@ c = y.get_continuation_type() if c != PyParse.C_NONE: # The current stmt hasn't ended yet. - if c == PyParse.C_STRING: - # inside a string; just mimic the current indent + if c == PyParse.C_STRING_FIRST_LINE: + # after the first line of a string; do not indent at all + pass + elif c == PyParse.C_STRING_NEXT_LINES: + # inside a string which started before this line; + # just mimic the current indent text.insert("insert", indent) elif c == PyParse.C_BRACKET: # line up with the first (if any) element of the Modified: python/trunk/Lib/idlelib/NEWS.txt ============================================================================== --- python/trunk/Lib/idlelib/NEWS.txt (original) +++ python/trunk/Lib/idlelib/NEWS.txt Tue Nov 15 08:20:06 2005 @@ -3,6 +3,9 @@ *Release date: XX-XXX-2005* +- Better indentation after first line of string continuation. + IDLEfork Patch 681992, Noam Raphael + - Fixed CodeContext alignment problem, following suggestion from Tal Einat. - Increased performance in CodeContext extension Patch 936169 Noam Raphael Modified: python/trunk/Lib/idlelib/PyParse.py ============================================================================== --- python/trunk/Lib/idlelib/PyParse.py (original) +++ python/trunk/Lib/idlelib/PyParse.py Tue Nov 15 08:20:06 2005 @@ -2,7 +2,8 @@ import sys # Reason last stmt is continued (or C_NONE if it's not). -C_NONE, C_BACKSLASH, C_STRING, C_BRACKET = range(4) +(C_NONE, C_BACKSLASH, C_STRING_FIRST_LINE, + C_STRING_NEXT_LINES, C_BRACKET) = range(5) if 0: # for throwaway debugging output def dump(*stuff): @@ -281,6 +282,7 @@ quote = ch if str[i-1:i+2] == quote * 3: quote = quote * 3 + firstlno = lno w = len(quote) - 1 i = i+w while i < n: @@ -315,7 +317,12 @@ else: # didn't break out of the loop, so we're still # inside a string - continuation = C_STRING + if (lno - 1) == firstlno: + # before the previous \n in str, we were in the first + # line of the string + continuation = C_STRING_FIRST_LINE + else: + continuation = C_STRING_NEXT_LINES continue # with outer loop if ch == '#': @@ -335,7 +342,8 @@ # The last stmt may be continued for all 3 reasons. # String continuation takes precedence over bracket # continuation, which beats backslash continuation. - if continuation != C_STRING and level > 0: + if (continuation != C_STRING_FIRST_LINE + and continuation != C_STRING_NEXT_LINES and level > 0): continuation = C_BRACKET self.continuation = continuation From anthony at interlink.com.au Tue Nov 15 12:34:07 2005 From: anthony at interlink.com.au (Anthony Baxter) Date: Tue, 15 Nov 2005 22:34:07 +1100 Subject: [Python-checkins] commit of r41446 - python/trunk/Parser In-Reply-To: <20051115045218.450DF1E4009@bag.python.org> References: <20051115045218.450DF1E4009@bag.python.org> Message-ID: <200511152234.09431.anthony@interlink.com.au> On Tuesday 15 November 2005 15:52, neal.norwitz at python.org wrote: > Thou shalt not lie, there are really 5 types now 'First shalt thou take out the Holy Pin. Then, shalt thou count to three, no more, no less. Three shalt be the number thou shalt count, and the number of the counting shalt be three. Four shalt thou not count, nor either count thou two, excepting that thou then proceed to three. Five is right out.' sorry... ;) From jim.fulton at python.org Tue Nov 15 18:05:01 2005 From: jim.fulton at python.org (jim.fulton@python.org) Date: Tue, 15 Nov 2005 18:05:01 +0100 (CET) Subject: [Python-checkins] commit of r41452 - in python/branches/jim-doctest/Lib: . test Message-ID: <20051115170501.D70101E4009@bag.python.org> Author: jim.fulton Date: Tue Nov 15 18:05:00 2005 New Revision: 41452 Added: python/branches/jim-doctest/Lib/test/test_doctest5.txt (contents, props changed) python/branches/jim-doctest/Lib/test/test_doctest6.txt (contents, props changed) python/branches/jim-doctest/Lib/test/test_doctest7.txt (contents, props changed) Modified: python/branches/jim-doctest/Lib/doctest.py python/branches/jim-doctest/Lib/test/test_doctest.py Log: Added support for pep 263 encoding specifications in doctest text test files. Modified: python/branches/jim-doctest/Lib/doctest.py ============================================================================== --- python/branches/jim-doctest/Lib/doctest.py (original) +++ python/branches/jim-doctest/Lib/doctest.py Tue Nov 15 18:05:00 2005 @@ -1960,7 +1960,9 @@ # Read the file, convert it to a test, and run it. s = open(filename).read() - if encoding: + if encoding is None: + encoding = pep263_encoding(s) + if encoding is not None: s = s.decode(encoding) test = parser.get_doctest(s, globs, name, filename, 0) runner.run(test) @@ -1975,6 +1977,17 @@ return runner.failures, runner.tries +pep263_re_search = re.compile("coding[:=]\s*([-\w.]+)").search +def pep263_encoding(s): + """Try to find the encoding of a string by looking for a pep263 coding. + """ + for line in s.split('\n')[:2]: + r = pep263_re_search(line) + if r: + return r.group(1) + + + def run_docstring_examples(f, globs, verbose=False, name="NoName", compileflags=None, optionflags=0): """ @@ -2354,7 +2367,9 @@ doc = open(path).read() # If an encoding is specified, use it to convert the file to unicode - if encoding: + if encoding is None: + encoding = pep263_encoding(doc) + if encoding is not None: doc = doc.decode(encoding) # Convert it to a test, and wrap it in a DocFileCase. Modified: python/branches/jim-doctest/Lib/test/test_doctest.py ============================================================================== --- python/branches/jim-doctest/Lib/test/test_doctest.py (original) +++ python/branches/jim-doctest/Lib/test/test_doctest.py Tue Nov 15 18:05:00 2005 @@ -2037,6 +2037,26 @@ >>> suite.run(unittest.TestResult()) + Encoding can also be specified in the test file itself, + following the same rules as defined by PEP 263, + http://www.python.org/peps/pep-0263.html. + + >>> suite = doctest.DocFileSuite('test_doctest5.txt') + >>> suite.run(unittest.TestResult()) + + + >>> suite = doctest.DocFileSuite('test_doctest6.txt') + >>> suite.run(unittest.TestResult()) + + + The 2 examples above illustrate some valid PEP 263 encoding + examples. The example below failes because the coding is in the + last line: + + >>> suite = doctest.DocFileSuite('test_doctest7.txt') + >>> suite.run(unittest.TestResult()) + + """ def test_trailing_space_in_test(): @@ -2269,6 +2289,31 @@ >>> doctest.testfile('test_doctest4.txt', encoding='utf-8') (0, 4) >>> doctest.master = None # Reset master. + +Encoding can also be specified in the test file itself, following the +same rules as defined by PEP 263, http://www.python.org/peps/pep-0263.html. + + >>> doctest.testfile('test_doctest5.txt') + (0, 4) + + >>> doctest.testfile('test_doctest6.txt') + (0, 4) + +The 2 examples above illustrate some valid PEP 263 encoding +examples. The example below failes because the coding is in the last +line: + + >>> doctest.testfile('test_doctest7.txt') # doctest: +ELLIPSIS + ********************************************************************** + File "...test_doctest7.txt", line 11, in test_doctest7.txt + Failed example: + ... + ********************************************************************** + 1 items had failures: + 2 of 4 in test_doctest7.txt + ***Test Failed*** 2 failures. + (2, 4) + """ # old_test1, ... used to live in doctest.py, but cluttered it. Note Added: python/branches/jim-doctest/Lib/test/test_doctest5.txt ============================================================================== --- (empty file) +++ python/branches/jim-doctest/Lib/test/test_doctest5.txt Tue Nov 15 18:05:00 2005 @@ -0,0 +1,19 @@ +.. -*- coding: utf-8 -*- + + +This is a sample doctest in a text file that contains non-ASCII characters. + +In order to get this test to pass, we have to manually specify the +encoding. We did so in the "coding" line above. + + >>> u'f??' + u'f\xf6\xf6' + + >>> u'b?r' + u'b\u0105r' + + >>> 'f??' + 'f\xc3\xb6\xc3\xb6' + + >>> 'b?r' + 'b\xc4\x85r' Added: python/branches/jim-doctest/Lib/test/test_doctest6.txt ============================================================================== --- (empty file) +++ python/branches/jim-doctest/Lib/test/test_doctest6.txt Tue Nov 15 18:05:00 2005 @@ -0,0 +1,20 @@ + +.. -*- coding=utf-8 -*- + + +This is a sample doctest in a text file that contains non-ASCII characters. + +In order to get this test to pass, we have to manually specify the +encoding. We did so in the "coding" line above. + + >>> u'f??' + u'f\xf6\xf6' + + >>> u'b?r' + u'b\u0105r' + + >>> 'f??' + 'f\xc3\xb6\xc3\xb6' + + >>> 'b?r' + 'b\xc4\x85r' Added: python/branches/jim-doctest/Lib/test/test_doctest7.txt ============================================================================== --- (empty file) +++ python/branches/jim-doctest/Lib/test/test_doctest7.txt Tue Nov 15 18:05:00 2005 @@ -0,0 +1,21 @@ + + +.. -*- coding: utf-8 -*- + + +This is a sample doctest in a text file that contains non-ASCII characters. + +In order to get this test to pass, we have to manually specify the +encoding. We did so in the "coding" line above. + + >>> u'f??' + u'f\xf6\xf6' + + >>> u'b?r' + u'b\u0105r' + + >>> 'f??' + 'f\xc3\xb6\xc3\xb6' + + >>> 'b?r' + 'b\xc4\x85r' From neal.norwitz at python.org Wed Nov 16 06:04:51 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Wed, 16 Nov 2005 06:04:51 +0100 (CET) Subject: [Python-checkins] commit of r41453 - python/trunk/Python Message-ID: <20051116050451.CDA391E4007@bag.python.org> Author: neal.norwitz Date: Wed Nov 16 06:04:51 2005 New Revision: 41453 Modified: python/trunk/Python/marshal.c Log: version was not initialized properly Modified: python/trunk/Python/marshal.c ============================================================================== --- python/trunk/Python/marshal.c (original) +++ python/trunk/Python/marshal.c Wed Nov 16 06:04:51 2005 @@ -1035,6 +1035,7 @@ wf.error = 0; wf.depth = 0; wf.strings = (version > 0) ? PyDict_New() : 0; + wf.version = version; w_object(x, &wf); Py_XDECREF(wf.strings); if (wf.error) { From neal.norwitz at python.org Wed Nov 16 06:13:00 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Wed, 16 Nov 2005 06:13:00 +0100 (CET) Subject: [Python-checkins] commit of r41454 - python/trunk/Parser Message-ID: <20051116051300.0502F1E4007@bag.python.org> Author: neal.norwitz Date: Wed Nov 16 06:12:59 2005 New Revision: 41454 Modified: python/trunk/Parser/tokenizer.c Log: Fix some more memory leaks. Call error_ret() in decode_str(). It was called in some other places, but seemed inconsistent. It is safe to call PyTokenizer_Free() after calling error_ret(). Modified: python/trunk/Parser/tokenizer.c ============================================================================== --- python/trunk/Parser/tokenizer.c (original) +++ python/trunk/Parser/tokenizer.c Wed Nov 16 06:12:59 2005 @@ -328,6 +328,8 @@ unget_char(ch, tok); return 1; } + if (tok->encoding != NULL) + PyMem_DEL(tok->encoding); tok->encoding = new_string("utf-8", 5); /* resulting is in utf-8 */ return 1; NON_BOM: @@ -581,14 +583,14 @@ tok->enc = NULL; tok->str = str; if (!check_bom(buf_getc, buf_ungetc, buf_setreadl, tok)) - return NULL; + return error_ret(tok); str = tok->str; /* string after BOM if any */ assert(str); #ifdef Py_USING_UNICODE if (tok->enc != NULL) { utf8 = translate_into_utf8(str, tok->enc); if (utf8 == NULL) - return NULL; + return error_ret(tok); str = PyString_AsString(utf8); } #endif @@ -601,7 +603,7 @@ } tok->enc = NULL; if (!check_coding_spec(str, s - str, tok, buf_setreadl)) - return NULL; + return error_ret(tok); #ifdef Py_USING_UNICODE if (tok->enc != NULL) { assert(utf8 == NULL); @@ -609,7 +611,7 @@ if (utf8 == NULL) { PyErr_Format(PyExc_SyntaxError, "unknown encoding: %s", tok->enc); - return NULL; + return error_ret(tok); } str = PyString_AsString(utf8); } @@ -630,8 +632,11 @@ if (tok == NULL) return NULL; str = (char *)decode_str(str, tok); - if (str == NULL) + if (str == NULL) { + PyTokenizer_Free(tok); return NULL; + } + /* XXX: constify members. */ tok->buf = tok->cur = tok->end = tok->inp = (char*)str; return tok; @@ -647,7 +652,7 @@ if (tok == NULL) return NULL; if ((tok->buf = PyMem_NEW(char, BUFSIZ)) == NULL) { - PyMem_DEL(tok); + PyTokenizer_Free(tok); return NULL; } tok->cur = tok->inp = tok->buf; From neal.norwitz at python.org Wed Nov 16 06:49:06 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Wed, 16 Nov 2005 06:49:06 +0100 (CET) Subject: [Python-checkins] commit of r41455 - python/trunk/Python Message-ID: <20051116054906.8349B1E4007@bag.python.org> Author: neal.norwitz Date: Wed Nov 16 06:49:04 2005 New Revision: 41455 Modified: python/trunk/Python/ast.c Log: add more doc Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Wed Nov 16 06:49:04 2005 @@ -34,11 +34,32 @@ for (i = 0; i < asdl_seq_LEN(seq); i++) free_***(asdl_seq_GET(seq, i)); - asdl_seq_free(seq); + asdl_seq_free(seq); / * ok * / Almost all of the ast functions return a seq of expr, so you should use asdl_expr_seq_free(). The exception is ast_for_suite() which returns a seq of stmt's, so use asdl_stmt_seq_free() to free it. + + If asdl_seq_free is appropriate, you should mark it with an ok comment. + + There are still many memory problems in this file even though + it runs clean in valgrind, save one problem that may have existed + before the AST. + + Any code which does something like this: + + return ASTconstruct(local, LINENO(n)); + + will leak memory. The problem is if ASTconstruct (e.g., TryFinally) + cannot allocate memory, local will be leaked. + + There was discussion on python-dev to replace the entire allocation + scheme in this file with arenas. Basically rather than allocate + memory in little blocks with malloc(), we allocate one big honking + hunk and deref everything into this block. We would still need + another block or technique to handle the PyObject*s. + + http://mail.python.org/pipermail/python-dev/2005-November/058138.html */ /* Data structure used internally */ From nick.coghlan at python.org Wed Nov 16 13:45:24 2005 From: nick.coghlan at python.org (nick.coghlan@python.org) Date: Wed, 16 Nov 2005 13:45:24 +0100 (CET) Subject: [Python-checkins] commit of r41456 - python/trunk/Python Message-ID: <20051116124524.955DC1E4007@bag.python.org> Author: nick.coghlan Date: Wed Nov 16 13:45:24 2005 New Revision: 41456 Modified: python/trunk/Python/symtable.c Log: Bring handling of genexpr in line with other anonymous scope names Modified: python/trunk/Python/symtable.c ============================================================================== --- python/trunk/Python/symtable.c (original) +++ python/trunk/Python/symtable.c Wed Nov 16 13:45:24 2005 @@ -170,7 +170,7 @@ static int symtable_implicit_arg(struct symtable *st, int pos); -static identifier top = NULL, lambda = NULL; +static identifier top = NULL, lambda = NULL, genexpr = NULL; #define GET_IDENTIFIER(VAR) \ ((VAR) ? (VAR) : ((VAR) = PyString_InternFromString(# VAR))) @@ -1329,14 +1329,13 @@ static int symtable_visit_genexp(struct symtable *st, expr_ty e) { - identifier tmp; comprehension_ty outermost = ((comprehension_ty) (asdl_seq_GET(e->v.GeneratorExp.generators, 0))); /* Outermost iterator is evaluated in current scope */ VISIT(st, expr, outermost->iter); /* Create generator scope for the rest */ - tmp = PyString_FromString(""); - if (!symtable_enter_block(st, tmp, FunctionBlock, (void *)e, 0)) { + if (!symtable_enter_block(st, GET_IDENTIFIER(genexpr), + FunctionBlock, (void *)e, 0)) { return 0; } st->st_cur->ste_generator = 1; From nick.coghlan at python.org Wed Nov 16 13:46:56 2005 From: nick.coghlan at python.org (nick.coghlan@python.org) Date: Wed, 16 Nov 2005 13:46:56 +0100 (CET) Subject: [Python-checkins] commit of r41457 - python/trunk/Python Message-ID: <20051116124656.17F4D1E4007@bag.python.org> Author: nick.coghlan Date: Wed Nov 16 13:46:55 2005 New Revision: 41457 Modified: python/trunk/Python/compile.c Log: Correctly handle identifiers for anonymous scopes and align genexpr name with symtable.c Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Wed Nov 16 13:46:55 2005 @@ -12,6 +12,11 @@ * * Note that compiler_mod() suggests module, but the module ast type * (mod_ty) has cases for expressions and interactive statements. + * + * CAUTION: The VISIT_* macros abort the current function when they encounter + * a problem. So don't invoke them when there is memory which needs to be + * released. Code blocks are OK, as the compiler structure takes care of + * releasing those. */ #include "Python.h" @@ -1990,13 +1995,15 @@ compiler_lambda(struct compiler *c, expr_ty e) { PyCodeObject *co; - identifier name; + static identifier name; arguments_ty args = e->v.Lambda.args; assert(e->kind == Lambda_kind); - name = PyString_InternFromString(""); - if (!name) - return 0; + if (!name) { + name = PyString_InternFromString(""); + if (!name) + return 0; + } if (args->defaults) VISIT_SEQ(c, expr, args->defaults); @@ -2015,7 +2022,6 @@ return 0; compiler_make_closure(c, co, asdl_seq_LEN(args->defaults)); - Py_DECREF(name); return 1; } @@ -3168,15 +3174,17 @@ static int compiler_genexp(struct compiler *c, expr_ty e) { - PyObject *name; + static identifier name; PyCodeObject *co; expr_ty outermost_iter = ((comprehension_ty) (asdl_seq_GET(e->v.GeneratorExp.generators, 0)))->iter; - name = PyString_FromString(""); - if (!name) - return 0; + if (!name) { + name = PyString_FromString(""); + if (!name) + return 0; + } if (!compiler_enter_scope(c, name, (void *)e, e->lineno)) return 0; @@ -3191,8 +3199,6 @@ VISIT(c, expr, outermost_iter); ADDOP(c, GET_ITER); ADDOP_I(c, CALL_FUNCTION, 1); - Py_DECREF(name); - Py_DECREF(co); return 1; } From phillip.eby at python.org Wed Nov 16 19:43:05 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Wed, 16 Nov 2005 19:43:05 +0100 (CET) Subject: [Python-checkins] commit of r41458 - sandbox/trunk/setuptools/setuptools Message-ID: <20051116184305.9ED011E4002@bag.python.org> Author: phillip.eby Date: Wed Nov 16 19:43:05 2005 New Revision: 41458 Modified: sandbox/trunk/setuptools/setuptools/package_index.py Log: Update for SourceForge's changed mirror page formats Modified: sandbox/trunk/setuptools/setuptools/package_index.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/package_index.py (original) +++ sandbox/trunk/setuptools/setuptools/package_index.py Wed Nov 16 19:43:05 2005 @@ -463,16 +463,14 @@ return self._download_svn(url, filename) # Check for a SourceForge header elif sf_url: - if re.search(r'^', line, re.I): - continue # skip first line - elif re.search(r'Select a Mirror for File:',line): - # Sourceforge mirror page - page = file.read() - file.close() + page = ''.join(list(file)) + if '?use_mirror=' in page: + file.close(); os.unlink(filename) return self._download_sourceforge(url, page, tmpdir) break # not an index page file.close() + os.unlink(filename) raise DistutilsError("Unexpected HTML page found at "+url) def _download_svn(self, url, filename): @@ -490,12 +488,14 @@ def warn(self, msg, *args): log.warn(msg, *args) + + def _download_sourceforge(self, source_url, sf_page, tmpdir): """Download package from randomly-selected SourceForge mirror""" self.debug("Processing SourceForge mirror page") - mirror_regex = re.compile(r'HREF=(/.*?\?use_mirror=[^>]*)') + mirror_regex = re.compile(r'HREF="?(/.*?\?use_mirror=[^">]*)', re.I) urls = [m.group(1) for m in mirror_regex.finditer(sf_page)] if not urls: raise DistutilsError( From phillip.eby at python.org Wed Nov 16 20:18:09 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Wed, 16 Nov 2005 20:18:09 +0100 (CET) Subject: [Python-checkins] commit of r41459 - in sandbox/trunk/setuptools: . setuptools Message-ID: <20051116191809.0DE0E1E4002@bag.python.org> Author: phillip.eby Date: Wed Nov 16 20:18:08 2005 New Revision: 41459 Modified: sandbox/trunk/setuptools/EasyInstall.txt sandbox/trunk/setuptools/ez_setup.py sandbox/trunk/setuptools/setuptools/package_index.py Log: 0.6a8 final. Modified: sandbox/trunk/setuptools/EasyInstall.txt ============================================================================== --- sandbox/trunk/setuptools/EasyInstall.txt (original) +++ sandbox/trunk/setuptools/EasyInstall.txt Wed Nov 16 20:18:08 2005 @@ -866,6 +866,8 @@ time out or be missing a file. 0.6a8 + * Update for changed SourceForge mirror format + * Fixed not installing dependencies for some packages fetched via Subversion * Fixed dependency installation with ``--always-copy`` not using the same Modified: sandbox/trunk/setuptools/ez_setup.py ============================================================================== --- sandbox/trunk/setuptools/ez_setup.py (original) +++ sandbox/trunk/setuptools/ez_setup.py Wed Nov 16 20:18:08 2005 @@ -34,6 +34,8 @@ 'setuptools-0.6a6-py2.4.egg': 'c10d20d29acebce0dc76219dc578d058', 'setuptools-0.6a7-py2.3.egg': 'cfc4125ddb95c07f9500adc5d6abef6f', 'setuptools-0.6a7-py2.4.egg': 'c6d62dab4461f71aed943caea89e6f20', + 'setuptools-0.6a8-py2.3.egg': '2f18eaaa3f544f5543ead4a68f3b2e1a', + 'setuptools-0.6a8-py2.4.egg': '799018f2894f14c9f8bcb2b34e69b391', } import sys, os Modified: sandbox/trunk/setuptools/setuptools/package_index.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/package_index.py (original) +++ sandbox/trunk/setuptools/setuptools/package_index.py Wed Nov 16 20:18:08 2005 @@ -465,7 +465,7 @@ elif sf_url: page = ''.join(list(file)) if '?use_mirror=' in page: - file.close(); + file.close() os.unlink(filename) return self._download_sourceforge(url, page, tmpdir) break # not an index page From phillip.eby at python.org Thu Nov 17 04:01:34 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Thu, 17 Nov 2005 04:01:34 +0100 (CET) Subject: [Python-checkins] commit of r41460 - in sandbox/trunk/setuptools: . setuptools Message-ID: <20051117030134.7CE1B1E4009@bag.python.org> Author: phillip.eby Date: Thu Nov 17 04:01:33 2005 New Revision: 41460 Modified: sandbox/trunk/setuptools/launcher.c sandbox/trunk/setuptools/setuptools/cli.exe sandbox/trunk/setuptools/setuptools/gui.exe Log: Quote arguments to python.exe (including python's path) to avoid problems when Python (or a script) is installed in a directory whose name contains spaces. :( Modified: sandbox/trunk/setuptools/launcher.c ============================================================================== --- sandbox/trunk/setuptools/launcher.c (original) +++ sandbox/trunk/setuptools/launcher.c Thu Nov 17 04:01:33 2005 @@ -1,5 +1,4 @@ -/* - Setuptools Script Launcher for Windows +/* Setuptools Script Launcher for Windows This is a stub executable for Windows that functions somewhat like Effbot's "exemaker", in that it runs a script with the same name but @@ -23,7 +22,6 @@ starting. So, we have to use spawnv() and wait for Python to exit before continuing. :( */ - #include <stdlib.h> #include <stdio.h> #include <unistd.h> @@ -35,9 +33,11 @@ fprintf(stderr, format, data); return 2; } - - - +char *quoted(char *data) { + char *result = calloc(strlen(data)+3,sizeof(char)); + strcat(result,"\""); strcat(result,data); strcat(result,"\""); + return result; +} int run(int argc, char **argv, int is_gui) { @@ -96,19 +96,19 @@ /* Argument array needs to be argc+1 for args, plus 1 for null sentinel */ newargs = (char **)calloc(argc+2, sizeof(char *)); - newargs[0] = python; - newargs[1] = script; + newargs[0] = quoted(python); + newargs[1] = quoted(script); memcpy(newargs+2, argv+1, (argc-1)*sizeof(char *)); newargs[argc+1] = NULL; /* printf("args 0: %s\nargs 1: %s\n", newargs[0], newargs[1]); */ if (is_gui) { /* Use exec, we don't need to wait for the GUI to finish */ - execv(newargs[0], (const char * const *)(newargs)); + execv(python, (const char * const *)(newargs)); return fail("Could not exec %s", python); /* shouldn't get here! */ } /* We *do* need to wait for a CLI to finish, so use spawn */ - return spawnv(P_WAIT, newargs[0], (const char * const *)(newargs)); + return spawnv(P_WAIT, python, (const char * const *)(newargs)); } Modified: sandbox/trunk/setuptools/setuptools/cli.exe ============================================================================== Binary files. No diff available. Modified: sandbox/trunk/setuptools/setuptools/gui.exe ============================================================================== Binary files. No diff available. From nnorwitz at gmail.com Thu Nov 17 06:37:29 2005 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 16 Nov 2005 21:37:29 -0800 Subject: [Python-checkins] commit of r41457 - python/trunk/Python In-Reply-To: <20051116124656.17F4D1E4007@bag.python.org> References: <20051116124656.17F4D1E4007@bag.python.org> Message-ID: <ee2a432c0511162137r3aab2499k27f8ce67d728ff7a@mail.gmail.com> On 11/16/05, nick.coghlan at python.org <nick.coghlan at python.org> wrote: > @@ -3191,8 +3199,6 @@ > VISIT(c, expr, outermost_iter); > ADDOP(c, GET_ITER); > ADDOP_I(c, CALL_FUNCTION, 1); > - Py_DECREF(name); > - Py_DECREF(co); I don't understand removing Py_DECREF(co); It is added to compiler_make_closure() and I think that there is a reference taken in there. This wasn't causing a problem. In fact, I'm thinking that the other places compiler_make_closure() is called are missing the Py_DECREF(co). Let me know what you think. I'll try adding the DECREF's and see if valgrind bitches. n From walter.doerwald at python.org Thu Nov 17 09:52:37 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Thu, 17 Nov 2005 09:52:37 +0100 (CET) Subject: [Python-checkins] commit of r41461 - python/trunk/Lib/test Message-ID: <20051117085237.24B8C1E400B@bag.python.org> Author: walter.doerwald Date: Thu Nov 17 09:52:34 2005 New Revision: 41461 Modified: python/trunk/Lib/test/test_codeccallbacks.py python/trunk/Lib/test/test_codecs.py Log: Add tests for various error cases and for readbuffer_encode() and charbuffer_encode(). This increases code coverage in Modules/_codecsmodule.c from 83% to 95%. Modified: python/trunk/Lib/test/test_codeccallbacks.py ============================================================================== --- python/trunk/Lib/test/test_codeccallbacks.py (original) +++ python/trunk/Lib/test/test_codeccallbacks.py Thu Nov 17 09:52:34 2005 @@ -577,6 +577,11 @@ self.assertRaises(TypeError, codecs.register_error, 42) self.assertRaises(TypeError, codecs.register_error, "test.dummy", 42) + def test_badlookupcall(self): + # enhance coverage of: + # Modules/_codecsmodule.c::lookup_error() + self.assertRaises(TypeError, codecs.lookup_error) + def test_unknownhandler(self): # enhance coverage of: # Modules/_codecsmodule.c::lookup_error() Modified: python/trunk/Lib/test/test_codecs.py ============================================================================== --- python/trunk/Lib/test/test_codecs.py (original) +++ python/trunk/Lib/test/test_codecs.py Thu Nov 17 09:52:34 2005 @@ -260,6 +260,9 @@ ] ) + def test_errors(self): + self.assertRaises(UnicodeDecodeError, codecs.utf_16_decode, "\xff", "strict", True) + class UTF16LETest(ReadTest): encoding = "utf-16-le" @@ -278,6 +281,9 @@ ] ) + def test_errors(self): + self.assertRaises(UnicodeDecodeError, codecs.utf_16_le_decode, "\xff", "strict", True) + class UTF16BETest(ReadTest): encoding = "utf-16-be" @@ -296,6 +302,9 @@ ] ) + def test_errors(self): + self.assertRaises(UnicodeDecodeError, codecs.utf_16_be_decode, "\xff", "strict", True) + class UTF8Test(ReadTest): encoding = "utf-8" @@ -317,8 +326,49 @@ ] ) +class UTF7Test(ReadTest): + encoding = "utf-7" + + # No test_partial() yet, because UTF-7 doesn't support it. + +class UTF16ExTest(unittest.TestCase): + + def test_errors(self): + self.assertRaises(UnicodeDecodeError, codecs.utf_16_ex_decode, "\xff", "strict", 0, True) + + def test_bad_args(self): + self.assertRaises(TypeError, codecs.utf_16_ex_decode) + +class ReadBufferTest(unittest.TestCase): + + def test_array(self): + import array + self.assertEqual( + codecs.readbuffer_encode(array.array("c", "spam")), + ("spam", 4) + ) + + def test_empty(self): + self.assertEqual(codecs.readbuffer_encode(""), ("", 0)) + + def test_bad_args(self): + self.assertRaises(TypeError, codecs.readbuffer_encode) + self.assertRaises(TypeError, codecs.readbuffer_encode, 42) + +class CharBufferTest(unittest.TestCase): + + def test_string(self): + self.assertEqual(codecs.charbuffer_encode("spam"), ("spam", 4)) + + def test_empty(self): + self.assertEqual(codecs.charbuffer_encode(""), ("", 0)) + + def test_bad_args(self): + self.assertRaises(TypeError, codecs.charbuffer_encode) + self.assertRaises(TypeError, codecs.charbuffer_encode, 42) + class EscapeDecodeTest(unittest.TestCase): - def test_empty_escape_decode(self): + def test_empty(self): self.assertEquals(codecs.escape_decode(""), ("", 0)) class RecodingTest(unittest.TestCase): @@ -395,7 +445,6 @@ u"\u0056\u0069\u1EC7\u0074", "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g"), - #(L) 3<nen>B<gumi><kinpachi><sensei> (u"\u0033\u5E74\u0042\u7D44\u91D1\u516B\u5148\u751F", "3B-ww4c5e180e575a65lsy2b"), @@ -915,6 +964,18 @@ line = reader.readline() self.assertEqual(s[:len(line)], line) + def test_bad_decode_args(self): + for encoding in all_unicode_encodings: + decoder = codecs.getdecoder(encoding) + self.assertRaises(TypeError, decoder) + if encoding not in ("idna", "punycode"): + self.assertRaises(TypeError, decoder, 42) + + def test_bad_encode_args(self): + for encoding in all_unicode_encodings: + encoder = codecs.getencoder(encoding) + self.assertRaises(TypeError, encoder) + class BasicStrTest(unittest.TestCase): def test_basics(self): s = "abc123" @@ -964,6 +1025,10 @@ UTF16LETest, UTF16BETest, UTF8Test, + UTF7Test, + UTF16ExTest, + ReadBufferTest, + CharBufferTest, EscapeDecodeTest, RecodingTest, PunycodeTest, From walter.doerwald at python.org Thu Nov 17 10:36:07 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Thu, 17 Nov 2005 10:36:07 +0100 (CET) Subject: [Python-checkins] commit of r41462 - python/trunk/Doc/lib Message-ID: <20051117093607.64D4A1E4007@bag.python.org> Author: walter.doerwald Date: Thu Nov 17 10:36:06 2005 New Revision: 41462 Modified: python/trunk/Doc/lib/email-mime.py Log: Fix typo in comment (reported on the pydotorg mailing list). Modified: python/trunk/Doc/lib/email-mime.py ============================================================================== --- python/trunk/Doc/lib/email-mime.py (original) +++ python/trunk/Doc/lib/email-mime.py Thu Nov 17 10:36:06 2005 @@ -1,7 +1,7 @@ # Import smtplib for the actual sending function import smtplib -# Here are the email pacakge modules we'll need +# Here are the email package modules we'll need from email.MIMEImage import MIMEImage from email.MIMEMultipart import MIMEMultipart From walter.doerwald at python.org Thu Nov 17 10:47:09 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Thu, 17 Nov 2005 10:47:09 +0100 (CET) Subject: [Python-checkins] commit of r41463 - python/branches/release24-maint/Doc/lib Message-ID: <20051117094709.6F4CB1E4007@bag.python.org> Author: walter.doerwald Date: Thu Nov 17 10:47:09 2005 New Revision: 41463 Modified: python/branches/release24-maint/Doc/lib/email-mime.py Log: Backport r41462: Fix typo in comment (reported on the pydotorg mailing list). Modified: python/branches/release24-maint/Doc/lib/email-mime.py ============================================================================== --- python/branches/release24-maint/Doc/lib/email-mime.py (original) +++ python/branches/release24-maint/Doc/lib/email-mime.py Thu Nov 17 10:47:09 2005 @@ -1,7 +1,7 @@ # Import smtplib for the actual sending function import smtplib -# Here are the email pacakge modules we'll need +# Here are the email package modules we'll need from email.MIMEImage import MIMEImage from email.MIMEMultipart import MIMEMultipart From skip.montanaro at python.org Thu Nov 17 19:19:40 2005 From: skip.montanaro at python.org (skip.montanaro@python.org) Date: Thu, 17 Nov 2005 19:19:40 +0100 (CET) Subject: [Python-checkins] commit of r41464 - python/trunk Message-ID: <20051117181940.8DB6C1E4007@bag.python.org> Author: skip.montanaro Date: Thu Nov 17 19:19:39 2005 New Revision: 41464 Modified: python/trunk/README Log: note build workaround for Sol10/gcc 3.4 Modified: python/trunk/README ============================================================================== --- python/trunk/README (original) +++ python/trunk/README Thu Nov 17 19:19:39 2005 @@ -307,6 +307,12 @@ 4. Modify the installed GCC specs file, adding -R options into the *link: section. + The complex object fails to compile on Solaris 10 with gcc 3.4 (at + least up to 3.4.3). To work around it, define Py_HUGE_VAL as + HUGE_VAL(), e.g.: + + make CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()" -I. -I$(srcdir)/Include' + Linux: A problem with threads and fork() was tracked down to a bug in the pthreads code in glibc version 2.0.5; glibc version 2.0.7 solves the problem. This causes the popen2 test to fail; From skip.montanaro at python.org Thu Nov 17 19:22:01 2005 From: skip.montanaro at python.org (skip.montanaro@python.org) Date: Thu, 17 Nov 2005 19:22:01 +0100 (CET) Subject: [Python-checkins] commit of r41465 - python/branches/release24-maint Message-ID: <20051117182201.E96151E4007@bag.python.org> Author: skip.montanaro Date: Thu Nov 17 19:22:01 2005 New Revision: 41465 Modified: python/branches/release24-maint/README Log: backport Modified: python/branches/release24-maint/README ============================================================================== --- python/branches/release24-maint/README (original) +++ python/branches/release24-maint/README Thu Nov 17 19:22:01 2005 @@ -309,6 +309,12 @@ 4. Modify the installed GCC specs file, adding -R options into the *link: section. + The complex object fails to compile on Solaris 10 with gcc 3.4 (at + least up to 3.4.3). To work around it, define Py_HUGE_VAL as + HUGE_VAL(), e.g.: + + make CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()" -I. -I$(srcdir)/Include' + Linux: A problem with threads and fork() was tracked down to a bug in the pthreads code in glibc version 2.0.5; glibc version 2.0.7 solves the problem. This causes the popen2 test to fail; From skip.montanaro at python.org Thu Nov 17 19:31:11 2005 From: skip.montanaro at python.org (skip.montanaro@python.org) Date: Thu, 17 Nov 2005 19:31:11 +0100 (CET) Subject: [Python-checkins] commit of r41466 - python/trunk Message-ID: <20051117183111.120871E4007@bag.python.org> Author: skip.montanaro Date: Thu Nov 17 19:31:09 2005 New Revision: 41466 Modified: python/trunk/README Log: don't get me started about distutils... Modified: python/trunk/README ============================================================================== --- python/trunk/README (original) +++ python/trunk/README Thu Nov 17 19:31:09 2005 @@ -312,6 +312,7 @@ HUGE_VAL(), e.g.: make CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()" -I. -I$(srcdir)/Include' + ./python setup.py CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()"' Linux: A problem with threads and fork() was tracked down to a bug in the pthreads code in glibc version 2.0.5; glibc version 2.0.7 From skip.montanaro at python.org Thu Nov 17 19:32:27 2005 From: skip.montanaro at python.org (skip.montanaro@python.org) Date: Thu, 17 Nov 2005 19:32:27 +0100 (CET) Subject: [Python-checkins] commit of r41467 - python/branches/release24-maint Message-ID: <20051117183227.B89551E4007@bag.python.org> Author: skip.montanaro Date: Thu Nov 17 19:32:26 2005 New Revision: 41467 Modified: python/branches/release24-maint/README Log: backport Modified: python/branches/release24-maint/README ============================================================================== --- python/branches/release24-maint/README (original) +++ python/branches/release24-maint/README Thu Nov 17 19:32:26 2005 @@ -314,6 +314,7 @@ HUGE_VAL(), e.g.: make CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()" -I. -I$(srcdir)/Include' + ./python setup.py CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()"' Linux: A problem with threads and fork() was tracked down to a bug in the pthreads code in glibc version 2.0.5; glibc version 2.0.7 From walter.doerwald at python.org Thu Nov 17 19:51:35 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Thu, 17 Nov 2005 19:51:35 +0100 (CET) Subject: [Python-checkins] commit of r41468 - python/trunk/Lib/test Message-ID: <20051117185135.6E4C01E4007@bag.python.org> Author: walter.doerwald Date: Thu Nov 17 19:51:34 2005 New Revision: 41468 Modified: python/trunk/Lib/test/test_codeccallbacks.py python/trunk/Lib/test/test_codecs.py Log: Add tests to increase code coverage in Python/codecs.c and Python/exceptions.c. Modified: python/trunk/Lib/test/test_codeccallbacks.py ============================================================================== --- python/trunk/Lib/test/test_codeccallbacks.py (original) +++ python/trunk/Lib/test/test_codeccallbacks.py Thu Nov 17 19:51:34 2005 @@ -18,6 +18,66 @@ self.pos = len(exc.object) return (u"<?>", oldpos) +# A UnicodeEncodeError object without a start attribute +class NoStartUnicodeEncodeError(UnicodeEncodeError): + def __init__(self): + UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad") + del self.start + +# A UnicodeEncodeError object with a bad start attribute +class BadStartUnicodeEncodeError(UnicodeEncodeError): + def __init__(self): + UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad") + self.start = [] + +# A UnicodeEncodeError object without an end attribute +class NoEndUnicodeEncodeError(UnicodeEncodeError): + def __init__(self): + UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad") + del self.end + +# A UnicodeEncodeError object without an object attribute +class NoObjectUnicodeEncodeError(UnicodeEncodeError): + def __init__(self): + UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad") + del self.object + +# A UnicodeEncodeError object with a bad object attribute +class BadObjectUnicodeEncodeError(UnicodeEncodeError): + def __init__(self): + UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad") + self.object = [] + +# A UnicodeDecodeError object without an end attribute +class NoEndUnicodeDecodeError(UnicodeDecodeError): + def __init__(self): + UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad") + del self.end + +# A UnicodeDecodeError object with a bad object attribute +class BadObjectUnicodeDecodeError(UnicodeDecodeError): + def __init__(self): + UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad") + self.object = [] + +# A UnicodeTranslateError object without a start attribute +class NoStartUnicodeTranslateError(UnicodeTranslateError): + def __init__(self): + UnicodeTranslateError.__init__(self, u"", 0, 1, "bad") + del self.start + +# A UnicodeTranslateError object without an end attribute +class NoEndUnicodeTranslateError(UnicodeTranslateError): + def __init__(self): + UnicodeTranslateError.__init__(self, u"", 0, 1, "bad") + del self.end + +# A UnicodeTranslateError object without an object attribute +class NoObjectUnicodeTranslateError(UnicodeTranslateError): + def __init__(self): + UnicodeTranslateError.__init__(self, u"", 0, 1, "bad") + del self.object + class CodecCallbackTest(unittest.TestCase): def test_xmlcharrefreplace(self): @@ -417,6 +477,56 @@ codecs.replace_errors, UnicodeError("ouch") ) + self.assertRaises( + AttributeError, + codecs.replace_errors, + NoStartUnicodeEncodeError() + ) + self.assertRaises( + TypeError, + codecs.replace_errors, + BadStartUnicodeEncodeError() + ) + self.assertRaises( + AttributeError, + codecs.replace_errors, + NoEndUnicodeEncodeError() + ) + self.assertRaises( + AttributeError, + codecs.replace_errors, + NoObjectUnicodeEncodeError() + ) + self.assertRaises( + TypeError, + codecs.replace_errors, + BadObjectUnicodeEncodeError() + ) + self.assertRaises( + AttributeError, + codecs.replace_errors, + NoEndUnicodeDecodeError() + ) + self.assertRaises( + TypeError, + codecs.replace_errors, + BadObjectUnicodeDecodeError() + ) + self.assertRaises( + AttributeError, + codecs.replace_errors, + NoStartUnicodeTranslateError() + ) + self.assertRaises( + AttributeError, + codecs.replace_errors, + NoEndUnicodeTranslateError() + ) + self.assertRaises( + AttributeError, + codecs.replace_errors, + NoObjectUnicodeTranslateError() + ) # With the correct exception, "replace" returns an "?" or u"\ufffd" replacement self.assertEquals( codecs.replace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")), @@ -455,10 +565,29 @@ codecs.xmlcharrefreplace_errors, UnicodeTranslateError(u"\u3042", 0, 1, "ouch") ) + self.assertRaises( + AttributeError, + codecs.xmlcharrefreplace_errors, + NoStartUnicodeEncodeError() + ) + self.assertRaises( + AttributeError, + codecs.xmlcharrefreplace_errors, + NoEndUnicodeEncodeError() + ) + self.assertRaises( + AttributeError, + codecs.xmlcharrefreplace_errors, + NoObjectUnicodeEncodeError() + ) # Use the correct exception + cs = (0, 1, 9, 10, 99, 100, 999, 1000, 9999, 10000, 0x3042) + s = "".join(unichr(c) for c in cs) self.assertEquals( - codecs.xmlcharrefreplace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")), - (u"&#%d;" % 0x3042, 1) + codecs.xmlcharrefreplace_errors( + UnicodeEncodeError("ascii", s, 0, len(s), "ouch") + ), + (u"".join(u"&#%d;" % ord(c) for c in s), len(s)) ) def test_badandgoodbackslashreplaceexceptions(self): Modified: python/trunk/Lib/test/test_codecs.py ============================================================================== --- python/trunk/Lib/test/test_codecs.py (original) +++ python/trunk/Lib/test/test_codecs.py Thu Nov 17 19:51:34 2005 @@ -746,15 +746,34 @@ self.assertEquals(codecs.encode(u'\xe4\xf6\xfc', 'latin-1'), '\xe4\xf6\xfc') self.assertRaises(TypeError, codecs.encode) + self.assertRaises(LookupError, codecs.encode, "foo", "__spam__") self.assertEquals(codecs.encode(u'abc'), 'abc') self.assertRaises(UnicodeEncodeError, codecs.encode, u'\xffff', 'ascii') def test_register(self): self.assertRaises(TypeError, codecs.register) + self.assertRaises(TypeError, codecs.register, 42) def test_lookup(self): self.assertRaises(TypeError, codecs.lookup) self.assertRaises(LookupError, codecs.lookup, "__spam__") + self.assertRaises(LookupError, codecs.lookup, " ") + + def test_getencoder(self): + self.assertRaises(TypeError, codecs.getencoder) + self.assertRaises(LookupError, codecs.getencoder, "__spam__") + + def test_getdecoder(self): + self.assertRaises(TypeError, codecs.getdecoder) + self.assertRaises(LookupError, codecs.getdecoder, "__spam__") + + def test_getreader(self): + self.assertRaises(TypeError, codecs.getreader) + self.assertRaises(LookupError, codecs.getreader, "__spam__") + + def test_getwriter(self): + self.assertRaises(TypeError, codecs.getwriter) + self.assertRaises(LookupError, codecs.getwriter, "__spam__") class StreamReaderTest(unittest.TestCase): From phillip.eby at python.org Fri Nov 18 03:07:32 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 03:07:32 +0100 (CET) Subject: [Python-checkins] commit of r41469 - sandbox/trunk/setuptools Message-ID: <20051118020732.71E471E4007@bag.python.org> Author: phillip.eby Date: Fri Nov 18 03:07:30 2005 New Revision: 41469 Modified: sandbox/trunk/setuptools/pkg_resources.py sandbox/trunk/setuptools/pkg_resources.txt Log: Don't raise an error when an invalid (unfinished) distribution is found unless absolutely necessary. Warn about skipping invalid/unfinished eggs when building an Environment. Modified: sandbox/trunk/setuptools/pkg_resources.py ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.py (original) +++ sandbox/trunk/setuptools/pkg_resources.py Fri Nov 18 03:07:30 2005 @@ -605,7 +605,7 @@ def add(self,dist): """Add `dist` if we ``can_add()`` it and it isn't already added""" - if self.can_add(dist): + if self.can_add(dist) and dist.has_version(): dists = self._distmap.setdefault(dist.key,[]) if dist not in dists: dists.append(dist) @@ -1940,31 +1940,31 @@ fn = getattr(sys.modules[modname], '__file__', None) if fn and fn.startswith(self.location): continue - - level = 1 - g = globals() - try: - # find the first stack frame that is *not* code in - # the pkg_resources module, to use for the warning - while sys._getframe(level).f_globals is g: - level += 1 - except ValueError: - pass - - from warnings import warn - warn( + issue_warning( "Module %s was already imported from %s, but %s is being added" " to sys.path" % (modname, fn, self.location), - stacklevel = level+1 ) - - - - - - - + def has_version(self): + try: + self.version + except ValueError: + issue_warning("Unbuilt egg for "+repr(self)) + return False + return True + +def issue_warning(*args,**kw): + level = 1 + g = globals() + try: + # find the first stack frame that is *not* code in + # the pkg_resources module, to use for the warning + while sys._getframe(level).f_globals is g: + level += 1 + except ValueError: + pass + from warnings import warn + warn(stacklevel = level+1, *args, **kw) def parse_requirements(strs): """Yield ``Requirement`` objects for each specification in `strs` @@ -2076,7 +2076,7 @@ def __contains__(self,item): if isinstance(item,Distribution): if item.key <> self.key: return False - item = item.parsed_version + if self.index: item = item.parsed_version # only get if we need it elif isinstance(item,basestring): item = parse_version(item) last = None Modified: sandbox/trunk/setuptools/pkg_resources.txt ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.txt (original) +++ sandbox/trunk/setuptools/pkg_resources.txt Fri Nov 18 03:07:30 2005 @@ -1348,7 +1348,7 @@ The algorithm assumes that strings like "-" and any alpha string that alphabetically follows "final" represents a "patch level". So, "2.4-1" is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is - considered newer than "2.4-1", whic in turn is newer than "2.4". + considered newer than "2.4-1", which in turn is newer than "2.4". Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that come before "final" alphabetically) are assumed to be pre-release versions, @@ -1488,6 +1488,11 @@ Release Notes/Change History ---------------------------- +0.6a9 + * Don't raise an error when an invalid (unfinished) distribution is found + unless absolutely necessary. Warn about skipping invalid/unfinished eggs + when building an Environment. + 0.6a8 * Fixed a problem with ``WorkingSet.resolve()`` that prevented version conflicts from being detected at runtime. From phillip.eby at python.org Fri Nov 18 03:22:09 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 03:22:09 +0100 (CET) Subject: [Python-checkins] commit of r41470 - in sandbox/trunk/setuptools: . setuptools Message-ID: <20051118022209.4D7831E4007@bag.python.org> Author: phillip.eby Date: Fri Nov 18 03:22:08 2005 New Revision: 41470 Modified: sandbox/trunk/setuptools/ez_setup.py sandbox/trunk/setuptools/setup.py sandbox/trunk/setuptools/setuptools/__init__.py Log: Bump version number to begin the 0.6a9 developent cycle Modified: sandbox/trunk/setuptools/ez_setup.py ============================================================================== --- sandbox/trunk/setuptools/ez_setup.py (original) +++ sandbox/trunk/setuptools/ez_setup.py Fri Nov 18 03:22:08 2005 @@ -14,7 +14,7 @@ This file can also be run as a script to install or upgrade setuptools. """ import sys -DEFAULT_VERSION = "0.6a8" +DEFAULT_VERSION = "0.6a9" DEFAULT_URL = "http://cheeseshop.python.org/packages/%s/s/setuptools/" % sys.version[:3] md5_data = { Modified: sandbox/trunk/setuptools/setup.py ============================================================================== --- sandbox/trunk/setuptools/setup.py (original) +++ sandbox/trunk/setuptools/setup.py Fri Nov 18 03:22:08 2005 @@ -15,7 +15,7 @@ f.close() return ''.join(lines) -VERSION = "0.6a8" +VERSION = "0.6a9" from setuptools import setup, find_packages import sys from setuptools.command import __all__ as SETUP_COMMANDS Modified: sandbox/trunk/setuptools/setuptools/__init__.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/__init__.py (original) +++ sandbox/trunk/setuptools/setuptools/__init__.py Fri Nov 18 03:22:08 2005 @@ -8,7 +8,7 @@ from distutils.util import convert_path import os.path -__version__ = '0.6a8' +__version__ = '0.6a9' __all__ = [ 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require', 'find_packages' From phillip.eby at python.org Fri Nov 18 04:13:07 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 04:13:07 +0100 (CET) Subject: [Python-checkins] commit of r41471 - sandbox/trunk/setuptools/setuptools/command Message-ID: <20051118031307.858AC1E4007@bag.python.org> Author: phillip.eby Date: Fri Nov 18 04:13:07 2005 New Revision: 41471 Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py Log: Build a SOURCES.txt manifest file in .egg-info, that can then be included in sdist distributions to support building an sdist from an sdist (which the bdist_rpm command requires). This will also be the basis for enhanced package data support, that will allow optionally using the manifest to identify package data files instead of having separate manual identification of the data files. Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/egg_info.py Fri Nov 18 04:13:07 2005 @@ -7,11 +7,15 @@ from setuptools import Command from distutils.errors import * from distutils import log +from distutils.command.sdist import sdist +from distutils import file_util +from distutils.util import convert_path +from distutils.filelist import FileList from pkg_resources import parse_requirements, safe_name, parse_version, \ safe_version, yield_lines, EntryPoint, iter_entry_points +from sdist import walk_revctrl class egg_info(Command): - description = "create a distribution's .egg-info directory" user_options = [ @@ -25,7 +29,6 @@ boolean_options = ['tag-date','tag-svn-revision'] - def initialize_options (self): self.egg_name = None self.egg_version = None @@ -36,9 +39,6 @@ self.tag_date = 0 - - - def finalize_options (self): self.egg_name = safe_name(self.distribution.get_name()) self.egg_version = self.tagged_version() @@ -58,10 +58,12 @@ self.egg_base = (dirs or {}).get('',os.curdir) self.ensure_dirname('egg_base') - self.egg_info = os.path.join(self.egg_base, self.egg_name+'.egg-info') + self.egg_info = self.egg_name+'.egg-info' + if self.egg_base != os.curdir: + self.egg_info = os.path.join(self.egg_base, self.egg_info) # Set package version for the benefit of dumber commands - # (e.g. sdist, bdist_wininst, etc.) + # (e.g. sdist, bdist_wininst, etc.) # self.distribution.metadata.version = self.egg_version @@ -74,8 +76,6 @@ pd._version = self.egg_version pd._parsed_version = parse_version(self.egg_version) self.distribution._patched_dist = None - - @@ -122,12 +122,12 @@ def run(self): - # Make the .egg-info directory, then write PKG-INFO and requires.txt self.mkpath(self.egg_info) installer = self.distribution.fetch_build_egg for ep in iter_entry_points('egg_info.writers'): writer = ep.load(installer=installer) writer(self, ep.name, os.path.join(self.egg_info,ep.name)) + self.find_sources() def tagged_version(self): version = self.distribution.get_version() @@ -162,6 +162,129 @@ revision = max(revision, int(match.group(1))) return str(revision or get_pkg_info_revision()) + def find_sources(self): + """Generate SOURCES.txt manifest file""" + manifest_filename = os.path.join(self.egg_info,"SOURCES.txt") + mm = manifest_maker(self.distribution) + mm.manifest = manifest_filename + mm.run() + self.filelist = mm.filelist + + +class FileList(FileList): + """File list that accepts only existing, platform-independent paths""" + + def append(self, item): + path = convert_path(item) + if os.path.exists(path): + self.files.append(path) + + + + + + + + + + + + + + + + + + + + + + + + + +class manifest_maker(sdist): + + template = "MANIFEST.in" + + def initialize_options (self): + self.use_defaults = 1 + self.prune = 1 + self.manifest_only = 1 + self.force_manifest = 1 + + def finalize_options(self): + pass + + def run(self): + self.filelist = FileList() + self.filelist.findall() + self.add_defaults() + if os.path.exists(self.template): + self.read_template() + self.prune_file_list() + self.filelist.sort() + self.filelist.remove_duplicates() + self.write_manifest() + + def write_manifest (self): + """Write the file list in 'self.filelist' (presumably as filled in + by 'add_defaults()' and 'read_template()') to the manifest file + named by 'self.manifest'. + """ + files = self.filelist.files + if os.sep!='/': + files = [f.replace(os.sep,'/') for f in files] + self.execute(file_util.write_file, (self.manifest, files), + "writing manifest file '%s'" % self.manifest) + + + + + + + + def add_defaults(self): + sdist.add_defaults(self) + self.filelist.extend([self.template,self.manifest]) + rcfiles = list(walk_revctrl()) + if rcfiles: + self.filelist.extend(rcfiles) + elif os.path.exists(self.manifest): + self.read_manifest() + ei_cmd = self.get_finalized_command('egg_info') + self.filelist.include_pattern("*", prefix=ei_cmd.egg_info) + + def prune_file_list (self): + build = self.get_finalized_command('build') + base_dir = self.distribution.get_fullname() + self.filelist.exclude_pattern(None, prefix=build.build_base) + self.filelist.exclude_pattern(None, prefix=base_dir) + self.filelist.exclude_pattern(os.sep+'\(RCS|CVS|\.svn)', is_regex=1) + + + + + + + + + + + + + + + + + + + + + + + + def write_pkg_info(cmd, basename, filename): log.info("writing %s", filename) if not cmd.dry_run: From phillip.eby at python.org Fri Nov 18 04:45:20 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 04:45:20 +0100 (CET) Subject: [Python-checkins] commit of r41472 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051118034520.810371E401C@bag.python.org> Author: phillip.eby Date: Fri Nov 18 04:45:16 2005 New Revision: 41472 Modified: sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/egg_info.py sandbox/trunk/setuptools/setuptools/command/sdist.py Log: The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to create source distributions. ``MANIFEST.in`` is still read and processed, as are the standard defaults and pruning. But the manifest is built inside the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt every time the ``egg_info`` command is run. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 18 04:45:16 2005 @@ -1040,16 +1040,29 @@ (And, if you already have one, you might consider deleting it the next time you would otherwise have to change it.) -Unlike the distutils, ``setuptools`` regenerates the source distribution -``MANIFEST`` file every time you build a source distribution, as long as you -*don't* have a ``MANIFEST.in`` file. If you do have a ``MANIFEST.in`` (e.g. -because you aren't using CVS or Subversion), then you'll have to follow the -normal distutils procedures for managing what files get included in a source -distribution, and setuptools' enhanced algorithms will *not* be used. - -(Note, by the way, that if you're using some other revision control system, you -might consider submitting a patch to the ``setuptools.command.sdist`` module -so we can include support for it, too.) +If you need to include automatically generated files, or files that are kept in +an unsupported revision control system, you'll need to create a ``MANIFEST.in`` +file to specify any files that the default file location algorithm doesn't +catch. See the distutils documentation for more information on the format of +the ``MANIFEST.in`` file. + +But, be sure to ignore any part of the distutils documentation that deals with +``MANIFEST`` or how it's generated from ``MANIFEST.in``; setuptools shields you +from these issues and doesn't work the same way in any case. Unlike the +distutils, setuptools regenerates the source distribution manifest file +every time you build a source distribution, and it builds it inside the +project's ``.egg-info`` directory, out of the way of your main project +directory. You therefore need not worry about whether it is up-to-date or not. + +Indeed, because setuptools' approach to determining the contents of a source +distribution is so much simpler, its ``sdist`` command omits nearly all of +the options that the distutils' more complex ``sdist`` process requires. For +all practical purposes, you'll probably use only the ``--formats`` option, if +you use any option at all. + +(By the way, if you're using some other revision control system, you might +consider submitting a patch to the ``setuptools.command.sdist`` module, +so we can include support for your system.) Making your package available for EasyInstall @@ -1465,7 +1478,9 @@ to support "daily builds" or "snapshot" releases. It is run automatically by the ``sdist``, ``bdist_egg``, ``develop``, and ``test`` commands in order to update the project's metadata, but you can also specify it explicitly in order -to temporarily change the project's version string. +to temporarily change the project's version string. (It also generates the +``.egg-info/SOURCES.txt`` manifest file, which is used when you are building +source distributions.) The following options can be used to modify the project's version string for all remaining commands on the setup command line. The options are processed @@ -1960,6 +1975,13 @@ Release Notes/Change History ---------------------------- +0.6a9 + * The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to + create source distributions. ``MANIFEST.in`` is still read and processed, + as are the standard defaults and pruning. But the manifest is built inside + the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt + every time the ``egg_info`` command is run. + 0.6a8 * Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/egg_info.py Fri Nov 18 04:45:16 2005 @@ -246,7 +246,8 @@ def add_defaults(self): sdist.add_defaults(self) - self.filelist.extend([self.template,self.manifest]) + self.filelist.append(self.template) + self.filelist.append(self.manifest) rcfiles = list(walk_revctrl()) if rcfiles: self.filelist.extend(rcfiles) @@ -284,7 +285,6 @@ - def write_pkg_info(cmd, basename, filename): log.info("writing %s", filename) if not cmd.dry_run: Modified: sandbox/trunk/setuptools/setuptools/command/sdist.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/sdist.py (original) +++ sandbox/trunk/setuptools/setuptools/command/sdist.py Fri Nov 18 04:45:16 2005 @@ -93,26 +93,67 @@ ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + class sdist(_sdist): """Smart sdist that finds anything supported by revision control""" + user_options = [ + ('formats=', None, + "formats for source distribution (comma-separated list)"), + ('keep-temp', 'k', + "keep the distribution tree around after creating " + + "archive file(s)"), + ('dist-dir=', 'd', + "directory to put the source distribution archive(s) in " + "[default: dist]"), + ] + + negative_opt = {} + def run(self): self.run_command('egg_info') - _sdist.run(self) + ei_cmd = self.get_finalized_command('egg_info') + self.filelist = ei_cmd.filelist + self.filelist.append(os.path.join(ei_cmd.egg_info,'SOURCES.txt')) + + self.check_metadata() + self.make_distribution() + dist_files = getattr(self.distribution,'dist_files',[]) for file in self.archive_files: data = ('sdist', '', file) if data not in dist_files: dist_files.append(data) - def finalize_options(self): - _sdist.finalize_options(self) - if not os.path.isfile(self.template): - self.force_manifest = 1 # always regen if no template - - def add_defaults(self): - _sdist.add_defaults(self) - self.filelist.extend(walk_revctrl()) + + From phillip.eby at python.org Fri Nov 18 05:37:34 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 05:37:34 +0100 (CET) Subject: [Python-checkins] commit of r41473 - in sandbox/trunk/setuptools: . setuptools.egg-info setuptools/command Message-ID: <20051118043734.455FA1E4007@bag.python.org> Author: phillip.eby Date: Fri Nov 18 05:37:31 2005 New Revision: 41473 Modified: sandbox/trunk/setuptools/setup.py sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/build_py.py Log: Added the ``include_package_data`` keyword to ``setup()``, allowing you to automatically include any package data listed in revision control or ``MANIFEST.in``. Now projects can manage their data files and source manifests without having to maintain two ways to express the same file list. Yay! Modified: sandbox/trunk/setuptools/setup.py ============================================================================== --- sandbox/trunk/setuptools/setup.py (original) +++ sandbox/trunk/setuptools/setup.py Fri Nov 18 05:37:31 2005 @@ -36,7 +36,7 @@ url = "http://peak.telecommunity.com/DevCenter/setuptools", test_suite = 'setuptools.tests.test_suite', packages = find_packages(), - package_data = {'setuptools': ['*.exe']}, + include_package_data = True, py_modules = ['pkg_resources', 'easy_install', 'site'], zip_safe = False, # We want 'python -m easy_install' to work, for now :( @@ -53,6 +53,7 @@ "entry_points = setuptools.dist:check_entry_points", "test_suite = setuptools.dist:check_test_suite", "zip_safe = setuptools.dist:assert_bool", + "include_package_data = setuptools.dist:assert_bool", ], "egg_info.writers": [ "PKG-INFO = setuptools.command.egg_info:write_pkg_info", @@ -66,7 +67,6 @@ "console_scripts": ["easy_install = setuptools.command.easy_install:main"], }, - classifiers = [f.strip() for f in """ Development Status :: 3 - Alpha Intended Audience :: Developers Modified: sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt (original) +++ sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt Fri Nov 18 05:37:31 2005 @@ -2,6 +2,7 @@ entry_points = setuptools.dist:check_entry_points extras_require = setuptools.dist:check_extras install_requires = setuptools.dist:check_install_requires +include_package_data = setuptools.dist:assert_bool namespace_packages = setuptools.dist:check_nsp test_suite = setuptools.dist:check_test_suite eager_resources = setuptools.dist:assert_string_list Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 18 05:37:31 2005 @@ -189,6 +189,13 @@ ``setuptools``. All of them are optional; you do not have to supply them unless you need the associated ``setuptools`` feature. +``include_package_data`` + If set to ``True``, this tells ``setuptools`` to automatically include any + data files it finds inside your package directories, that are either under + CVS or Subversion control, or which are specified by your ``MANIFEST.in`` + file. For more information, see the section below on `Including Data + Files`_. + ``package_data`` A dictionary mapping package names to lists of glob patterns. For a complete description and examples, see the section below on `Including @@ -514,8 +521,26 @@ The distutils have traditionally allowed installation of "data files", which are placed in a platform-specific location. However, the most common use case for data files distributed with a package is for use *by* the package, usually -by including the data files in the package directory. Setuptools supports this -by allowing a ``package_data`` argument to ``setup()``, e.g.:: +by including the data files in the package directory. + +Setuptools offers two ways to specify data files to be included in your +packages. First, you can simply use the ``include_package_data`` keyword, +e.g.:: + + from setuptools import setup, find_packages + setup( + ... + include_package_data = True + ) + +This tells setuptools to install any data files it finds in your packages. The +data files must be under CVS or Subversion control, or else they must be +specified via the distutils' ``MANIFEST.in`` file. + +If you want finer-grained control over what files are included (for example, if +you have documentation files in your package directories and want to exclude +them from installation), then you can use the ``package_data`` keyword instead, +e.g.:: from setuptools import setup, find_packages setup( @@ -576,7 +601,6 @@ __ http://docs.python.org/dist/node11.html - Accessing Data Files at Runtime ------------------------------- @@ -1982,6 +2006,10 @@ the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt every time the ``egg_info`` command is run. + * Added the ``include_package_data`` keyword to ``setup()``, allowing you to + automatically include any package data listed in revision control or + ``MANIFEST.in``. + 0.6a8 * Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. Modified: sandbox/trunk/setuptools/setuptools/command/build_py.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/build_py.py (original) +++ sandbox/trunk/setuptools/setuptools/command/build_py.py Fri Nov 18 05:37:31 2005 @@ -3,7 +3,6 @@ from distutils.util import convert_path from glob import glob - class build_py(_build_py): """Enhanced 'build_py' command that includes data files with packages @@ -17,7 +16,7 @@ def finalize_options(self): _build_py.finalize_options(self) self.package_data = self.distribution.package_data - self.data_files = self.get_data_files() + if 'data_files' in self.__dict__: del self.__dict__['data_files'] def run(self): """Build modules, packages, and copy data files to build directory""" @@ -35,12 +34,14 @@ # output files are. self.byte_compile(_build_py.get_outputs(self, include_bytecode=0)) + def __getattr__(self,attr): + if attr=='data_files': # lazily compute data files + self.data_files = files = self._get_data_files(); return files + return _build_py.__getattr__(self,attr) - - - - def get_data_files(self): + def _get_data_files(self): """Generate list of '(package,src_dir,build_dir,filenames)' tuples""" + self.analyze_manifest() data = [] for package in self.packages or (): # Locate package source directory @@ -63,7 +64,7 @@ """Return filenames for package's data files in 'src_dir'""" globs = (self.package_data.get('', []) + self.package_data.get(package, [])) - files = [] + files = self.manifest_files.get(package, [])[:] for pattern in globs: # Each pattern has to be converted to a platform-specific path files.extend(glob(os.path.join(src_dir, convert_path(pattern)))) @@ -79,45 +80,44 @@ self.copy_file(os.path.join(src_dir, filename), target) + def analyze_manifest(self): + self.manifest_files = mf = {} + if not self.distribution.include_package_data: + return - def get_outputs(self, include_bytecode=1): - """Return complete list of files copied to the build directory - - This includes both '.py' files and data files, as well as '.pyc' and - '.pyo' files if 'include_bytecode' is true. (This method is needed for - the 'install_lib' command to do its job properly, and to generate a - correct installation manifest.) - """ - return _build_py.get_outputs(self, include_bytecode) + [ - os.path.join(build_dir, filename) - for package, src_dir, build_dir,filenames in self.data_files - for filename in filenames - ] - - -if sys.version>="2.4": - # Python 2.4 already has the above code - build_py = _build_py - - - - - - - - - - - - - - - - - - - + src_dirs = {} + for package in self.packages or (): + # Locate package source directory + src_dirs[self.get_package_dir(package)] = package + self.run_command('egg_info') + ei_cmd = self.get_finalized_command('egg_info') + for path in ei_cmd.filelist.files: + if path.endswith('.py'): continue + d,f = os.path.split(path) + while d and d not in src_dirs: + d, df = os.path.split(d) + f = os.path.join(df, f) + if d in src_dirs: + mf.setdefault(src_dirs[d],[]).append(path) + + + def get_data_files(self): pass # kludge 2.4 for lazy computation + + if sys.version<"2.4": # Python 2.4 already has this code + def get_outputs(self, include_bytecode=1): + """Return complete list of files copied to the build directory + + This includes both '.py' files and data files, as well as '.pyc' + and '.pyo' files if 'include_bytecode' is true. (This method is + needed for the 'install_lib' command to do its job properly, and to + generate a correct installation manifest.) + """ + return _build_py.get_outputs(self, include_bytecode) + [ + os.path.join(build_dir, filename) + for package, src_dir, build_dir,filenames in self.data_files + for filename in filenames + ] From phillip.eby at python.org Fri Nov 18 12:29:50 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 12:29:50 +0100 (CET) Subject: [Python-checkins] commit of r41474 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051118112950.E63261E4009@bag.python.org> Author: phillip.eby Date: Fri Nov 18 12:29:50 2005 New Revision: 41474 Modified: sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/egg_info.py Log: Fixed ``--tag-svn-revision`` not working when run from a source distribution. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 18 12:29:50 2005 @@ -2010,6 +2010,9 @@ automatically include any package data listed in revision control or ``MANIFEST.in``. + * Fixed ``--tag-svn-revision`` not working when run from a source + distribution. + 0.6a8 * Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/egg_info.py Fri Nov 18 12:29:50 2005 @@ -133,11 +133,11 @@ version = self.distribution.get_version() if self.tag_build: version+=self.tag_build - if self.tag_svn_revision and os.path.exists('.svn'): - version += '-r%s' % self.get_svn_revision() + if self.tag_svn_revision and ( + os.path.exists('.svn') or os.path.exists('PKG-INFO') + ): version += '-r%s' % self.get_svn_revision() if self.tag_date: - import time - version += time.strftime("-%Y%m%d") + import time; version += time.strftime("-%Y%m%d") return safe_version(version) def get_svn_revision(self): From phillip.eby at python.org Fri Nov 18 14:15:33 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 14:15:33 +0100 (CET) Subject: [Python-checkins] commit of r41475 - sandbox/trunk/setuptools/setuptools/command Message-ID: <20051118131533.82B991E4009@bag.python.org> Author: phillip.eby Date: Fri Nov 18 14:15:33 2005 New Revision: 41475 Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py Log: Fix .svn exclude pattern for non-Windows platforms. Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/egg_info.py Fri Nov 18 14:15:33 2005 @@ -261,7 +261,8 @@ base_dir = self.distribution.get_fullname() self.filelist.exclude_pattern(None, prefix=build.build_base) self.filelist.exclude_pattern(None, prefix=base_dir) - self.filelist.exclude_pattern(os.sep+'\(RCS|CVS|\.svn)', is_regex=1) + sep = re.escape(os.sep) + self.filelist.exclude_pattern(sep+r'(RCS|CVS|\.svn)'+sep, is_regex=1) From phillip.eby at python.org Fri Nov 18 15:31:25 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 15:31:25 +0100 (CET) Subject: [Python-checkins] commit of r41476 - sandbox/trunk/setuptools Message-ID: <20051118143125.B0DB61E4007@bag.python.org> Author: phillip.eby Date: Fri Nov 18 15:31:25 2005 New Revision: 41476 Modified: sandbox/trunk/setuptools/setuptools.txt Log: Add tutorial section on choosing project version numbers that will work well with automated tools based on pkg_resources. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 18 15:31:25 2005 @@ -182,6 +182,99 @@ them in your own project(s). +Specifying Your Project's Version +--------------------------------- + +Setuptools can work well with most versioning schemes; there are, however, a +few special things to watch out for, in order to ensure that setuptools and +EasyInstall can always tell what version of your package is newer than another +version. Knowing these things will also help you correctly specify what +versions of other projects your project depends on. + +A version consists of an alternating series of release numbers and pre-release +or post-release tags. A release number is a series of digits punctuated by +dots, such as ``2.4`` or ``0.5``. Each series of digits is treated +numerically, so releases ``2.1`` and ``2.1.0`` are different ways to spell the +same release number, denoting the first subrelease of release 2. But ``2.10`` +is the *tenth* subrelease of release 2, and so is a different and newer release +from ``2.1`` or ``2.1.0``. Leading zeros are also ignored, so ``2.01`` is the +same as ``2.1``. + +Following a release number, you can have either a pre-release or post-release +tag. Pre-release tags make a version be considered *older* than the version +they are appended to. So, revision ``2.4`` is *newer* than revision ``2.4c1``, +which in turn is newer than ``2.4b1`` or ``2.4a1``. Postrelease tags make +a version be considered *newer* than the version they are appended to. So, +revisions like ``2.4-1`` and ``2.4pl3`` are newer than ``2.4``, but are *older* +than ``2.4.1`` (which has a higher release number). + +A pre-release tag is a series of letters that are alphabetically before +"final". Some examples of prerelease tags would include ``alpha``, ``beta``, +``a``, ``c``, ``dev``, and so on. You do not have to place a dot before +the prerelease tag if it's immediately after a number, but it's okay to do +so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` both represent release +candidate 1 of version ``2.4``, and are treated as identical by setuptools. + +In addition, there are three special prerelease tags that are treated as if +they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version +``2.4rc1``, ``2.4pre1`` and ``2.4preview1`` are all the exact same version as +``2.4c1``, and are treated as identical by setuptools. + +A post-release tag is either a series of letters that are alphabetically +greater than or equal to "final", or a dash (``-``). Post-release tags are +generally used to separate patch numbers, port numbers, build numbers, revision +numbers, or date stamps from the release number. For example, the version +``2.4-r1263`` might denote Subversion revision 1263 of a post-release patch of +version ``2.4``. Or you might use ``2.4-20051127`` to denote a date-stamped +post-release. + +Notice that after each pre or post-release tag, you are free to place another +release number, followed again by more pre- or post-release tags. For example, +``0.6a9.dev-r41475`` could denote Subversion revision 41475 of the in- +development version of the ninth alpha of release 0.6. Notice that ``dev`` is +a pre-release tag, so this version is a *lower* version number than ``0.6a9``, +which would be the actual ninth alpha of release 0.6. But the ``-r41475`` is +a post-release tag, so this version is *newer* than ``0.6a9.dev``. + +For the most part, setuptools' interpretation of version numbers is intuitive, +but here are a few tips that will keep you out of trouble in the corner cases: + +* Don't use ``-`` or any other character than ``.`` as a separator, unless you + really want a post-release. Remember that ``2.1-rc2`` means you've + *already* released ``2.1``, whereas ``2.1rc2`` and ``2.1.c2`` are candidates + you're putting out *before* ``2.1``. If you accidentally distribute copies + of a post-release that you meant to be a pre-release, the only safe fix is to + bump your main release number (e.g. to ``2.1.1``) and re-release the project. + +* Don't stick adjoining pre-release tags together without a dot or number + between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``, + *not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in + ``1.9a.dev``, or separate the prerelease tags with a number, as in + ``1.9a0dev``. ``1.9a.dev``, ``1.9a0dev``, and even ``1.9.a.dev`` are + identical versions from setuptools' point of view, so you can use whatever + scheme you prefer. + +* If you want to be certain that your chosen numbering scheme works the way + you think it will, you can use the ``pkg_resources.parse_version()`` function + to compare different version numbers:: + + >>> from pkg_resources import parse_version + >>> parse_version('1.9.a.dev') == parse_version('1.9a0dev') + True + >>> parse_version('2.1-rc2') < parse_version('2.1') + False + >>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9') + True + +Once you've decided on a version numbering scheme for your project, you can +have setuptools automatically tag your in-development releases with various +pre- or post-release tags. See the following sections for more details: + +* `Tagging and "Daily Build" or "Snapshot" Releases`_ +* `Managing "Continuous Releases" Using Subversion`_ +* The `egg_info`_ command + + New and Changed ``setup()`` Keywords ==================================== @@ -1014,21 +1107,29 @@ egg distributions by adding one or more of the following to the project's "official" version identifier: -* An identifying string, such as "build" or "dev", or a manually-tracked build - or revision number (``--tag-build=STRING, -bSTRING``) +* A manually-specified pre-release tag, such as "build" or "dev", or a + manually-specified post-release tag, such as a build or revision number + (``--tag-build=STRING, -bSTRING``) * A "last-modified revision number" string generated automatically from Subversion's metadata (assuming your project is being built from a Subversion "working copy") (``--tag-svn-revision, -r``) -* An 8-character representation of the build date (``--tag-date, -d``) +* An 8-character representation of the build date (``--tag-date, -d``), as + a postrelease tag You can add these tags by adding ``egg_info`` and the desired options to the command line ahead of the ``sdist`` or ``bdist`` commands that you want to generate a daily build or snapshot for. See the section below on the `egg_info`_ command for more details. -Also, if you are creating builds frequently, and either building them in a +(Also, before you release your project, be sure to see the section above on +`Specifying Your Project's Version`_ for more information about how pre- and +post-release tags affect how setuptools and EasyInstall interpret version +numbers. This is important in order to make sure that dependency processing +tools will know which versions of your project are newer than others.) + +Finally, if you are creating builds frequently, and either building them in a downloadable location or are copying them to a distribution server, you should probably also check out the `rotate`_ command, which lets you automatically delete all but the N most-recently-modified distributions matching a glob @@ -1241,8 +1342,6 @@ and that your source releases will be similarly usable with or without Pyrex. - - ----------------- Command Reference ----------------- @@ -1506,6 +1605,18 @@ ``.egg-info/SOURCES.txt`` manifest file, which is used when you are building source distributions.) +(In addition to writing the core egg metadata defined by ``setuptools`` and +required by ``pkg_resources``, this command can be extended to write other +metadata files as well, by defining entry points in the ``egg_info.writers`` +group. See the section on `Adding new EGG-INFO Files`_ below for more details. +Note that using additional metadata writers may require you to include a +``setup_requires`` argument to ``setup()`` in order to ensure that the desired +writers are available on ``sys.path``.) + + +Release Tagging Options +----------------------- + The following options can be used to modify the project's version string for all remaining commands on the setup command line. The options are processed in the order shown, so if you use more than one, the requested tags will be @@ -1542,10 +1653,21 @@ Add a date stamp of the form "-YYYYMMDD" (e.g. "-20050528") to the project's version number. +(Note: Because these options modify the version number used for source and +binary distributions of your project, you should first make sure that you know +how the resulting version numbers will be interpreted by automated tools +like EasyInstall. See the section above on `Specifying Your Project's +Version`_ for an explanation of pre- and post-release tags, as well as tips on +how to choose and verify a versioning scheme for your your project.) + For advanced uses, there is one other option that can be set, to change the location of the project's ``.egg-info`` directory. Commands that need to find the project's source directory or metadata should get it from this setting: + +Other ``egg_info`` Options +-------------------------- + ``--egg-base=SOURCEDIR, -e SOURCEDIR`` Specify the directory that should contain the .egg-info directory. This should normally be the root of your project's source tree (which is not @@ -1555,13 +1677,6 @@ ``package_dir`` argument to the ``setup()`` function, if any. If there is no ``package_dir`` set, this option defaults to the current directory. -In addition to writing the core egg metadata defined by ``setuptools`` and -required by ``pkg_resources``, this command can be extended to write other -metadata files as well, by defining entry points in the ``egg_info.writers`` -group. See the section on `Adding new EGG-INFO Files`_ below for more details. -Note that using additional metadata writers may require you to include a -``setup_requires`` argument to ``setup()`` in order to ensure that the desired -writers are available on ``sys.path``. .. _rotate: From phillip.eby at python.org Fri Nov 18 16:00:50 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 16:00:50 +0100 (CET) Subject: [Python-checkins] commit of r41477 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051118150050.DE40D1E4275@bag.python.org> Author: phillip.eby Date: Fri Nov 18 16:00:50 2005 New Revision: 41477 Modified: sandbox/trunk/setuptools/EasyInstall.txt sandbox/trunk/setuptools/setuptools/command/easy_install.py Log: Fixed ``.pth`` file processing picking up nested eggs (i.e. ones inside "baskets") when they weren't explicitly listed in the ``.pth`` file. Modified: sandbox/trunk/setuptools/EasyInstall.txt ============================================================================== --- sandbox/trunk/setuptools/EasyInstall.txt (original) +++ sandbox/trunk/setuptools/EasyInstall.txt Fri Nov 18 16:00:50 2005 @@ -865,6 +865,11 @@ * There's no automatic retry for borked Sourceforge mirrors, which can easily time out or be missing a file. +0.6a9 + + * Fixed ``.pth`` file processing picking up nested eggs (i.e. ones inside + "baskets") when they weren't explicitly listed in the ``.pth`` file. + 0.6a8 * Update for changed SourceForge mirror format Modified: sandbox/trunk/setuptools/setuptools/command/easy_install.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/easy_install.py (original) +++ sandbox/trunk/setuptools/setuptools/command/easy_install.py Fri Nov 18 16:00:50 2005 @@ -1112,9 +1112,9 @@ def __init__(self, filename): self.filename = filename; self._load() - Environment.__init__( - self, list(yield_lines(self.paths)), None, None - ) + Environment.__init__(self, [], None, None) + for path in yield_lines(self.paths): + map(self.add, find_distributions(path, True)) def _load(self): self.paths = [] From walter.doerwald at python.org Fri Nov 18 17:51:05 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Fri, 18 Nov 2005 17:51:05 +0100 (CET) Subject: [Python-checkins] commit of r41478 - python/trunk/Lib/test Message-ID: <20051118165105.5E2E71E400D@bag.python.org> Author: walter.doerwald Date: Fri Nov 18 17:51:05 2005 New Revision: 41478 Modified: python/trunk/Lib/test/test_traceback.py Log: Increase code coverage in Python/structmember.c from 33% to 40% (by forcing a call to the listmember() function). Modified: python/trunk/Lib/test/test_traceback.py ============================================================================== --- python/trunk/Lib/test/test_traceback.py (original) +++ python/trunk/Lib/test/test_traceback.py Fri Nov 18 17:51:05 2005 @@ -85,6 +85,14 @@ os.unlink(os.path.join(testdir, f)) os.rmdir(testdir) + def test_members(self): + # Covers Python/structmember.c::listmembers() + try: + 1/0 + except: + import sys + sys.exc_traceback.__members__ + def test_main(): run_unittest(TracebackCases) From phillip.eby at python.org Fri Nov 18 18:29:47 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Fri, 18 Nov 2005 18:29:47 +0100 (CET) Subject: [Python-checkins] commit of r41479 - in sandbox/trunk/setuptools: . setuptools/command Message-ID: <20051118172947.AEA051E4009@bag.python.org> Author: phillip.eby Date: Fri Nov 18 18:29:47 2005 New Revision: 41479 Modified: sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/build_py.py Log: Added warning for namespace packages with missing ``declare_namespace()``, updated docs for new policy/implementation, and explain the reasons for the change and what to do about it. Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Fri Nov 18 18:29:47 2005 @@ -1046,17 +1046,14 @@ package, it means that the package has no meaningful contents in its ``__init__.py``, and that it is merely a container for modules and subpackages. -The ``pkg_resources`` runtime will automatically ensure that the contents of -namespace packages that are spread over multiple eggs or directories are -combined into a single virtual package. +The ``pkg_resources`` runtime will then automatically ensure that the contents +of namespace packages that are spread over multiple eggs or directories are +combined into a single "virtual" package. The ``namespace_packages`` argument to ``setup()`` lets you declare your project's namespace packages, so that they will be included in your project's -metadata. Then, the runtime will automatically detect this when it adds the -distribution to ``sys.path``, and ensure that the packages are properly merged. - -The argument should list the namespace packages that the egg participates in. -For example, the ZopeInterface project might do this:: +metadata. The argument should list the namespace packages that the egg +participates in. For example, the ZopeInterface project might do this:: setup( # ... @@ -1065,7 +1062,9 @@ because it contains a ``zope.interface`` package that lives in the ``zope`` namespace package. Similarly, a project for a standalone ``zope.publisher`` -would also declare the ``zope`` namespace package. +would also declare the ``zope`` namespace package. When these projects are +installed and used, Python will see them both as part of a "virtual" ``zope`` +package, even though they will be installed in different locations. Namespace packages don't have to be top-level packages. For example, Zope 3's ``zope.app`` package is a namespace package, and in the future PEAK's @@ -1074,22 +1073,50 @@ Note, by the way, that your project's source tree must include the namespace packages' ``__init__.py`` files (and the ``__init__.py`` of any parent packages), in a normal Python package layout. These ``__init__.py`` files -should not contain any code or data, because only *one* egg's ``__init__.py`` -files will be used to construct the parent packages in memory at runtime, and -there is no guarantee which egg will be used. - -For example, if both ``zope.interface`` and ``zope.publisher`` have been -installed from separate distributions, it is unspecified which of the two -distributions' ``zope/__init__.py`` files will be used to create the ``zope`` -package in memory. Therefore, it is better not to have any code or data in -a namespace package's ``__init__`` module, so as to prevent any complications. - -(This is one reason the concept is called a "namespace package": it is a -package that exists *only* to provide a namespace under which other modules or -packages are gathered. In Java, for example, namespace packages are often used -just to avoid naming collisions between different projects, using package names -like ``org.apache`` as a namespace for packages that are part of apache.org -projects.) +*must* contain the line:: + + __import__('pkg_resources').declare_namespace(__name__) + +This code ensures that the namespace package machinery is operating and that +the current package is registered as a namespace package. + +You can include other code and data in a namespace package's ``__init__.py``, +but it's generally not a great idea because the loading order of each +project's namespace packages is not guaranteed, and thus the actual contents +of the parent package at runtime may vary from one machine to another. While +it's true that you won't have such conflicts if only one project defines the +contents of a particular namespace package's ``__init__.py``, it's less error- +prone to just leave ``__init__.py`` empty except for the declaration line. + +(Note that this non-deterministic ordering also means that you must include +the declaration line in the ``__init__.py`` of *every* project that has +contents for the namespace package in question, in order to ensure that the +namespace will be declared regardless of which project's copy of +``__init__.py`` is loaded first. If the first loaded ``__init__.py`` doesn't +declare it, it will never *be* declared, because no other copies will ever be +loaded!) + + +TRANSITIONAL NOTE +~~~~~~~~~~~~~~~~~ + +Setuptools 0.6a automatically calls ``declare_namespace()`` for you at runtime, +but the 0.7a versions will *not*. This is because the automatic declaration +feature has some negative side effects, such as needing to import all namespace +packages during the initialization of the ``pkg_resources`` runtime, and also +the need for ``pkg_resources`` to be explicitly imported before any namespace +packages work at all. Beginning with the 0.7a releases, you'll be responsible +for including your own declaration lines, and the automatic declaration feature +will be dropped to get rid of the negative side effects. + +During the remainder of the 0.6 development cycle, therefore, setuptools will +warn you about missing ``declare_namespace()`` calls in your ``__init__.py`` +files, and you should correct these as soon as possible before setuptools 0.7a1 +is released. Namespace packages without declaration lines will not work +correctly once a user has upgraded to setuptools 0.7a1, so it's important that +you make this change now in order to avoid having your code break in the field. +Our apologies for the inconvenience, and thank you for your patience. + Tagging and "Daily Build" or "Snapshot" Releases @@ -2128,6 +2155,8 @@ * Fixed ``--tag-svn-revision`` not working when run from a source distribution. + * Added warning for namespace packages with missing ``declare_namespace()`` + 0.6a8 * Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. Modified: sandbox/trunk/setuptools/setuptools/command/build_py.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/build_py.py (original) +++ sandbox/trunk/setuptools/setuptools/command/build_py.py Fri Nov 18 18:29:47 2005 @@ -121,3 +121,44 @@ + def check_package(self, package, package_dir): + """Check namespace packages' __init__ for declare_namespace""" + try: + return self.packages_checked[package] + except KeyError: + pass + + init_py = _build_py.check_package(self, package, package_dir) + self.packages_checked[package] = init_py + + if not init_py or not self.distribution.namespace_packages: + return init_py + + for pkg in self.distribution.namespace_packages: + if pkg==package or pkg.startswith(package+'.'): + break + else: + return init_py + + f = open(init_py,'rU') + if 'declare_namespace' not in f.read(): + from distutils import log + log.warn( + "WARNING: %s is a namespace package, but its __init__.py does\n" + "not declare_namespace(); setuptools 0.7 will REQUIRE this!\n" + '(See the setuptools manual under "Namespace Packages" for ' + "details.)\n", package + ) + f.close() + return init_py + + def initialize_options(self): + self.packages_checked={} + _build_py.initialize_options(self) + + + + + + + From kurt.kaiser at python.org Fri Nov 18 23:05:49 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Fri, 18 Nov 2005 23:05:49 +0100 (CET) Subject: [Python-checkins] commit of r41480 - python/trunk/Lib/idlelib Message-ID: <20051118220549.A605F1E4050@bag.python.org> Author: kurt.kaiser Date: Fri Nov 18 23:05:48 2005 New Revision: 41480 Added: python/trunk/Lib/idlelib/AutoComplete.py - copied unchanged from r41479, python/branches/IDLE-syntax-branch/Lib/idlelib/AutoComplete.py python/trunk/Lib/idlelib/AutoCompleteWindow.py - copied unchanged from r41479, python/branches/IDLE-syntax-branch/Lib/idlelib/AutoCompleteWindow.py python/trunk/Lib/idlelib/HyperParser.py - copied unchanged from r41479, python/branches/IDLE-syntax-branch/Lib/idlelib/HyperParser.py python/trunk/Lib/idlelib/MultiCall.py - copied unchanged from r41479, python/branches/IDLE-syntax-branch/Lib/idlelib/MultiCall.py Modified: python/trunk/Lib/idlelib/CallTipWindow.py python/trunk/Lib/idlelib/CallTips.py python/trunk/Lib/idlelib/EditorWindow.py python/trunk/Lib/idlelib/ParenMatch.py python/trunk/Lib/idlelib/PyParse.py python/trunk/Lib/idlelib/PyShell.py python/trunk/Lib/idlelib/config-extensions.def python/trunk/Lib/idlelib/configDialog.py python/trunk/Lib/idlelib/run.py Log: Merge IDLE-syntax-branch r39668:41449 into trunk A idlelib/AutoCompleteWindow.py A idlelib/AutoComplete.py A idlelib/HyperParser.py M idlelib/PyShell.py M idlelib/ParenMatch.py M idlelib/configDialog.py M idlelib/EditorWindow.py M idlelib/PyParse.py M idlelib/CallTips.py M idlelib/CallTipWindow.py M idlelib/run.py M idlelib/config-extensions.def A idlelib/MultiCall.py Modified: python/trunk/Lib/idlelib/CallTipWindow.py ============================================================================== --- python/trunk/Lib/idlelib/CallTipWindow.py (original) +++ python/trunk/Lib/idlelib/CallTipWindow.py Fri Nov 18 23:05:48 2005 @@ -6,33 +6,65 @@ """ from Tkinter import * +HIDE_VIRTUAL_EVENT_NAME = "<<caltipwindow-hide>>" +HIDE_SEQUENCES = ("<Key-Escape>", "<FocusOut>") +CHECKHIDE_VIRTUAL_EVENT_NAME = "<<calltipwindow-checkhide>>" +CHECKHIDE_SEQUENCES = ("<KeyRelease>", "<ButtonRelease>") +CHECKHIDE_TIME = 100 # miliseconds + +MARK_RIGHT = "calltipwindowregion_right" + class CallTip: def __init__(self, widget): self.widget = widget - self.tipwindow = None - self.id = None - self.x = self.y = 0 - - def showtip(self, text): - " Display text in calltip window" + self.tipwindow = self.label = None + self.parenline = self.parencol = None + self.lastline = None + self.hideid = self.checkhideid = None + + def position_window(self): + """Check if needs to reposition the window, and if so - do it.""" + curline = int(self.widget.index("insert").split('.')[0]) + if curline == self.lastline: + return + self.lastline = curline + self.widget.see("insert") + if curline == self.parenline: + box = self.widget.bbox("%d.%d" % (self.parenline, + self.parencol)) + else: + box = self.widget.bbox("%d.0" % curline) + if not box: + box = list(self.widget.bbox("insert")) + # align to left of window + box[0] = 0 + box[2] = 0 + x = box[0] + self.widget.winfo_rootx() + 2 + y = box[1] + box[3] + self.widget.winfo_rooty() + self.tipwindow.wm_geometry("+%d+%d" % (x, y)) + + def showtip(self, text, parenleft, parenright): + """Show the calltip, bind events which will close it and reposition it. + """ # truncate overly long calltip if len(text) >= 79: text = text[:75] + ' ...' self.text = text if self.tipwindow or not self.text: return - self.widget.see("insert") - x, y, cx, cy = self.widget.bbox("insert") - x = x + self.widget.winfo_rootx() + 2 - y = y + cy + self.widget.winfo_rooty() + + self.widget.mark_set(MARK_RIGHT, parenright) + self.parenline, self.parencol = map( + int, self.widget.index(parenleft).split(".")) + self.tipwindow = tw = Toplevel(self.widget) + self.position_window() # XXX 12 Dec 2002 KBK The following command has two effects: It removes # the calltip window border (good) but also causes (at least on # Linux) the calltip to show as a top level window, burning through # any other window dragged over it. Also, shows on all viewports! tw.wm_overrideredirect(1) - tw.wm_geometry("+%d+%d" % (x, y)) try: # This command is only needed and available on Tk >= 8.4.0 for OSX # Without it, call tips intrude on the typing process by grabbing @@ -41,16 +73,66 @@ "help", "noActivates") except TclError: pass - label = Label(tw, text=self.text, justify=LEFT, - background="#ffffe0", relief=SOLID, borderwidth=1, - font = self.widget['font']) - label.pack() + self.label = Label(tw, text=self.text, justify=LEFT, + background="#ffffe0", relief=SOLID, borderwidth=1, + font = self.widget['font']) + self.label.pack() + + self.checkhideid = self.widget.bind(CHECKHIDE_VIRTUAL_EVENT_NAME, + self.checkhide_event) + for seq in CHECKHIDE_SEQUENCES: + self.widget.event_add(CHECKHIDE_VIRTUAL_EVENT_NAME, seq) + self.widget.after(CHECKHIDE_TIME, self.checkhide_event) + self.hideid = self.widget.bind(HIDE_VIRTUAL_EVENT_NAME, + self.hide_event) + for seq in HIDE_SEQUENCES: + self.widget.event_add(HIDE_VIRTUAL_EVENT_NAME, seq) + + def checkhide_event(self, event=None): + if not self.tipwindow: + # If the event was triggered by the same event that unbinded + # this function, the function will be called nevertheless, + # so do nothing in this case. + return + curline, curcol = map(int, self.widget.index("insert").split('.')) + if curline < self.parenline or \ + (curline == self.parenline and curcol <= self.parencol) or \ + self.widget.compare("insert", ">", MARK_RIGHT): + self.hidetip() + else: + self.position_window() + self.widget.after(CHECKHIDE_TIME, self.checkhide_event) + + def hide_event(self, event): + if not self.tipwindow: + # See the explanation in checkhide_event. + return + self.hidetip() def hidetip(self): - tw = self.tipwindow + if not self.tipwindow: + return + + for seq in CHECKHIDE_SEQUENCES: + self.widget.event_delete(CHECKHIDE_VIRTUAL_EVENT_NAME, seq) + self.widget.unbind(CHECKHIDE_VIRTUAL_EVENT_NAME, self.checkhideid) + self.checkhideid = None + for seq in HIDE_SEQUENCES: + self.widget.event_delete(HIDE_VIRTUAL_EVENT_NAME, seq) + self.widget.unbind(HIDE_VIRTUAL_EVENT_NAME, self.hideid) + self.hideid = None + + self.label.destroy() + self.label = None + self.tipwindow.destroy() self.tipwindow = None - if tw: - tw.destroy() + + self.widget.mark_unset(MARK_RIGHT) + self.parenline = self.parencol = self.lastline = None + + def is_active(self): + return bool(self.tipwindow) + ############################### Modified: python/trunk/Lib/idlelib/CallTips.py ============================================================================== --- python/trunk/Lib/idlelib/CallTips.py (original) +++ python/trunk/Lib/idlelib/CallTips.py Fri Nov 18 23:05:48 2005 @@ -3,21 +3,21 @@ Call Tips are floating windows which display function, class, and method parameter and docstring information when you type an opening parenthesis, and which disappear when you type a closing parenthesis. - -Future plans include extending the functionality to include class attributes. - """ import sys -import string import types import CallTipWindow +from HyperParser import HyperParser import __main__ class CallTips: menudefs = [ + ('edit', [ + ("Show call tip", "<<force-open-calltip>>"), + ]) ] def __init__(self, editwin=None): @@ -36,51 +36,47 @@ # See __init__ for usage return CallTipWindow.CallTip(self.text) - def _remove_calltip_window(self): + def _remove_calltip_window(self, event=None): if self.calltip: self.calltip.hidetip() self.calltip = None - def paren_open_event(self, event): - self._remove_calltip_window() - name = self.get_name_at_cursor() - arg_text = self.fetch_tip(name) - if arg_text: - self.calltip_start = self.text.index("insert") - self.calltip = self._make_calltip_window() - self.calltip.showtip(arg_text) - return "" #so the event is handled normally. - - def paren_close_event(self, event): - # Now just hides, but later we should check if other - # paren'd expressions remain open. - self._remove_calltip_window() - return "" #so the event is handled normally. + def force_open_calltip_event(self, event): + """Happens when the user really wants to open a CallTip, even if a + function call is needed. + """ + self.open_calltip(True) - def check_calltip_cancel_event(self, event): - if self.calltip: - # If we have moved before the start of the calltip, - # or off the calltip line, then cancel the tip. - # (Later need to be smarter about multi-line, etc) - if self.text.compare("insert", "<=", self.calltip_start) or \ - self.text.compare("insert", ">", self.calltip_start - + " lineend"): - self._remove_calltip_window() - return "" #so the event is handled normally. + def try_open_calltip_event(self, event): + """Happens when it would be nice to open a CallTip, but not really + neccesary, for example after an opening bracket, so function calls + won't be made. + """ + self.open_calltip(False) - def calltip_cancel_event(self, event): - self._remove_calltip_window() - return "" #so the event is handled normally. + def refresh_calltip_event(self, event): + """If there is already a calltip window, check if it is still needed, + and if so, reload it. + """ + if self.calltip and self.calltip.is_active(): + self.open_calltip(False) - __IDCHARS = "._" + string.ascii_letters + string.digits + def open_calltip(self, evalfuncs): + self._remove_calltip_window() - def get_name_at_cursor(self): - idchars = self.__IDCHARS - str = self.text.get("insert linestart", "insert") - i = len(str) - while i and str[i-1] in idchars: - i -= 1 - return str[i:] + hp = HyperParser(self.editwin, "insert") + sur_paren = hp.get_surrounding_brackets('(') + if not sur_paren: + return + hp.set_index(sur_paren[0]) + name = hp.get_expression() + if not name or (not evalfuncs and name.find('(') != -1): + return + arg_text = self.fetch_tip(name) + if not arg_text: + return + self.calltip = self._make_calltip_window() + self.calltip.showtip(arg_text, sur_paren[0], sur_paren[1]) def fetch_tip(self, name): """Return the argument list and docstring of a function or class @@ -127,7 +123,7 @@ return None def get_arg_text(ob): - "Get a string describing the arguments for the given object" + """Get a string describing the arguments for the given object""" argText = "" if ob is not None: argOffset = 0 @@ -150,7 +146,7 @@ try: realArgs = fob.func_code.co_varnames[argOffset:fob.func_code.co_argcount] defaults = fob.func_defaults or [] - defaults = list(map(lambda name: "=%s" % name, defaults)) + defaults = list(map(lambda name: "=%s" % repr(name), defaults)) defaults = [""] * (len(realArgs)-len(defaults)) + defaults items = map(lambda arg, dflt: arg+dflt, realArgs, defaults) if fob.func_code.co_flags & 0x4: Modified: python/trunk/Lib/idlelib/EditorWindow.py ============================================================================== --- python/trunk/Lib/idlelib/EditorWindow.py (original) +++ python/trunk/Lib/idlelib/EditorWindow.py Fri Nov 18 23:05:48 2005 @@ -6,6 +6,7 @@ from Tkinter import * import tkSimpleDialog import tkMessageBox +from MultiCall import MultiCallCreator import webbrowser import idlever @@ -89,7 +90,8 @@ self.vbar = vbar = Scrollbar(top, name='vbar') self.text_frame = text_frame = Frame(top) self.width = idleConf.GetOption('main','EditorWindow','width') - self.text = text = Text(text_frame, name='text', padx=5, wrap='none', + self.text = text = MultiCallCreator(Text)( + text_frame, name='text', padx=5, wrap='none', foreground=idleConf.GetHighlight(currentTheme, 'normal',fgBg='fg'), background=idleConf.GetHighlight(currentTheme, @@ -264,8 +266,9 @@ self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('line', 'Ln: ?', side=RIGHT) self.status_bar.pack(side=BOTTOM, fill=X) - self.text.bind('<KeyRelease>', self.set_line_and_column) - self.text.bind('<ButtonRelease>', self.set_line_and_column) + self.text.bind("<<set-line-and-column>>", self.set_line_and_column) + self.text.event_add("<<set-line-and-column>>", + "<KeyRelease>", "<ButtonRelease>") self.text.after_idle(self.set_line_and_column) def set_line_and_column(self, event=None): @@ -355,6 +358,9 @@ return "break" def copy(self,event): + if not self.text.tag_ranges("sel"): + # There is no selection, so do nothing and maybe interrupt. + return self.text.event_generate("<<Copy>>") return "break" @@ -557,14 +563,28 @@ idleConf.GetOption('main','EditorWindow','font-size'), fontWeight)) - def ResetKeybindings(self): - "Update the keybindings if they are changed" + def RemoveKeybindings(self): + "Remove the keybindings before they are changed." # Called from configDialog.py self.Bindings.default_keydefs=idleConf.GetCurrentKeySet() keydefs = self.Bindings.default_keydefs for event, keylist in keydefs.items(): - self.text.event_delete(event) + self.text.event_delete(event, *keylist) + for extensionName in self.get_standard_extension_names(): + keydefs = idleConf.GetExtensionBindings(extensionName) + if keydefs: + for event, keylist in keydefs.items(): + self.text.event_delete(event, *keylist) + + def ApplyKeybindings(self): + "Update the keybindings after they are changed" + # Called from configDialog.py + self.Bindings.default_keydefs=idleConf.GetCurrentKeySet() self.apply_bindings() + for extensionName in self.get_standard_extension_names(): + keydefs = idleConf.GetExtensionBindings(extensionName) + if keydefs: + self.apply_bindings(keydefs) #update menu accelerators menuEventDict={} for menu in self.Bindings.menudefs: @@ -1064,17 +1084,28 @@ # open/close first need to find the last stmt lno = index2line(text.index('insert')) y = PyParse.Parser(self.indentwidth, self.tabwidth) - for context in self.num_context_lines: - startat = max(lno - context, 1) - startatindex = repr(startat) + ".0" + if not self.context_use_ps1: + for context in self.num_context_lines: + startat = max(lno - context, 1) + startatindex = `startat` + ".0" + rawtext = text.get(startatindex, "insert") + y.set_str(rawtext) + bod = y.find_good_parse_start( + self.context_use_ps1, + self._build_char_in_string_func(startatindex)) + if bod is not None or startat == 1: + break + y.set_lo(bod or 0) + else: + r = text.tag_prevrange("console", "insert") + if r: + startatindex = r[1] + else: + startatindex = "1.0" rawtext = text.get(startatindex, "insert") y.set_str(rawtext) - bod = y.find_good_parse_start( - self.context_use_ps1, - self._build_char_in_string_func(startatindex)) - if bod is not None or startat == 1: - break - y.set_lo(bod or 0) + y.set_lo(0) + c = y.get_continuation_type() if c != PyParse.C_NONE: # The current stmt hasn't ended yet. Modified: python/trunk/Lib/idlelib/ParenMatch.py ============================================================================== --- python/trunk/Lib/idlelib/ParenMatch.py (original) +++ python/trunk/Lib/idlelib/ParenMatch.py Fri Nov 18 23:05:48 2005 @@ -3,17 +3,14 @@ When you hit a right paren, the cursor should move briefly to the left paren. Paren here is used generically; the matching applies to parentheses, square brackets, and curly braces. - -WARNING: This extension will fight with the CallTips extension, -because they both are interested in the KeyRelease-parenright event. -We'll have to fix IDLE to do something reasonable when two or more -extensions what to capture the same event. """ -import PyParse -from EditorWindow import EditorWindow, index2line +from HyperParser import HyperParser from configHandler import idleConf +keysym_opener = {"parenright":'(', "bracketright":'[', "braceright":'{'} +CHECK_DELAY = 100 # miliseconds + class ParenMatch: """Highlight matching parentheses @@ -31,7 +28,6 @@ expression from the left paren to the right paren. TODO: - - fix interaction with CallTips - extend IDLE with configuration dialog to change options - implement rest of Emacs highlight styles (see below) - print mismatch warning in IDLE status window @@ -41,7 +37,11 @@ to the right of a right paren. I don't know how to do that in Tk, so I haven't bothered. """ - menudefs = [] + menudefs = [ + ('edit', [ + ("Show surrounding parens", "<<flash-paren>>"), + ]) + ] STYLE = idleConf.GetOption('extensions','ParenMatch','style', default='expression') FLASH_DELAY = idleConf.GetOption('extensions','ParenMatch','flash-delay', @@ -50,14 +50,36 @@ BELL = idleConf.GetOption('extensions','ParenMatch','bell', type='bool',default=1) + RESTORE_VIRTUAL_EVENT_NAME = "<<parenmatch-check-restore>>" + # We want the restore event be called before the usual return and + # backspace events. + RESTORE_SEQUENCES = ("<KeyPress>", "<ButtonPress>", + "<Key-Return>", "<Key-BackSpace>") + def __init__(self, editwin): self.editwin = editwin self.text = editwin.text - self.finder = LastOpenBracketFinder(editwin) + # Bind the check-restore event to the function restore_event, + # so that we can then use activate_restore (which calls event_add) + # and deactivate_restore (which calls event_delete). + editwin.text.bind(self.RESTORE_VIRTUAL_EVENT_NAME, + self.restore_event) self.counter = 0 - self._restore = None + self.is_restore_active = 0 self.set_style(self.STYLE) + def activate_restore(self): + if not self.is_restore_active: + for seq in self.RESTORE_SEQUENCES: + self.text.event_add(self.RESTORE_VIRTUAL_EVENT_NAME, seq) + self.is_restore_active = True + + def deactivate_restore(self): + if self.is_restore_active: + for seq in self.RESTORE_SEQUENCES: + self.text.event_delete(self.RESTORE_VIRTUAL_EVENT_NAME, seq) + self.is_restore_active = False + def set_style(self, style): self.STYLE = style if style == "default": @@ -67,23 +89,38 @@ self.create_tag = self.create_tag_expression self.set_timeout = self.set_timeout_none - def flash_open_paren_event(self, event): - index = self.finder.find(keysym_type(event.keysym)) - if index is None: + def flash_paren_event(self, event): + indices = HyperParser(self.editwin, "insert").get_surrounding_brackets() + if indices is None: + self.warn_mismatched() + return + self.activate_restore() + self.create_tag(indices) + self.set_timeout_last() + + def paren_closed_event(self, event): + # If it was a shortcut and not really a closing paren, quit. + if self.text.get("insert-1c") not in (')',']','}'): + return + hp = HyperParser(self.editwin, "insert-1c") + if not hp.is_in_code(): + return + indices = hp.get_surrounding_brackets(keysym_opener[event.keysym], True) + if indices is None: self.warn_mismatched() return - self._restore = 1 - self.create_tag(index) + self.activate_restore() + self.create_tag(indices) self.set_timeout() - def check_restore_event(self, event=None): - if self._restore: - self.text.tag_delete("paren") - self._restore = None + def restore_event(self, event=None): + self.text.tag_delete("paren") + self.deactivate_restore() + self.counter += 1 # disable the last timer, if there is one. def handle_restore_timer(self, timer_count): - if timer_count + 1 == self.counter: - self.check_restore_event() + if timer_count == self.counter: + self.restore_event() def warn_mismatched(self): if self.BELL: @@ -92,87 +129,43 @@ # any one of the create_tag_XXX methods can be used depending on # the style - def create_tag_default(self, index): + def create_tag_default(self, indices): """Highlight the single paren that matches""" - self.text.tag_add("paren", index) + self.text.tag_add("paren", indices[0]) self.text.tag_config("paren", self.HILITE_CONFIG) - def create_tag_expression(self, index): + def create_tag_expression(self, indices): """Highlight the entire expression""" - self.text.tag_add("paren", index, "insert") + if self.text.get(indices[1]) in (')', ']', '}'): + rightindex = indices[1]+"+1c" + else: + rightindex = indices[1] + self.text.tag_add("paren", indices[0], rightindex) self.text.tag_config("paren", self.HILITE_CONFIG) # any one of the set_timeout_XXX methods can be used depending on # the style def set_timeout_none(self): - """Highlight will remain until user input turns it off""" - pass + """Highlight will remain until user input turns it off + or the insert has moved""" + # After CHECK_DELAY, call a function which disables the "paren" tag + # if the event is for the most recent timer and the insert has changed, + # or schedules another call for itself. + self.counter += 1 + def callme(callme, self=self, c=self.counter, + index=self.text.index("insert")): + if index != self.text.index("insert"): + self.handle_restore_timer(c) + else: + self.editwin.text_frame.after(CHECK_DELAY, callme, callme) + self.editwin.text_frame.after(CHECK_DELAY, callme, callme) def set_timeout_last(self): """The last highlight created will be removed after .5 sec""" # associate a counter with an event; only disable the "paren" # tag if the event is for the most recent timer. + self.counter += 1 self.editwin.text_frame.after(self.FLASH_DELAY, lambda self=self, c=self.counter: \ self.handle_restore_timer(c)) - self.counter = self.counter + 1 - -def keysym_type(ks): - # Not all possible chars or keysyms are checked because of the - # limited context in which the function is used. - if ks == "parenright" or ks == "(": - return "paren" - if ks == "bracketright" or ks == "[": - return "bracket" - if ks == "braceright" or ks == "{": - return "brace" - -class LastOpenBracketFinder: - num_context_lines = EditorWindow.num_context_lines - indentwidth = EditorWindow.indentwidth - tabwidth = EditorWindow.tabwidth - context_use_ps1 = EditorWindow.context_use_ps1 - - def __init__(self, editwin): - self.editwin = editwin - self.text = editwin.text - - def _find_offset_in_buf(self, lno): - y = PyParse.Parser(self.indentwidth, self.tabwidth) - for context in self.num_context_lines: - startat = max(lno - context, 1) - startatindex = repr(startat) + ".0" - # rawtext needs to contain everything up to the last - # character, which was the close paren. the parser also - # requires that the last line ends with "\n" - rawtext = self.text.get(startatindex, "insert")[:-1] + "\n" - y.set_str(rawtext) - bod = y.find_good_parse_start( - self.context_use_ps1, - self._build_char_in_string_func(startatindex)) - if bod is not None or startat == 1: - break - y.set_lo(bod or 0) - i = y.get_last_open_bracket_pos() - return i, y.str - - def find(self, right_keysym_type): - """Return the location of the last open paren""" - lno = index2line(self.text.index("insert")) - i, buf = self._find_offset_in_buf(lno) - if i is None \ - or keysym_type(buf[i]) != right_keysym_type: - return None - lines_back = buf[i:].count("\n") - 1 - # subtract one for the "\n" added to please the parser - upto_open = buf[:i] - j = upto_open.rfind("\n") + 1 # offset of column 0 of line - offset = i - j - return "%d.%d" % (lno - lines_back, offset) - - def _build_char_in_string_func(self, startindex): - def inner(offset, startindex=startindex, - icis=self.editwin.is_char_in_string): - return icis(startindex + "%dc" % offset) - return inner Modified: python/trunk/Lib/idlelib/PyParse.py ============================================================================== --- python/trunk/Lib/idlelib/PyParse.py (original) +++ python/trunk/Lib/idlelib/PyParse.py Fri Nov 18 23:05:48 2005 @@ -14,9 +14,7 @@ _synchre = re.compile(r""" ^ [ \t]* - (?: if - | for - | while + (?: while | else | def | return @@ -145,29 +143,11 @@ # This will be reliable iff given a reliable is_char_in_string # function, meaning that when it says "no", it's absolutely # guaranteed that the char is not in a string. - # - # Ack, hack: in the shell window this kills us, because there's - # no way to tell the differences between output, >>> etc and - # user input. Indeed, IDLE's first output line makes the rest - # look like it's in an unclosed paren!: - # Python 1.5.2 (#0, Apr 13 1999, ... - def find_good_parse_start(self, use_ps1, is_char_in_string=None, + def find_good_parse_start(self, is_char_in_string=None, _synchre=_synchre): str, pos = self.str, None - if use_ps1: - # shell window - ps1 = '\n' + sys.ps1 - i = str.rfind(ps1) - if i >= 0: - pos = i + len(ps1) - # make it look like there's a newline instead - # of ps1 at the start -- hacking here once avoids - # repeated hackery later - self.str = str[:pos-1] + '\n' + str[pos:] - return pos - # File window -- real work. if not is_char_in_string: # no clue -- make the caller pass everything return None @@ -363,6 +343,11 @@ # Creates: # self.stmt_start, stmt_end # slice indices of last interesting stmt + # self.stmt_bracketing + # the bracketing structure of the last interesting stmt; + # for example, for the statement "say(boo) or die", stmt_bracketing + # will be [(0, 0), (3, 1), (8, 0)]. Strings and comments are + # treated as brackets, for the matter. # self.lastch # last non-whitespace character before optional trailing # comment @@ -404,6 +389,7 @@ lastch = "" stack = [] # stack of open bracket indices push_stack = stack.append + bracketing = [(p, 0)] while p < q: # suck up all except ()[]{}'"#\\ m = _chew_ordinaryre(str, p, q) @@ -424,6 +410,7 @@ if ch in "([{": push_stack(p) + bracketing.append((p, len(stack))) lastch = ch p = p+1 continue @@ -433,6 +420,7 @@ del stack[-1] lastch = ch p = p+1 + bracketing.append((p, len(stack))) continue if ch == '"' or ch == "'": @@ -443,14 +431,18 @@ # strings to a couple of characters per line. study1 # also needed to keep track of newlines, and we don't # have to. + bracketing.append((p, len(stack)+1)) lastch = ch p = _match_stringre(str, p, q).end() + bracketing.append((p, len(stack))) continue if ch == '#': # consume comment and trailing newline + bracketing.append((p, len(stack)+1)) p = str.find('\n', p, q) + 1 assert p > 0 + bracketing.append((p, len(stack))) continue assert ch == '\\' @@ -466,6 +458,7 @@ self.lastch = lastch if stack: self.lastopenbracketpos = stack[-1] + self.stmt_bracketing = tuple(bracketing) # Assuming continuation is C_BRACKET, return the number # of spaces the next line should be indented. @@ -590,3 +583,12 @@ def get_last_open_bracket_pos(self): self._study2() return self.lastopenbracketpos + + # the structure of the bracketing of the last interesting statement, + # in the format defined in _study2, or None if the text didn't contain + # anything + stmt_bracketing = None + + def get_last_stmt_bracketing(self): + self._study2() + return self.stmt_bracketing Modified: python/trunk/Lib/idlelib/PyShell.py ============================================================================== --- python/trunk/Lib/idlelib/PyShell.py (original) +++ python/trunk/Lib/idlelib/PyShell.py Fri Nov 18 23:05:48 2005 @@ -1091,11 +1091,12 @@ self.recall(self.text.get(next[0], next[1]), event) return "break" # No stdin mark -- just get the current line, less any prompt - line = self.text.get("insert linestart", "insert lineend") - last_line_of_prompt = sys.ps1.split('\n')[-1] - if line.startswith(last_line_of_prompt): - line = line[len(last_line_of_prompt):] - self.recall(line, event) + indices = self.text.tag_nextrange("console", "insert linestart") + if indices and \ + self.text.compare(indices[0], "<=", "insert linestart"): + self.recall(self.text.get(indices[1], "insert lineend"), event) + else: + self.recall(self.text.get("insert linestart", "insert lineend"), event) return "break" # If we're between the beginning of the line and the iomark, i.e. # in the prompt area, move to the end of the prompt Modified: python/trunk/Lib/idlelib/config-extensions.def ============================================================================== --- python/trunk/Lib/idlelib/config-extensions.def (original) +++ python/trunk/Lib/idlelib/config-extensions.def Fri Nov 18 23:05:48 2005 @@ -52,22 +52,30 @@ [CallTips] enable=1 +[CallTips_cfgBindings] +force-open-calltip=<Control-Key-backslash> [CallTips_bindings] -paren-open=<Key-parenleft> -paren-close=<Key-parenright> -check-calltip-cancel=<KeyRelease> -calltip-cancel=<ButtonPress> <Key-Escape> +try-open-calltip=<KeyRelease-parenleft> +refresh-calltip=<KeyRelease-parenright> <KeyRelease-0> [ParenMatch] -enable=0 +enable=1 style= expression flash-delay= 500 bell= 1 -hilite-foreground= black -hilite-background= #43cd80 +[ParenMatch_cfgBindings] +flash-paren=<Control-Key-0> [ParenMatch_bindings] -flash-open-paren=<KeyRelease-parenright> <KeyRelease-bracketright> <KeyRelease-braceright> -check-restore=<KeyPress> +paren-closed=<KeyRelease-parenright> <KeyRelease-bracketright> <KeyRelease-braceright> + +[AutoComplete] +enable=1 +popupwait=0 +[AutoComplete_cfgBindings] +force-open-completions=<Control-Key-space> +[AutoComplete_bindings] +autocomplete=<Key-Tab> +try-open-completions=<KeyRelease-period> <KeyRelease-slash> <KeyRelease-backslash> [CodeContext] enable=1 Modified: python/trunk/Lib/idlelib/configDialog.py ============================================================================== --- python/trunk/Lib/idlelib/configDialog.py (original) +++ python/trunk/Lib/idlelib/configDialog.py Fri Nov 18 23:05:48 2005 @@ -1106,6 +1106,13 @@ idleConf.userCfg[configType].Save() self.ResetChangedItems() #clear the changed items dict + def DeactivateCurrentConfig(self): + #Before a config is saved, some cleanup of current + #config must be done - remove the previous keybindings + winInstances=self.parent.instance_dict.keys() + for instance in winInstances: + instance.RemoveKeybindings() + def ActivateConfigChanges(self): "Dynamically apply configuration changes" winInstances=self.parent.instance_dict.keys() @@ -1113,7 +1120,7 @@ instance.ResetColorizer() instance.ResetFont() instance.set_notabs_indentwidth() - instance.ResetKeybindings() + instance.ApplyKeybindings() instance.reset_help_menu_entries() def Cancel(self): @@ -1124,6 +1131,7 @@ self.destroy() def Apply(self): + self.DeactivateCurrentConfig() self.SaveAllChangedConfigs() self.ActivateConfigChanges() Modified: python/trunk/Lib/idlelib/run.py ============================================================================== --- python/trunk/Lib/idlelib/run.py (original) +++ python/trunk/Lib/idlelib/run.py Fri Nov 18 23:05:48 2005 @@ -9,6 +9,8 @@ import Queue import CallTips +import AutoComplete + import RemoteDebugger import RemoteObjectBrowser import StackViewer @@ -275,6 +277,7 @@ self.rpchandler = rpchandler self.locals = __main__.__dict__ self.calltip = CallTips.CallTips() + self.autocomplete = AutoComplete.AutoComplete() def runcode(self, code): try: @@ -305,6 +308,9 @@ def get_the_calltip(self, name): return self.calltip.fetch_tip(name) + def get_the_completion_list(self, what, mode): + return self.autocomplete.fetch_completions(what, mode) + def stackviewer(self, flist_oid=None): if self.usr_exc_info: typ, val, tb = self.usr_exc_info From reinhold-birkenfeld-nospam at wolke7.net Sat Nov 19 14:30:49 2005 From: reinhold-birkenfeld-nospam at wolke7.net (Reinhold Birkenfeld) Date: Sat, 19 Nov 2005 14:30:49 +0100 Subject: [Python-checkins] commit of r41480 - python/trunk/Lib/idlelib In-Reply-To: <20051118220549.A605F1E4050@bag.python.org> References: <20051118220549.A605F1E4050@bag.python.org> Message-ID: <dln9e9$kc6$1@sea.gmane.org> kurt.kaiser at python.org wrote: > Modified: python/trunk/Lib/idlelib/CallTipWindow.py > ============================================================================== > --- python/trunk/Lib/idlelib/CallTipWindow.py (original) > +++ python/trunk/Lib/idlelib/CallTipWindow.py Fri Nov 18 23:05:48 2005 > @@ -6,33 +6,65 @@ > """ > from Tkinter import * > > +HIDE_VIRTUAL_EVENT_NAME = "<<caltipwindow-hide>>" I guess the spelling mistake doesn't matter here but for the sake of nitpicking... ;) Reinhold -- Mail address is perfectly valid! From andrew.kuchling at python.org Sat Nov 19 19:43:39 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Sat, 19 Nov 2005 19:43:39 +0100 (CET) Subject: [Python-checkins] commit of r41481 - python/trunk/Doc/howto Message-ID: <20051119184339.452881E4007@bag.python.org> Author: andrew.kuchling Date: Sat Nov 19 19:43:38 2005 New Revision: 41481 Modified: python/trunk/Doc/howto/unicode.rst Log: Fix up incomplete sentence Modified: python/trunk/Doc/howto/unicode.rst ============================================================================== --- python/trunk/Doc/howto/unicode.rst (original) +++ python/trunk/Doc/howto/unicode.rst Sat Nov 19 19:43:38 2005 @@ -246,7 +246,7 @@ ``str`` type; you can therefore check if a value is a string type with ``isinstance(value, basestring)``. Under the hood, Python represents Unicode strings as either 16- or 32-bit integers, depending on how the -Python interpreter was compiled, but this +Python interpreter was compiled. The ``unicode()`` constructor has the signature ``unicode(string[, encoding, errors])``. All of its arguments should be 8-bit strings. The first argument is converted From phillip.eby at python.org Sat Nov 19 20:36:29 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Sat, 19 Nov 2005 20:36:29 +0100 (CET) Subject: [Python-checkins] commit of r41482 - sandbox/trunk/setuptools/setuptools/command Message-ID: <20051119193629.A89091E4007@bag.python.org> Author: phillip.eby Date: Sat Nov 19 20:36:29 2005 New Revision: 41482 Modified: sandbox/trunk/setuptools/setuptools/command/bdist_rpm.py Log: Kludges to make building packages with '-' in their version work with bdist_rpm. This still doesn't address the issue of building RPMs that don't effectively install as multi-version eggs, but at least now building RPMs for development eggs is possible. Modified: sandbox/trunk/setuptools/setuptools/command/bdist_rpm.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/bdist_rpm.py (original) +++ sandbox/trunk/setuptools/setuptools/command/bdist_rpm.py Sat Nov 19 20:36:29 2005 @@ -21,7 +21,24 @@ _bdist_rpm.run(self) def _make_spec_file(self): + version = self.distribution.get_version() + rpmversion = version.replace('-','_') spec = _bdist_rpm._make_spec_file(self) + line23 = '%define version '+version + line24 = '%define version '+rpmversion + spec = [ + line.replace( + "Source0: %{name}-%{version}.tar", + "Source0: %{name}-%{unmangled_version}.tar" + ).replace( + "%setup", + "%setup -n %{name}-%{unmangled_version}" + ).replace(line23,line24) + for line in spec + ] + spec.insert(spec.index(line24)+1, "%define unmangled_version "+version) + + if not self.no_egg: return spec @@ -31,3 +48,35 @@ "setup.py install ","setup.py install --old-and-unmanageable " ) for line in spec ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From phillip.eby at python.org Sat Nov 19 21:38:41 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Sat, 19 Nov 2005 21:38:41 +0100 (CET) Subject: [Python-checkins] commit of r41483 - in sandbox/trunk/setuptools: . setuptools setuptools.egg-info setuptools/command Message-ID: <20051119203841.1493C1E4007@bag.python.org> Author: phillip.eby Date: Sat Nov 19 21:38:40 2005 New Revision: 41483 Modified: sandbox/trunk/setuptools/setup.py sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/test.py sandbox/trunk/setuptools/setuptools/dist.py Log: Added ``tests_require`` keyword to ``setup()``, so that e.g. packages requiring ``nose`` to run unit tests can make this dependency optional unless the ``test`` command is run. Modified: sandbox/trunk/setuptools/setup.py ============================================================================== --- sandbox/trunk/setuptools/setup.py (original) +++ sandbox/trunk/setuptools/setup.py Sat Nov 19 21:38:40 2005 @@ -40,6 +40,7 @@ py_modules = ['pkg_resources', 'easy_install', 'site'], zip_safe = False, # We want 'python -m easy_install' to work, for now :( + entry_points = { "distutils.commands" : [ "%(cmd)s = setuptools.command.%(cmd)s:%(cmd)s" % locals() @@ -49,7 +50,8 @@ "eager_resources = setuptools.dist:assert_string_list", "namespace_packages = setuptools.dist:check_nsp", "extras_require = setuptools.dist:check_extras", - "install_requires = setuptools.dist:check_install_requires", + "install_requires = setuptools.dist:check_requirements", + "tests_require = setuptools.dist:check_requirements", "entry_points = setuptools.dist:check_entry_points", "test_suite = setuptools.dist:check_test_suite", "zip_safe = setuptools.dist:assert_bool", @@ -67,6 +69,17 @@ "console_scripts": ["easy_install = setuptools.command.easy_install:main"], }, + + + + + + + + + + + classifiers = [f.strip() for f in """ Development Status :: 3 - Alpha Intended Audience :: Developers @@ -108,16 +121,3 @@ - - - - - - - - - - - - - Modified: sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt (original) +++ sandbox/trunk/setuptools/setuptools.egg-info/entry_points.txt Sat Nov 19 21:38:40 2005 @@ -1,12 +1,13 @@ [distutils.setup_keywords] entry_points = setuptools.dist:check_entry_points extras_require = setuptools.dist:check_extras -install_requires = setuptools.dist:check_install_requires +install_requires = setuptools.dist:check_requirements include_package_data = setuptools.dist:assert_bool namespace_packages = setuptools.dist:check_nsp test_suite = setuptools.dist:check_test_suite eager_resources = setuptools.dist:assert_string_list zip_safe = setuptools.dist:assert_bool +tests_require = setuptools.dist:check_requirements [egg_info.writers] requires.txt = setuptools.command.egg_info:write_requirements Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Sat Nov 19 21:38:40 2005 @@ -355,6 +355,17 @@ specified test suite, e.g. via ``setup.py test``. See the section on the `test`_ command below for more details. +``tests_require`` + If your project's tests need one or more additional packages besides those + needed to install it, you can use this option to specify them. It should + be a string or list of strings specifying what other distributions need to + be present for the package's tests to run. When you run the ``test`` + command, ``setuptools`` will attempt to obtain these (even going + so far as to download them using ``EasyInstall``). Note that these + required projects will *not* be installed on the system where the tests + are run, but only downloaded to the project's setup directory if they're + not already installed locally. + ``eager_resources`` A list of strings naming resources that should be extracted together, if any of them is needed, or if any C extensions included in the project are @@ -1996,7 +2007,7 @@ ---------------------------- Sometimes, your commands may need additional arguments to the ``setup()`` -script. You can enable this by defining entry points in the +call. You can enable this by defining entry points in the ``distutils.setup_keywords`` group. For example, if you wanted a ``setup()`` argument called ``bar_baz``, you might add something like this to your distutils extension project's setup script:: @@ -2041,8 +2052,9 @@ Also note that as with commands, it is not necessary to subclass or monkeypatch the distutils ``Distribution`` class in order to add your arguments; it is -sufficient to define the entry points in your extension, as long as the setup -script lists your extension in its ``setup_requires`` argument. +sufficient to define the entry points in your extension, as long as any setup +script using your extension lists your project in its ``setup_requires`` +argument. Adding new EGG-INFO Files @@ -2157,6 +2169,10 @@ * Added warning for namespace packages with missing ``declare_namespace()`` + * Added ``tests_require`` keyword to ``setup()``, so that e.g. packages + requiring ``nose`` to run unit tests can make this dependency optional + unless the ``test`` command is run. + 0.6a8 * Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. Modified: sandbox/trunk/setuptools/setuptools/command/test.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/test.py (original) +++ sandbox/trunk/setuptools/setuptools/command/test.py Sat Nov 19 21:38:40 2005 @@ -47,6 +47,9 @@ self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') + if self.distribution.tests_require: + self.distribution.fetch_build_eggs(self.distribution.tests_require) + if self.test_suite: cmd = ' '.join(self.test_args) if self.dry_run: @@ -55,6 +58,7 @@ self.announce('running "unittest %s"' % cmd) self.run_tests() + def run_tests(self): import unittest old_path = sys.path[:] @@ -76,7 +80,3 @@ - - - - Modified: sandbox/trunk/setuptools/setuptools/dist.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/dist.py (original) +++ sandbox/trunk/setuptools/setuptools/dist.py Sat Nov 19 21:38:40 2005 @@ -80,14 +80,14 @@ -def check_install_requires(dist, attr, value): +def check_requirements(dist, attr, value): """Verify that install_requires is a valid requirements list""" try: list(pkg_resources.parse_requirements(value)) except (TypeError,ValueError): raise DistutilsSetupError( - "'install_requires' must be a string or list of strings " - "containing valid project/version requirement specifiers" + "%r must be a string or list of strings " + "containing valid project/version requirement specifiers" % (attr,) ) def check_entry_points(dist, attr, value): From neal.norwitz at python.org Sun Nov 20 00:58:30 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 20 Nov 2005 00:58:30 +0100 (CET) Subject: [Python-checkins] commit of r41484 - python/trunk/Python Message-ID: <20051119235830.6600E1E4007@bag.python.org> Author: neal.norwitz Date: Sun Nov 20 00:58:29 2005 New Revision: 41484 Modified: python/trunk/Python/compile.c python/trunk/Python/symtable.c Log: Last batch of ref leaks in new AST code. Also converted a bunch of assert(0) to SystemError's. There are still printfs, etc that need to be cleaned up. Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Sun Nov 20 00:58:29 2005 @@ -332,6 +332,7 @@ Py_DECREF(dict); return NULL; } + Py_DECREF(k); Py_DECREF(v); } return dict; @@ -511,7 +512,9 @@ break; default: /* Called with an unknown opcode */ - assert(0); + PyErr_Format(PyExc_SystemError, + "unexpected binary operation %d on a constant", + opcode); return 0; } if (newconst == NULL) { @@ -568,7 +571,9 @@ break; default: /* Called with an unknown opcode */ - assert(0); + PyErr_Format(PyExc_SystemError, + "unexpected unary operation %d on a constant", + opcode); return 0; } if (newconst == NULL) { @@ -1746,11 +1751,14 @@ addNone = 0; break; case Suite_kind: - assert(0); /* XXX: what should we do here? */ - VISIT_SEQ_IN_SCOPE(c, stmt, mod->v.Suite.body); - break; + PyErr_SetString(PyExc_SystemError, + "suite should not be possible"); + return 0; default: - assert(0); + PyErr_Format(PyExc_SystemError, + "module kind %d should not be possible", + mod->kind); + return 0; } co = assemble(c, addNone); compiler_exit_scope(c); @@ -1929,6 +1937,7 @@ return 0; compiler_make_closure(c, co, asdl_seq_LEN(args->defaults)); + Py_DECREF(co); for (i = 0; i < asdl_seq_LEN(decos); i++) { ADDOP_I(c, CALL_FUNCTION, 1); @@ -1984,6 +1993,8 @@ return 0; compiler_make_closure(c, co, 0); + Py_DECREF(co); + ADDOP_I(c, CALL_FUNCTION, 0); ADDOP(c, BUILD_CLASS); if (!compiler_nameop(c, s->v.ClassDef.name, Store)) @@ -2009,7 +2020,7 @@ VISIT_SEQ(c, expr, args->defaults); if (!compiler_enter_scope(c, name, (void *)e, e->lineno)) return 0; - + /* unpack nested arguments */ compiler_arguments(c, args); @@ -2022,6 +2033,7 @@ return 0; compiler_make_closure(c, co, asdl_seq_LEN(args->defaults)); + Py_DECREF(co); return 1; } @@ -2734,7 +2746,9 @@ case FloorDiv: return INPLACE_FLOOR_DIVIDE; } - assert(0); + PyErr_Format(PyExc_SystemError, + "inplace binary op %d should not be possible", + op); return 0; } @@ -2802,9 +2816,10 @@ PyString_AS_STRING(name)); Py_DECREF(mangled); return 0; - break; case Param: - assert(0); /* impossible */ + PyErr_SetString(PyExc_SystemError, + "param invalid for deref variable"); + return 0; } break; case OP_FAST: @@ -2816,7 +2831,9 @@ case AugStore: break; case Param: - assert(0); /* impossible */ + PyErr_SetString(PyExc_SystemError, + "param invalid for local variable"); + return 0; } ADDOP_O(c, op, mangled, varnames); Py_DECREF(mangled); @@ -2830,7 +2847,9 @@ case AugStore: break; case Param: - assert(0); /* impossible */ + PyErr_SetString(PyExc_SystemError, + "param invalid for global variable"); + return 0; } break; case OP_NAME: @@ -2842,16 +2861,18 @@ case AugStore: break; case Param: - assert(0); /* impossible */ + PyErr_SetString(PyExc_SystemError, + "param invalid for name variable"); + return 0; } break; } assert(op); arg = compiler_add_o(c, dict, mangled); + Py_DECREF(mangled); if (arg < 0) return 0; - Py_DECREF(mangled); return compiler_addop_i(c, op, arg); } @@ -3196,6 +3217,8 @@ return 0; compiler_make_closure(c, co, 0); + Py_DECREF(co); + VISIT(c, expr, outermost_iter); ADDOP(c, GET_ITER); ADDOP_I(c, CALL_FUNCTION, 1); @@ -3325,8 +3348,9 @@ ADDOP_NAME(c, DELETE_ATTR, e->v.Attribute.attr, names); break; case Param: - assert(0); - break; + PyErr_SetString(PyExc_SystemError, + "param invalid in attribute expression"); + return 0; } break; case Subscript_kind: @@ -3351,8 +3375,9 @@ VISIT_SLICE(c, e->v.Subscript.slice, Del); break; case Param: - assert(0); - break; + PyErr_SetString(PyExc_SystemError, + "param invalid in subscript expression"); + return 0; } break; case Name_kind: @@ -3562,9 +3587,10 @@ case AugStore:/* fall through to Store */ case Store: op = STORE_SLICE; break; case Del: op = DELETE_SLICE; break; - case Param: /* XXX impossible? */ - fprintf(stderr, "param invalid\n"); - assert(0); + case Param: + PyErr_SetString(PyExc_SystemError, + "param invalid in simple slice"); + return 0; } ADDOP(c, op + slice_offset); @@ -3586,8 +3612,9 @@ VISIT(c, expr, s->v.Index.value); break; case ExtSlice_kind: - assert(0); - break; + PyErr_SetString(PyExc_SystemError, + "extended slice invalid in nested slice"); + return 0; } return 1; } @@ -3612,7 +3639,6 @@ ADDOP(c, ROT_THREE); } return compiler_handle_subscr(c, "slice", ctx); - break; case ExtSlice_kind: { int i, n = asdl_seq_LEN(s->v.ExtSlice.dims); for (i = 0; i < n; i++) { @@ -3622,7 +3648,6 @@ } ADDOP_I(c, BUILD_TUPLE, n); return compiler_handle_subscr(c, "extended slice", ctx); - break; } case Index_kind: if (ctx != AugStore) Modified: python/trunk/Python/symtable.c ============================================================================== --- python/trunk/Python/symtable.c (original) +++ python/trunk/Python/symtable.c Sun Nov 20 00:58:29 2005 @@ -731,7 +731,6 @@ if (st->st_cur) { prev = st->st_cur; if (PyList_Append(st->st_stack, (PyObject *)st->st_cur) < 0) { - Py_DECREF(st->st_cur); return 0; } Py_DECREF(st->st_cur); @@ -814,6 +813,7 @@ } Py_DECREF(o); } + Py_DECREF(mangled); return 1; error: @@ -1087,9 +1087,10 @@ PyOS_snprintf(tmpname, sizeof(tmpname), "_[%d]", ++st->st_cur->ste_tmpname); - tmp = PyString_FromString(tmpname); + tmp = PyString_InternFromString(tmpname); if (!symtable_add_def(st, tmp, DEF_LOCAL)) return 0; + Py_DECREF(tmp); VISIT(st, expr, e->v.ListComp.elt); VISIT_SEQ(st, comprehension, e->v.ListComp.generators); break; @@ -1186,8 +1187,10 @@ } } else { - /* syntax error */ - fprintf(stderr, "unexpected expr in parameter list\n"); + PyErr_SetString(PyExc_SyntaxError, + "invalid expression in parameter list"); + PyErr_SyntaxLocation(st->st_filename, + st->st_cur->ste_lineno); return 0; } } @@ -1279,6 +1282,7 @@ return 0; } st->st_cur->ste_unoptimized |= OPT_IMPORT_STAR; + Py_DECREF(store_name); return 1; } } From neal.norwitz at python.org Sun Nov 20 01:24:18 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 20 Nov 2005 01:24:18 +0100 (CET) Subject: [Python-checkins] commit of r41485 - python/trunk/Doc/howto Message-ID: <20051120002418.7ECE61E4009@bag.python.org> Author: neal.norwitz Date: Sun Nov 20 01:24:18 2005 New Revision: 41485 Modified: python/trunk/Doc/howto/sorting.tex Log: Remove import string and use string methods Modified: python/trunk/Doc/howto/sorting.tex ============================================================================== --- python/trunk/Doc/howto/sorting.tex (original) +++ python/trunk/Doc/howto/sorting.tex Sun Nov 20 01:24:18 2005 @@ -110,11 +110,10 @@ Here's a case-insensitive string comparison using a \keyword{lambda} function: \begin{verbatim} ->>> import string ->>> a = string.split("This is a test string from Andrew.") ->>> a.sort(lambda x, y: cmp(string.lower(x), string.lower(y))) +>>> a = "This is a test string from Andrew".split() +>>> a.sort(lambda x, y: cmp(x.lower(), y.lower())) >>> print a -['a', 'Andrew.', 'from', 'is', 'string', 'test', 'This'] +['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] \end{verbatim} This goes through the overhead of converting a word to lower case From neal.norwitz at python.org Mon Nov 21 00:58:39 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Mon, 21 Nov 2005 00:58:39 +0100 (CET) Subject: [Python-checkins] commit of r41486 - in python/trunk: Misc Python Message-ID: <20051120235839.3BEF41E400A@bag.python.org> Author: neal.norwitz Date: Mon Nov 21 00:58:38 2005 New Revision: 41486 Modified: python/trunk/Misc/README.valgrind python/trunk/Python/ast.c python/trunk/Python/compile.c python/trunk/Python/modsupport.c Log: Fix a few more memory leaks Document more info about the benefits of configuring without pymalloc when running valgrind Modified: python/trunk/Misc/README.valgrind ============================================================================== --- python/trunk/Misc/README.valgrind (original) +++ python/trunk/Misc/README.valgrind Mon Nov 21 00:58:38 2005 @@ -12,6 +12,19 @@ * Uncomment the lines in Misc/valgrind-python.supp that suppress the warnings for PyObject_Free and PyObject_Realloc +If you want to use Valgrind more effectively and catch even more +memory leaks, you will need to configure python --without-pymalloc. +PyMalloc allocates a few blocks in big chunks and most object +allocations don't call malloc, they use chunks doled about by PyMalloc +from the big blocks. This means Valgrind can't detect +many allocations (and frees), except for those that are forwarded +to the system malloc. Note: configuring python --without-pymalloc +makes Python run much slower, especially when running under Valgrind. +You may need to run the tests in batches under Valgrind to keep +the memory usage down to allow the tests to complete. It seems to take +about 5 times longer to run --without-pymalloc. + + Details: -------- Python uses its own small-object allocation scheme on top of malloc, @@ -21,7 +34,8 @@ Starting with Python 2.3, PyMalloc is used by default. You can disable PyMalloc when configuring python by adding the --without-pymalloc option. If you disable PyMalloc, most of the information in this document and -the supplied suppressions file will not be useful. +the supplied suppressions file will not be useful. As discussed above, +disabling PyMalloc can catch more problems. If you use valgrind on a default build of Python, you will see many errors like: Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Mon Nov 21 00:58:38 2005 @@ -1054,8 +1054,12 @@ return NULL; } - if (asdl_seq_LEN(t) == 1) + if (asdl_seq_LEN(t) == 1) { lc = comprehension(asdl_seq_GET(t, 0), expression, NULL); + /* only free the sequence since we grabbed element 0 above */ + if (lc) + asdl_seq_free(t); /* ok */ + } else lc = comprehension(Tuple(t, Store, LINENO(ch)), expression, NULL); @@ -1222,9 +1226,13 @@ return NULL; } - if (asdl_seq_LEN(t) == 1) + if (asdl_seq_LEN(t) == 1) { ge = comprehension(asdl_seq_GET(t, 0), expression, NULL); + /* only free the sequence since we grabbed element 0 above */ + if (ge) + asdl_seq_free(t); /* ok */ + } else ge = comprehension(Tuple(t, Store, LINENO(ch)), expression, NULL); Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Mon Nov 21 00:58:38 2005 @@ -2384,7 +2384,10 @@ dot = strchr(src, '.'); attr = PyString_FromStringAndSize(src, dot ? dot - src : strlen(src)); + if (!attr) + return -1; ADDOP_O(c, LOAD_ATTR, attr, names); + Py_DECREF(attr); src = dot + 1; } } Modified: python/trunk/Python/modsupport.c ============================================================================== --- python/trunk/Python/modsupport.c (original) +++ python/trunk/Python/modsupport.c Mon Nov 21 00:58:38 2005 @@ -82,6 +82,7 @@ } Py_DECREF(v); } + Py_DECREF(n); } if (doc != NULL) { v = PyString_FromString(doc); From neal.norwitz at python.org Mon Nov 21 01:05:59 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Mon, 21 Nov 2005 01:05:59 +0100 (CET) Subject: [Python-checkins] commit of r41487 - python/branches/release24-maint/Python Message-ID: <20051121000559.69CE81E402B@bag.python.org> Author: neal.norwitz Date: Mon Nov 21 01:05:58 2005 New Revision: 41487 Modified: python/branches/release24-maint/Python/modsupport.c Log: Backport one of the ref/memory leaks Modified: python/branches/release24-maint/Python/modsupport.c ============================================================================== --- python/branches/release24-maint/Python/modsupport.c (original) +++ python/branches/release24-maint/Python/modsupport.c Mon Nov 21 01:05:58 2005 @@ -82,6 +82,7 @@ } Py_DECREF(v); } + Py_DECREF(n); } if (doc != NULL) { v = PyString_FromString(doc); From jack.jansen at python.org Mon Nov 21 14:24:26 2005 From: jack.jansen at python.org (jack.jansen@python.org) Date: Mon, 21 Nov 2005 14:24:26 +0100 (CET) Subject: [Python-checkins] commit of r41488 - python/trunk/Tools/bgen/bgen Message-ID: <20051121132426.73B9C1E400F@bag.python.org> Author: jack.jansen Date: Mon Nov 21 14:24:25 2005 New Revision: 41488 Modified: python/trunk/Tools/bgen/bgen/ (props changed) python/trunk/Tools/bgen/bgen/bgenObjectDefinition.py Log: Enable optional "const" argument to _New routines. Modified: python/trunk/Tools/bgen/bgen/bgenObjectDefinition.py ============================================================================== --- python/trunk/Tools/bgen/bgen/bgenObjectDefinition.py (original) +++ python/trunk/Tools/bgen/bgen/bgenObjectDefinition.py Mon Nov 21 14:24:25 2005 @@ -7,6 +7,7 @@ tp_flags = "Py_TPFLAGS_DEFAULT" basetype = None argref = "" # set to "*" if arg to <type>_New should be pointer + argconst = "" # set to "const " if arg to <type>_New should be const def __init__(self, name, prefix, itselftype): """ObjectDefinition constructor. May be extended, but do not override. @@ -97,8 +98,8 @@ def outputNew(self): Output() - Output("%sPyObject *%s_New(%s %sitself)", self.static, self.prefix, - self.itselftype, self.argref) + Output("%sPyObject *%s_New(%s%s %sitself)", self.static, self.prefix, + self.argconst, self.itselftype, self.argref) OutLbrace() Output("%s *it;", self.objecttype) self.outputCheckNewArg() From walter.doerwald at python.org Mon Nov 21 18:01:27 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Mon, 21 Nov 2005 18:01:27 +0100 (CET) Subject: [Python-checkins] commit of r41489 - python/trunk/Lib Message-ID: <20051121170127.88C911E40DF@bag.python.org> Author: walter.doerwald Date: Mon Nov 21 18:01:27 2005 New Revision: 41489 Modified: python/trunk/Lib/platform.py Log: Fix typo. Modified: python/trunk/Lib/platform.py ============================================================================== --- python/trunk/Lib/platform.py (original) +++ python/trunk/Lib/platform.py Mon Nov 21 18:01:27 2005 @@ -360,7 +360,7 @@ def _norm_version(version,build=''): """ Normalize the version and build strings and return a single - vesion string using the format major.minor.build (or patchlevel). + version string using the format major.minor.build (or patchlevel). """ l = string.split(version,'.') if build: From walter.doerwald at python.org Mon Nov 21 18:01:49 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Mon, 21 Nov 2005 18:01:49 +0100 (CET) Subject: [Python-checkins] commit of r41490 - python/branches/release24-maint/Lib Message-ID: <20051121170149.AC90D1E426C@bag.python.org> Author: walter.doerwald Date: Mon Nov 21 18:01:49 2005 New Revision: 41490 Modified: python/branches/release24-maint/Lib/platform.py Log: Backport r41489: Fix typo. Modified: python/branches/release24-maint/Lib/platform.py ============================================================================== --- python/branches/release24-maint/Lib/platform.py (original) +++ python/branches/release24-maint/Lib/platform.py Mon Nov 21 18:01:49 2005 @@ -354,7 +354,7 @@ def _norm_version(version,build=''): """ Normalize the version and build strings and return a single - vesion string using the format major.minor.build (or patchlevel). + version string using the format major.minor.build (or patchlevel). """ l = string.split(version,'.') if build: From walter.doerwald at python.org Mon Nov 21 18:48:13 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Mon, 21 Nov 2005 18:48:13 +0100 (CET) Subject: [Python-checkins] commit of r41491 - python/trunk/Lib/test Message-ID: <20051121174813.3F82B1E400C@bag.python.org> Author: walter.doerwald Date: Mon Nov 21 18:48:12 2005 New Revision: 41491 Added: python/trunk/Lib/test/test_platform.py Log: Add a rudimentary test for the platform module that at least calls each documented function once. Added: python/trunk/Lib/test/test_platform.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_platform.py Mon Nov 21 18:48:12 2005 @@ -0,0 +1,74 @@ +import unittest +from test import test_support +import platform + +class PlatformTest(unittest.TestCase): + def test_architecture(self): + res = platform.architecture() + + def test_machine(self): + res = platform.machine() + + def test_node(self): + res = platform.node() + + def test_platform(self): + for aliased in (False, True): + for terse in (False, True): + res = platform.platform(aliased, terse) + + def test_processor(self): + res = platform.processor() + + def test_python_build(self): + res = platform.python_build() + + def test_python_compiler(self): + res = platform.python_compiler() + + def test_version(self): + res1 = platform.version() + res2 = platform.version_tuple() + self.assertEqual(res1, ".".join(res2)) + + def test_release(self): + res = platform.release() + + def test_system(self): + res = platform.system() + + def test_version(self): + res = platform.version() + + def test_system_alias(self): + res = platform.system_alias( + platform.system(), + platform.release(), + platform.version(), + ) + + def test_uname(self): + res = platform.uname() + + def test_java_ver(self): + res = platform.java_ver() + + def test_win32_ver(self): + res = platform.win32_ver() + + def test_mac_ver(self): + res = platform.mac_ver() + + def test_dist(self): + res = platform.dist() + + def test_libc_ver(self): + res = platform.libc_ver() + +def test_main(): + test_support.run_unittest( + PlatformTest + ) + +if __name__ == '__main__': + test_main() From walter.doerwald at python.org Mon Nov 21 19:55:57 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Mon, 21 Nov 2005 19:55:57 +0100 (CET) Subject: [Python-checkins] commit of r41492 - python/trunk/Lib/test Message-ID: <20051121185557.384021E400B@bag.python.org> Author: walter.doerwald Date: Mon Nov 21 19:55:56 2005 New Revision: 41492 Modified: python/trunk/Lib/test/test_uu.py Log: Add a test for uu.encode() that passed filenames as in_file and out_file. Modified: python/trunk/Lib/test/test_uu.py ============================================================================== --- python/trunk/Lib/test/test_uu.py (original) +++ python/trunk/Lib/test/test_uu.py Mon Nov 21 19:55:56 2005 @@ -128,6 +128,14 @@ s = fout.read() fout.close() self.assertEqual(s, encodedtextwrapped % (0644, self.tmpin)) + + # in_file and out_file as filenames + uu.encode(self.tmpin, self.tmpout, mode=0644) + fout = open(self.tmpout, 'r') + s = fout.read() + fout.close() + self.assertEqual(s, encodedtextwrapped % (0644, self.tmpin)) + finally: self._kill(fin) self._kill(fout) From walter.doerwald at python.org Mon Nov 21 20:10:08 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Mon, 21 Nov 2005 20:10:08 +0100 (CET) Subject: [Python-checkins] commit of r41493 - in python/trunk: Lib Misc Message-ID: <20051121191008.095381E400C@bag.python.org> Author: walter.doerwald Date: Mon Nov 21 20:10:07 2005 New Revision: 41493 Modified: python/trunk/Lib/uu.py python/trunk/Misc/NEWS Log: Use basestring instead of type.StringType for checking whether a input or output file is a file name instead of a file object. This enables unicode file names as arguments to uu.encode() and uu.decode(). Modified: python/trunk/Lib/uu.py ============================================================================== --- python/trunk/Lib/uu.py (original) +++ python/trunk/Lib/uu.py Mon Nov 21 20:10:07 2005 @@ -33,7 +33,6 @@ import binascii import os import sys -from types import StringType __all__ = ["Error", "encode", "decode"] @@ -47,7 +46,7 @@ # if in_file == '-': in_file = sys.stdin - elif isinstance(in_file, StringType): + elif isinstance(in_file, basestring): if name is None: name = os.path.basename(in_file) if mode is None: @@ -61,7 +60,7 @@ # if out_file == '-': out_file = sys.stdout - elif isinstance(out_file, StringType): + elif isinstance(out_file, basestring): out_file = open(out_file, 'w') # # Set defaults for name and mode @@ -88,7 +87,7 @@ # if in_file == '-': in_file = sys.stdin - elif isinstance(in_file, StringType): + elif isinstance(in_file, basestring): in_file = open(in_file) # # Read until a begin is encountered or we've exhausted the file @@ -117,7 +116,7 @@ # if out_file == '-': out_file = sys.stdout - elif isinstance(out_file, StringType): + elif isinstance(out_file, basestring): fp = open(out_file, 'wb') try: os.path.chmod(out_file, mode) @@ -172,7 +171,7 @@ if dopt: if topt: - if isinstance(output, StringType): + if isinstance(output, basestring): output = open(output, 'w') else: print sys.argv[0], ': cannot do -t to stdout' @@ -180,7 +179,7 @@ decode(input, output) else: if topt: - if isinstance(input, StringType): + if isinstance(input, basestring): input = open(input, 'r') else: print sys.argv[0], ': cannot do -t from stdin' Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Nov 21 20:10:07 2005 @@ -551,6 +551,8 @@ - Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to ``encodings.aliases``. +- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. + Build ----- From kurt.kaiser at python.org Tue Nov 22 02:47:19 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Tue, 22 Nov 2005 02:47:19 +0100 (CET) Subject: [Python-checkins] commit of r41494 - python/trunk/Lib/idlelib Message-ID: <20051122014719.007F91E400B@bag.python.org> Author: kurt.kaiser Date: Tue Nov 22 02:47:14 2005 New Revision: 41494 Modified: python/trunk/Lib/idlelib/EditorWindow.py Log: Following 'syntax' patch, accelerator keys in menus weren't being updated after a keyset change. Also, formatted ApplyKeyBindings() Modified: python/trunk/Lib/idlelib/EditorWindow.py ============================================================================== --- python/trunk/Lib/idlelib/EditorWindow.py (original) +++ python/trunk/Lib/idlelib/EditorWindow.py Tue Nov 22 02:47:14 2005 @@ -566,47 +566,46 @@ def RemoveKeybindings(self): "Remove the keybindings before they are changed." # Called from configDialog.py - self.Bindings.default_keydefs=idleConf.GetCurrentKeySet() - keydefs = self.Bindings.default_keydefs + self.Bindings.default_keydefs = keydefs = idleConf.GetCurrentKeySet() for event, keylist in keydefs.items(): self.text.event_delete(event, *keylist) for extensionName in self.get_standard_extension_names(): - keydefs = idleConf.GetExtensionBindings(extensionName) - if keydefs: - for event, keylist in keydefs.items(): + xkeydefs = idleConf.GetExtensionBindings(extensionName) + if xkeydefs: + for event, keylist in xkeydefs.items(): self.text.event_delete(event, *keylist) def ApplyKeybindings(self): "Update the keybindings after they are changed" # Called from configDialog.py - self.Bindings.default_keydefs=idleConf.GetCurrentKeySet() + self.Bindings.default_keydefs = keydefs = idleConf.GetCurrentKeySet() self.apply_bindings() for extensionName in self.get_standard_extension_names(): - keydefs = idleConf.GetExtensionBindings(extensionName) - if keydefs: - self.apply_bindings(keydefs) + xkeydefs = idleConf.GetExtensionBindings(extensionName) + if xkeydefs: + self.apply_bindings(xkeydefs) #update menu accelerators - menuEventDict={} + menuEventDict = {} for menu in self.Bindings.menudefs: - menuEventDict[menu[0]]={} + menuEventDict[menu[0]] = {} for item in menu[1]: if item: - menuEventDict[menu[0]][prepstr(item[0])[1]]=item[1] + menuEventDict[menu[0]][prepstr(item[0])[1]] = item[1] for menubarItem in self.menudict.keys(): - menu=self.menudict[menubarItem] - end=menu.index(END)+1 - for index in range(0,end): - if menu.type(index)=='command': - accel=menu.entrycget(index,'accelerator') + menu = self.menudict[menubarItem] + end = menu.index(END) + 1 + for index in range(0, end): + if menu.type(index) == 'command': + accel = menu.entrycget(index, 'accelerator') if accel: - itemName=menu.entrycget(index,'label') - event='' + itemName = menu.entrycget(index, 'label') + event = '' if menuEventDict.has_key(menubarItem): if menuEventDict[menubarItem].has_key(itemName): - event=menuEventDict[menubarItem][itemName] + event = menuEventDict[menubarItem][itemName] if event: - accel=get_accelerator(keydefs, event) - menu.entryconfig(index,accelerator=accel) + accel = get_accelerator(keydefs, event) + menu.entryconfig(index, accelerator=accel) def set_notabs_indentwidth(self): "Update the indentwidth if changed and not using tabs in this window" From kurt.kaiser at python.org Tue Nov 22 02:52:29 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Tue, 22 Nov 2005 02:52:29 +0100 (CET) Subject: [Python-checkins] commit of r41495 - python/trunk/Lib/idlelib Message-ID: <20051122015229.4820C1E400B@bag.python.org> Author: kurt.kaiser Date: Tue Nov 22 02:52:22 2005 New Revision: 41495 Modified: python/trunk/Lib/idlelib/config-extensions.def Log: Default two second delay on attribute pop-up, less noisy interface. (Opens immediately if TAB is typed after '.') Modified: python/trunk/Lib/idlelib/config-extensions.def ============================================================================== --- python/trunk/Lib/idlelib/config-extensions.def (original) +++ python/trunk/Lib/idlelib/config-extensions.def Tue Nov 22 02:52:22 2005 @@ -70,7 +70,7 @@ [AutoComplete] enable=1 -popupwait=0 +popupwait=2000 [AutoComplete_cfgBindings] force-open-completions=<Control-Key-space> [AutoComplete_bindings] From kbk at shore.net Tue Nov 22 03:10:01 2005 From: kbk at shore.net (Kurt B. Kaiser) Date: Mon, 21 Nov 2005 21:10:01 -0500 Subject: [Python-checkins] commit of r41480 - python/trunk/Lib/idlelib In-Reply-To: <dln9e9$kc6$1@sea.gmane.org> (Reinhold Birkenfeld's message of "Sat, 19 Nov 2005 14:30:49 +0100") References: <20051118220549.A605F1E4050@bag.python.org> <dln9e9$kc6$1@sea.gmane.org> Message-ID: <87u0e5juva.fsf@hydra.bayview.thirdcreek.com> Reinhold Birkenfeld <reinhold-birkenfeld-nospam at wolke7.net> writes: > kurt.kaiser at python.org wrote: > >> Modified: python/trunk/Lib/idlelib/CallTipWindow.py >> ============================================================================== >> --- python/trunk/Lib/idlelib/CallTipWindow.py (original) >> +++ python/trunk/Lib/idlelib/CallTipWindow.py Fri Nov 18 23:05:48 2005 >> @@ -6,33 +6,65 @@ >> """ >> from Tkinter import * >> >> +HIDE_VIRTUAL_EVENT_NAME = "<<caltipwindow-hide>>" > > I guess the spelling mistake doesn't matter here but for the sake of nitpicking... ;) Thanks! -- KBK From kurt.kaiser at python.org Tue Nov 22 03:17:15 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Tue, 22 Nov 2005 03:17:15 +0100 (CET) Subject: [Python-checkins] commit of r41496 - python/trunk/Lib/idlelib Message-ID: <20051122021715.DE3171E4013@bag.python.org> Author: kurt.kaiser Date: Tue Nov 22 03:17:10 2005 New Revision: 41496 Modified: python/trunk/Lib/idlelib/CallTipWindow.py Log: Fix typo and update comment obsoleted by 'syntax' patch Modified: python/trunk/Lib/idlelib/CallTipWindow.py ============================================================================== --- python/trunk/Lib/idlelib/CallTipWindow.py (original) +++ python/trunk/Lib/idlelib/CallTipWindow.py Tue Nov 22 03:17:10 2005 @@ -6,7 +6,7 @@ """ from Tkinter import * -HIDE_VIRTUAL_EVENT_NAME = "<<caltipwindow-hide>>" +HIDE_VIRTUAL_EVENT_NAME = "<<calltipwindow-hide>>" HIDE_SEQUENCES = ("<Key-Escape>", "<FocusOut>") CHECKHIDE_VIRTUAL_EVENT_NAME = "<<calltipwindow-checkhide>>" CHECKHIDE_SEQUENCES = ("<KeyRelease>", "<ButtonRelease>") @@ -60,10 +60,7 @@ self.tipwindow = tw = Toplevel(self.widget) self.position_window() - # XXX 12 Dec 2002 KBK The following command has two effects: It removes - # the calltip window border (good) but also causes (at least on - # Linux) the calltip to show as a top level window, burning through - # any other window dragged over it. Also, shows on all viewports! + # remove border on calltip window tw.wm_overrideredirect(1) try: # This command is only needed and available on Tk >= 8.4.0 for OSX From neal.norwitz at python.org Tue Nov 22 06:17:45 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Tue, 22 Nov 2005 06:17:45 +0100 (CET) Subject: [Python-checkins] commit of r41497 - python/trunk/Lib/test Message-ID: <20051122051745.B440A1E400B@bag.python.org> Author: neal.norwitz Date: Tue Nov 22 06:17:40 2005 New Revision: 41497 Modified: python/trunk/Lib/test/test_builtin.py Log: improve test coverage in Python/pystrtod.c and Python/mystrtoul.c. Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Tue Nov 22 06:17:40 2005 @@ -545,6 +545,34 @@ self.assertEqual(float(unicode(" 3.14 ")), 3.14) self.assertEqual(float(unicode(" \u0663.\u0661\u0664 ",'raw-unicode-escape')), 3.14) + def test_float_with_comma(self): + # set locale to something that doesn't use '.' for the decimal point + try: + import locale + orig_locale = locale.setlocale(locale.LC_NUMERIC, '') + locale.setlocale(locale.LC_NUMERIC, 'fr_FR') + except: + # if we can't set the locale, just ignore this test + return + + try: + self.assertEqual(locale.localeconv()['decimal_point'], ',') + except: + # this test is worthless, just skip it and reset the locale + locale.setlocale(locale.LC_NUMERIC, orig_locale) + return + + try: + self.assertEqual(float(" 3,14 "), 3.14) + self.assertEqual(float(" +3,14 "), 3.14) + self.assertEqual(float(" -3,14 "), -3.14) + self.assertEqual(float(" 0x3.1 "), 3.0625) + self.assertEqual(float(" -0x3.p-1 "), -1.5) + self.assertEqual(float(" 25.e-1 "), 2.5) + self.assertEqual(fcmp(float(" .25e-1 "), .025), 0) + finally: + locale.setlocale(locale.LC_NUMERIC, orig_locale) + def test_floatconversion(self): # Make sure that calls to __float__() work properly class Foo0: @@ -682,6 +710,7 @@ self.assertRaises(TypeError, int, 1, 12) self.assertEqual(int('0123', 0), 83) + self.assertEqual(int('0x123', 16), 291) def test_intconversion(self): # Test __int__() From walter.doerwald at python.org Tue Nov 22 13:58:25 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Tue, 22 Nov 2005 13:58:25 +0100 (CET) Subject: [Python-checkins] commit of r41498 - python/trunk/Lib Message-ID: <20051122125825.B30651E400E@bag.python.org> Author: walter.doerwald Date: Tue Nov 22 13:58:19 2005 New Revision: 41498 Modified: python/trunk/Lib/uu.py Log: Avoid using str as a variable name. Modified: python/trunk/Lib/uu.py ============================================================================== --- python/trunk/Lib/uu.py (original) +++ python/trunk/Lib/uu.py Tue Nov 22 13:58:19 2005 @@ -73,10 +73,10 @@ # Write the data # out_file.write('begin %o %s\n' % ((mode&0777),name)) - str = in_file.read(45) - while len(str) > 0: - out_file.write(binascii.b2a_uu(str)) - str = in_file.read(45) + data = in_file.read(45) + while len(data) > 0: + out_file.write(binascii.b2a_uu(data)) + data = in_file.read(45) out_file.write(' \nend\n') From walter.doerwald at python.org Tue Nov 22 15:12:26 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Tue, 22 Nov 2005 15:12:26 +0100 (CET) Subject: [Python-checkins] commit of r41499 - python/trunk/Lib Message-ID: <20051122141226.830D51E400C@bag.python.org> Author: walter.doerwald Date: Tue Nov 22 15:12:21 2005 New Revision: 41499 Modified: python/trunk/Lib/uu.py Log: Use optparse instead of getopt for command line options. Use "raise instance" instead of "raise class, args". Modernize the code in other spots (bools, startswith()). Modified: python/trunk/Lib/uu.py ============================================================================== --- python/trunk/Lib/uu.py (original) +++ python/trunk/Lib/uu.py Tue Nov 22 15:12:21 2005 @@ -92,13 +92,13 @@ # # Read until a begin is encountered or we've exhausted the file # - while 1: + while True: hdr = in_file.readline() if not hdr: - raise Error, 'No valid begin line found in input file' - if hdr[:5] != 'begin': + raise Error('No valid begin line found in input file') + if not hdr.startswith('begin'): continue - hdrfields = hdr.split(" ", 2) + hdrfields = hdr.split(' ', 2) if len(hdrfields) == 3 and hdrfields[0] == 'begin': try: int(hdrfields[1], 8) @@ -108,7 +108,7 @@ if out_file is None: out_file = hdrfields[2].rstrip() if os.path.exists(out_file): - raise Error, 'Cannot overwrite existing file: %s' % out_file + raise Error('Cannot overwrite existing file: %s' % out_file) if mode is None: mode = int(hdrfields[1], 8) # @@ -135,42 +135,34 @@ nbytes = (((ord(s[0])-32) & 63) * 4 + 5) / 3 data = binascii.a2b_uu(s[:nbytes]) if not quiet: - sys.stderr.write("Warning: %s\n" % str(v)) + sys.stderr.write("Warning: %s\n" % v) out_file.write(data) s = in_file.readline() if not s: - raise Error, 'Truncated input file' + raise Error('Truncated input file') def test(): """uuencode/uudecode main program""" - import getopt - dopt = 0 - topt = 0 - input = sys.stdin - output = sys.stdout - ok = 1 - try: - optlist, args = getopt.getopt(sys.argv[1:], 'dt') - except getopt.error: - ok = 0 - if not ok or len(args) > 2: - print 'Usage:', sys.argv[0], '[-d] [-t] [input [output]]' - print ' -d: Decode (in stead of encode)' - print ' -t: data is text, encoded format unix-compatible text' + import optparse + parser = optparse.OptionParser(usage='usage: %prog [-d] [-t] [input [output]]') + parser.add_option('-d', '--decode', dest='decode', help='Decode (instead of encode)?', default=False, action='store_true') + parser.add_option('-t', '--text', dest='text', help='data is text, encoded format unix-compatible text?', default=False, action='store_true') + + (options, args) = parser.parse_args() + if len(args) > 2: + p.error('incorrect number of arguments') sys.exit(1) - for o, a in optlist: - if o == '-d': dopt = 1 - if o == '-t': topt = 1 - + input = sys.stdin + output = sys.stdout if len(args) > 0: input = args[0] if len(args) > 1: output = args[1] - if dopt: - if topt: + if options.decode: + if options.text: if isinstance(output, basestring): output = open(output, 'w') else: @@ -178,7 +170,7 @@ sys.exit(1) decode(input, output) else: - if topt: + if options.text: if isinstance(input, basestring): input = open(input, 'r') else: From andrew.kuchling at python.org Tue Nov 22 15:52:37 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 15:52:37 +0100 (CET) Subject: [Python-checkins] commit of r41500 - python/trunk/Doc/lib Message-ID: <20051122145237.4B45A1E400C@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 15:52:31 2005 New Revision: 41500 Modified: python/trunk/Doc/lib/asttable.tex Log: [Bug #449093] FloorDiv AST node type not listed Modified: python/trunk/Doc/lib/asttable.tex ============================================================================== --- python/trunk/Doc/lib/asttable.tex (original) +++ python/trunk/Doc/lib/asttable.tex Tue Nov 22 15:52:31 2005 @@ -96,6 +96,10 @@ \lineiii{}{\member{globals}}{} \hline +\lineiii{FloorDiv}{\member{left}}{} +\lineiii{}{\member{right}}{} +\hline + \lineiii{For}{\member{assign}}{} \lineiii{}{\member{list}}{} \lineiii{}{\member{body}}{} From andrew.kuchling at python.org Tue Nov 22 15:53:13 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 15:53:13 +0100 (CET) Subject: [Python-checkins] commit of r41501 - python/branches/release24-maint/Doc/lib Message-ID: <20051122145313.03D4F1E400C@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 15:53:07 2005 New Revision: 41501 Modified: python/branches/release24-maint/Doc/lib/asttable.tex Log: [Bug #449093] FloorDiv AST node type not listed Modified: python/branches/release24-maint/Doc/lib/asttable.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/asttable.tex (original) +++ python/branches/release24-maint/Doc/lib/asttable.tex Tue Nov 22 15:53:07 2005 @@ -94,6 +94,10 @@ \lineiii{}{\member{globals}}{} \hline +\lineiii{FloorDiv}{\member{left}}{} +\lineiii{}{\member{right}}{} +\hline + \lineiii{For}{\member{assign}}{} \lineiii{}{\member{list}}{} \lineiii{}{\member{body}}{} From andrew.kuchling at python.org Tue Nov 22 16:01:19 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 16:01:19 +0100 (CET) Subject: [Python-checkins] commit of r41502 - python/trunk/Tools/compiler Message-ID: <20051122150119.4B4281E400D@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 16:01:13 2005 New Revision: 41502 Modified: python/trunk/Tools/compiler/ast.txt Log: Add comment about updating docs Modified: python/trunk/Tools/compiler/ast.txt ============================================================================== --- python/trunk/Tools/compiler/ast.txt (original) +++ python/trunk/Tools/compiler/ast.txt Tue Nov 22 16:01:13 2005 @@ -6,6 +6,9 @@ # ! this child is a sequence that contains nodes in it # & this child may be set to None # = ... a default value for the node constructor (optional args) +# +# If you add node types here, please be sure to update the list of +# Node types in Doc/lib/asttable.tex. Module: doc*, node Stmt: nodes! Decorators: nodes! From andrew.kuchling at python.org Tue Nov 22 16:09:13 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 16:09:13 +0100 (CET) Subject: [Python-checkins] commit of r41503 - python/trunk/Doc/lib Message-ID: <20051122150913.7E3661E400F@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 16:09:07 2005 New Revision: 41503 Modified: python/trunk/Doc/lib/asttable.tex Log: Add generator-expression nodes Modified: python/trunk/Doc/lib/asttable.tex ============================================================================== --- python/trunk/Doc/lib/asttable.tex (original) +++ python/trunk/Doc/lib/asttable.tex Tue Nov 22 16:09:07 2005 @@ -119,6 +119,21 @@ \lineiii{}{\member{code}}{the body of the function} \hline +\lineiii{GenExpr}{\member{code}}{} +\hline + +\lineiii{GenExprFor}{\member{assign}}{} +\lineiii{}{\member{iter}}{} +\lineiii{}{\member{ifs}}{} +\hline + +\lineiii{GenExprIf}{\member{test}}{} +\hline + +\lineiii{GenExprInner}{\member{expr}}{} +\lineiii{}{\member{quals}}{} +\hline + \lineiii{Getattr}{\member{expr}}{} \lineiii{}{\member{attrname}}{} \hline From andrew.kuchling at python.org Tue Nov 22 16:14:50 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 16:14:50 +0100 (CET) Subject: [Python-checkins] commit of r41504 - python/trunk/Misc Message-ID: <20051122151450.E17B51E4018@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 16:14:44 2005 New Revision: 41504 Modified: python/trunk/Misc/NEWS Log: Typo fix Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Nov 22 16:14:44 2005 @@ -758,7 +758,7 @@ weakref to a dead object, or via any Python code run in any other thread that managed to obtain the GIL while a __del__ or callback was running in the thread doing gc). The most likely symptom was "impossible" - ``AttributeEror`` exceptions, appearing seemingly at random, on weakly + ``AttributeError`` exceptions, appearing seemingly at random, on weakly referenced objects. The cure was to clear all weakrefs to unreachable objects before allowing any callbacks to run. From andrew.kuchling at python.org Tue Nov 22 16:32:33 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 16:32:33 +0100 (CET) Subject: [Python-checkins] commit of r41505 - in python/trunk: Lib/test Modules Message-ID: <20051122153233.EF5651E401F@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 16:32:28 2005 New Revision: 41505 Modified: python/trunk/Lib/test/test_zlib.py python/trunk/Modules/zlibmodule.c Log: [Patch #1350573] zlib.crc32 doesn't handle 0xffffffff seed. Add tests and bugfix. Bug reported by John Schmidt; bugfix by Danny Yoo. Modified: python/trunk/Lib/test/test_zlib.py ============================================================================== --- python/trunk/Lib/test/test_zlib.py (original) +++ python/trunk/Lib/test/test_zlib.py Tue Nov 22 16:32:28 2005 @@ -24,6 +24,7 @@ # checksum test cases def test_crc32start(self): self.assertEqual(zlib.crc32(""), zlib.crc32("", 0)) + self.assert_(zlib.crc32("abc", 0xffffffff)) def test_crc32empty(self): self.assertEqual(zlib.crc32("", 0), 0) @@ -32,6 +33,7 @@ def test_adler32start(self): self.assertEqual(zlib.adler32(""), zlib.adler32("", 1)) + self.assert_(zlib.adler32("abc", 0xffffffff)) def test_adler32empty(self): self.assertEqual(zlib.adler32("", 0), 0) Modified: python/trunk/Modules/zlibmodule.c ============================================================================== --- python/trunk/Modules/zlibmodule.c (original) +++ python/trunk/Modules/zlibmodule.c Tue Nov 22 16:32:28 2005 @@ -778,7 +778,7 @@ Byte *buf; int len; - if (!PyArg_ParseTuple(args, "s#|l:adler32", &buf, &len, &adler32val)) + if (!PyArg_ParseTuple(args, "s#|k:adler32", &buf, &len, &adler32val)) return NULL; adler32val = adler32(adler32val, buf, len); return PyInt_FromLong(adler32val); @@ -796,7 +796,7 @@ uLong crc32val = crc32(0L, Z_NULL, 0); Byte *buf; int len; - if (!PyArg_ParseTuple(args, "s#|l:crc32", &buf, &len, &crc32val)) + if (!PyArg_ParseTuple(args, "s#|k:crc32", &buf, &len, &crc32val)) return NULL; crc32val = crc32(crc32val, buf, len); return PyInt_FromLong(crc32val); From andrew.kuchling at python.org Tue Nov 22 16:39:10 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 16:39:10 +0100 (CET) Subject: [Python-checkins] commit of r41506 - in python/branches/release24-maint: Lib/test Modules Message-ID: <20051122153910.C4C751E401F@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 16:39:05 2005 New Revision: 41506 Modified: python/branches/release24-maint/Lib/test/test_zlib.py python/branches/release24-maint/Modules/zlibmodule.c Log: [Patch #1350573] zlib.crc32 doesn't handle 0xffffffff seed. Add tests and bugfix. Bug reported by John Schmidt; bugfix by Danny Yoo. Modified: python/branches/release24-maint/Lib/test/test_zlib.py ============================================================================== --- python/branches/release24-maint/Lib/test/test_zlib.py (original) +++ python/branches/release24-maint/Lib/test/test_zlib.py Tue Nov 22 16:39:05 2005 @@ -24,6 +24,7 @@ # checksum test cases def test_crc32start(self): self.assertEqual(zlib.crc32(""), zlib.crc32("", 0)) + self.assert_(zlib.crc32("abc", 0xffffffff)) def test_crc32empty(self): self.assertEqual(zlib.crc32("", 0), 0) @@ -32,6 +33,7 @@ def test_adler32start(self): self.assertEqual(zlib.adler32(""), zlib.adler32("", 1)) + self.assert_(zlib.adler32("abc", 0xffffffff)) def test_adler32empty(self): self.assertEqual(zlib.adler32("", 0), 0) Modified: python/branches/release24-maint/Modules/zlibmodule.c ============================================================================== --- python/branches/release24-maint/Modules/zlibmodule.c (original) +++ python/branches/release24-maint/Modules/zlibmodule.c Tue Nov 22 16:39:05 2005 @@ -778,7 +778,7 @@ Byte *buf; int len; - if (!PyArg_ParseTuple(args, "s#|l:adler32", &buf, &len, &adler32val)) + if (!PyArg_ParseTuple(args, "s#|k:adler32", &buf, &len, &adler32val)) return NULL; adler32val = adler32(adler32val, buf, len); return PyInt_FromLong(adler32val); @@ -796,7 +796,7 @@ uLong crc32val = crc32(0L, Z_NULL, 0); Byte *buf; int len; - if (!PyArg_ParseTuple(args, "s#|l:crc32", &buf, &len, &crc32val)) + if (!PyArg_ParseTuple(args, "s#|k:crc32", &buf, &len, &crc32val)) return NULL; crc32val = crc32(crc32val, buf, len); return PyInt_FromLong(crc32val); From andrew.kuchling at python.org Tue Nov 22 20:03:21 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 20:03:21 +0100 (CET) Subject: [Python-checkins] commit of r41507 - in python/trunk/Lib: test xml/dom Message-ID: <20051122190321.984571E400C@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 20:03:16 2005 New Revision: 41507 Modified: python/trunk/Lib/test/test_minidom.py python/trunk/Lib/xml/dom/minidom.py Log: [Patch #1094164] replaceChild(x,x) ends up removing x of the tree. Add fix from Felix Rabe and a test case Modified: python/trunk/Lib/test/test_minidom.py ============================================================================== --- python/trunk/Lib/test/test_minidom.py (original) +++ python/trunk/Lib/test/test_minidom.py Tue Nov 22 20:03:16 2005 @@ -1127,6 +1127,17 @@ checkWholeText(text, "cabd") checkWholeText(text2, "cabd") +def testPatch1094164 (): + doc = parseString("<doc><e/></doc>") + elem = doc.documentElement + e = elem.firstChild + confirm(e.parentNode is elem, "Before replaceChild()") + # Check that replacing a child with itself leaves the tree unchanged + elem.replaceChild(e, e) + confirm(e.parentNode is elem, "After replaceChild()") + + + def testReplaceWholeText(): def setup(): doc = parseString("<doc>a<e/>d</doc>") Modified: python/trunk/Lib/xml/dom/minidom.py ============================================================================== --- python/trunk/Lib/xml/dom/minidom.py (original) +++ python/trunk/Lib/xml/dom/minidom.py Tue Nov 22 20:03:16 2005 @@ -135,10 +135,10 @@ if newChild.nodeType not in self._child_node_types: raise xml.dom.HierarchyRequestErr( "%s cannot be child of %s" % (repr(newChild), repr(self))) - if newChild.parentNode is not None: - newChild.parentNode.removeChild(newChild) if newChild is oldChild: return + if newChild.parentNode is not None: + newChild.parentNode.removeChild(newChild) try: index = self.childNodes.index(oldChild) except ValueError: From andrew.kuchling at python.org Tue Nov 22 20:04:42 2005 From: andrew.kuchling at python.org (andrew.kuchling@python.org) Date: Tue, 22 Nov 2005 20:04:42 +0100 (CET) Subject: [Python-checkins] commit of r41508 - in python/branches/release24-maint/Lib: test xml/dom Message-ID: <20051122190442.5F53E1E400C@bag.python.org> Author: andrew.kuchling Date: Tue Nov 22 20:04:36 2005 New Revision: 41508 Modified: python/branches/release24-maint/Lib/test/test_minidom.py python/branches/release24-maint/Lib/xml/dom/minidom.py Log: [Patch #1094164] replaceChild(x,x) ends up removing x from the tree. Add fix from Felix Rabe and a test case Modified: python/branches/release24-maint/Lib/test/test_minidom.py ============================================================================== --- python/branches/release24-maint/Lib/test/test_minidom.py (original) +++ python/branches/release24-maint/Lib/test/test_minidom.py Tue Nov 22 20:04:36 2005 @@ -1127,6 +1127,17 @@ checkWholeText(text, "cabd") checkWholeText(text2, "cabd") +def testPatch1094164 (): + doc = parseString("<doc><e/></doc>") + elem = doc.documentElement + e = elem.firstChild + confirm(e.parentNode is elem, "Before replaceChild()") + # Check that replacing a child with itself leaves the tree unchanged + elem.replaceChild(e, e) + confirm(e.parentNode is elem, "After replaceChild()") + + + def testReplaceWholeText(): def setup(): doc = parseString("<doc>a<e/>d</doc>") Modified: python/branches/release24-maint/Lib/xml/dom/minidom.py ============================================================================== --- python/branches/release24-maint/Lib/xml/dom/minidom.py (original) +++ python/branches/release24-maint/Lib/xml/dom/minidom.py Tue Nov 22 20:04:36 2005 @@ -135,10 +135,10 @@ if newChild.nodeType not in self._child_node_types: raise xml.dom.HierarchyRequestErr( "%s cannot be child of %s" % (repr(newChild), repr(self))) - if newChild.parentNode is not None: - newChild.parentNode.removeChild(newChild) if newChild is oldChild: return + if newChild.parentNode is not None: + newChild.parentNode.removeChild(newChild) try: index = self.childNodes.index(oldChild) except ValueError: From reinhold.birkenfeld at python.org Tue Nov 22 20:15:34 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:15:34 +0100 (CET) Subject: [Python-checkins] commit of r41509 - python/trunk/Doc/lib Message-ID: <20051122191534.A07961E405D@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:15:27 2005 New Revision: 41509 Modified: python/trunk/Doc/lib/libos.tex Log: Add a note to os.chown that permission constants can be combined Modified: python/trunk/Doc/lib/libos.tex ============================================================================== --- python/trunk/Doc/lib/libos.tex (original) +++ python/trunk/Doc/lib/libos.tex Tue Nov 22 20:15:27 2005 @@ -753,7 +753,8 @@ \begin{funcdesc}{chmod}{path, mode} Change the mode of \var{path} to the numeric \var{mode}. \var{mode} may take one of the following values -(as defined in the \module{stat} module): +(as defined in the \module{stat} module) or bitwise or-ed +combinations of them: \begin{itemize} \item \code{S_ISUID} \item \code{S_ISGID} From reinhold.birkenfeld at python.org Tue Nov 22 20:16:03 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:16:03 +0100 (CET) Subject: [Python-checkins] commit of r41510 - python/branches/release24-maint/Doc/lib Message-ID: <20051122191603.C6A9E1E4015@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:15:58 2005 New Revision: 41510 Modified: python/branches/release24-maint/Doc/lib/libos.tex Log: Add a note to os.chown that permission constants can be combined Modified: python/branches/release24-maint/Doc/lib/libos.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/libos.tex (original) +++ python/branches/release24-maint/Doc/lib/libos.tex Tue Nov 22 20:15:58 2005 @@ -733,7 +733,8 @@ \begin{funcdesc}{chmod}{path, mode} Change the mode of \var{path} to the numeric \var{mode}. \var{mode} may take one of the following values -(as defined in the \module{stat} module): +(as defined in the \module{stat} module) or bitwise or-ed +combinations of them: \begin{itemize} \item \code{S_ISUID} \item \code{S_ISGID} From reinhold.birkenfeld at python.org Tue Nov 22 20:18:06 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:18:06 +0100 (CET) Subject: [Python-checkins] commit of r41511 - python/trunk/Lib Message-ID: <20051122191806.9EC321E4010@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:18:01 2005 New Revision: 41511 Modified: python/trunk/Lib/webbrowser.py Log: Prefer GNOME browser over mozilla. Modified: python/trunk/Lib/webbrowser.py ============================================================================== --- python/trunk/Lib/webbrowser.py (original) +++ python/trunk/Lib/webbrowser.py Tue Nov 22 20:18:01 2005 @@ -344,13 +344,6 @@ # a console terminal or an X display to run. def register_X_browsers(): - # First, the Mozilla/Netscape browsers - for browser in ("mozilla-firefox", "firefox", - "mozilla-firebird", "firebird", - "mozilla", "netscape"): - if _iscommand(browser): - register(browser, None, Mozilla(browser)) - # The default Gnome browser if _iscommand("gconftool-2"): # get the web browser string from gconftool @@ -364,6 +357,13 @@ register("gnome", None, GenericBrowser( commd + " '%s' >/dev/null &")) + # First, the Mozilla/Netscape browsers + for browser in ("mozilla-firefox", "firefox", + "mozilla-firebird", "firebird", + "mozilla", "netscape"): + if _iscommand(browser): + register(browser, None, Mozilla(browser)) + # Konqueror/kfm, the KDE browser. if _iscommand("kfm"): register("kfm", Konqueror, Konqueror("kfm")) From reinhold.birkenfeld at python.org Tue Nov 22 20:24:03 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:24:03 +0100 (CET) Subject: [Python-checkins] commit of r41512 - python/trunk/Doc/ref Message-ID: <20051122192403.20D531E40D8@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:23:58 2005 New Revision: 41512 Modified: python/trunk/Doc/ref/ref2.tex Log: Bug #1359053: Doc: \Uxxxxxxxx escapes _are_ interpreted in raw unicode strings Modified: python/trunk/Doc/ref/ref2.tex ============================================================================== --- python/trunk/Doc/ref/ref2.tex (original) +++ python/trunk/Doc/ref/ref2.tex Tue Nov 22 20:23:58 2005 @@ -514,8 +514,9 @@ When an \character{r} or \character{R} prefix is used in conjunction with a \character{u} or \character{U} prefix, then the \code{\e uXXXX} -escape sequence is processed while \emph{all other backslashes are -left in the string}. For example, the string literal +and \code{\e UXXXXXXXX} escape sequences are processed while +\emph{all other backslashes are left in the string}. +For example, the string literal \code{ur"\e{}u0062\e n"} consists of three Unicode characters: `LATIN SMALL LETTER B', `REVERSE SOLIDUS', and `LATIN SMALL LETTER N'. Backslashes can be escaped with a preceding backslash; however, both From reinhold.birkenfeld at python.org Tue Nov 22 20:24:29 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:24:29 +0100 (CET) Subject: [Python-checkins] commit of r41513 - python/branches/release24-maint/Doc/ref Message-ID: <20051122192429.231EF1E4016@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:24:23 2005 New Revision: 41513 Modified: python/branches/release24-maint/Doc/ref/ref2.tex Log: Bug #1359035: Doc: Uxxxxxxxx escapes are interpreted in raw unicode literals. Modified: python/branches/release24-maint/Doc/ref/ref2.tex ============================================================================== --- python/branches/release24-maint/Doc/ref/ref2.tex (original) +++ python/branches/release24-maint/Doc/ref/ref2.tex Tue Nov 22 20:24:23 2005 @@ -514,8 +514,9 @@ When an \character{r} or \character{R} prefix is used in conjunction with a \character{u} or \character{U} prefix, then the \code{\e uXXXX} -escape sequence is processed while \emph{all other backslashes are -left in the string}. For example, the string literal +and \code{\e UXXXXXXXX} escape sequences are processed while +\emph{all other backslashes are left in the string}. +For example, the string literal \code{ur"\e{}u0062\e n"} consists of three Unicode characters: `LATIN SMALL LETTER B', `REVERSE SOLIDUS', and `LATIN SMALL LETTER N'. Backslashes can be escaped with a preceding backslash; however, both From reinhold.birkenfeld at python.org Tue Nov 22 20:30:38 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:30:38 +0100 (CET) Subject: [Python-checkins] commit of r41514 - in python/trunk: Misc Modules Message-ID: <20051122193038.84E421E4016@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:30:31 2005 New Revision: 41514 Modified: python/trunk/Misc/NEWS python/trunk/Modules/posixmodule.c Log: Bug #869197: setgroups rejects long integer argument Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Nov 22 20:30:31 2005 @@ -181,6 +181,8 @@ Extension Modules ----------------- +- Bug #869197: os.setgroups rejects long integer arguments + - Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint - Bug #1344508, Fix UNIX mmap leaking file descriptors Modified: python/trunk/Modules/posixmodule.c ============================================================================== --- python/trunk/Modules/posixmodule.c (original) +++ python/trunk/Modules/posixmodule.c Tue Nov 22 20:30:31 2005 @@ -4912,13 +4912,38 @@ if (!elem) return NULL; if (!PyInt_Check(elem)) { - PyErr_SetString(PyExc_TypeError, - "groups must be integers"); - Py_DECREF(elem); - return NULL; + if (!PyLong_Check(elem)) { + PyErr_SetString(PyExc_TypeError, + "groups must be integers"); + Py_DECREF(elem); + return NULL; + } else { + unsigned long x = PyLong_AsUnsignedLong(elem); + if (PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "group id too big"); + Py_DECREF(elem); + return NULL; + } + grouplist[i] = x; + /* read back the value to see if it fitted in gid_t */ + if (grouplist[i] != x) { + PyErr_SetString(PyExc_TypeError, + "group id too big"); + Py_DECREF(elem); + return NULL; + } + } + } else { + long x = PyInt_AsLong(elem); + grouplist[i] = x; + if (grouplist[i] != x) { + PyErr_SetString(PyExc_TypeError, + "group id too big"); + Py_DECREF(elem); + return NULL; + } } - /* XXX: check that value fits into gid_t. */ - grouplist[i] = PyInt_AsLong(elem); Py_DECREF(elem); } From reinhold.birkenfeld at python.org Tue Nov 22 20:31:14 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:31:14 +0100 (CET) Subject: [Python-checkins] commit of r41515 - in python/branches/release24-maint: Misc Modules Message-ID: <20051122193114.40F781E4016@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:31:08 2005 New Revision: 41515 Modified: python/branches/release24-maint/Misc/NEWS python/branches/release24-maint/Modules/posixmodule.c Log: Bug #869197: setgroups rejects long integer argument Modified: python/branches/release24-maint/Misc/NEWS ============================================================================== --- python/branches/release24-maint/Misc/NEWS (original) +++ python/branches/release24-maint/Misc/NEWS Tue Nov 22 20:31:08 2005 @@ -29,6 +29,8 @@ Extension Modules ----------------- +- Bug #869197: os.setgroups rejects long integer arguments + - Bug #1344508, Fix UNIX mmap leaking file descriptors - Patch #1338314, Bug #1336623: fix tarfile so it can extract Modified: python/branches/release24-maint/Modules/posixmodule.c ============================================================================== --- python/branches/release24-maint/Modules/posixmodule.c (original) +++ python/branches/release24-maint/Modules/posixmodule.c Tue Nov 22 20:31:08 2005 @@ -4850,13 +4850,38 @@ if (!elem) return NULL; if (!PyInt_Check(elem)) { - PyErr_SetString(PyExc_TypeError, - "groups must be integers"); - Py_DECREF(elem); - return NULL; + if (!PyLong_Check(elem)) { + PyErr_SetString(PyExc_TypeError, + "groups must be integers"); + Py_DECREF(elem); + return NULL; + } else { + unsigned long x = PyLong_AsUnsignedLong(elem); + if (PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "group id too big"); + Py_DECREF(elem); + return NULL; + } + grouplist[i] = x; + /* read back the value to see if it fitted in gid_t */ + if (grouplist[i] != x) { + PyErr_SetString(PyExc_TypeError, + "group id too big"); + Py_DECREF(elem); + return NULL; + } + } + } else { + long x = PyInt_AsLong(elem); + grouplist[i] = x; + if (grouplist[i] != x) { + PyErr_SetString(PyExc_TypeError, + "group id too big"); + Py_DECREF(elem); + return NULL; + } } - /* XXX: check that value fits into gid_t. */ - grouplist[i] = PyInt_AsLong(elem); Py_DECREF(elem); } From brett.cannon at python.org Tue Nov 22 20:41:56 2005 From: brett.cannon at python.org (brett.cannon@python.org) Date: Tue, 22 Nov 2005 20:41:56 +0100 (CET) Subject: [Python-checkins] commit of r41516 - peps/trunk Message-ID: <20051122194156.52A481E4023@bag.python.org> Author: brett.cannon Date: Tue Nov 22 20:41:50 2005 New Revision: 41516 Modified: peps/trunk/pep-0352.txt Log: Add a note that deprecations in 2.9 are optional since they might not be desirable considering how many changes between 2.9 and 3.0 there will be and thus deprecating everything could make 2.9 rather "noisy" in terms of deprecations. Modified: peps/trunk/pep-0352.txt ============================================================================== --- peps/trunk/pep-0352.txt (original) +++ peps/trunk/pep-0352.txt Tue Nov 22 20:41:50 2005 @@ -189,6 +189,15 @@ deprecation and the raising of a DeprecationWarning for the version specifically listed. +Deprecation of features in Python 2.9 is optional. This is because it +is not known at this time if Python 2.9 (which is slated to be the last version +in the 2.x series) will actively deprecate features that will not be in 3.0 . +It is conceivable that no deprecation warnings will be used in 2.9 since +there could be such a difference between 2.9 and 3.0 that it would make 2.9 too +"noisy" in terms of warnings. Thus the proposed deprecation warnings for +Python 2.9 will be revisited when development of that version begins to +determine if they are still desired. + * Python 2.5 - introduce BaseException @@ -215,7 +224,7 @@ * Python 2.9 - - deprecate ``args`` and ``__getitem__`` + - deprecate ``args`` and ``__getitem__`` (optional) * Python 3.0 From reinhold.birkenfeld at python.org Tue Nov 22 20:42:50 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:42:50 +0100 (CET) Subject: [Python-checkins] commit of r41517 - python/trunk/Doc/lib Message-ID: <20051122194250.025B31E4023@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:42:45 2005 New Revision: 41517 Modified: python/trunk/Doc/lib/libmultifile.tex Log: Patch #1255218: libmultifile.tex: tell what a decoration is Modified: python/trunk/Doc/lib/libmultifile.tex ============================================================================== --- python/trunk/Doc/lib/libmultifile.tex (original) +++ python/trunk/Doc/lib/libmultifile.tex Tue Nov 22 20:42:45 2005 @@ -92,9 +92,9 @@ \end{methoddesc} \begin{methoddesc}{push}{str} -Push a boundary string. When an appropriately decorated version of -this boundary is found as an input line, it will be interpreted as a -section-divider or end-marker. All subsequent +Push a boundary string. When a decorated version of this boundary +is found as an input line, it will be interpreted as a section-divider +or end-marker (depending on the decoration, see \rfc{2045}). All subsequent reads will return the empty string to indicate end-of-file, until a call to \method{pop()} removes the boundary a or \method{next()} call reenables it. From reinhold.birkenfeld at python.org Tue Nov 22 20:43:10 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:43:10 +0100 (CET) Subject: [Python-checkins] commit of r41518 - python/branches/release24-maint/Doc/lib Message-ID: <20051122194310.64EF31E4023@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:43:05 2005 New Revision: 41518 Modified: python/branches/release24-maint/Doc/lib/libmultifile.tex Log: Patch #1255218: libmultifile.tex: tell what a decoration is Modified: python/branches/release24-maint/Doc/lib/libmultifile.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/libmultifile.tex (original) +++ python/branches/release24-maint/Doc/lib/libmultifile.tex Tue Nov 22 20:43:05 2005 @@ -92,9 +92,9 @@ \end{methoddesc} \begin{methoddesc}{push}{str} -Push a boundary string. When an appropriately decorated version of -this boundary is found as an input line, it will be interpreted as a -section-divider or end-marker. All subsequent +Push a boundary string. When a decorated version of this boundary +is found as an input line, it will be interpreted as a section-divider +or end-marker (depending on the decoration, see \rfc{2045}). All subsequent reads will return the empty string to indicate end-of-file, until a call to \method{pop()} removes the boundary a or \method{next()} call reenables it. From reinhold.birkenfeld at python.org Tue Nov 22 20:50:19 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:50:19 +0100 (CET) Subject: [Python-checkins] commit of r41519 - python/trunk/Doc/tut Message-ID: <20051122195019.D81861E4002@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:50:14 2005 New Revision: 41519 Modified: python/trunk/Doc/tut/tut.tex Log: Added example for the ** operator in function calls Modified: python/trunk/Doc/tut/tut.tex ============================================================================== --- python/trunk/Doc/tut/tut.tex (original) +++ python/trunk/Doc/tut/tut.tex Tue Nov 22 20:50:14 2005 @@ -1642,6 +1642,20 @@ [3, 4, 5] \end{verbatim} +In the same fashion, dictionaries can deliver keyword arguments with the +\code{**}-operator: + +\begin{verbatim} +>>> def parrot(voltage, state='a stiff', action='voom'): +... print "-- This parrot wouldn't", action, +... print "if you put", voltage, "volts through it.", +... print "E's", state, "!" +... +>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"} +>>> parrot(**d) +-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised ! +\end{verbatim} + \subsection{Lambda Forms \label{lambda}} From reinhold.birkenfeld at python.org Tue Nov 22 20:50:29 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 20:50:29 +0100 (CET) Subject: [Python-checkins] commit of r41520 - python/branches/release24-maint/Doc/tut Message-ID: <20051122195029.0C28D1E4015@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 20:50:22 2005 New Revision: 41520 Modified: python/branches/release24-maint/Doc/tut/tut.tex Log: added example for the ** operator in function calls Modified: python/branches/release24-maint/Doc/tut/tut.tex ============================================================================== --- python/branches/release24-maint/Doc/tut/tut.tex (original) +++ python/branches/release24-maint/Doc/tut/tut.tex Tue Nov 22 20:50:22 2005 @@ -1632,6 +1632,20 @@ [3, 4, 5] \end{verbatim} +In the same fashion, dictionaries can deliver keyword arguments with the +\code{**}-operator: + +\begin{verbatim} +>>> def parrot(voltage, state='a stiff', action='voom'): +... print "-- This parrot wouldn't", action, +... print "if you put", voltage, "volts through it.", +... print "E's", state, "!" +... +>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"} +>>> parrot(**d) +-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised ! +\end{verbatim} + \subsection{Lambda Forms \label{lambda}} From reinhold.birkenfeld at python.org Tue Nov 22 21:14:35 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 21:14:35 +0100 (CET) Subject: [Python-checkins] commit of r41521 - python/trunk/Doc/lib Message-ID: <20051122201435.ED9401E427E@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 21:14:29 2005 New Revision: 41521 Modified: python/trunk/Doc/lib/libos.tex Log: Bug #1357604: os.makedirs handles UNC paths Modified: python/trunk/Doc/lib/libos.tex ============================================================================== --- python/trunk/Doc/lib/libos.tex (original) +++ python/trunk/Doc/lib/libos.tex Tue Nov 22 21:14:29 2005 @@ -875,10 +875,9 @@ but makes all intermediate-level directories needed to contain the leaf directory. Throws an \exception{error} exception if the leaf directory already exists or cannot be created. The default \var{mode} -is \code{0777} (octal). This function does not properly handle UNC -paths (only relevant on Windows systems; Universal Naming Convention -paths are those that use the `\code{\e\e host\e path}' syntax). +is \code{0777} (octal). \versionadded{1.5.2} +\versionchanged[This function now handles UNC paths correctly]{2.3} \end{funcdesc} \begin{funcdesc}{pathconf}{path, name} From reinhold.birkenfeld at python.org Tue Nov 22 21:14:36 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Tue, 22 Nov 2005 21:14:36 +0100 (CET) Subject: [Python-checkins] commit of r41522 - python/branches/release24-maint/Doc/lib Message-ID: <20051122201436.B23851E427E@bag.python.org> Author: reinhold.birkenfeld Date: Tue Nov 22 21:14:30 2005 New Revision: 41522 Modified: python/branches/release24-maint/Doc/lib/libos.tex Log: Bug #1357604: os.makedirs handles UNC paths Modified: python/branches/release24-maint/Doc/lib/libos.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/libos.tex (original) +++ python/branches/release24-maint/Doc/lib/libos.tex Tue Nov 22 21:14:30 2005 @@ -855,10 +855,9 @@ but makes all intermediate-level directories needed to contain the leaf directory. Throws an \exception{error} exception if the leaf directory already exists or cannot be created. The default \var{mode} -is \code{0777} (octal). This function does not properly handle UNC -paths (only relevant on Windows systems; Universal Naming Convention -paths are those that use the `\code{\e\e host\e path}' syntax). +is \code{0777} (octal). \versionadded{1.5.2} +\versionchanged[This function now handles UNC paths correctly]{2.3} \end{funcdesc} \begin{funcdesc}{pathconf}{path, name} From kurt.kaiser at python.org Tue Nov 22 22:09:42 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Tue, 22 Nov 2005 22:09:42 +0100 (CET) Subject: [Python-checkins] commit of r41523 - python/trunk/Lib/idlelib Message-ID: <20051122210942.97C321E40A5@bag.python.org> Author: kurt.kaiser Date: Tue Nov 22 22:09:37 2005 New Revision: 41523 Modified: python/trunk/Lib/idlelib/NEWS.txt python/trunk/Lib/idlelib/keybindingDialog.py Log: 1. Made advanced keybinding dialog functional. 2. Allow binding of movement keys Modified: python/trunk/Lib/idlelib/NEWS.txt ============================================================================== --- python/trunk/Lib/idlelib/NEWS.txt (original) +++ python/trunk/Lib/idlelib/NEWS.txt Tue Nov 22 22:09:37 2005 @@ -1,7 +1,14 @@ What's New in IDLE 1.2a0? ======================= -*Release date: XX-XXX-2005* +*Release date: XX-XXX-2006* + +- Options / Keys / Advanced dialog made functional. Also, allow binding + of 'movement' keys. + +- 'syntax' patch adds improved calltips and a new class attribute listbox. + MultiCall module allows binding multiple actions to an event. + Patch 906702 Noam Raphael - Better indentation after first line of string continuation. IDLEfork Patch 681992, Noam Raphael Modified: python/trunk/Lib/idlelib/keybindingDialog.py ============================================================================== --- python/trunk/Lib/idlelib/keybindingDialog.py (original) +++ python/trunk/Lib/idlelib/keybindingDialog.py Tue Nov 22 22:09:37 2005 @@ -26,12 +26,13 @@ self.result='' self.keyString=StringVar(self) self.keyString.set('') - self.SetModifiersForPlatform() + self.SetModifiersForPlatform() # set self.modifiers, self.modifier_label self.modifier_vars = [] for modifier in self.modifiers: variable = StringVar(self) variable.set('') self.modifier_vars.append(variable) + self.advanced = False self.CreateWidgets() self.LoadFinalKeyList() self.withdraw() #hide while setting geometry @@ -136,7 +137,7 @@ self.modifiers = ['Shift', 'Control', 'Option', 'Command'] else: self.modifiers = ['Control', 'Alt', 'Shift'] - self.modifier_label = {'Control': 'Ctrl'} + self.modifier_label = {'Control': 'Ctrl'} # short name def ToggleLevel(self): if self.buttonLevel.cget('text')[:8]=='Advanced': @@ -145,11 +146,13 @@ self.frameKeySeqAdvanced.lift() self.frameHelpAdvanced.lift() self.entryKeysAdvanced.focus_set() + self.advanced = True else: self.ClearKeySeq() self.buttonLevel.config(text='Advanced Key Binding Entry >>') self.frameKeySeqBasic.lift() self.frameControlsBasic.lift() + self.advanced = False def FinalKeySelected(self,event): self.BuildKeyString() @@ -208,7 +211,7 @@ return key def OK(self, event=None): - if self.KeysOK(): + if self.advanced or self.KeysOK(): # doesn't check advanced string yet self.result=self.keyString.get() self.destroy() @@ -217,7 +220,12 @@ self.destroy() def KeysOK(self): - "Validity check on user's keybinding selection" + '''Validity check on user's 'basic' keybinding selection. + + Doesn't check the string produced by the advanced dialog because + 'modifiers' isn't set. + + ''' keys = self.keyString.get() keys.strip() finalKey = self.listKeysFinal.get(ANCHOR) @@ -232,20 +240,19 @@ elif not keys.endswith('>'): tkMessageBox.showerror(title=title, parent=self, message='Missing the final Key') - elif not modifiers and finalKey not in self.functionKeys: + elif (not modifiers + and finalKey not in self.functionKeys + self.moveKeys): tkMessageBox.showerror(title=title, parent=self, message='No modifier key(s) specified.') elif (modifiers == ['Shift']) \ and (finalKey not in - self.functionKeys + ('Tab', 'Space')): - msg = 'The shift modifier by itself may not be used with' \ - ' this key symbol; only with F1-F12, Tab, or Space' - tkMessageBox.showerror(title=title, parent=self, - message=msg) + self.functionKeys + self.moveKeys + ('Tab', 'Space')): + msg = 'The shift modifier by itself may not be used with'\ + ' this key symbol.' + tkMessageBox.showerror(title=title, parent=self, message=msg) elif keySequence in self.currentKeySequences: msg = 'This key combination is already in use.' - tkMessageBox.showerror(title=title, parent=self, - message=msg) + tkMessageBox.showerror(title=title, parent=self, message=msg) else: keysOK = True return keysOK From brett.cannon at python.org Wed Nov 23 03:15:56 2005 From: brett.cannon at python.org (brett.cannon@python.org) Date: Wed, 23 Nov 2005 03:15:56 +0100 (CET) Subject: [Python-checkins] commit of r41524 - in python/trunk: Lib Misc Message-ID: <20051123021556.723E51E4002@bag.python.org> Author: brett.cannon Date: Wed Nov 23 03:15:50 2005 New Revision: 41524 Modified: python/trunk/Lib/threading.py python/trunk/Misc/ACKS python/trunk/Misc/NEWS Log: Prevent threading.Thread.join() from blocking when a previous call raised an exception (e.g., passing in an illegal argument). Applies patch #1314396. Thanks Eric Blossom. Modified: python/trunk/Lib/threading.py ============================================================================== --- python/trunk/Lib/threading.py (original) +++ python/trunk/Lib/threading.py Wed Nov 23 03:15:50 2005 @@ -536,24 +536,26 @@ if not self.__stopped: self._note("%s.join(): waiting until thread stops", self) self.__block.acquire() - if timeout is None: - while not self.__stopped: - self.__block.wait() - if __debug__: - self._note("%s.join(): thread stopped", self) - else: - deadline = _time() + timeout - while not self.__stopped: - delay = deadline - _time() - if delay <= 0: - if __debug__: - self._note("%s.join(): timed out", self) - break - self.__block.wait(delay) - else: + try: + if timeout is None: + while not self.__stopped: + self.__block.wait() if __debug__: self._note("%s.join(): thread stopped", self) - self.__block.release() + else: + deadline = _time() + timeout + while not self.__stopped: + delay = deadline - _time() + if delay <= 0: + if __debug__: + self._note("%s.join(): timed out", self) + break + self.__block.wait(delay) + else: + if __debug__: + self._note("%s.join(): thread stopped", self) + finally: + self.__block.release() def getName(self): assert self.__initialized, "Thread.__init__() not called" Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Wed Nov 23 03:15:50 2005 @@ -63,6 +63,7 @@ Martin Bless Pablo Bleyer Erik van Blokland +Eric Blossom Finn Bock Paul Boddie Matthew Boedicker Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Nov 23 03:15:50 2005 @@ -284,6 +284,10 @@ Library ------- +- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception + is raised within the method itself on a previous call (e.g., passing in an + illegal argument) + - Bug #1340337: change time.strptime() to always return ValueError when there is an error in the format string. From brett.cannon at python.org Wed Nov 23 03:19:24 2005 From: brett.cannon at python.org (brett.cannon@python.org) Date: Wed, 23 Nov 2005 03:19:24 +0100 (CET) Subject: [Python-checkins] commit of r41525 - in python/branches/release24-maint: Lib Misc Message-ID: <20051123021924.2FA841E4002@bag.python.org> Author: brett.cannon Date: Wed Nov 23 03:19:18 2005 New Revision: 41525 Modified: python/branches/release24-maint/Lib/threading.py python/branches/release24-maint/Misc/NEWS Log: Backport of patch #1314396: prevent threading.Thread.join() from blocking if a previous call raised an exception (e.g., calling it with an illegal argument). Modified: python/branches/release24-maint/Lib/threading.py ============================================================================== --- python/branches/release24-maint/Lib/threading.py (original) +++ python/branches/release24-maint/Lib/threading.py Wed Nov 23 03:19:18 2005 @@ -534,24 +534,26 @@ if not self.__stopped: self._note("%s.join(): waiting until thread stops", self) self.__block.acquire() - if timeout is None: - while not self.__stopped: - self.__block.wait() - if __debug__: - self._note("%s.join(): thread stopped", self) - else: - deadline = _time() + timeout - while not self.__stopped: - delay = deadline - _time() - if delay <= 0: - if __debug__: - self._note("%s.join(): timed out", self) - break - self.__block.wait(delay) - else: + try: + if timeout is None: + while not self.__stopped: + self.__block.wait() if __debug__: self._note("%s.join(): thread stopped", self) - self.__block.release() + else: + deadline = _time() + timeout + while not self.__stopped: + delay = deadline - _time() + if delay <= 0: + if __debug__: + self._note("%s.join(): timed out", self) + break + self.__block.wait(delay) + else: + if __debug__: + self._note("%s.join(): thread stopped", self) + finally: + self.__block.release() def getName(self): assert self.__initialized, "Thread.__init__() not called" Modified: python/branches/release24-maint/Misc/NEWS ============================================================================== --- python/branches/release24-maint/Misc/NEWS (original) +++ python/branches/release24-maint/Misc/NEWS Wed Nov 23 03:19:18 2005 @@ -44,6 +44,10 @@ Library ------- +- Patch #1314396: Prevent threading.Thread.join() from blocking if a previous + call caused an exception to be raised (e.g., calling join() with an illegal + argument). + - urllib.unquote() now handles Unicode strings correctly. Formerly, it would either ignore the substitution or raise UnicodeDecodeError. From kurt.kaiser at python.org Wed Nov 23 16:12:25 2005 From: kurt.kaiser at python.org (kurt.kaiser@python.org) Date: Wed, 23 Nov 2005 16:12:25 +0100 (CET) Subject: [Python-checkins] commit of r41526 - python/trunk/Lib/idlelib Message-ID: <20051123151225.57DD21E4761@bag.python.org> Author: kurt.kaiser Date: Wed Nov 23 16:12:19 2005 New Revision: 41526 Modified: python/trunk/Lib/idlelib/ToolTip.py Log: Fix main() call Patch 1315161 sebastien blanchet Modified: python/trunk/Lib/idlelib/ToolTip.py ============================================================================== --- python/trunk/Lib/idlelib/ToolTip.py (original) +++ python/trunk/Lib/idlelib/ToolTip.py Wed Nov 23 16:12:19 2005 @@ -83,7 +83,7 @@ b.pack() root.update() tip = ListboxToolTip(b, ["Hello", "world"]) + root.mainloop() - # root.mainloop() # not in idle - -main() +if __name__ == '__main__': + main() From reinhold.birkenfeld at python.org Thu Nov 24 16:37:48 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Thu, 24 Nov 2005 16:37:48 +0100 (CET) Subject: [Python-checkins] commit of r41527 - in python/trunk: Doc/api Misc Python Message-ID: <20051124153748.23D8C1E4046@bag.python.org> Author: reinhold.birkenfeld Date: Thu Nov 24 16:37:42 2005 New Revision: 41527 Modified: python/trunk/Doc/api/utilities.tex python/trunk/Misc/NEWS python/trunk/Python/modsupport.c Log: bug #1281408: make Py_BuildValue work with unsigned longs and long longs Modified: python/trunk/Doc/api/utilities.tex ============================================================================== --- python/trunk/Doc/api/utilities.tex (original) +++ python/trunk/Doc/api/utilities.tex Thu Nov 24 16:37:42 2005 @@ -836,14 +836,36 @@ Convert a plain C \ctype{int} to a Python integer object. \item[\samp{b} (integer) {[char]}] - Same as \samp{i}. + Convert a plain C \ctype{char} to a Python integer object. \item[\samp{h} (integer) {[short int]}] - Same as \samp{i}. + Convert a plain C \ctype{short int} to a Python integer object. \item[\samp{l} (integer) {[long int]}] Convert a C \ctype{long int} to a Python integer object. + \item[\samp{B} (integer) {[unsigned char]}] + Convert a C \ctype{unsigned char} to a Python integer object. + + \item[\samp{H} (integer) {[unsigned short int]}] + Convert a C \ctype{unsigned short int} to a Python integer object. + + \item[\samp{I} (integer/long) {[unsigned int]}] + Convert a C \ctype{unsigned int} to a Python integer object + or a Python long integer object, if it is larger than \code{sys.maxint}. + + \item[\samp{k} (integer/long) {[unsigned long]}] + Convert a C \ctype{unsigned long} to a Python integer object + or a Python long integer object, if it is larger than \code{sys.maxint}. + + \item[\samp{L} (long) {[PY_LONG_LONG]}] + Convert a C \ctype{long long} to a Python long integer object. Only + available on platforms that support \ctype{long long}. + + \item[\samp{K} (long) {[unsigned PY_LONG_LONG]}] + Convert a C \ctype{unsigned long long} to a Python long integer object. + Only available on platforms that support \ctype{unsigned long long}. + \item[\samp{c} (string of length 1) {[char]}] Convert a C \ctype{int} representing a character to a Python string of length 1. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Nov 24 16:37:42 2005 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Bug #1281408: Py_BuildValue now works correct even with unsigned longs + and long longs. + - SF Bug #1350188, "setdlopenflags" leads to crash upon "import" It was possible dlerror() returns a NULL pointer, use a default error message in this case. Modified: python/trunk/Python/modsupport.c ============================================================================== --- python/trunk/Python/modsupport.c (original) +++ python/trunk/Python/modsupport.c Thu Nov 24 16:37:42 2005 @@ -303,18 +303,35 @@ case 'H': return PyInt_FromLong((long)va_arg(*p_va, unsigned int)); + case 'I': + { + unsigned int n; + n = va_arg(*p_va, unsigned int); + if (n > PyInt_GetMax()) + return PyLong_FromUnsignedLong((unsigned long)n); + else + return PyInt_FromLong(n); + } + case 'l': - return PyInt_FromLong((long)va_arg(*p_va, long)); + return PyInt_FromLong(va_arg(*p_va, long)); case 'k': - return PyInt_FromLong((long)va_arg(*p_va, unsigned long)); + { + unsigned long n; + n = va_arg(*p_va, unsigned long); + if (n > PyInt_GetMax()) + return PyLong_FromUnsignedLong(n); + else + return PyInt_FromLong(n); + } #ifdef HAVE_LONG_LONG case 'L': return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, PY_LONG_LONG)); case 'K': - return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG)); + return PyLong_FromUnsignedLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG)); #endif #ifdef Py_USING_UNICODE case 'u': From reinhold.birkenfeld at python.org Thu Nov 24 16:38:59 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Thu, 24 Nov 2005 16:38:59 +0100 (CET) Subject: [Python-checkins] commit of r41528 - in python/branches/release24-maint: Doc/api Misc Python Message-ID: <20051124153859.AED701E4031@bag.python.org> Author: reinhold.birkenfeld Date: Thu Nov 24 16:38:54 2005 New Revision: 41528 Modified: python/branches/release24-maint/Doc/api/utilities.tex python/branches/release24-maint/Misc/NEWS python/branches/release24-maint/Python/modsupport.c Log: bug #1281408: make Py_BuildValue work with unsigned longs and long longs Modified: python/branches/release24-maint/Doc/api/utilities.tex ============================================================================== --- python/branches/release24-maint/Doc/api/utilities.tex (original) +++ python/branches/release24-maint/Doc/api/utilities.tex Thu Nov 24 16:38:54 2005 @@ -836,14 +836,36 @@ Convert a plain C \ctype{int} to a Python integer object. \item[\samp{b} (integer) {[char]}] - Same as \samp{i}. + Convert a plain C \ctype{char} to a Python integer object. \item[\samp{h} (integer) {[short int]}] - Same as \samp{i}. + Convert a plain C \ctype{short int} to a Python integer object. \item[\samp{l} (integer) {[long int]}] Convert a C \ctype{long int} to a Python integer object. + \item[\samp{B} (integer) {[unsigned char]}] + Convert a C \ctype{unsigned char} to a Python integer object. + + \item[\samp{H} (integer) {[unsigned short int]}] + Convert a C \ctype{unsigned short int} to a Python integer object. + + \item[\samp{I} (integer/long) {[unsigned int]}] + Convert a C \ctype{unsigned int} to a Python integer object + or a Python long integer object, if it is larger than \code{sys.maxint}. + + \item[\samp{k} (integer/long) {[unsigned long]}] + Convert a C \ctype{unsigned long} to a Python integer object + or a Python long integer object, if it is larger than \code{sys.maxint}. + + \item[\samp{L} (long) {[PY_LONG_LONG]}] + Convert a C \ctype{long long} to a Python long integer object. Only + available on platforms that support \ctype{long long}. + + \item[\samp{K} (long) {[unsigned PY_LONG_LONG]}] + Convert a C \ctype{unsigned long long} to a Python long integer object. + Only available on platforms that support \ctype{unsigned long long}. + \item[\samp{c} (string of length 1) {[char]}] Convert a C \ctype{int} representing a character to a Python string of length 1. Modified: python/branches/release24-maint/Misc/NEWS ============================================================================== --- python/branches/release24-maint/Misc/NEWS (original) +++ python/branches/release24-maint/Misc/NEWS Thu Nov 24 16:38:54 2005 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Bug #1281408: Py_BuildValue now works correct even with unsigned longs + and long longs. + - SF Bug #1350188, "setdlopenflags" leads to crash upon "import" It was possible dlerror() returns a NULL pointer, use a default error message in this case. Modified: python/branches/release24-maint/Python/modsupport.c ============================================================================== --- python/branches/release24-maint/Python/modsupport.c (original) +++ python/branches/release24-maint/Python/modsupport.c Thu Nov 24 16:38:54 2005 @@ -303,18 +303,35 @@ case 'H': return PyInt_FromLong((long)va_arg(*p_va, unsigned int)); + case 'I': + { + unsigned int n; + n = va_arg(*p_va, unsigned int); + if (n > PyInt_GetMax()) + return PyLong_FromUnsignedLong((unsigned long)n); + else + return PyInt_FromLong(n); + } + case 'l': - return PyInt_FromLong((long)va_arg(*p_va, long)); + return PyInt_FromLong(va_arg(*p_va, long)); case 'k': - return PyInt_FromLong((long)va_arg(*p_va, unsigned long)); + { + unsigned long n; + n = va_arg(*p_va, unsigned long); + if (n > PyInt_GetMax()) + return PyLong_FromUnsignedLong(n); + else + return PyInt_FromLong(n); + } #ifdef HAVE_LONG_LONG case 'L': return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, PY_LONG_LONG)); case 'K': - return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG)); + return PyLong_FromUnsignedLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG)); #endif #ifdef Py_USING_UNICODE case 'u': From Jack.Jansen at cwi.nl Thu Nov 24 22:12:16 2005 From: Jack.Jansen at cwi.nl (Jack Jansen) Date: Thu, 24 Nov 2005 22:12:16 +0100 Subject: [Python-checkins] commit of r41528 - in python/branches/release24-maint: Doc/api Misc Python In-Reply-To: <20051124153859.AED701E4031@bag.python.org> References: <20051124153859.AED701E4031@bag.python.org> Message-ID: <519B39C3-AF14-46E0-8970-D8A947A45DE4@cwi.nl> This fix looks suspect to me, especially for the maintenance branch... The "k" format was especially introduced for bitpatterns, so this fix will break any code of the form >>> if call_returning_k_object() < 0: print "error" -- Jack Jansen, <Jack.Jansen at cwi.nl>, http://www.cwi.nl/~jack If I can't dance I don't want to be part of your revolution -- Emma Goldman From neal.norwitz at python.org Thu Nov 24 22:58:56 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 24 Nov 2005 22:58:56 +0100 (CET) Subject: [Python-checkins] commit of r41529 - python/trunk/Lib/test Message-ID: <20051124215856.E08ED1E400B@bag.python.org> Author: neal.norwitz Date: Thu Nov 24 22:58:51 2005 New Revision: 41529 Modified: python/trunk/Lib/test/test_sort.py Log: move test into a unittest.TestCase, no functional changes Modified: python/trunk/Lib/test/test_sort.py ============================================================================== --- python/trunk/Lib/test/test_sort.py (original) +++ python/trunk/Lib/test/test_sort.py Thu Nov 24 22:58:51 2005 @@ -1,7 +1,9 @@ -from test.test_support import verbose +from test import test_support import random -from UserList import UserList +import sys +import unittest +verbose = test_support.verbose nerrors = 0 def check(tag, expected, raw, compare=None): @@ -36,91 +38,88 @@ nerrors += 1 return -# Try a variety of sizes at and around powers of 2, and at powers of 10. -sizes = [0] -for power in range(1, 10): - n = 2 ** power - sizes.extend(range(n-1, n+2)) -sizes.extend([10, 100, 1000]) +class TestBase(unittest.TestCase): + def testStressfully(self): + # Try a variety of sizes at and around powers of 2, and at powers of 10. + sizes = [0] + for power in range(1, 10): + n = 2 ** power + sizes.extend(range(n-1, n+2)) + sizes.extend([10, 100, 1000]) -class Complains(object): - maybe_complain = True + class Complains(object): + maybe_complain = True - def __init__(self, i): - self.i = i + def __init__(self, i): + self.i = i - def __lt__(self, other): - if Complains.maybe_complain and random.random() < 0.001: - if verbose: - print " complaining at", self, other - raise RuntimeError - return self.i < other.i - - def __repr__(self): - return "Complains(%d)" % self.i - -class Stable(object): - def __init__(self, key, i): - self.key = key - self.index = i + def __lt__(self, other): + if Complains.maybe_complain and random.random() < 0.001: + if verbose: + print " complaining at", self, other + raise RuntimeError + return self.i < other.i - def __cmp__(self, other): - return cmp(self.key, other.key) + def __repr__(self): + return "Complains(%d)" % self.i - def __repr__(self): - return "Stable(%d, %d)" % (self.key, self.index) + class Stable(object): + def __init__(self, key, i): + self.key = key + self.index = i -for n in sizes: - x = range(n) - if verbose: - print "Testing size", n + def __cmp__(self, other): + return cmp(self.key, other.key) - s = x[:] - check("identity", x, s) + def __repr__(self): + return "Stable(%d, %d)" % (self.key, self.index) - s = x[:] - s.reverse() - check("reversed", x, s) - - s = x[:] - random.shuffle(s) - check("random permutation", x, s) - - y = x[:] - y.reverse() - s = x[:] - check("reversed via function", y, s, lambda a, b: cmp(b, a)) + for n in sizes: + x = range(n) + if verbose: + print "Testing size", n - if verbose: - print " Checking against an insane comparison function." - print " If the implementation isn't careful, this may segfault." - s = x[:] - s.sort(lambda a, b: int(random.random() * 3) - 1) - check("an insane function left some permutation", x, s) - - x = [Complains(i) for i in x] - s = x[:] - random.shuffle(s) - Complains.maybe_complain = True - it_complained = False - try: - s.sort() - except RuntimeError: - it_complained = True - if it_complained: - Complains.maybe_complain = False - check("exception during sort left some permutation", x, s) - - s = [Stable(random.randrange(10), i) for i in xrange(n)] - augmented = [(e, e.index) for e in s] - augmented.sort() # forced stable because ties broken by index - x = [e for e, i in augmented] # a stable sort of s - check("stability", x, s) + s = x[:] + check("identity", x, s) + s = x[:] + s.reverse() + check("reversed", x, s) + + s = x[:] + random.shuffle(s) + check("random permutation", x, s) + + y = x[:] + y.reverse() + s = x[:] + check("reversed via function", y, s, lambda a, b: cmp(b, a)) -import unittest -from test import test_support -import sys + if verbose: + print " Checking against an insane comparison function." + print " If the implementation isn't careful, this may segfault." + s = x[:] + s.sort(lambda a, b: int(random.random() * 3) - 1) + check("an insane function left some permutation", x, s) + + x = [Complains(i) for i in x] + s = x[:] + random.shuffle(s) + Complains.maybe_complain = True + it_complained = False + try: + s.sort() + except RuntimeError: + it_complained = True + if it_complained: + Complains.maybe_complain = False + check("exception during sort left some permutation", x, s) + + s = [Stable(random.randrange(10), i) for i in xrange(n)] + augmented = [(e, e.index) for e in s] + augmented.sort() # forced stable because ties broken by index + x = [e for e, i in augmented] # a stable sort of s + check("stability", x, s) #============================================================================== @@ -269,6 +268,7 @@ def test_main(verbose=None): test_classes = ( + TestBase, TestDecorateSortUndecorate, TestBugs, ) From neal.norwitz at python.org Thu Nov 24 23:01:02 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 24 Nov 2005 23:01:02 +0100 (CET) Subject: [Python-checkins] commit of r41530 - python/trunk/Lib/test Message-ID: <20051124220102.316B81E400B@bag.python.org> Author: neal.norwitz Date: Thu Nov 24 23:00:56 2005 New Revision: 41530 Modified: python/trunk/Lib/test/test_unicode.py Log: Move registration of the codec search function to the module scope so it is only executed once. Otherwise the same search function is repeated added to the codec search path when regrtest is run with -R and leaks are reported. Modified: python/trunk/Lib/test/test_unicode.py ============================================================================== --- python/trunk/Lib/test/test_unicode.py (original) +++ python/trunk/Lib/test/test_unicode.py Thu Nov 24 23:00:56 2005 @@ -9,6 +9,24 @@ import unittest, sys, string, codecs, new from test import test_support, string_tests +# Error handling (bad decoder return) +def search_function(encoding): + def decode1(input, errors="strict"): + return 42 # not a tuple + def encode1(input, errors="strict"): + return 42 # not a tuple + def encode2(input, errors="strict"): + return (42, 42) # no unicode + def decode2(input, errors="strict"): + return (42, 42) # no unicode + if encoding=="test.unicode1": + return (encode1, decode1, None, None) + elif encoding=="test.unicode2": + return (encode2, decode2, None, None) + else: + return None +codecs.register(search_function) + class UnicodeTest( string_tests.CommonTest, string_tests.MixinStrUnicodeUserStringTest, @@ -567,23 +585,6 @@ # Error handling (truncated escape sequence) self.assertRaises(UnicodeError, "\\".decode, "unicode-escape") - # Error handling (bad decoder return) - def search_function(encoding): - def decode1(input, errors="strict"): - return 42 # not a tuple - def encode1(input, errors="strict"): - return 42 # not a tuple - def encode2(input, errors="strict"): - return (42, 42) # no unicode - def decode2(input, errors="strict"): - return (42, 42) # no unicode - if encoding=="test.unicode1": - return (encode1, decode1, None, None) - elif encoding=="test.unicode2": - return (encode2, decode2, None, None) - else: - return None - codecs.register(search_function) self.assertRaises(TypeError, "hello".decode, "test.unicode1") self.assertRaises(TypeError, unicode, "hello", "test.unicode2") self.assertRaises(TypeError, u"hello".encode, "test.unicode1") From neal.norwitz at python.org Thu Nov 24 23:09:24 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Thu, 24 Nov 2005 23:09:24 +0100 (CET) Subject: [Python-checkins] commit of r41531 - python/trunk/Python Message-ID: <20051124220924.7931A1E400B@bag.python.org> Author: neal.norwitz Date: Thu Nov 24 23:09:18 2005 New Revision: 41531 Modified: python/trunk/Python/codecs.c python/trunk/Python/compile.c python/trunk/Python/symtable.c Log: Fix a few more ref leaks. Backport candidate Modified: python/trunk/Python/codecs.c ============================================================================== --- python/trunk/Python/codecs.c (original) +++ python/trunk/Python/codecs.c Thu Nov 24 23:09:18 2005 @@ -36,8 +36,7 @@ goto onError; } if (!PyCallable_Check(search_function)) { - PyErr_SetString(PyExc_TypeError, - "argument must be callable"); + PyErr_SetString(PyExc_TypeError, "argument must be callable"); goto onError; } return PyList_Append(interp->codec_search_path, search_function); @@ -305,7 +304,7 @@ const char *errors) { PyObject *encoder = NULL; - PyObject *args = NULL, *result; + PyObject *args = NULL, *result = NULL; PyObject *v; encoder = PyCodec_Encoder(encoding); @@ -336,6 +335,7 @@ return v; onError: + Py_XDECREF(result); Py_XDECREF(args); Py_XDECREF(encoder); return NULL; Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Thu Nov 24 23:09:18 2005 @@ -1801,6 +1801,7 @@ if (k == NULL) return -1; v = PyDict_GetItem(dict, k); + Py_DECREF(k); if (v == NULL) return -1; return PyInt_AS_LONG(v); @@ -2464,6 +2465,7 @@ } ADDOP_O(c, LOAD_CONST, names, consts); + Py_DECREF(names); ADDOP_NAME(c, IMPORT_NAME, s->v.ImportFrom.module, names); for (i = 0; i < n; i++) { alias_ty alias = asdl_seq_GET(s->v.ImportFrom.names, i); Modified: python/trunk/Python/symtable.c ============================================================================== --- python/trunk/Python/symtable.c (original) +++ python/trunk/Python/symtable.c Thu Nov 24 23:09:18 2005 @@ -1278,8 +1278,10 @@ else { if (st->st_cur->ste_type != ModuleBlock) { if (!symtable_warn(st, - "import * only allowed at module level")) + "import * only allowed at module level")) { + Py_DECREF(store_name); return 0; + } } st->st_cur->ste_unoptimized |= OPT_IMPORT_STAR; Py_DECREF(store_name); From neal.norwitz at python.org Fri Nov 25 00:28:42 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 00:28:42 +0100 (CET) Subject: [Python-checkins] commit of r41532 - python/trunk/Lib/test Message-ID: <20051124232842.5D76A1E400F@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 00:28:37 2005 New Revision: 41532 Modified: python/trunk/Lib/test/test_mutants.py Log: Fix typo in comment. Delete globals which contain variable information at the end of the test. This makes the test stable (no reported leaks) when running regrtest -R to find reference leaks. Modified: python/trunk/Lib/test/test_mutants.py ============================================================================== --- python/trunk/Lib/test/test_mutants.py (original) +++ python/trunk/Lib/test/test_mutants.py Fri Nov 25 00:28:37 2005 @@ -36,7 +36,7 @@ dict1keys = [] dict2keys = [] -# Global flag telling maybe_mutate() wether to *consider* mutating. +# Global flag telling maybe_mutate() whether to *consider* mutating. mutate = 0 # If global mutate is true, consider mutating a dict. May or may not @@ -281,3 +281,4 @@ os.unlink(TESTFN) del dict +del dict1, dict2, dict1keys, dict2keys From neal.norwitz at python.org Fri Nov 25 03:02:55 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 03:02:55 +0100 (CET) Subject: [Python-checkins] commit of r41533 - python/trunk/Lib Message-ID: <20051125020255.8C33C1E400B@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 03:02:50 2005 New Revision: 41533 Modified: python/trunk/Lib/_threading_local.py Log: Fix some comment typos Modified: python/trunk/Lib/_threading_local.py ============================================================================== --- python/trunk/Lib/_threading_local.py (original) +++ python/trunk/Lib/_threading_local.py Fri Nov 25 03:02:50 2005 @@ -149,7 +149,7 @@ raise TypeError("Initialization arguments are not supported") # We need to create the thread dict in anticipation of - # __init__ being called, to make sire we don't cal it + # __init__ being called, to make sure we don't call it # again ourselves. dict = object.__getattribute__(self, '__dict__') currentThread().__dict__[key] = dict From neal.norwitz at python.org Fri Nov 25 03:55:54 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 03:55:54 +0100 (CET) Subject: [Python-checkins] commit of r41534 - python/trunk/Lib/test Message-ID: <20051125025554.AD1031E400B@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 03:55:49 2005 New Revision: 41534 Modified: python/trunk/Lib/test/regrtest.py Log: Cleanup a bit more references so test_urllibnet is stable (test_urllib2 is sometimes stable, at least in isolation) Modified: python/trunk/Lib/test/regrtest.py ============================================================================== --- python/trunk/Lib/test/regrtest.py (original) +++ python/trunk/Lib/test/regrtest.py Fri Nov 25 03:55:49 2005 @@ -490,8 +490,8 @@ pic = sys.path_importer_cache.copy() import gc def cleanup(): - import _strptime, urlparse, warnings, dircache - import linecache + import _strptime, linecache, warnings, dircache + import urlparse, urllib, urllib2 from distutils.dir_util import _path_created _path_created.clear() warnings.filters[:] = fs @@ -499,6 +499,8 @@ sre.purge() _strptime._regex_cache.clear() urlparse.clear_cache() + urllib.urlcleanup() + urllib2.install_opener(None) copy_reg.dispatch_table.clear() copy_reg.dispatch_table.update(ps) sys.path_importer_cache.clear() From neal.norwitz at python.org Fri Nov 25 04:14:05 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 04:14:05 +0100 (CET) Subject: [Python-checkins] commit of r41535 - python/trunk/Lib Message-ID: <20051125031405.BE3E11E400B@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 04:14:00 2005 New Revision: 41535 Modified: python/trunk/Lib/symtable.py Log: Get symtable to limp along, can run compiler/symbols.py. Not saying much, needs more work. Modified: python/trunk/Lib/symtable.py ============================================================================== --- python/trunk/Lib/symtable.py (original) +++ python/trunk/Lib/symtable.py Fri Nov 25 04:14:00 2005 @@ -13,7 +13,10 @@ def symtable(code, filename, compile_type): raw = _symtable.symtable(code, filename, compile_type) - return newSymbolTable(raw[0], filename) + for top in raw.itervalues(): + if top.name == 'top': + break + return newSymbolTable(top, filename) class SymbolTableFactory: def __init__(self): From neal.norwitz at python.org Fri Nov 25 04:15:54 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 04:15:54 +0100 (CET) Subject: [Python-checkins] commit of r41536 - python/trunk/Lib/test Message-ID: <20051125031554.D370F1E400B@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 04:15:49 2005 New Revision: 41536 Modified: python/trunk/Lib/test/test_symtable.py Log: Test is still disabled, but access through public module Modified: python/trunk/Lib/test/test_symtable.py ============================================================================== --- python/trunk/Lib/test/test_symtable.py (original) +++ python/trunk/Lib/test/test_symtable.py Fri Nov 25 04:15:49 2005 @@ -1,8 +1,8 @@ from test.test_support import vereq, TestFailed -import _symtable +import symtable -symbols = _symtable.symtable("def f(x): return x", "?", "exec") +symbols = symtable.symtable("def f(x): return x", "?", "exec") ## XXX ## Test disabled because symtable module needs to be rewritten for new compiler From neal.norwitz at python.org Fri Nov 25 04:16:39 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 04:16:39 +0100 (CET) Subject: [Python-checkins] commit of r41537 - python/trunk/Lib/compiler Message-ID: <20051125031639.86EEB1E400B@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 04:16:34 2005 New Revision: 41537 Modified: python/trunk/Lib/compiler/symbols.py Log: Use sorted() builtin Modified: python/trunk/Lib/compiler/symbols.py ============================================================================== --- python/trunk/Lib/compiler/symbols.py (original) +++ python/trunk/Lib/compiler/symbols.py Fri Nov 25 04:16:34 2005 @@ -409,13 +409,8 @@ scope.generator = 1 self.visit(node.value, scope) -def sort(l): - l = l[:] - l.sort() - return l - def list_eq(l1, l2): - return sort(l1) == sort(l2) + return sorted(l1) == sorted(l2) if __name__ == "__main__": import sys @@ -443,8 +438,8 @@ if not list_eq(mod_names, names2): print print "oops", file - print sort(mod_names) - print sort(names2) + print sorted(mod_names) + print sorted(names2) sys.exit(-1) d = {} @@ -463,6 +458,6 @@ if not list_eq(get_names(s.get_namespace()), l[0].get_names()): print s.get_name() - print sort(get_names(s.get_namespace())) - print sort(l[0].get_names()) + print sorted(get_names(s.get_namespace())) + print sorted(l[0].get_names()) sys.exit(-1) From neal.norwitz at python.org Fri Nov 25 04:18:04 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 04:18:04 +0100 (CET) Subject: [Python-checkins] commit of r41538 - python/trunk/Lib/compiler Message-ID: <20051125031804.7D0FD1E400B@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 04:17:59 2005 New Revision: 41538 Modified: python/trunk/Lib/compiler/misc.py python/trunk/Lib/compiler/pyassem.py python/trunk/Lib/compiler/pycodegen.py Log: No need for types, use isinstance Modified: python/trunk/Lib/compiler/misc.py ============================================================================== --- python/trunk/Lib/compiler/misc.py (original) +++ python/trunk/Lib/compiler/misc.py Fri Nov 25 04:17:59 2005 @@ -1,9 +1,8 @@ -import types def flatten(tup): elts = [] for elt in tup: - if type(elt) == types.TupleType: + if isinstance(elt, tuple): elts = elts + flatten(elt) else: elts.append(elt) Modified: python/trunk/Lib/compiler/pyassem.py ============================================================================== --- python/trunk/Lib/compiler/pyassem.py (original) +++ python/trunk/Lib/compiler/pyassem.py Fri Nov 25 04:17:59 2005 @@ -3,7 +3,6 @@ import dis import new import sys -import types from compiler import misc from compiler.consts \ @@ -641,7 +640,7 @@ def twobyte(val): """Convert an int argument into high and low bytes""" - assert type(val) == types.IntType + assert isinstance(val, int) return divmod(val, 256) class LineAddrTable: Modified: python/trunk/Lib/compiler/pycodegen.py ============================================================================== --- python/trunk/Lib/compiler/pycodegen.py (original) +++ python/trunk/Lib/compiler/pycodegen.py Fri Nov 25 04:17:59 2005 @@ -3,7 +3,6 @@ import marshal import struct import sys -import types from cStringIO import StringIO from compiler import ast, parse, walk, syntax @@ -1312,7 +1311,7 @@ def generateArgUnpack(self, args): for i in range(len(args)): arg = args[i] - if type(arg) == types.TupleType: + if isinstance(arg, tuple): self.emit('LOAD_FAST', '.%d' % (i * 2)) self.unpackSequence(arg) @@ -1322,7 +1321,7 @@ else: self.emit('UNPACK_TUPLE', len(tup)) for elt in tup: - if type(elt) == types.TupleType: + if isinstance(elt, tuple): self.unpackSequence(elt) else: self._nameOp('STORE', elt) @@ -1408,9 +1407,9 @@ count = 0 for i in range(len(arglist)): elt = arglist[i] - if type(elt) == types.StringType: + if isinstance(elt, str): args.append(elt) - elif type(elt) == types.TupleType: + elif isinstance(elt, tuple): args.append(TupleArg(i * 2, elt)) extra.extend(misc.flatten(elt)) count = count + 1 From neal.norwitz at python.org Fri Nov 25 04:19:03 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 04:19:03 +0100 (CET) Subject: [Python-checkins] commit of r41539 - python/trunk/Lib/compiler Message-ID: <20051125031903.98F931E400F@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 04:18:58 2005 New Revision: 41539 Modified: python/trunk/Lib/compiler/syntax.py Log: Stop looping to do nothing, just pass. Modified: python/trunk/Lib/compiler/syntax.py ============================================================================== --- python/trunk/Lib/compiler/syntax.py (original) +++ python/trunk/Lib/compiler/syntax.py Fri Nov 25 04:18:58 2005 @@ -38,8 +38,8 @@ def visitAssign(self, node): # the transformer module handles many of these - for target in node.nodes: - pass + pass +## for target in node.nodes: ## if isinstance(target, ast.AssList): ## if target.lineno is None: ## target.lineno = node.lineno From neal.norwitz at python.org Fri Nov 25 04:19:34 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Fri, 25 Nov 2005 04:19:34 +0100 (CET) Subject: [Python-checkins] commit of r41540 - python/trunk/Lib/compiler Message-ID: <20051125031934.BFD441E400B@bag.python.org> Author: neal.norwitz Date: Fri Nov 25 04:19:29 2005 New Revision: 41540 Modified: python/trunk/Lib/compiler/transformer.py Log: Remove unused _callers member. No need for types, use isinstance Modified: python/trunk/Lib/compiler/transformer.py ============================================================================== --- python/trunk/Lib/compiler/transformer.py (original) +++ python/trunk/Lib/compiler/transformer.py Fri Nov 25 04:19:29 2005 @@ -762,8 +762,6 @@ def lookup_node(self, node): return self._dispatch[node[0]] - _callers = {} - def com_node(self, node): # Note: compile.c has handling in com_node for del_stmt, pass_stmt, # break_stmt, stmt, small_stmt, flow_stmt, simple_stmt, @@ -1427,7 +1425,6 @@ symbol.factor, ] -import types _names = {} for k, v in symbol.sym_name.items(): _names[k] = v @@ -1437,9 +1434,9 @@ def debug_tree(tree): l = [] for elt in tree: - if type(elt) == types.IntType: + if isinstance(elt, int): l.append(_names.get(elt, elt)) - elif type(elt) == types.StringType: + elif isinstance(elt, str): l.append(elt) else: l.append(debug_tree(elt)) From walter.doerwald at python.org Fri Nov 25 16:22:14 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Fri, 25 Nov 2005 16:22:14 +0100 (CET) Subject: [Python-checkins] commit of r41541 - python/trunk/Lib/test Message-ID: <20051125152214.AA2C21E4007@bag.python.org> Author: walter.doerwald Date: Fri Nov 25 16:22:10 2005 New Revision: 41541 Modified: python/trunk/Lib/test/test_cmd_line.py Log: SF patch #1364545: test_cmd_line.py relied on english error messages when invoking the Python interpreter (which didn't work on non-english Windows versions). Check return codes instead. Modified: python/trunk/Lib/test/test_cmd_line.py ============================================================================== --- python/trunk/Lib/test/test_cmd_line.py (original) +++ python/trunk/Lib/test/test_cmd_line.py Fri Nov 25 16:22:10 2005 @@ -2,6 +2,7 @@ import test.test_support, unittest import sys import popen2 +import subprocess class CmdLineTest(unittest.TestCase): def start_python(self, cmd_line): @@ -11,21 +12,19 @@ outfp.close() return data + def exit_code(self, cmd_line): + return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE) + def test_directories(self): - # Does this test make sense? The message for "< ." may depend on - # the command shell, and the message for "." depends on the OS. - if sys.platform.startswith("win"): - # On WinXP w/ cmd.exe, - # "< ." gives "Access is denied.\n" - # "." gives "C:\\Code\\python\\PCbuild\\python.exe: " + - # "can't open file '.':" + - # "[Errno 13] Permission denied\n" - lookfor = " denied" # common to both cases + if sys.platform == 'win32': + # Exit code for "python .", Error 13: permission denied = 2 + expected_exit_code = 2 else: - # This is what the test looked for originally, on all platforms. - lookfor = "is a directory" - self.assertTrue(lookfor in self.start_python('.')) - self.assertTrue(lookfor in self.start_python('< .')) + # Linux has no problem with "python .", Exit code = 0 + expected_exit_code = 0 + self.assertEqual(self.exit_code('.'), expected_exit_code) + + self.assertTrue(self.exit_code('< .') != 0) def verify_valid_flag(self, cmd_line): data = self.start_python(cmd_line) From shoemaker at lalique.com Fri Nov 25 16:29:43 2005 From: shoemaker at lalique.com (Megan Figueroa) Date: Fri, 25 Nov 2005 09:29:43 -0600 Subject: [Python-checkins] Ratess will skyrocket soon Message-ID: <537f834s.6064309@msn.com> An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/python-checkins/attachments/20051125/338d03bb/attachment.html -------------- next part -------------- A non-text attachment was scrubbed... Name: snipe.1.gif Type: image/gif Size: 7620 bytes Desc: not available Url : http://mail.python.org/pipermail/python-checkins/attachments/20051125/338d03bb/snipe.1.gif From walter.doerwald at python.org Fri Nov 25 18:02:08 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Fri, 25 Nov 2005 18:02:08 +0100 (CET) Subject: [Python-checkins] commit of r41542 - python/branches/release24-maint/Lib/test Message-ID: <20051125170208.9648D1E4007@bag.python.org> Author: walter.doerwald Date: Fri Nov 25 18:02:02 2005 New Revision: 41542 Modified: python/branches/release24-maint/Lib/test/test_cmd_line.py Log: Backport checkin: SF patch #1364545: test_cmd_line.py relied on english error messages when invoking the Python interpreter (which didn't work on non-english Windows versions). Check return codes instead. Modified: python/branches/release24-maint/Lib/test/test_cmd_line.py ============================================================================== --- python/branches/release24-maint/Lib/test/test_cmd_line.py (original) +++ python/branches/release24-maint/Lib/test/test_cmd_line.py Fri Nov 25 18:02:02 2005 @@ -2,6 +2,7 @@ import test.test_support, unittest import sys import popen2 +import subprocess class CmdLineTest(unittest.TestCase): def start_python(self, cmd_line): @@ -11,9 +12,18 @@ outfp.close() return data + def exit_code(self, cmd_line): + return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE) + def test_directories(self): - self.assertTrue('is a directory' in self.start_python('.')) - self.assertTrue('is a directory' in self.start_python('< .')) + if sys.platform == 'win32': + # Exit code for "python .", Error 13: permission denied = 2 + expected_exit_code = 2 + else: + # Linux has no problem with "python .", Exit code = 0 + expected_exit_code = 0 + self.assertEqual(self.exit_code('.'), expected_exit_code) + self.assertTrue(self.exit_code('< .') != 0) def verify_valid_flag(self, cmd_line): data = self.start_python(cmd_line) From walter.doerwald at python.org Fri Nov 25 18:17:18 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Fri, 25 Nov 2005 18:17:18 +0100 (CET) Subject: [Python-checkins] commit of r41543 - python/trunk/Doc/lib Message-ID: <20051125171718.B4D101E400F@bag.python.org> Author: walter.doerwald Date: Fri Nov 25 18:17:12 2005 New Revision: 41543 Modified: python/trunk/Doc/lib/libcodecs.tex python/trunk/Doc/lib/libstdtypes.tex Log: SF patch #1364946: Add a reference link from the dcoumentation of the encode and decode methods to the documentation of the default error handlers. Modified: python/trunk/Doc/lib/libcodecs.tex ============================================================================== --- python/trunk/Doc/lib/libcodecs.tex (original) +++ python/trunk/Doc/lib/libcodecs.tex Fri Nov 25 18:17:12 2005 @@ -212,7 +212,7 @@ \end{datadesc} -\subsection{Codec Base Classes} +\subsection{Codec Base Classes \label{codec-base-classes}} The \module{codecs} module defines a set of base classes which define the interface and can also be used to easily write you own codecs for use Modified: python/trunk/Doc/lib/libstdtypes.tex ============================================================================== --- python/trunk/Doc/lib/libstdtypes.tex (original) +++ python/trunk/Doc/lib/libstdtypes.tex Fri Nov 25 18:17:12 2005 @@ -590,7 +590,7 @@ \code{'strict'}, meaning that encoding errors raise \exception{UnicodeError}. Other possible values are \code{'ignore'}, \code{'replace'} and any other name registered via -\function{codecs.register_error}. +\function{codecs.register_error}, see section~\ref{codec-base-classes}. \versionadded{2.2} \versionchanged[Support for other error handling schemes added]{2.3} \end{methoddesc} @@ -602,7 +602,8 @@ \code{'strict'}, meaning that encoding errors raise a \exception{UnicodeError}. Other possible values are \code{'ignore'}, \code{'replace'}, \code{'xmlcharrefreplace'}, \code{'backslashreplace'} -and any other name registered via \function{codecs.register_error}. +and any other name registered via \function{codecs.register_error}, +see section~\ref{codec-base-classes}. For a list of possible encodings, see section~\ref{standard-encodings}. \versionadded{2.0} \versionchanged[Support for \code{'xmlcharrefreplace'} and From walter.doerwald at python.org Fri Nov 25 18:18:59 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Fri, 25 Nov 2005 18:18:59 +0100 (CET) Subject: [Python-checkins] commit of r41544 - python/branches/release24-maint/Doc/lib Message-ID: <20051125171859.DCCCC1E400F@bag.python.org> Author: walter.doerwald Date: Fri Nov 25 18:18:54 2005 New Revision: 41544 Modified: python/branches/release24-maint/Doc/lib/libcodecs.tex python/branches/release24-maint/Doc/lib/libstdtypes.tex Log: Backport checkin: SF patch #1364946: Add a reference link from the dcoumentation of the encode and decode methods to the documentation of the default error handlers. Modified: python/branches/release24-maint/Doc/lib/libcodecs.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/libcodecs.tex (original) +++ python/branches/release24-maint/Doc/lib/libcodecs.tex Fri Nov 25 18:18:54 2005 @@ -212,7 +212,7 @@ \end{datadesc} -\subsection{Codec Base Classes} +\subsection{Codec Base Classes \label{codec-base-classes}} The \module{codecs} module defines a set of base classes which define the interface and can also be used to easily write you own codecs for use Modified: python/branches/release24-maint/Doc/lib/libstdtypes.tex ============================================================================== --- python/branches/release24-maint/Doc/lib/libstdtypes.tex (original) +++ python/branches/release24-maint/Doc/lib/libstdtypes.tex Fri Nov 25 18:18:54 2005 @@ -590,7 +590,7 @@ \code{'strict'}, meaning that encoding errors raise \exception{UnicodeError}. Other possible values are \code{'ignore'}, \code{'replace'} and any other name registered via -\function{codecs.register_error}. +\function{codecs.register_error}, see section~\ref{codec-base-classes}. \versionadded{2.2} \versionchanged[Support for other error handling schemes added]{2.3} \end{methoddesc} @@ -602,7 +602,8 @@ \code{'strict'}, meaning that encoding errors raise a \exception{UnicodeError}. Other possible values are \code{'ignore'}, \code{'replace'}, \code{'xmlcharrefreplace'}, \code{'backslashreplace'} -and any other name registered via \function{codecs.register_error}. +and any other name registered via \function{codecs.register_error}, +see section~\ref{codec-base-classes}. For a list of possible encodings, see section~\ref{standard-encodings}. \versionadded{2.0} \versionchanged[Support for \code{'xmlcharrefreplace'} and From martin.v.loewis at python.org Sat Nov 26 12:38:30 2005 From: martin.v.loewis at python.org (martin.v.loewis@python.org) Date: Sat, 26 Nov 2005 12:38:30 +0100 (CET) Subject: [Python-checkins] commit of r41545 - python/trunk Message-ID: <20051126113830.34DDD1E4009@bag.python.org> Author: martin.v.loewis Date: Sat Nov 26 12:38:24 2005 New Revision: 41545 Modified: python/trunk/configure python/trunk/configure.in Log: Patch #1227966: Do not defined _XOPEN_SOURCE_EXTENDED on Solaris 10. Also set _XOPEN_SOURCE to 500. Will backport to 2.4. Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Sat Nov 26 12:38:24 2005 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 1.486 . +# From configure.in Revision: 39267 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for python 2.5. # @@ -1523,8 +1523,10 @@ then # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be # defined precisely as g++ defines it + # Furthermore, on Solaris 10, XPG6 requires the use of a C99 + # compiler case $ac_sys_system/$ac_sys_release in - SunOS/5.8|SunOS/5.9) + SunOS/5.8|SunOS/5.9|SunOS/5.10) cat >>confdefs.h <<\_ACEOF #define _XOPEN_SOURCE 500 @@ -1544,12 +1546,19 @@ # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else # several APIs are not declared. Since this is also needed in some # cases for HP-UX, we define it globally. - + # except for Solaris 10, where it must not be defined, + # as it implies XPG4.2 + case $ac_sys_system/$ac_sys_release in + SunOS/5.10) + ;; + *) cat >>confdefs.h <<\_ACEOF #define _XOPEN_SOURCE_EXTENDED 1 _ACEOF + ;; + esac cat >>confdefs.h <<\_ACEOF Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Sat Nov 26 12:38:24 2005 @@ -183,8 +183,10 @@ then # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be # defined precisely as g++ defines it + # Furthermore, on Solaris 10, XPG6 requires the use of a C99 + # compiler case $ac_sys_system/$ac_sys_release in - SunOS/5.8|SunOS/5.9) + SunOS/5.8|SunOS/5.9|SunOS/5.10) AC_DEFINE(_XOPEN_SOURCE, 500, Define to the level of X/Open that your system supports) ;; @@ -198,8 +200,16 @@ # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else # several APIs are not declared. Since this is also needed in some # cases for HP-UX, we define it globally. - - AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features) + # except for Solaris 10, where it must not be defined, + # as it implies XPG4.2 + case $ac_sys_system/$ac_sys_release in + SunOS/5.10) + ;; + *) + AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, + Define to activate Unix95-and-earlier features) + ;; + esac AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001) From martin.v.loewis at python.org Sat Nov 26 12:38:42 2005 From: martin.v.loewis at python.org (martin.v.loewis@python.org) Date: Sat, 26 Nov 2005 12:38:42 +0100 (CET) Subject: [Python-checkins] commit of r41546 - python/branches/release24-maint Message-ID: <20051126113842.EDA761E4009@bag.python.org> Author: martin.v.loewis Date: Sat Nov 26 12:38:37 2005 New Revision: 41546 Modified: python/branches/release24-maint/configure python/branches/release24-maint/configure.in Log: Patch #1227966: Do not defined _XOPEN_SOURCE_EXTENDED on Solaris 10. Also set _XOPEN_SOURCE to 500. Modified: python/branches/release24-maint/configure ============================================================================== --- python/branches/release24-maint/configure (original) +++ python/branches/release24-maint/configure Sat Nov 26 12:38:37 2005 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 1.475.2.8 . +# From configure.in Revision: 39265 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for python 2.4. # @@ -1523,8 +1523,10 @@ then # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be # defined precisely as g++ defines it + # Furthermore, on Solaris 10, XPG6 requires the use of a C99 + # compiler case $ac_sys_system/$ac_sys_release in - SunOS/5.8|SunOS/5.9) + SunOS/5.8|SunOS/5.9|SunOS/5.10) cat >>confdefs.h <<\_ACEOF #define _XOPEN_SOURCE 500 @@ -1544,12 +1546,19 @@ # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else # several APIs are not declared. Since this is also needed in some # cases for HP-UX, we define it globally. - + # except for Solaris 10, where it must not be defined, + # as it implies XPG4.2 + case $ac_sys_system/$ac_sys_release in + SunOS/5.10) + ;; + *) cat >>confdefs.h <<\_ACEOF #define _XOPEN_SOURCE_EXTENDED 1 _ACEOF + ;; + esac cat >>confdefs.h <<\_ACEOF Modified: python/branches/release24-maint/configure.in ============================================================================== --- python/branches/release24-maint/configure.in (original) +++ python/branches/release24-maint/configure.in Sat Nov 26 12:38:37 2005 @@ -183,8 +183,10 @@ then # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be # defined precisely as g++ defines it + # Furthermore, on Solaris 10, XPG6 requires the use of a C99 + # compiler case $ac_sys_system/$ac_sys_release in - SunOS/5.8|SunOS/5.9) + SunOS/5.8|SunOS/5.9|SunOS/5.10) AC_DEFINE(_XOPEN_SOURCE, 500, Define to the level of X/Open that your system supports) ;; @@ -198,8 +200,16 @@ # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else # several APIs are not declared. Since this is also needed in some # cases for HP-UX, we define it globally. - - AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features) + # except for Solaris 10, where it must not be defined, + # as it implies XPG4.2 + case $ac_sys_system/$ac_sys_release in + SunOS/5.10) + ;; + *) + AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, + Define to activate Unix95-and-earlier features) + ;; + esac AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001) From reinhold.birkenfeld at python.org Sat Nov 26 17:32:44 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Sat, 26 Nov 2005 17:32:44 +0100 (CET) Subject: [Python-checkins] commit of r41547 - python/branches/release24-maint/Lib Message-ID: <20051126163244.287191E4007@bag.python.org> Author: reinhold.birkenfeld Date: Sat Nov 26 17:32:36 2005 New Revision: 41547 Modified: python/branches/release24-maint/Lib/imaplib.py Log: Bug #698706: imaplib parsing INTERNALDATE backport Modified: python/branches/release24-maint/Lib/imaplib.py ============================================================================== --- python/branches/release24-maint/Lib/imaplib.py (original) +++ python/branches/release24-maint/Lib/imaplib.py Sat Nov 26 17:32:36 2005 @@ -81,7 +81,7 @@ Continuation = re.compile(r'\+( (?P<data>.*))?') Flags = re.compile(r'.*FLAGS \((?P<flags>[^\)]*)\)') InternalDate = re.compile(r'.*INTERNALDATE "' - r'(?P<day>[ 123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9])' + r'(?P<day>[ 0123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9])' r' (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9])' r' (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])' r'"') From reinhold.birkenfeld at python.org Sat Nov 26 17:50:48 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Sat, 26 Nov 2005 17:50:48 +0100 (CET) Subject: [Python-checkins] commit of r41548 - in python/trunk: Lib Misc Message-ID: <20051126165048.2363F1E4007@bag.python.org> Author: reinhold.birkenfeld Date: Sat Nov 26 17:50:44 2005 New Revision: 41548 Modified: python/trunk/Lib/urllib.py python/trunk/Misc/NEWS Log: bug #1365984: urllib and data: URLs. Problem was that cStringIO objects cannot be assigned attributes on the fly. Modified: python/trunk/Lib/urllib.py ============================================================================== --- python/trunk/Lib/urllib.py (original) +++ python/trunk/Lib/urllib.py Sat Nov 26 17:50:44 2005 @@ -556,7 +556,7 @@ msg = '\n'.join(msg) f = StringIO(msg) headers = mimetools.Message(f, 0) - f.fileno = None # needed for addinfourl + #f.fileno = None # needed for addinfourl return addinfourl(f, headers, url) @@ -813,7 +813,10 @@ self.read = self.fp.read self.readline = self.fp.readline if hasattr(self.fp, "readlines"): self.readlines = self.fp.readlines - if hasattr(self.fp, "fileno"): self.fileno = self.fp.fileno + if hasattr(self.fp, "fileno"): + self.fileno = self.fp.fileno + else: + self.fileno = lambda: None if hasattr(self.fp, "__iter__"): self.__iter__ = self.fp.__iter__ if hasattr(self.fp, "next"): Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Nov 26 17:50:44 2005 @@ -287,6 +287,8 @@ Library ------- +- Bug #1365984: urllib now opens "data:" URLs again. + - Patch #1314396: prevent deadlock for threading.Thread.join() when an exception is raised within the method itself on a previous call (e.g., passing in an illegal argument) From reinhold.birkenfeld at python.org Sat Nov 26 17:51:09 2005 From: reinhold.birkenfeld at python.org (reinhold.birkenfeld@python.org) Date: Sat, 26 Nov 2005 17:51:09 +0100 (CET) Subject: [Python-checkins] commit of r41549 - in python/branches/release24-maint: Lib Misc Message-ID: <20051126165109.F31281E4007@bag.python.org> Author: reinhold.birkenfeld Date: Sat Nov 26 17:51:02 2005 New Revision: 41549 Modified: python/branches/release24-maint/Lib/urllib.py python/branches/release24-maint/Misc/NEWS Log: backport: bug #1365984, urllib and data: URLs^^ Modified: python/branches/release24-maint/Lib/urllib.py ============================================================================== --- python/branches/release24-maint/Lib/urllib.py (original) +++ python/branches/release24-maint/Lib/urllib.py Sat Nov 26 17:51:02 2005 @@ -556,7 +556,7 @@ msg = '\n'.join(msg) f = StringIO(msg) headers = mimetools.Message(f, 0) - f.fileno = None # needed for addinfourl + #f.fileno = None # needed for addinfourl return addinfourl(f, headers, url) @@ -813,7 +813,10 @@ self.read = self.fp.read self.readline = self.fp.readline if hasattr(self.fp, "readlines"): self.readlines = self.fp.readlines - if hasattr(self.fp, "fileno"): self.fileno = self.fp.fileno + if hasattr(self.fp, "fileno"): + self.fileno = self.fp.fileno + else: + self.fileno = lambda: None if hasattr(self.fp, "__iter__"): self.__iter__ = self.fp.__iter__ if hasattr(self.fp, "next"): Modified: python/branches/release24-maint/Misc/NEWS ============================================================================== --- python/branches/release24-maint/Misc/NEWS (original) +++ python/branches/release24-maint/Misc/NEWS Sat Nov 26 17:51:02 2005 @@ -47,6 +47,8 @@ Library ------- +- Bug #1365984: urllib now opens "data:" URLs again. + - Patch #1314396: Prevent threading.Thread.join() from blocking if a previous call caused an exception to be raised (e.g., calling join() with an illegal argument). From reinhold-birkenfeld-nospam at wolke7.net Sat Nov 26 16:51:57 2005 From: reinhold-birkenfeld-nospam at wolke7.net (Reinhold Birkenfeld) Date: Sat, 26 Nov 2005 16:51:57 +0100 Subject: [Python-checkins] commit of r41528 - in python/branches/release24-maint: Doc/api Misc Python In-Reply-To: <519B39C3-AF14-46E0-8970-D8A947A45DE4@cwi.nl> References: <20051124153859.AED701E4031@bag.python.org> <519B39C3-AF14-46E0-8970-D8A947A45DE4@cwi.nl> Message-ID: <dma3sj$uoa$1@sea.gmane.org> Jack Jansen wrote: > This fix looks suspect to me, especially for the maintenance branch... > > The "k" format was especially introduced for bitpatterns, so this fix > will break any code of the form > >>> if call_returning_k_object() < 0: print "error" So the "fix" for "k" shall be reverted? Reinhold From phillip.eby at python.org Sat Nov 26 19:59:40 2005 From: phillip.eby at python.org (phillip.eby@python.org) Date: Sat, 26 Nov 2005 19:59:40 +0100 (CET) Subject: [Python-checkins] commit of r41550 - sandbox/trunk/setuptools Message-ID: <20051126185940.D44531E4007@bag.python.org> Author: phillip.eby Date: Sat Nov 26 19:59:35 2005 New Revision: 41550 Modified: sandbox/trunk/setuptools/EasyInstall.txt sandbox/trunk/setuptools/pkg_resources.py Log: If more than one URL appears to describe the exact same distribution, prefer the shortest one. This helps to avoid "table of contents" CGI URLs like the ones on effbot.org. Modified: sandbox/trunk/setuptools/EasyInstall.txt ============================================================================== --- sandbox/trunk/setuptools/EasyInstall.txt (original) +++ sandbox/trunk/setuptools/EasyInstall.txt Sat Nov 26 19:59:35 2005 @@ -870,6 +870,10 @@ * Fixed ``.pth`` file processing picking up nested eggs (i.e. ones inside "baskets") when they weren't explicitly listed in the ``.pth`` file. + * If more than one URL appears to describe the exact same distribution, prefer + the shortest one. This helps to avoid "table of contents" CGI URLs like the + ones on effbot.org. + 0.6a8 * Update for changed SourceForge mirror format Modified: sandbox/trunk/setuptools/pkg_resources.py ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.py (original) +++ sandbox/trunk/setuptools/pkg_resources.py Sat Nov 26 19:59:35 2005 @@ -1754,7 +1754,7 @@ hashcmp = property( lambda self: ( getattr(self,'parsed_version',()), self.precedence, self.key, - self.location, self.py_version, self.platform + -len(self.location), self.location, self.py_version, self.platform ) ) def __cmp__(self, other): return cmp(self.hashcmp, other) From loewis at users.sourceforge.net Sat Nov 26 22:33:11 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:11 +0100 (CET) Subject: [Python-checkins] python/dist THIS_REPOSITORY_HAS_MOVED,NONE,1.1 Message-ID: <20051126213311.0AEBE1E4007@bag.python.org> Update of /cvsroot/python/python/dist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:11 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:11 +0100 (CET) Subject: [Python-checkins] python THIS_REPOSITORY_HAS_MOVED,NONE,1.1 Message-ID: <20051126213311.198DA1E4009@bag.python.org> Update of /cvsroot/python/python In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:11 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:11 +0100 (CET) Subject: [Python-checkins] python/dist/encodings THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213311.CA75C1E4007@bag.python.org> Update of /cvsroot/python/python/dist/encodings In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/encodings Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:11 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:11 +0100 (CET) Subject: [Python-checkins] python/dist/src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213311.CD8191E4009@bag.python.org> Update of /cvsroot/python/python/dist/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:11 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:11 +0100 (CET) Subject: [Python-checkins] python/dist/src/BeOS THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213311.D785B1E400A@bag.python.org> Update of /cvsroot/python/python/dist/src/BeOS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/BeOS Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:12 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:12 +0100 (CET) Subject: [Python-checkins] python/dist/src/BeOS/ar-1.1 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213312.199141E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/BeOS/ar-1.1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/BeOS/ar-1.1 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:12 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:12 +0100 (CET) Subject: [Python-checkins] python/dist/src/BeOS/ar-1.1/docs THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213312.82F0A1E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/BeOS/ar-1.1/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/BeOS/ar-1.1/docs Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:12 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:12 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/cgi THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213312.8397A1E4015@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/cgi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/cgi Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:12 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:12 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/classes THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213312.973DD1E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/classes Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:12 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:12 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/comparisons THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213312.D80811E4018@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/comparisons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/comparisons Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:12 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:12 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/curses THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213312.EDEFD1E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/curses In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/curses Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:12 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:12 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/cwilib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213312.EA2CD1E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/cwilib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/cwilib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/embed THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.135F81E4019@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/embed In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/embed Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/dns THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.0B4D11E4015@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/dns In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/dns Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/gui THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.717701E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/gui Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/extend THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.6A9191E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/extend In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/extend Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/imputil THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.810B41E400B@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/imputil In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/imputil Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/ibrowse THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.83EEB1E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/ibrowse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/ibrowse Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/md5test THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.8701B1E4018@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/md5test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/md5test Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/matrix THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.8F0651E401A@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/matrix In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/matrix Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/newmetaclasses THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.A8C131E401D@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/newmetaclasses In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/newmetaclasses Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/metaclasses THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.93F441E401B@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/metaclasses In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/metaclasses Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/parser THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.3A6221E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/parser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/parser Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:13 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:13 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/p2c THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213313.E9AD71E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/p2c In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/p2c Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/pdist THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.492E21E400B@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/pdist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/pdist Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/pysvr THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.6000E1E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/pysvr In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/pysvr Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/scripts THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.788631E4018@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/scripts Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/rpc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.775761E4015@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/rpc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/rpc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.8F7FC1E401A@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/al THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.8F08B1E4019@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/al In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/al Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/audio_stdwin THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.A9E351E401E@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/audio_stdwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/audio_stdwin Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:14 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:14 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/cd THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213314.C650D1E401B@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/cd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/cd Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:15 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:15 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/gl THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213315.262491E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/gl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/gl Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:15 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:15 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/gl/glstdwin THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213315.39F0F1E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/gl/glstdwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/gl/glstdwin Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:15 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:15 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/video THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213315.4C6781E400B@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/video In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/video Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:15 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:15 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/stdwin/ibrowse THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213315.6D5561E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/stdwin/ibrowse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/stdwin/ibrowse Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:15 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:15 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/tix THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213315.8F3D21E4015@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/tix In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/tix Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/flp THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.3965A1E400B@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/flp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/flp Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/tkinter/matt THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.111C31E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/tkinter/matt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/tkinter/matt Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/audio THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.3C43C1E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/audio In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/audio Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/xml THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.3FDB41E401A@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/xml In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/xml Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/xmlrpc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.468981E401B@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/xmlrpc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/xmlrpc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/tkinter/www THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.494321E401D@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/tkinter/www In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/tkinter/www Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/zlib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.5CB071E401E@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/zlib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/zlib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.68FD01E401F@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/api THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.812081E4015@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/api In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/api Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/commontex THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.ACAD01E4018@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/commontex In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/commontex Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/stdwin THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.C66A71E400A@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/stdwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/stdwin Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/lib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.D3E051E4019@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/lib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/dist THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.C1E841E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/dist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/dist Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/threads THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.E60821E4021@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/threads In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/threads Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sockets THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.011021E4022@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sockets In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sockets Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.DC16C1E4020@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/longhtml THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.0C5D41E4025@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/longhtml In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/longhtml Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/doc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.0309C1E4023@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/doc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/tix/bitmaps THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.1A9051E4027@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/tix/bitmaps In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/tix/bitmaps Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/paper-a4 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.2093C1E4028@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/paper-a4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/paper-a4 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/mac THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.2DB741E4029@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/mac Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/sgml/oasis THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.31B281E402A@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/sgml/oasis In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/sgml/oasis Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/sgml/iso THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.371371E402D@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/sgml/iso In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/sgml/iso Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/templates THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.5F8E81E402E@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/templates Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/texinputs THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.90AA11E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/texinputs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/texinputs Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/tools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.AB6231E4030@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/tools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/tools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/tools/sgmlconv THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.C21F01E401A@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/tools/sgmlconv In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/tools/sgmlconv Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/tut THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.CAEAD1E402B@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/tut In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/tut Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/whatsnew THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.D169A1E4031@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/whatsnew In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/whatsnew Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Grammar THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.D51BE1E4032@bag.python.org> Update of /cvsroot/python/python/dist/src/Grammar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Grammar Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.020941E4034@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Include THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.0321C1E4035@bag.python.org> Update of /cvsroot/python/python/dist/src/Include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Include Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/aix3 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.1B4B41E4036@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/aix3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/aix3 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/aix4 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.22DE71E4033@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/aix4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/aix4 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/bsddb/test THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.420D11E4024@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/bsddb/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/bsddb/test Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/csv/util THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.453A61E4037@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/csv/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/csv/util Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/bsddb THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.4F1971E4039@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/bsddb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/bsddb Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/compiler THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.638D41E403B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/compiler Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/csv THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.671631E401B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/csv In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/csv Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/distutils THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.6973B1E401E@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/distutils In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/distutils Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/curses THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.626F71E403A@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/curses In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/curses Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/distutils/command THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.7E0061E401D@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/distutils/command In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/distutils/command Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/distutils/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.8A8651E403C@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/distutils/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/distutils/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/dos_8x3 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.B77991E4017@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/dos_8x3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/dos_8x3 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/dos-8x3 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.9135A1E403D@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/dos-8x3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/dos-8x3 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/email/test THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.E7D391E4015@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/email/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/email/test Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:18 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:18 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/email THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213318.BA8421E4038@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/email In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/email Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/freebsd2 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.385A41E4016@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/freebsd2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/freebsd2 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/encodings THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.35E0D1E400A@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/encodings In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/encodings Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/html/icons THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.499E61E403F@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/html/icons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/html/icons Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/icons THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.50D1E1E4040@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/icons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/icons Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/info THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.61C471E4041@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/info In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/info Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/generic THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.6A91C1E4043@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/generic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/generic Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/hotshot THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.70BEE1E4044@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/hotshot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/hotshot Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/lib-tk THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.7731B1E4045@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/lib-tk In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/lib-tk Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/lib-stdwin THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.7FFCC1E4046@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/lib-stdwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/lib-stdwin Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/lib-old THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.AA5A81E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/lib-old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/lib-old Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:15 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:15 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/tix/samples THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213315.A94C01E4018@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/tix/samples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/tix/samples Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:16 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:16 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/tkinter/guido THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213316.09BB21E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/tkinter/guido In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/tkinter/guido Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:15 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:15 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/tkinter THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213315.E44071E4019@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/tkinter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/tkinter Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/perl THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.3F21B1E400B@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/perl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/perl Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:17 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:17 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213317.602251E402F@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/html THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.121851E403E@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/html Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/email/test/data THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.0D2F81E4018@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/email/test/data In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/email/test/data Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:19 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:19 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/irix6 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213319.ABFA31E4021@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/irix6 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/irix6 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/ref THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.041C71E4022@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/ref In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/ref Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/sgml THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.290F71E4023@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/sgml In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/sgml Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/linux2 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.34D6A1E4020@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/linux2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/linux2 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Demo/sgi/sv THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.3C9011E4047@bag.python.org> Update of /cvsroot/python/python/dist/src/Demo/sgi/sv In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Demo/sgi/sv Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/logging THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.47B491E4048@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/logging In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/logging Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/linux1 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.6580A1E4049@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/linux1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/linux1 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/ext THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.730571E4025@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/ext In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/ext Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/howto THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.80B361E4028@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/howto In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/howto Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/next3 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.85E971E404B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/next3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/next3 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-beos1 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.D55801E404C@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-beos1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-beos1 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:20 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:20 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-aix3 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213320.AE9A01E404E@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-aix3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-aix3 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-freebsd2 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.234ED1E402D@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-freebsd2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-freebsd2 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-beos5 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.1034D1E402A@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-beos5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-beos5 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-freebsd5 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.3D78C1E401F@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-freebsd5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-freebsd5 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-darwin THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.4291A1E4027@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-darwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-darwin Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-freebsd4 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.4A4481E404F@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-freebsd4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-freebsd4 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/paper-letter THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.4E0BE1E4050@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/paper-letter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/paper-letter Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-linux1 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.6A4381E4053@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-linux1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-linux1 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-linux2 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.7B03D1E402F@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-linux2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-linux2 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.C49D11E400B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:21 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:21 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/Carbon THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213321.CBF2D1E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/Carbon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/Carbon Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:22 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:22 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213322.06ADF1E4042@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:22 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:22 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/CodeWarrior THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213322.302311E4030@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/CodeWarrior In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/CodeWarrior Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:22 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:22 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/Explorer THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213322.3A2E51E402B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/Explorer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/Explorer Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:22 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:22 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/Finder THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213322.60FB91E4052@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/Finder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/Finder Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:22 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:22 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/Netscape THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213322.5EEA11E402E@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/Netscape In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/Netscape Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/StdSuites THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.1E3141E4035@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/StdSuites In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/StdSuites Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/SystemEvents THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.267971E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/SystemEvents In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/SystemEvents Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/Terminal THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.295D31E4036@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/Terminal In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/Terminal Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-mac/lib-scriptpackages/_builtinSuites THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.2DE731E404D@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-mac/lib-scriptpackages/_builtinSuites In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-mac/lib-scriptpackages/_builtinSuites Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-netbsd1 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.5169F1E4034@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-netbsd1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-netbsd1 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/irix5 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.D97D31E4037@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/irix5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/irix5 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/idlelib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.DC6A81E4039@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/idlelib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/idlelib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-next3 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.E02271E4055@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-next3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-next3 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-os2emx THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.E58111E4019@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-os2emx In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-os2emx Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:23 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:23 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-riscos THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213323.E39BC1E401A@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-riscos In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-riscos Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/isilo THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.265F51E4057@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/isilo In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/isilo Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-sunos5 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.2A67E1E4058@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-sunos5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-sunos5 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/stdwin THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.2B8821E4059@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/stdwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/stdwin Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-sunos4 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.300661E405A@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-sunos4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-sunos4 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-win THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.3FCF21E404A@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-win In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-win Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/idlelib/Icons THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.34FB61E405B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/idlelib/Icons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/idlelib/Icons Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-unixware7 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.420831E405C@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-unixware7 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-unixware7 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/sunos4 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.4CA3F1E405E@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/sunos4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/sunos4 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/site-packages THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.4E3E61E405F@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/site-packages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/site-packages Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/test/decimaltestdata THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.8310D1E4061@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/test/decimaltestdata In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/test/decimaltestdata Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Doc/inst THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.800071E4056@bag.python.org> Update of /cvsroot/python/python/dist/src/Doc/inst In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Doc/inst Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/sunos5 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.A5D611E4062@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/sunos5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/sunos5 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/win THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.AF8AB1E405D@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/win In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/win Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/test/output THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.7EFE91E4033@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/test/output In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/test/output Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/tkinter THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.ADEC41E4031@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/tkinter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/tkinter Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/xml/dom THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.B4F641E4054@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/xml/dom In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/xml/dom Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/xml THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.B23DB1E403B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/xml In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/xml Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/xml/parser THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.C323F1E401B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/xml/parser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/xml/parser Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-freebsd3 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.C46E61E4060@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-freebsd3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-freebsd3 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-generic THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.D53501E4064@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-generic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-generic Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-aix4 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.D8CF01E4065@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-aix4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-aix4 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/xml/parsers THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.DA8431E4066@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/xml/parsers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/xml/parsers Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:24 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:24 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/xml/sax THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213324.E9F9F1E4032@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/xml/sax In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/xml/sax Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Compat THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.245551E4029@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Compat In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Compat Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.473821E406A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/BBPy THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.78AE61E406B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/BBPy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/BBPy Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/AECaptureParser THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.7B2821E401E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/AECaptureParser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/AECaptureParser Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.7D47E1E403A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-irix6 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.7E9B91E4024@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-irix6 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-irix6 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/BBPy/source THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.7F6361E406C@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/BBPy/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/BBPy/source Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/BBPy.lm THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.7FEB01E4063@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/BBPy.lm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/BBPy.lm Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/ImageHelpers THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.807141E406D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/ImageHelpers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/ImageHelpers Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-freebsd7 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.817B41E406E@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-freebsd7 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-freebsd7 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PyIDE-src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.825F71E4051@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PyIDE-src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PyIDE-src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PyIDE-src/IDELib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.837BE1E406F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PyIDE-src/IDELib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PyIDE-src/IDELib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PyIDE-src/Scripts THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.850501E4068@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PyIDE-src/Scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PyIDE-src/Scripts Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PyIDE-src/IDELib/Widgets THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.8577A1E4070@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PyIDE-src/IDELib/Widgets In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PyIDE-src/IDELib/Widgets Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PyIDE-src/Scripts/Hack THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.86FC11E4072@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PyIDE-src/Scripts/Hack In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PyIDE-src/Scripts/Hack Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:25 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:25 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-freebsd6 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213325.861301E4071@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-freebsd6 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-freebsd6 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:26 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:26 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PythonScript THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213326.AB11D1E4074@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PythonScript In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PythonScript Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:26 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:26 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/Tabcleaner THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213326.BDDF01E4069@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/Tabcleaner In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/Tabcleaner Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:26 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:26 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/Sherlock THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213326.DE8211E4073@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/Sherlock In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/Sherlock Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:26 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:26 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/mpwsystem THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213326.022231E4075@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/mpwsystem In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/mpwsystem Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/calldll THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.63EBD1E403D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/calldll In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/calldll Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/osam THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.52A8C1E4017@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/osam In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/osam Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/cgi THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.722B01E4067@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/cgi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/cgi Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/html.icons THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.7B87F1E4076@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/html.icons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/html.icons Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/example0 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.7D7C41E4077@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/example0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/example0 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-beos THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.80D201E4078@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-beos In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-beos Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/test THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.9C17A1E407B@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/test Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/test/data THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.996601E407A@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/test/data In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/test/data Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-irix5 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.9D9E51E407C@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-irix5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-irix5 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/quicktime THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.A429E1E407F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/quicktime In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/quicktime Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/interslip THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.A0DC01E407E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/interslip In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/interslip Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/sound THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.BD42D1E4080@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/sound In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/sound Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/printing THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.C5DDD1E4083@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/printing In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/printing Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/mlte THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.C46521E4082@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/mlte In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/mlte Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Lib/plat-atheos THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.010A21E4038@bag.python.org> Update of /cvsroot/python/python/dist/src/Lib/plat-atheos In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Lib/plat-atheos Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:27 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:27 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/BBPy/source/BB-stuff THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213327.D212B1E4015@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/BBPy/source/BB-stuff In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/BBPy/source/BB-stuff Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PyIDE-src/IDELib/Resources THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.0518C1E4079@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PyIDE-src/IDELib/Resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PyIDE-src/IDELib/Resources Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/textedit THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.1C7511E4084@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/textedit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/textedit Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/resources THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.54EC11E4087@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/resources Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/waste THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.39DBA1E403E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/waste In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/waste Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/speech THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.536101E4018@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/speech In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/speech Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/scripting THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.59CA91E4088@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/scripting In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/scripting Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Distributions/(vise) THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.660D51E408A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Distributions/(vise) In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Distributions/(vise) Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Distributions THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.67D231E408B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Distributions In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Distributions Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Include THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.79DF11E408C@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Include Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/GUSI-mods/into-include THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.81D6B1E408D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/GUSI-mods/into-include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/GUSI-mods/into-include Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/GUSI-mods/into-src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.9A39A1E408F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/GUSI-mods/into-src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/GUSI-mods/into-src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/PythonDetector THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.B2A711E4090@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/PythonDetector In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/PythonDetector Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/GUSI-mods THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.B40261E4091@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/GUSI-mods In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/GUSI-mods Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.B5B0D1E4092@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-compat THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.D75981E4016@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-compat In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-compat Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:28 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:28 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages/Finder THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213328.DF4671E4085@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages/Finder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages/Finder Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.072221E4094@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/Carbon THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.380531E400A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/Carbon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/Carbon Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scripting THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.3DC481E403F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scripting In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scripting Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/morefindertools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.6648D1E4096@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/morefindertools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/morefindertools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages/CodeWarrior THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.556F71E407D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages/CodeWarrior In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages/CodeWarrior Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages/Explorer THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.5F59D1E4086@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages/Explorer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages/Explorer Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/PICTbrowse THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.6D0D51E4097@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/PICTbrowse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/PICTbrowse Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/applescript THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.A90651E409A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/applescript In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/applescript Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.8BE871E4043@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/applescript/Disk_Copy THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.AAEB61E409B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/applescript/Disk_Copy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/applescript/Disk_Copy Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages/Netscape THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.B0C4D1E409C@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages/Netscape In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages/Netscape Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:29 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:29 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/example2 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213329.E2BDE1E4044@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/example2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/example2 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:30 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:30 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages/StdSuites THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213330.225AA1E409D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages/StdSuites In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages/StdSuites Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:30 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:30 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages/Terminal THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213330.45C991E4046@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages/Terminal In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages/Terminal Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Contrib/strptime THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.0E5A31E4020@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Contrib/strptime In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Contrib/strptime Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/embed THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.240CE1E4098@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/embed In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/embed Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-toolbox THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.5331C1E4047@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-toolbox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-toolbox Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/lib-scriptpackages/_builtinSuites THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.6AA541E4048@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/lib-scriptpackages/_builtinSuites In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/lib-scriptpackages/_builtinSuites Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/mkcwproject THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.6EE781E4093@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/mkcwproject In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/mkcwproject Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/mkcwproject/template THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.778081E40A0@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/mkcwproject/template In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/mkcwproject/template Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/ah THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.BF25F1E4021@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/ah In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/ah Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:31 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:31 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/alias THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213331.EB71A1E4028@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/alias In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/alias Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:32 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:32 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/carbonevt THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213332.6279A1E404E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/carbonevt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/carbonevt Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:32 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:32 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/app THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213332.5B5F91E404C@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/app In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/app Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:32 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:32 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/cg THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213332.64F161E40A2@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/cg In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/cg Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:32 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:32 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/cf THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213332.675231E40A3@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/cf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/cf Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/qdoffs THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.9FC221E4030@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/qdoffs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/qdoffs Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/res THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.E71F11E40AD@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/res In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/res Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/qt THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.EE43F1E40B0@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/qt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/qt Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/test THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.F1DCC1E40B1@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/test Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/scrap THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.0AD1E1E40A6@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/scrap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/scrap Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/snd THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.48EE91E402B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/snd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/snd Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/test/mkcwproj THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.0EA351E40B2@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/test/mkcwproj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/test/mkcwproj Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/te THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.52E591E40B4@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/te In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/te Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/MPW THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.63F271E402E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/MPW In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/MPW Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/toolbox THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.80A421E40B7@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/toolbox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/toolbox Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.7F5941E40B6@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/waste THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.845241E4035@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/waste In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/waste Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/ae THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.9F6DD1E40B8@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/ae In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/ae Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/win THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.BE11A1E4049@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/win In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/win Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/Dist THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.B32D61E4045@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/Dist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/Dist Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.C22E11E40BB@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/mkcwproject/template-carbon THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.C073A1E40BA@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/mkcwproject/template-carbon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/mkcwproject/template-carbon Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/Dist/resources THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.D05531E40BC@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/Dist/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/Dist/resources Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/mkcwproject/template-ppc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.DA0881E4007@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/mkcwproject/template-ppc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/mkcwproject/template-ppc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/Dist/resources.panther THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.E14F51E40BE@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/Dist/resources.panther In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/Dist/resources.panther Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:35 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:35 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/Dist/resources.tiger THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213335.E3BD61E4036@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/Dist/resources.tiger In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/Dist/resources.tiger Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/Doc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.08F551E401F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/Doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/Doc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/Doc/HelpIndexingTool THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.3951D1E4034@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/Doc/HelpIndexingTool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/Doc/HelpIndexingTool Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/example1 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.465281E40B9@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/example1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/example1 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/PythonLauncher THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.560611E40BD@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/PythonLauncher In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/PythonLauncher Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.68FD01E4022@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/PythonLauncher/PreferenceWindow.nib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.860421E40C2@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/PythonLauncher/PreferenceWindow.nib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/PythonLauncher/PreferenceWindow.nib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.D60061E40C4@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/app/Resources THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.D76711E4039@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/app/Resources Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/macpython_ide_tutorial THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.D7E4C1E404D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/macpython_ide_tutorial In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/macpython_ide_tutorial Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Resources THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.5051D1E401A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Resources Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Tools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.541D71E403C@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Tools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Tools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Tools/CGI THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.6A5461E401D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Tools/CGI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Tools/CGI Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Tools/IDE THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.71E941E40C1@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Tools/IDE In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Tools/IDE Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Demo/imgbrowse THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.6F7A11E4055@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Demo/imgbrowse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Demo/imgbrowse Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Tools/macfreeze THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.B0D951E40B5@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Tools/macfreeze In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Tools/macfreeze Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Build THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.B87891E40BF@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Build In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Build Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Unsupported/mactcp THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.C425B1E4050@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Unsupported/mactcp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Unsupported/mactcp Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Unsupported/twit THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.F01DB1E4059@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Unsupported/twit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Unsupported/twit Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:38 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:38 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Unsupported/PythonScript THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213338.13EDA1E4057@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Unsupported/PythonScript In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Unsupported/PythonScript Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:38 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:38 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213338.413C51E4019@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:38 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:38 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Wastemods THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213338.551821E404A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Wastemods In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Wastemods Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:38 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:38 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/malloc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213338.44F951E40B3@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/malloc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/malloc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:38 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:38 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/build.mac THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213338.7078C1E40C8@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/build.mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/build.mac Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:38 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:38 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/PythonLauncher/English.lproj THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213338.93CC01E405C@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/PythonLauncher/English.lproj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/PythonLauncher/English.lproj Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:39 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:39 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/build.macppc.shared THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213339.4BA591E4056@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/build.macppc.shared In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/build.macppc.shared Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:39 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:39 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/tclmods THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213339.60C1F1E405F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/tclmods In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/tclmods Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:39 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:39 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213339.52C791E405B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:39 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:39 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/build.macfreeze THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213339.560361E405D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/build.macfreeze In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/build.macfreeze Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:39 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:39 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/build.macstand THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213339.8A0971E4061@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/build.macstand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/build.macstand Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:39 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:39 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/scripts THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213339.B32781E4033@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/scripts Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:39 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:39 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/think THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213339.DCB941E4062@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/think In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/think Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/think/macconsole THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.0C6081E403B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/think/macconsole In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/think/macconsole Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Misc/RPM THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.667591E4013@bag.python.org> Update of /cvsroot/python/python/dist/src/Misc/RPM In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Misc/RPM Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Misc/RPM/Tkinter THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.697761E401B@bag.python.org> Update of /cvsroot/python/python/dist/src/Misc/RPM/Tkinter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Misc/RPM/Tkinter Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Misc/RPM/Tkinter/src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.70B711E405A@bag.python.org> Update of /cvsroot/python/python/dist/src/Misc/RPM/Tkinter/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Misc/RPM/Tkinter/src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Misc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.6E5E51E4054@bag.python.org> Update of /cvsroot/python/python/dist/src/Misc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Misc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.74E261E405E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Misc/RPM/src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.849AB1E4058@bag.python.org> Update of /cvsroot/python/python/dist/src/Misc/RPM/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Misc/RPM/src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/app THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.980041E4081@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/app Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.A8BD01E409E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Modules THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.AEA451E40A1@bag.python.org> Update of /cvsroot/python/python/dist/src/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Modules Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Modules/cjkcodecs THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.C53071E4037@bag.python.org> Update of /cvsroot/python/python/dist/src/Modules/cjkcodecs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Modules/cjkcodecs Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:40 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:40 +0100 (CET) Subject: [Python-checkins] python/dist/src/Modules/expat THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213340.D11B41E4065@bag.python.org> Update of /cvsroot/python/python/dist/src/Modules/expat In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Modules/expat Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/Objects THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.134691E4060@bag.python.org> Update of /cvsroot/python/python/dist/src/Objects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Objects Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.334541E4032@bag.python.org> Update of /cvsroot/python/python/dist/src/PC In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/VC6 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.48A8E1E4040@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/VC6 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/VC6 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/example_nt THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.658F31E40C0@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/example_nt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/example_nt Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/os2emx THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.7DF461E4029@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/os2emx In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/os2emx Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Tools/twit THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.72DE01E40C3@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Tools/twit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Tools/twit Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Unsupported/GUSI1-mods THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.8BAFE1E40C9@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Unsupported/GUSI1-mods In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Unsupported/GUSI1-mods Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Unsupported/Classic THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.920311E40CA@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Unsupported/Classic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Unsupported/Classic Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/os2vacpp THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.968FD1E40CB@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/os2vacpp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/os2vacpp Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Unsupported THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.9B04E1E40CC@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Unsupported In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Unsupported Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.BA87D1E400F@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/setup_nt THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.BC9001E406A@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/setup_nt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/setup_nt Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/utils THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.C30EB1E4089@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/utils In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/utils Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/bdist_wininst THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.CFDFB1E4064@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/bdist_wininst In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/bdist_wininst Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/vc15_w31 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.E608E1E40D0@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/vc15_w31 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/vc15_w31 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:41 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:41 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/vc15_lib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213341.DBF461E40CF@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/vc15_lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/vc15_lib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/vc5x THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.0DD2E1E4009@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/vc5x In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/vc5x Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/PlugIns THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.265F41E4031@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/PlugIns In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/PlugIns Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/build.mac68k.shared THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.38F3E1E401E@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/build.mac68k.shared In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/build.mac68k.shared Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/audiopy THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.4F3DE1E40C7@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/audiopy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/audiopy Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/bgen/bgen THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.515AD1E40DC@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/bgen/bgen In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/bgen/bgen Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:43 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:43 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/faqwiz THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213343.562201E40DD@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/faqwiz In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/faqwiz Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/RISCOS/Modules THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.4463A1E4095@bag.python.org> Update of /cvsroot/python/python/dist/src/RISCOS/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/RISCOS/Modules Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSX/PythonLauncher/PythonLauncher.pbproj THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.4C1AC1E40DA@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSX/PythonLauncher/PythonLauncher.pbproj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSX/PythonLauncher/PythonLauncher.pbproj Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/bgen THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.4D63F1E40DB@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/bgen In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/bgen Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/compiler/doc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.5423C1E406C@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/compiler/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/compiler/doc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:43 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:43 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/build.macppc.stand THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213343.587BE1E40DE@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/build.macppc.stand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/build.macppc.stand Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:43 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:43 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/framer THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213343.5998C1E40DF@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/framer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/framer Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:43 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:43 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/framer/framer THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213343.5A6AC1E40E0@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/framer/framer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/framer/framer Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:43 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:43 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/freeze THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213343.887111E40E2@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/freeze In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/freeze Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:43 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:43 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/msi THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213343.92E1E1E40E4@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/msi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/msi Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:43 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:43 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/i18n THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213343.8FC141E40E3@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/i18n In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/i18n Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/perfecthash THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.2ACE21E406D@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/perfecthash In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/perfecthash Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/pynche THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.161A81E40CE@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/pynche In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/pynche Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/webchecker THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.40FCC1E40D2@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/webchecker In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/webchecker Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/pynche/X THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.3B64E1E4051@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/pynche/X In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/pynche/X Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/languages THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.62C961E40E9@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/languages Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/nondist/i18n THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.5F3FD1E40E8@bag.python.org> Update of /cvsroot/python/python/nondist/i18n In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/i18n Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/world THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.49BBE1E40D7@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/world In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/world Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.5D8E01E40E7@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/parsers/rst THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.8395F1E40EB@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/parsers/rst In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/parsers/rst Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/parsers THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.90BEB1E40E1@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/parsers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/parsers Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.952851E406F@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/nondist/nondist THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.6A38F1E40EA@bag.python.org> Update of /cvsroot/python/python/nondist/nondist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/nondist Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:44 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:44 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/parsers/rst/directives THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213344.C36451E40EC@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/parsers/rst/directives In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/parsers/rst/directives Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/app/Resources/English.lproj THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.7391A1E4071@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/app/Resources/English.lproj Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.770A31E4072@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/readers/python THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.3C6401E40EE@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/readers/python In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/readers/python Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/parsers/rst/languages THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.395581E4070@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/parsers/rst/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/parsers/rst/languages Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/readers THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.3AE191E40ED@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/readers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/readers Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/compiler/compiler THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.6BE621E40F0@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/compiler/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/compiler/compiler Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/transforms THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.677B11E406E@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/transforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/transforms Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/Lib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.923011E40E6@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/Lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/Lib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/peps/docutils/writers THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.6FD1A1E40F1@bag.python.org> Update of /cvsroot/python/python/nondist/peps/docutils/writers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps/docutils/writers Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/ast THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.C40C11E40F5@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/ast In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/ast Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:45 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:45 +0100 (CET) Subject: [Python-checkins] python/dist/src/RISCOS THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213345.98B441E40D1@bag.python.org> Update of /cvsroot/python/python/dist/src/RISCOS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/RISCOS Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/doc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.385681E4073@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/app/Resources/English.lproj/Documentation/doc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/ast/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.1D7A71E4074@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/ast/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/ast/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/collections THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.735311E40F3@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/collections In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/collections Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/audiotest THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.770E31E40F4@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/audiotest In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/audiotest Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/compiler THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.7CA221E40F6@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/compiler Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/asyncore THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.680B51E40EF@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/asyncore In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/asyncore Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/csv THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.8228F1E40F7@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/csv In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/csv Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/idle THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.881FE1E403D@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/idle In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/idle Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/csv/test THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.CE2581E4017@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/csv/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/csv/test Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:46 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:46 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/csv/util THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213346.CF2141E40F8@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/csv/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/csv/util Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/modulator/Templates THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.278571E40F2@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/modulator/Templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/modulator/Templates Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/datetime THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.089CC1E40F9@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/datetime In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/datetime Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/decimal THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.654451E4078@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/decimal In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/decimal Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/modulator THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.2A29B1E40FA@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/modulator In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/modulator Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/decimal/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.9C04B1E407A@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/decimal/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/decimal/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/idle/Icons THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.A01BB1E407B@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/idle/Icons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/idle/Icons Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/decimal/telco THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.A85001E4069@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/decimal/telco In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/decimal/telco Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/versioncheck THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.B4B2E1E40FB@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/versioncheck In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/versioncheck Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/unicode/python-mappings THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.B955D1E40FD@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/unicode/python-mappings In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/unicode/python-mappings Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/distutils_refactor THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.CB23C1E40FC@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/distutils_refactor In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/distutils_refactor Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/digestauth THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.D4DF61E40FF@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/digestauth In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/digestauth Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/distutils_refactor/distutils/command THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.DC3CB1E4100@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/distutils_refactor/distutils/command In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/distutils_refactor/distutils/command Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/distutils_refactor/distutils/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.001111E4077@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/distutils_refactor/distutils/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/distutils_refactor/distutils/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:47 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:47 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/distutils_refactor/distutils THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213347.E41791E4101@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/distutils_refactor/distutils In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/distutils_refactor/distutils Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/doctools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.107CF1E4104@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/doctools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/doctools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/distutilsref THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.072491E4103@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/distutilsref In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/distutilsref Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/help THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.16A881E407C@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/help In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/help Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/i18n/po THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.2CE901E4106@bag.python.org> Update of /cvsroot/python/python/nondist/i18n/po In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/i18n/po Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/mailbox THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.8A7E81E407F@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/mailbox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/mailbox Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/itertools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.3DD441E4075@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/itertools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/itertools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/msi THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.8BAB31E4102@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/msi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/msi Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Tools/macfreeze/hello THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.9A2741E4080@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Tools/macfreeze/hello In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Tools/macfreeze/hello Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/parrot THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.A0C8B1E4105@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/parrot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/parrot Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/unicode THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.A57611E4109@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/unicode In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/unicode Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/dist/src/Tools/scripts THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.A31FD1E4108@bag.python.org> Update of /cvsroot/python/python/dist/src/Tools/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Tools/scripts Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/path THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.CED5B1E4083@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/path In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/path Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/parrotbench THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.C356E1E410A@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/parrotbench In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/parrotbench Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/peps THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.D6FAE1E410C@bag.python.org> Update of /cvsroot/python/python/nondist/peps In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/peps Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/i18n/de/LC_MESSAGES THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.D900A1E410D@bag.python.org> Update of /cvsroot/python/python/nondist/i18n/de/LC_MESSAGES In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/i18n/de/LC_MESSAGES Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:48 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:48 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/pep262 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213348.E0E0B1E407E@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/pep262 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/pep262 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/pickletools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.0D6A41E410F@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/pickletools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/pickletools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/i18n/de THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.112561E4111@bag.python.org> Update of /cvsroot/python/python/nondist/i18n/de In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/i18n/de Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/typecheck THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.EF3391E411D@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/typecheck In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/typecheck Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/statistics THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.E824A1E411A@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/statistics In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/statistics Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/string/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.EC4EA1E411B@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/string/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/string/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/typecheck/src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.011B51E411F@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/typecheck/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/typecheck/src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/src THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.057181E4120@bag.python.org> Update of /cvsroot/python/python/nondist/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sf-html THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.F3F561E411E@bag.python.org> Update of /cvsroot/python/python/nondist/sf-html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sf-html Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/sftools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.073121E4121@bag.python.org> Update of /cvsroot/python/python/nondist/sftools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sftools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/src/Compiler/compiler THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.10A9C1E4067@bag.python.org> Update of /cvsroot/python/python/nondist/src/Compiler/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src/Compiler/compiler Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/src/Compiler THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.17C861E4122@bag.python.org> Update of /cvsroot/python/python/nondist/src/Compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src/Compiler Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/src/Compiler/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.5F60A1E4107@bag.python.org> Update of /cvsroot/python/python/nondist/src/Compiler/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src/Compiler/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/src/Compiler/tests/experimental THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.97CC71E403E@bag.python.org> Update of /cvsroot/python/python/nondist/src/Compiler/tests/experimental In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src/Compiler/tests/experimental Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:32 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:32 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/cm THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213332.9E04E1E40A5@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/cm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/cm Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:32 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:32 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/ctb THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213332.C123F1E402A@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/ctb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/ctb Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/evt THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.52C2C1E4027@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/evt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/evt Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/ctl THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.567181E402D@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/ctl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/ctl Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/file THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.59A0D1E404B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/file In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/file Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/drag THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.50C561E4025@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/drag In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/drag Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/folder THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.6AA981E404F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/folder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/folder Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:32 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:32 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/dlg THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213332.061BA1E4023@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/dlg In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/dlg Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/htmlrender THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.6DA811E40A7@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/htmlrender In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/htmlrender Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/fm THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.67D2A1E4099@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/fm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/fm Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:33 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:33 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/help THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213333.B4D9A1E4053@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/help In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/help Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/ibcarbon THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.20F121E400B@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/ibcarbon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/ibcarbon Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/icn THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.2C7A71E402F@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/icn In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/icn Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/list THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.2A2D11E4014@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/list In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/list Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/launch THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.438E81E40A8@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/launch In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/launch Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/mlte THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.4BD2A1E40A9@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/mlte In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/mlte Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/menu THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.5814F1E40A4@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/menu In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/menu Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/qd THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.86B171E40AA@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/qd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/qd Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/osa THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.858D01E40AC@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/osa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/osa Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Modules/macspeech THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.83BA91E40AB@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Modules/macspeech In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Modules/macspeech Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:34 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:34 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Lib/scripting THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213334.C35AB1E40AE@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Lib/scripting In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Lib/scripting Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/framework/English.lproj THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.D85891E40C5@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/framework/English.lproj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/framework/English.lproj Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/sets THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.E7D0A1E411C@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/sets In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/sets Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:50 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:50 +0100 (CET) Subject: [Python-checkins] python/nondist/src/Compiler/p2c THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213350.9BE741E4018@bag.python.org> Update of /cvsroot/python/python/nondist/src/Compiler/p2c In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src/Compiler/p2c Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:53 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:53 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/typecheck/lib THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213353.3C86E1E4063@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/typecheck/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/typecheck/lib Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:51 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:51 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/typecheck/test THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213351.D46AA1E408F@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/typecheck/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/typecheck/test Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:54 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:54 +0100 (CET) Subject: [Python-checkins] python/nondist/src/Compiler/tests/output THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213354.106D51E4020@bag.python.org> Update of /cvsroot/python/python/nondist/src/Compiler/tests/output In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src/Compiler/tests/output Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:53 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:53 +0100 (CET) Subject: [Python-checkins] python/nondist/src/Compiler/tests/bytecode THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213353.CF39B1E403F@bag.python.org> Update of /cvsroot/python/python/nondist/src/Compiler/tests/bytecode In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/src/Compiler/tests/bytecode Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:37 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:37 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/Python THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213337.19FEF1E40AF@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/Python In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/Python Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/wat_dos THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.530F71E406B@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/wat_dos In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/wat_dos Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/PC/wat_os2 THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.542811E409F@bag.python.org> Update of /cvsroot/python/python/dist/src/PC/wat_os2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PC/wat_os2 Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects/build.mac68k.stand THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.614B21E40D3@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects/build.mac68k.stand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects/build.mac68k.stand Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Parser THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.6B6681E40D4@bag.python.org> Update of /cvsroot/python/python/dist/src/Parser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Parser Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/PCbuild THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.6D5AA1E40D5@bag.python.org> Update of /cvsroot/python/python/dist/src/PCbuild In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/PCbuild Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/projects THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.A7C861E4024@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/projects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/projects Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Python THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.A082A1E40D6@bag.python.org> Update of /cvsroot/python/python/dist/src/Python In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Python Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/RISCOS/support THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.479BD1E40D9@bag.python.org> Update of /cvsroot/python/python/dist/src/RISCOS/support In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/RISCOS/support Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/RISCOS/Python THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.AAC4F1E403A@bag.python.org> Update of /cvsroot/python/python/dist/src/RISCOS/Python In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/RISCOS/Python Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:42 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:42 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/mwerks/old THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213342.45D531E40D8@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/mwerks/old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/mwerks/old Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/setobj THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.0FE041E4110@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/setobj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/setobj Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.145661E4113@bag.python.org> Update of /cvsroot/python/python/nondist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/rational THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.131E21E4112@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/rational In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/rational Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/setuptools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.4DC281E4038@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/setuptools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/setuptools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/set THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.161C21E4114@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/set In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/set Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/setuptools/setuptools THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.798B71E4076@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/setuptools/setuptools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/setuptools/setuptools Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/setuptools/setuptools/command THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.8704A1E40FE@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/setuptools/setuptools/command In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/setuptools/setuptools/command Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/setuptools/setuptools/tests THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.88C4B1E410E@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/setuptools/setuptools/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/setuptools/setuptools/tests Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/setuptools/setuptools.egg-info THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.94A8C1E4015@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/setuptools/setuptools.egg-info In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/setuptools/setuptools.egg-info Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/sio THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.9A89C1E4115@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/sio In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/sio Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/spambayes THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.A83FF1E4116@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/spambayes Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/string THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.C2EE31E4084@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/string In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/string Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/string/string THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.CB2701E4118@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/string/string In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/string/string Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:49 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:49 +0100 (CET) Subject: [Python-checkins] python/nondist/sandbox/twister THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213349.CDDC11E4119@bag.python.org> Update of /cvsroot/python/python/nondist/sandbox/twister In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/nondist/sandbox/twister Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/iconsrc THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.D96F01E40C6@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/iconsrc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/iconsrc Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/OSXResources/framework THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.E27AD1E4042@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/OSXResources/framework In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/OSXResources/framework Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From loewis at users.sourceforge.net Sat Nov 26 22:33:36 2005 From: loewis at users.sourceforge.net (loewis@users.sourceforge.net) Date: Sat, 26 Nov 2005 22:33:36 +0100 (CET) Subject: [Python-checkins] python/dist/src/Mac/PlugIns THIS_REPOSITORY_HAS_MOVED, NONE, 1.1 Message-ID: <20051126213336.E4CD91E4052@bag.python.org> Update of /cvsroot/python/python/dist/src/Mac/PlugIns In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28147/dist/src/Mac/PlugIns Added Files: THIS_REPOSITORY_HAS_MOVED Log Message: Spread THIS_REPOSITORY_HAS_MOVED all over the place. --- NEW FILE: THIS_REPOSITORY_HAS_MOVED --- New location: http://svn.python.org/projects/python svn+ssh://pythondev at svn.python.org/python From martin.v.loewis at python.org Sun Nov 27 17:59:11 2005 From: martin.v.loewis at python.org (martin.v.loewis@python.org) Date: Sun, 27 Nov 2005 17:59:11 +0100 (CET) Subject: [Python-checkins] commit of r41551 - in python/trunk: Lib/idlelib Misc Message-ID: <20051127165911.8FF8B1E402B@bag.python.org> Author: martin.v.loewis Date: Sun Nov 27 17:59:04 2005 New Revision: 41551 Modified: python/trunk/Lib/idlelib/EditorWindow.py python/trunk/Lib/idlelib/IOBinding.py python/trunk/Misc/NEWS Log: Patch #1162825: Support non-ASCII characters in IDLE window titles. Modified: python/trunk/Lib/idlelib/EditorWindow.py ============================================================================== --- python/trunk/Lib/idlelib/EditorWindow.py (original) +++ python/trunk/Lib/idlelib/EditorWindow.py Sun Nov 27 17:59:04 2005 @@ -42,7 +42,7 @@ from Percolator import Percolator from ColorDelegator import ColorDelegator from UndoDelegator import UndoDelegator - from IOBinding import IOBinding + from IOBinding import IOBinding, filesystemencoding, encoding import Bindings from Tkinter import Toplevel from MultiStatusBar import MultiStatusBar @@ -256,6 +256,21 @@ self.askinteger = tkSimpleDialog.askinteger self.showerror = tkMessageBox.showerror + def _filename_to_unicode(self, filename): + """convert filename to unicode in order to display it in Tk""" + if isinstance(filename, unicode) or not filename: + return filename + else: + try: + return filename.decode(self.filesystemencoding) + except UnicodeDecodeError: + # XXX + try: + return filename.decode(self.encoding) + except UnicodeDecodeError: + # byte-to-byte conversion + return filename.decode('iso8859-1') + def new_callback(self, event): dirname, basename = self.io.defaultfilename() self.flist.new(dirname) @@ -675,8 +690,10 @@ menu.delete(1, END) # clear, and rebuild: for i, file in zip(count(), rf_list): file_name = file[0:-1] # zap \n + # make unicode string to display non-ASCII chars correctly + ufile_name = self._filename_to_unicode(file_name) callback = instance.__recent_file_callback(file_name) - menu.add_command(label=ulchars[i] + " " + file_name, + menu.add_command(label=ulchars[i] + " " + ufile_name, command=callback, underline=0) @@ -716,10 +733,12 @@ filename = self.io.filename if filename: filename = os.path.basename(filename) - return filename + # return unicode string to display non-ASCII chars correctly + return self._filename_to_unicode(filename) def long_title(self): - return self.io.filename or "" + # return unicode string to display non-ASCII chars correctly + return self._filename_to_unicode(self.io.filename or "") def center_insert_event(self, event): self.center() Modified: python/trunk/Lib/idlelib/IOBinding.py ============================================================================== --- python/trunk/Lib/idlelib/IOBinding.py (original) +++ python/trunk/Lib/idlelib/IOBinding.py Sun Nov 27 17:59:04 2005 @@ -32,6 +32,9 @@ except (ImportError, locale.Error): pass +# Encoding for file names +filesystemencoding = sys.getfilesystemencoding() + encoding = "ascii" if sys.platform == 'win32': # On Windows, we could use "mbcs". However, to give the user @@ -517,7 +520,10 @@ if not self.opendialog: self.opendialog = tkFileDialog.Open(master=self.text, filetypes=self.filetypes) - return self.opendialog.show(initialdir=dir, initialfile=base) + filename = self.opendialog.show(initialdir=dir, initialfile=base) + if isinstance(filename, unicode): + filename = filename.encode(filesystemencoding) + return filename def defaultfilename(self, mode="open"): if self.filename: @@ -536,7 +542,10 @@ if not self.savedialog: self.savedialog = tkFileDialog.SaveAs(master=self.text, filetypes=self.filetypes) - return self.savedialog.show(initialdir=dir, initialfile=base) + filename = self.savedialog.show(initialdir=dir, initialfile=base) + if isinstance(filename, unicode): + filename = filename.encode(filesystemencoding) + return filename def updaterecentfileslist(self,filename): "Update recent file list on all editor windows" Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Nov 27 17:59:04 2005 @@ -287,6 +287,8 @@ Library ------- +- Patch #1162825: Support non-ASCII characters in IDLE window titles. + - Bug #1365984: urllib now opens "data:" URLs again. - Patch #1314396: prevent deadlock for threading.Thread.join() when an exception From neal.norwitz at python.org Sun Nov 27 21:37:49 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 27 Nov 2005 21:37:49 +0100 (CET) Subject: [Python-checkins] commit of r41552 - python/trunk/Lib/test Message-ID: <20051127203749.4F2CE1E400F@bag.python.org> Author: neal.norwitz Date: Sun Nov 27 21:37:43 2005 New Revision: 41552 Modified: python/trunk/Lib/test/test_builtin.py python/trunk/Lib/test/test_file.py python/trunk/Lib/test/test_generators.py python/trunk/Lib/test/test_set.py python/trunk/Lib/test/test_syntax.py Log: Improve test coverage. Hope the test_file changes work the same on windows. Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Sun Nov 27 21:37:43 2005 @@ -238,8 +238,11 @@ self.assertRaises(TypeError, compile) self.assertRaises(ValueError, compile, 'print 42\n', '<string>', 'badmode') self.assertRaises(ValueError, compile, 'print 42\n', '<string>', 'single', 0xff) + self.assertRaises(TypeError, compile, chr(0), 'f', 'exec') if have_unicode: compile(unicode('print u"\xc3\xa5"\n', 'utf8'), '', 'exec') + self.assertRaises(TypeError, compile, unichr(0), 'f', 'exec') + self.assertRaises(ValueError, compile, unicode('a = 1'), 'f', 'bad') def test_delattr(self): import sys @@ -421,6 +424,7 @@ unlink(TESTFN) self.assertRaises(TypeError, execfile) + self.assertRaises(TypeError, execfile, TESTFN, {}, ()) import os self.assertRaises(IOError, execfile, os.curdir) self.assertRaises(IOError, execfile, "I_dont_exist") @@ -1008,6 +1012,9 @@ def __getitem__(self, index): raise ValueError self.assertRaises(ValueError, map, lambda x: x, BadSeq()) + def badfunc(x): + raise RuntimeError + self.assertRaises(RuntimeError, map, badfunc, range(5)) def test_max(self): self.assertEqual(max('123123'), '3') @@ -1239,6 +1246,12 @@ self.assertRaises(TypeError, range) self.assertRaises(TypeError, range, 1, 2, 3, 4) self.assertRaises(ValueError, range, 1, 2, 0) + self.assertRaises(ValueError, range, a, a + 1, long(0)) + + class badzero(int): + def __cmp__(self, other): + raise RuntimeError + self.assertRaises(RuntimeError, range, a, a + 1, badzero(1)) # Reject floats when it would require PyLongs to represent. # (smaller floats still accepted, but deprecated) Modified: python/trunk/Lib/test/test_file.py ============================================================================== --- python/trunk/Lib/test/test_file.py (original) +++ python/trunk/Lib/test/test_file.py Sun Nov 27 21:37:43 2005 @@ -100,6 +100,39 @@ print "writelines accepted sequence of non-string objects" f.close() +try: + sys.stdin.seek(0) +except IOError: + pass +else: + print "should not be able to seek on sys.stdin" + +try: + sys.stdin.tell() +except IOError: + pass +else: + print "should not be able to seek on sys.stdin" + +try: + sys.stdin.truncate() +except IOError: + pass +else: + print "should not be able to truncate on sys.stdin" + +# verify repr works +f = open(TESTFN) +if not repr(f).startswith("<open file '" + TESTFN): + print "repr(file) failed" +f.close() + +# verify repr works for unicode too +f = open(unicode(TESTFN)) +if not repr(f).startswith("<open file u'" + TESTFN): + print "repr(file with unicode name) failed" +f.close() + # verify that we get a sensible error message for bad mode argument bad_mode = "qwerty" try: Modified: python/trunk/Lib/test/test_generators.py ============================================================================== --- python/trunk/Lib/test/test_generators.py (original) +++ python/trunk/Lib/test/test_generators.py Sun Nov 27 21:37:43 2005 @@ -1589,6 +1589,11 @@ ... ValueError: 7 +>>> f().throw("abc") # throw on just-opened generator +Traceback (most recent call last): + ... +TypeError: exceptions must be classes, or instances, not str + Now let's try closing a generator: Modified: python/trunk/Lib/test/test_set.py ============================================================================== --- python/trunk/Lib/test/test_set.py (original) +++ python/trunk/Lib/test/test_set.py Sun Nov 27 21:37:43 2005 @@ -606,6 +606,8 @@ def test_iteration(self): for v in self.set: self.assert_(v in self.values) + setiter = iter(self.set) + self.assertEqual(setiter._length_cue(), len(self.set)) def test_pickling(self): p = pickle.dumps(self.set) @@ -693,6 +695,16 @@ set('abc') set(gooditer()) + def test_changingSizeWhileIterating(self): + s = set([1,2,3]) + try: + for i in s: + s.update([4]) + except RuntimeError: + pass + else: + self.fail("no exception when changing size during iteration") + #============================================================================== class TestSetOfSets(unittest.TestCase): Modified: python/trunk/Lib/test/test_syntax.py ============================================================================== --- python/trunk/Lib/test/test_syntax.py (original) +++ python/trunk/Lib/test/test_syntax.py Sun Nov 27 21:37:43 2005 @@ -42,6 +42,18 @@ self._check_error(source, "global") warnings.filters.pop(0) + def test_break_outside_loop(self): + self._check_error("break", "outside loop") + + def test_delete_deref(self): + source = re.sub('(?m)^ *:', '', """\ + :def foo(x): + : def bar(): + : print x + : del x + :""") + self._check_error(source, "nested scope") + def test_main(): test_support.run_unittest(SyntaxTestCase) From neal.norwitz at python.org Sun Nov 27 21:38:36 2005 From: neal.norwitz at python.org (neal.norwitz@python.org) Date: Sun, 27 Nov 2005 21:38:36 +0100 (CET) Subject: [Python-checkins] commit of r41553 - python/trunk/Python Message-ID: <20051127203836.99D701E400F@bag.python.org> Author: neal.norwitz Date: Sun Nov 27 21:38:31 2005 New Revision: 41553 Modified: python/trunk/Python/bltinmodule.c Log: Fix memory leaks Modified: python/trunk/Python/bltinmodule.c ============================================================================== --- python/trunk/Python/bltinmodule.c (original) +++ python/trunk/Python/bltinmodule.c Sun Nov 27 21:38:31 2005 @@ -404,7 +404,7 @@ int dont_inherit = 0; int supplied_flags = 0; PyCompilerFlags cf; - PyObject *result, *cmd, *tmp = NULL; + PyObject *result = NULL, *cmd, *tmp = NULL; int length; if (!PyArg_ParseTuple(args, "Oss|ii:compile", &cmd, &filename, @@ -427,7 +427,7 @@ if ((size_t)length != strlen(str)) { PyErr_SetString(PyExc_TypeError, "compile() expected string without null bytes"); - return NULL; + goto cleanup; } if (strcmp(startstr, "exec") == 0) @@ -439,7 +439,7 @@ else { PyErr_SetString(PyExc_ValueError, "compile() arg 3 must be 'exec' or 'eval' or 'single'"); - return NULL; + goto cleanup; } if (supplied_flags & @@ -447,7 +447,7 @@ { PyErr_SetString(PyExc_ValueError, "compile(): unrecognised flags"); - return NULL; + goto cleanup; } /* XXX Warn if (supplied_flags & PyCF_MASK_OBSOLETE) != 0? */ @@ -455,6 +455,7 @@ PyEval_MergeCompilerFlags(&cf); } result = Py_CompileStringFlags(str, filename, start, &cf); +cleanup: Py_XDECREF(tmp); return result; } @@ -580,8 +581,10 @@ cf.cf_flags |= PyCF_SOURCE_IS_UTF8; } #endif - if (PyString_AsStringAndSize(cmd, &str, NULL)) + if (PyString_AsStringAndSize(cmd, &str, NULL)) { + Py_XDECREF(tmp); return NULL; + } while (*str == ' ' || *str == '\t') str++; From martin.v.loewis at python.org Mon Nov 28 18:34:29 2005 From: martin.v.loewis at python.org (martin.v.loewis@python.org) Date: Mon, 28 Nov 2005 18:34:29 +0100 (CET) Subject: [Python-checkins] commit of r41554 - in python/trunk: Misc Python Message-ID: <20051128173429.8CCF31E4010@bag.python.org> Author: martin.v.loewis Date: Mon Nov 28 18:34:23 2005 New Revision: 41554 Modified: python/trunk/Misc/ACKS python/trunk/Misc/NEWS python/trunk/Python/pythonrun.c Log: Patch #1350409: Port signal handling to VS 2005. Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Mon Nov 28 18:34:23 2005 @@ -113,6 +113,7 @@ Nicolas Chauvat Michael Chermside Albert Chin-A-Young +Adal Chiriliuc Tom Christiansen Vadim Chugunov David Cinege Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Nov 28 18:34:23 2005 @@ -12,6 +12,8 @@ Core and builtins ----------------- +- Patch #1350409: Work around signal handling bug in Visual Studio 2005. + - Bug #1281408: Py_BuildValue now works correct even with unsigned longs and long longs. Modified: python/trunk/Python/pythonrun.c ============================================================================== --- python/trunk/Python/pythonrun.c (original) +++ python/trunk/Python/pythonrun.c Mon Nov 28 18:34:23 2005 @@ -1615,6 +1615,23 @@ return context.sa_handler; #else PyOS_sighandler_t handler; +/* Special signal handling for the secure CRT in Visual Studio 2005 */ +#if defined(_MSC_VER) && _MSC_VER >= 1400 + switch (sig) { + /* Only these signals are valid */ + case SIGINT: + case SIGILL: + case SIGFPE: + case SIGSEGV: + case SIGTERM: + case SIGBREAK: + case SIGABRT: + break; + /* Don't call signal() with other values or it will assert */ + default: + return SIG_ERR; + } +#endif /* _MSC_VER && _MSC_VER >= 1400 */ handler = signal(sig, SIG_IGN); if (handler != SIG_ERR) signal(sig, handler); From walter.doerwald at python.org Mon Nov 28 23:16:02 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Mon, 28 Nov 2005 23:16:02 +0100 (CET) Subject: [Python-checkins] commit of r41555 - python/trunk/Objects Message-ID: <20051128221602.31AD01E4018@bag.python.org> Author: walter.doerwald Date: Mon Nov 28 23:15:56 2005 New Revision: 41555 Modified: python/trunk/Objects/unicodeobject.c Log: Fix leaked reference to None. Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Mon Nov 28 23:15:56 2005 @@ -2928,6 +2928,7 @@ Py_DECREF(x); goto onError; } + Py_DECREF(x); continue; } else if (PyUnicode_Check(x)) { From walter.doerwald at python.org Mon Nov 28 23:16:28 2005 From: walter.doerwald at python.org (walter.doerwald@python.org) Date: Mon, 28 Nov 2005 23:16:28 +0100 (CET) Subject: [Python-checkins] commit of r41556 - python/branches/release24-maint/Objects Message-ID: <20051128221628.B5DC61E4010@bag.python.org> Author: walter.doerwald Date: Mon Nov 28 23:16:22 2005 New Revision: 41556 Modified: python/branches/release24-maint/Objects/unicodeobject.c Log: Backport checkin: Fix leaked reference to None. Modified: python/branches/release24-maint/Objects/unicodeobject.c ============================================================================== --- python/branches/release24-maint/Objects/unicodeobject.c (original) +++ python/branches/release24-maint/Objects/unicodeobject.c Mon Nov 28 23:16:22 2005 @@ -2889,6 +2889,7 @@ Py_DECREF(x); goto onError; } + Py_DECREF(x); continue; } else if (PyUnicode_Check(x)) { From python-checkins at python.org Tue Nov 29 09:14:07 2005 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 29 Nov 2005 09:14:07 +0100 (CET) Subject: [Python-checkins] commit of r41557 - sftools/trunk Message-ID: <20051129081407.7C6E11E400D@bag.python.org> Author: martin.v.loewis Date: Tue Nov 29 09:14:01 2005 New Revision: 41557 Added: sftools/trunk/foo Log: Dummy commit to test From addresses. Added: sftools/trunk/foo ============================================================================== From python-checkins at python.org Tue Nov 29 09:14:56 2005 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 29 Nov 2005 09:14:56 +0100 (CET) Subject: [Python-checkins] commit of r41558 - sftools/trunk Message-ID: <20051129081456.EE1D81E400D@bag.python.org> Author: martin.v.loewis Date: Tue Nov 29 09:14:52 2005 New Revision: 41558 Removed: sftools/trunk/foo Log: Revert previous checkin. Deleted: /sftools/trunk/foo ============================================================================== From python-checkins at python.org Tue Nov 29 12:22:33 2005 From: python-checkins at python.org (fredrik.lundh) Date: Tue, 29 Nov 2005 12:22:33 +0100 (CET) Subject: [Python-checkins] commit of r41559 - in python/trunk: . Doc/lib Message-ID: <20051129112233.0FCB21E401A@bag.python.org> Author: fredrik.lundh Date: Tue Nov 29 12:22:29 2005 New Revision: 41559 Modified: python/trunk/ (props changed) python/trunk/Doc/lib/libxmlrpclib.tex Log: SF#1368827 bad link in XML-RPC documentation Modified: python/trunk/Doc/lib/libxmlrpclib.tex ============================================================================== --- python/trunk/Doc/lib/libxmlrpclib.tex (original) +++ python/trunk/Doc/lib/libxmlrpclib.tex Tue Nov 29 12:22:29 2005 @@ -102,7 +102,7 @@ \begin{seealso} - \seetitle[http://xmlrpc-c.sourceforge.net/xmlrpc-howto/xmlrpc-howto.html] + \seetitle[http://http://www.tldp.org/HOWTO/XML-RPC-HOWTO/index.html] {XML-RPC HOWTO}{A good description of XML operation and client software in several languages. Contains pretty much everything an XML-RPC client developer needs to know.} From python-checkins at python.org Tue Nov 29 13:41:06 2005 From: python-checkins at python.org (fred.drake) Date: Tue, 29 Nov 2005 13:41:06 +0100 (CET) Subject: [Python-checkins] commit of r41560 - python/trunk/Doc/lib Message-ID: <20051129124106.926B51E4002@bag.python.org> Author: fred.drake Date: Tue Nov 29 13:40:58 2005 New Revision: 41560 Modified: python/trunk/Doc/lib/libxmlrpclib.tex Log: fix link Modified: python/trunk/Doc/lib/libxmlrpclib.tex ============================================================================== --- python/trunk/Doc/lib/libxmlrpclib.tex (original) +++ python/trunk/Doc/lib/libxmlrpclib.tex Tue Nov 29 13:40:58 2005 @@ -102,7 +102,7 @@ \begin{seealso} - \seetitle[http://http://www.tldp.org/HOWTO/XML-RPC-HOWTO/index.html] + \seetitle[http://www.tldp.org/HOWTO/XML-RPC-HOWTO/index.html] {XML-RPC HOWTO}{A good description of XML operation and client software in several languages. Contains pretty much everything an XML-RPC client developer needs to know.} From python-checkins at python.org Tue Nov 29 16:45:19 2005 From: python-checkins at python.org (walter.doerwald) Date: Tue, 29 Nov 2005 16:45:19 +0100 (CET) Subject: [Python-checkins] commit of r41561 - python/trunk/Lib/test Message-ID: <20051129154519.3E6FB1E4016@bag.python.org> Author: walter.doerwald Date: Tue Nov 29 16:45:14 2005 New Revision: 41561 Modified: python/trunk/Lib/test/test_builtin.py Log: Test another error case in PyFloat_FromString(). Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Tue Nov 29 16:45:14 2005 @@ -548,6 +548,8 @@ if have_unicode: self.assertEqual(float(unicode(" 3.14 ")), 3.14) self.assertEqual(float(unicode(" \u0663.\u0661\u0664 ",'raw-unicode-escape')), 3.14) + # Implementation limitation in PyFloat_FromString() + self.assertRaises(ValueError, float, unicode("1"*10000)) def test_float_with_comma(self): # set locale to something that doesn't use '.' for the decimal point From python-checkins at python.org Tue Nov 29 18:08:28 2005 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 29 Nov 2005 18:08:28 +0100 (CET) Subject: [Python-checkins] commit of r41562 - python/trunk/PC Message-ID: <20051129170828.9FCD71E4002@bag.python.org> Author: martin.v.loewis Date: Tue Nov 29 18:08:24 2005 New Revision: 41562 Modified: python/trunk/PC/winsound.c Log: Limit x86 machine instructions and Win95 support to _M_IX86. Modified: python/trunk/PC/winsound.c ============================================================================== --- python/trunk/PC/winsound.c (original) +++ python/trunk/PC/winsound.c Tue Nov 29 18:08:24 2005 @@ -145,6 +145,7 @@ return NULL; } } +#ifdef _M_IX86 else if (whichOS == Win9X) { int speaker_state; /* Force timer into oscillator mode via timer control port. */ @@ -169,6 +170,7 @@ /* Restore speaker control to original state. */ _outp(0x61, speaker_state); } +#endif /* _M_IX86 */ else { assert(!"winsound's whichOS has insane value"); } From python-checkins at python.org Tue Nov 29 18:09:18 2005 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 29 Nov 2005 18:09:18 +0100 (CET) Subject: [Python-checkins] commit of r41563 - python/trunk/PC Message-ID: <20051129170918.C016E1E4002@bag.python.org> Author: martin.v.loewis Date: Tue Nov 29 18:09:13 2005 New Revision: 41563 Modified: python/trunk/PC/pyconfig.h Log: Silence VS2005 warnings about deprecated functions. Modified: python/trunk/PC/pyconfig.h ============================================================================== --- python/trunk/PC/pyconfig.h (original) +++ python/trunk/PC/pyconfig.h Tue Nov 29 18:09:13 2005 @@ -27,6 +27,16 @@ */ +/* Visual Studio 2005 introduces deprecation warnings for + "insecure" and POSIX functions. The insecure functions should + be replaces by *_s versions (according to Microsoft); the + POSIX functions by _* versions (which, according to Microsoft, + would be ISO C conforming). Neither renaming is feasible, so + we just silence the warnings. */ + +#define _CRT_SECURE_NO_DEPRECATE 1 +#define _CRT_NONSTDC_NO_DEPRECATE 1 + #include <io.h> #define HAVE_SYS_UTIME_H #define HAVE_HYPOT From python-checkins at python.org Wed Nov 30 02:14:53 2005 From: python-checkins at python.org (andrew.kuchling) Date: Wed, 30 Nov 2005 02:14:53 +0100 (CET) Subject: [Python-checkins] commit of r41564 - python/trunk/Doc/howto Message-ID: <20051130011453.E96881E4002@bag.python.org> Author: andrew.kuchling Date: Wed Nov 30 02:14:48 2005 New Revision: 41564 Removed: python/trunk/Doc/howto/sorting.tex Log: Remove sorting HOWTO, after converting it to a wiki page at http://wiki.python.org/moin/HowTo/Sorting Deleted: /python/trunk/Doc/howto/sorting.tex ============================================================================== --- /python/trunk/Doc/howto/sorting.tex Wed Nov 30 02:14:48 2005 +++ (empty file) @@ -1,266 +0,0 @@ -\documentclass{howto} - -\title{Sorting Mini-HOWTO} - -% Increment the release number whenever significant changes are made. -% The author and/or editor can define 'significant' however they like. -\release{0.01} - -\author{Andrew Dalke} -\authoraddress{\email{dalke at bioreason.com}} - -\begin{document} -\maketitle - -\begin{abstract} -\noindent -This document is a little tutorial -showing a half dozen ways to sort a list with the built-in -\method{sort()} method. - -This document is available from the Python HOWTO page at -\url{http://www.python.org/doc/howto}. -\end{abstract} - -\tableofcontents - -Python lists have a built-in \method{sort()} method. There are many -ways to use it to sort a list and there doesn't appear to be a single, -central place in the various manuals describing them, so I'll do so -here. - -\section{Sorting basic data types} - -A simple ascending sort is easy; just call the \method{sort()} method of a list. - -\begin{verbatim} ->>> a = [5, 2, 3, 1, 4] ->>> a.sort() ->>> print a -[1, 2, 3, 4, 5] -\end{verbatim} - -Sort takes an optional function which can be called for doing the -comparisons. The default sort routine is equivalent to - -\begin{verbatim} ->>> a = [5, 2, 3, 1, 4] ->>> a.sort(cmp) ->>> print a -[1, 2, 3, 4, 5] -\end{verbatim} - -where \function{cmp} is the built-in function which compares two objects, \code{x} and -\code{y}, and returns -1, 0 or 1 depending on whether $x<y$, $x==y$, or $x>y$. During -the course of the sort the relationships must stay the same for the -final list to make sense. - -If you want, you can define your own function for the comparison. For -integers (and numbers in general) we can do: - -\begin{verbatim} ->>> def numeric_compare(x, y): ->>> return x-y ->>> ->>> a = [5, 2, 3, 1, 4] ->>> a.sort(numeric_compare) ->>> print a -[1, 2, 3, 4, 5] -\end{verbatim} - -By the way, this function won't work if result of the subtraction -is out of range, as in \code{sys.maxint - (-1)}. - -Or, if you don't want to define a new named function you can create an -anonymous one using \keyword{lambda}, as in: - -\begin{verbatim} ->>> a = [5, 2, 3, 1, 4] ->>> a.sort(lambda x, y: x-y) ->>> print a -[1, 2, 3, 4, 5] -\end{verbatim} - -If you want the numbers sorted in reverse you can do - -\begin{verbatim} ->>> a = [5, 2, 3, 1, 4] ->>> def reverse_numeric(x, y): ->>> return y-x ->>> ->>> a.sort(reverse_numeric) ->>> print a -[5, 4, 3, 2, 1] -\end{verbatim} - -(a more general implementation could return \code{cmp(y,x)} or \code{-cmp(x,y)}). - -However, it's faster if Python doesn't have to call a function for -every comparison, so if you want a reverse-sorted list of basic data -types, do the forward sort first, then use the \method{reverse()} method. - -\begin{verbatim} ->>> a = [5, 2, 3, 1, 4] ->>> a.sort() ->>> a.reverse() ->>> print a -[5, 4, 3, 2, 1] -\end{verbatim} - -Here's a case-insensitive string comparison using a \keyword{lambda} function: - -\begin{verbatim} ->>> a = "This is a test string from Andrew".split() ->>> a.sort(lambda x, y: cmp(x.lower(), y.lower())) ->>> print a -['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] -\end{verbatim} - -This goes through the overhead of converting a word to lower case -every time it must be compared. At times it may be faster to compute -these once and use those values, and the following example shows how. - -\begin{verbatim} ->>> words = string.split("This is a test string from Andrew.") ->>> offsets = [] ->>> for i in range(len(words)): ->>> offsets.append( (string.lower(words[i]), i) ) ->>> ->>> offsets.sort() ->>> new_words = [] ->>> for dontcare, i in offsets: ->>> new_words.append(words[i]) ->>> ->>> print new_words -\end{verbatim} - -The \code{offsets} list is initialized to a tuple of the lower-case string -and its position in the \code{words} list. It is then sorted. Python's -sort method sorts tuples by comparing terms; given \code{x} and \code{y}, compare -\code{x[0]} to \code{y[0]}, then \code{x[1]} to \code{y[1]}, etc. until there is a difference. - -The result is that the \code{offsets} list is ordered by its first -term, and the second term can be used to figure out where the original -data was stored. (The \code{for} loop assigns \code{dontcare} and -\code{i} to the two fields of each term in the list, but we only need the -index value.) - -Another way to implement this is to store the original data as the -second term in the \code{offsets} list, as in: - -\begin{verbatim} ->>> words = string.split("This is a test string from Andrew.") ->>> offsets = [] ->>> for word in words: ->>> offsets.append( (string.lower(word), word) ) ->>> ->>> offsets.sort() ->>> new_words = [] ->>> for word in offsets: ->>> new_words.append(word[1]) ->>> ->>> print new_words -\end{verbatim} - -This isn't always appropriate because the second terms in the list -(the word, in this example) will be compared when the first terms are -the same. If this happens many times, then there will be the unneeded -performance hit of comparing the two objects. This can be a large -cost if most terms are the same and the objects define their own -\method{__cmp__} method, but there will still be some overhead to determine if -\method{__cmp__} is defined. - -Still, for large lists, or for lists where the comparison information -is expensive to calculate, the last two examples are likely to be the -fastest way to sort a list. It will not work on weakly sorted data, -like complex numbers, but if you don't know what that means, you -probably don't need to worry about it. - -\section{Comparing classes} - -The comparison for two basic data types, like ints to ints or string to -string, is built into Python and makes sense. There is a default way -to compare class instances, but the default manner isn't usually very -useful. You can define your own comparison with the \method{__cmp__} method, -as in: - -\begin{verbatim} ->>> class Spam: ->>> def __init__(self, spam, eggs): ->>> self.spam = spam ->>> self.eggs = eggs ->>> def __cmp__(self, other): ->>> return cmp(self.spam+self.eggs, other.spam+other.eggs) ->>> def __str__(self): ->>> return str(self.spam + self.eggs) ->>> ->>> a = [Spam(1, 4), Spam(9, 3), Spam(4,6)] ->>> a.sort() ->>> for spam in a: ->>> print str(spam) -5 -10 -12 -\end{verbatim} - -Sometimes you may want to sort by a specific attribute of a class. If -appropriate you should just define the \method{__cmp__} method to compare -those values, but you cannot do this if you want to compare between -different attributes at different times. Instead, you'll need to go -back to passing a comparison function to sort, as in: - -\begin{verbatim} ->>> a = [Spam(1, 4), Spam(9, 3), Spam(4,6)] ->>> a.sort(lambda x, y: cmp(x.eggs, y.eggs)) ->>> for spam in a: ->>> print spam.eggs, str(spam) -3 12 -4 5 -6 10 -\end{verbatim} - -If you want to compare two arbitrary attributes (and aren't overly -concerned about performance) you can even define your own comparison -function object. This uses the ability of a class instance to emulate -an function by defining the \method{__call__} method, as in: - -\begin{verbatim} ->>> class CmpAttr: ->>> def __init__(self, attr): ->>> self.attr = attr ->>> def __call__(self, x, y): ->>> return cmp(getattr(x, self.attr), getattr(y, self.attr)) ->>> ->>> a = [Spam(1, 4), Spam(9, 3), Spam(4,6)] ->>> a.sort(CmpAttr("spam")) # sort by the "spam" attribute ->>> for spam in a: ->>> print spam.spam, spam.eggs, str(spam) -1 4 5 -4 6 10 -9 3 12 - ->>> a.sort(CmpAttr("eggs")) # re-sort by the "eggs" attribute ->>> for spam in a: ->>> print spam.spam, spam.eggs, str(spam) -9 3 12 -1 4 5 -4 6 10 -\end{verbatim} - -Of course, if you want a faster sort you can extract the attributes -into an intermediate list and sort that list. - - -So, there you have it; about a half-dozen different ways to define how -to sort a list: -\begin{itemize} - \item sort using the default method - \item sort using a comparison function - \item reverse sort not using a comparison function - \item sort on an intermediate list (two forms) - \item sort using class defined __cmp__ method - \item sort using a sort function object -\end{itemize} - -\end{document} -% LocalWords: maxint From python-checkins at python.org Wed Nov 30 08:34:10 2005 From: python-checkins at python.org (fred.drake) Date: Wed, 30 Nov 2005 08:34:10 +0100 (CET) Subject: [Python-checkins] commit of r41565 - python/branches/release24-maint/Lib/test Message-ID: <20051130073410.7316B1E4002@bag.python.org> Author: fred.drake Date: Wed Nov 30 08:34:04 2005 New Revision: 41565 Modified: python/branches/release24-maint/Lib/test/test_cmd_line.py Log: fix indentation; this could not have passed Modified: python/branches/release24-maint/Lib/test/test_cmd_line.py ============================================================================== --- python/branches/release24-maint/Lib/test/test_cmd_line.py (original) +++ python/branches/release24-maint/Lib/test/test_cmd_line.py Wed Nov 30 08:34:04 2005 @@ -12,14 +12,14 @@ outfp.close() return data - def exit_code(self, cmd_line): - return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE) + def exit_code(self, cmd_line): + return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE) def test_directories(self): if sys.platform == 'win32': # Exit code for "python .", Error 13: permission denied = 2 expected_exit_code = 2 - else: + else: # Linux has no problem with "python .", Exit code = 0 expected_exit_code = 0 self.assertEqual(self.exit_code('.'), expected_exit_code) From python-checkins at python.org Wed Nov 30 08:36:05 2005 From: python-checkins at python.org (fred.drake) Date: Wed, 30 Nov 2005 08:36:05 +0100 (CET) Subject: [Python-checkins] commit of r41566 - in python/branches/release24-maint: Lib Lib/test Mac/Tools/IDE Tools/msi Message-ID: <20051130073605.233191E4002@bag.python.org> Author: fred.drake Date: Wed Nov 30 08:36:01 2005 New Revision: 41566 Modified: python/branches/release24-maint/Lib/pydoc.py python/branches/release24-maint/Lib/test/test_dircache.py python/branches/release24-maint/Lib/test/test_threadsignals.py python/branches/release24-maint/Lib/trace.py python/branches/release24-maint/Mac/Tools/IDE/Wsocket.py python/branches/release24-maint/Tools/msi/uisample.py Log: fix recurring typo: occured --> occurred (already fixed in Python trunk) Modified: python/branches/release24-maint/Lib/pydoc.py ============================================================================== --- python/branches/release24-maint/Lib/pydoc.py (original) +++ python/branches/release24-maint/Lib/pydoc.py Wed Nov 30 08:36:01 2005 @@ -264,7 +264,7 @@ # Did the error occur before or after the module was found? (exc, value, tb) = info = sys.exc_info() if path in sys.modules: - # An error occured while executing the imported module. + # An error occurred while executing the imported module. raise ErrorDuringImport(sys.modules[path].__file__, info) elif exc is SyntaxError: # A SyntaxError occurred before we could execute the module. Modified: python/branches/release24-maint/Lib/test/test_dircache.py ============================================================================== --- python/branches/release24-maint/Lib/test/test_dircache.py (original) +++ python/branches/release24-maint/Lib/test/test_dircache.py Wed Nov 30 08:36:01 2005 @@ -46,7 +46,7 @@ if sys.platform[:3] not in ('win', 'os2'): # Sadly, dircache has the same granularity as stat.mtime, and so - # can't notice any changes that occured within 1 sec of the last + # can't notice any changes that occurred within 1 sec of the last # time it examined a directory. time.sleep(1) self.writeTemp("test1") Modified: python/branches/release24-maint/Lib/test/test_threadsignals.py ============================================================================== --- python/branches/release24-maint/Lib/test/test_threadsignals.py (original) +++ python/branches/release24-maint/Lib/test/test_threadsignals.py Wed Nov 30 08:36:01 2005 @@ -21,7 +21,7 @@ return usr1, usr2, alrm -# The signal handler. Just note that the signal occured and +# The signal handler. Just note that the signal occurred and # from who. def handle_signals(sig,frame): signal_blackboard[sig]['tripped'] += 1 Modified: python/branches/release24-maint/Lib/trace.py ============================================================================== --- python/branches/release24-maint/Lib/trace.py (original) +++ python/branches/release24-maint/Lib/trace.py Wed Nov 30 08:36:01 2005 @@ -133,7 +133,7 @@ # the ignore list n = len(mod) # (will not overflow since if the first n characters are the - # same and the name has not already occured, then the size + # same and the name has not already occurred, then the size # of "name" is greater than that of "mod") if mod == modulename[:n] and modulename[n] == '.': self._ignore[modulename] = 1 Modified: python/branches/release24-maint/Mac/Tools/IDE/Wsocket.py ============================================================================== --- python/branches/release24-maint/Mac/Tools/IDE/Wsocket.py (original) +++ python/branches/release24-maint/Mac/Tools/IDE/Wsocket.py Wed Nov 30 08:36:01 2005 @@ -163,7 +163,7 @@ def settotal(int total): gets called when the connection knows the data size def setcurrent(int current): gets called when some new data has arrived def done(): gets called when the transaction is complete - def error(type, value, tb): gets called wheneven an error occured + def error(type, value, tb): gets called wheneven an error occurred """ def __init__(self, settotal_func, setcurrent_func, done_func, error_func): Modified: python/branches/release24-maint/Tools/msi/uisample.py ============================================================================== --- python/branches/release24-maint/Tools/msi/uisample.py (original) +++ python/branches/release24-maint/Tools/msi/uisample.py Wed Nov 30 08:36:01 2005 @@ -1393,7 +1393,7 @@ (1932, u'The Windows Installer service cannot update the protected Windows file [2]. {{Package version: [3], OS Protected version: [4], SFP Error: [5]}}'), (1933, u'The Windows Installer service cannot update one or more protected Windows files. {{SFP Error: [2]. List of protected files:\\r\\n[3]}}'), (1934, u'User installations are disabled via policy on the machine.'), -(1935, u'An error occured during the installation of assembly component [2]. HRESULT: [3]. {{assembly interface: [4], function: [5], assembly name: [6]}}'), +(1935, u'An error occurred during the installation of assembly component [2]. HRESULT: [3]. {{assembly interface: [4], function: [5], assembly name: [6]}}'), ] tables=['AdminExecuteSequence', 'AdminUISequence', 'AdvtExecuteSequence', 'BBControl', 'Billboard', 'Binary', 'CheckBox', 'Property', 'ComboBox', 'Control', 'ListBox', 'ActionText', 'ControlCondition', 'ControlEvent', 'Dialog', 'EventMapping', 'InstallExecuteSequence', 'InstallUISequence', 'ListView', 'RadioButton', 'TextStyle', 'UIText', '_Validation', 'Error'] From python-checkins at python.org Wed Nov 30 10:41:34 2005 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 30 Nov 2005 10:41:34 +0100 (CET) Subject: [Python-checkins] commit of r41567 - python/branches/ast-objects Message-ID: <20051130094134.7C9711E401F@bag.python.org> Author: martin.v.loewis Date: Wed Nov 30 10:41:29 2005 New Revision: 41567 Added: python/branches/ast-objects/ - copied from r41566, python/trunk/ Log: Branch to experiment with a PyObject* AST. From python-checkins at python.org Wed Nov 30 20:11:32 2005 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 30 Nov 2005 20:11:32 +0100 (CET) Subject: [Python-checkins] commit of r41568 - in python/branches/ast-objects: . Include Parser Python Message-ID: <20051130191132.55ED31E400E@bag.python.org> Author: martin.v.loewis Date: Wed Nov 30 20:11:25 2005 New Revision: 41568 Removed: python/branches/ast-objects/Include/asdl.h python/branches/ast-objects/Python/asdl.c Modified: python/branches/ast-objects/Include/Python-ast.h python/branches/ast-objects/Makefile.pre.in python/branches/ast-objects/Parser/asdl_c.py python/branches/ast-objects/Python/Python-ast.c Log: Convert asdl_c.py to generate PyObjects. Modified: python/branches/ast-objects/Include/Python-ast.h ============================================================================== --- python/branches/ast-objects/Include/Python-ast.h (original) +++ python/branches/ast-objects/Include/Python-ast.h Wed Nov 30 20:11:25 2005 @@ -1,408 +1,565 @@ /* File automatically generated by ./Parser/asdl_c.py */ -#include "asdl.h" +PyAPI_DATA(PyTypeObject) Py_mod_Type; +#define Py_mod_Check(op) PyObject_TypeCheck(op, &Py_mod_Type) -typedef struct _mod *mod_ty; +struct Py_mod{ + PyObject_HEAD +}; + +PyAPI_DATA(PyTypeObject) Py_mod_Module_Type; +#define Py_mod_Module_Check(op) PyObject_TypeCheck(op, &Py_mod_Module_Type) + +struct Py_mod_Module{ + struct Py_mod _base; + PyObject* body; /* stmt */ +}; +PyObject *Py_mod_Module_New(PyObject*); + +PyAPI_DATA(PyTypeObject) Py_mod_Interactive_Type; +#define Py_mod_Interactive_Check(op) PyObject_TypeCheck(op, &Py_mod_Interactive_Type) -typedef struct _stmt *stmt_ty; +struct Py_mod_Interactive{ + struct Py_mod _base; + PyObject* body; /* stmt */ +}; +PyObject *Py_mod_Interactive_New(PyObject*); -typedef struct _expr *expr_ty; +PyAPI_DATA(PyTypeObject) Py_mod_Expression_Type; +#define Py_mod_Expression_Check(op) PyObject_TypeCheck(op, &Py_mod_Expression_Type) + +struct Py_mod_Expression{ + struct Py_mod _base; + PyObject* body; /* expr */ +}; +PyObject *Py_mod_Expression_New(PyObject*); + +PyAPI_DATA(PyTypeObject) Py_mod_Suite_Type; +#define Py_mod_Suite_Check(op) PyObject_TypeCheck(op, &Py_mod_Suite_Type) + +struct Py_mod_Suite{ + struct Py_mod _base; + PyObject* body; /* stmt */ +}; +PyObject *Py_mod_Suite_New(PyObject*); -typedef enum _expr_context { Load=1, Store=2, Del=3, AugLoad=4, AugStore=5, - Param=6 } expr_context_ty; - -typedef struct _slice *slice_ty; - -typedef enum _boolop { And=1, Or=2 } boolop_ty; - -typedef enum _operator { Add=1, Sub=2, Mult=3, Div=4, Mod=5, Pow=6, LShift=7, - RShift=8, BitOr=9, BitXor=10, BitAnd=11, FloorDiv=12 } - operator_ty; - -typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty; - -typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8, - In=9, NotIn=10 } cmpop_ty; - -typedef struct _comprehension *comprehension_ty; - -typedef struct _excepthandler *excepthandler_ty; - -typedef struct _arguments *arguments_ty; - -typedef struct _keyword *keyword_ty; - -typedef struct _alias *alias_ty; - - -struct _mod { - enum { Module_kind=1, Interactive_kind=2, Expression_kind=3, - Suite_kind=4 } kind; - union { - struct { - asdl_seq *body; - } Module; - - struct { - asdl_seq *body; - } Interactive; - - struct { - expr_ty body; - } Expression; - - struct { - asdl_seq *body; - } Suite; - - } v; -}; - -struct _stmt { - enum { FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3, - Delete_kind=4, Assign_kind=5, AugAssign_kind=6, Print_kind=7, - For_kind=8, While_kind=9, If_kind=10, Raise_kind=11, - TryExcept_kind=12, TryFinally_kind=13, Assert_kind=14, - Import_kind=15, ImportFrom_kind=16, Exec_kind=17, - Global_kind=18, Expr_kind=19, Pass_kind=20, Break_kind=21, - Continue_kind=22 } kind; - union { - struct { - identifier name; - arguments_ty args; - asdl_seq *body; - asdl_seq *decorators; - } FunctionDef; - - struct { - identifier name; - asdl_seq *bases; - asdl_seq *body; - } ClassDef; - - struct { - expr_ty value; - } Return; - - struct { - asdl_seq *targets; - } Delete; - - struct { - asdl_seq *targets; - expr_ty value; - } Assign; - - struct { - expr_ty target; - operator_ty op; - expr_ty value; - } AugAssign; - - struct { - expr_ty dest; - asdl_seq *values; - bool nl; - } Print; - - struct { - expr_ty target; - expr_ty iter; - asdl_seq *body; - asdl_seq *orelse; - } For; - - struct { - expr_ty test; - asdl_seq *body; - asdl_seq *orelse; - } While; - - struct { - expr_ty test; - asdl_seq *body; - asdl_seq *orelse; - } If; - - struct { - expr_ty type; - expr_ty inst; - expr_ty tback; - } Raise; - - struct { - asdl_seq *body; - asdl_seq *handlers; - asdl_seq *orelse; - } TryExcept; - - struct { - asdl_seq *body; - asdl_seq *finalbody; - } TryFinally; - - struct { - expr_ty test; - expr_ty msg; - } Assert; - - struct { - asdl_seq *names; - } Import; - - struct { - identifier module; - asdl_seq *names; - } ImportFrom; - - struct { - expr_ty body; - expr_ty globals; - expr_ty locals; - } Exec; - - struct { - asdl_seq *names; - } Global; - - struct { - expr_ty value; - } Expr; - - } v; +PyAPI_DATA(PyTypeObject) Py_stmt_Type; +#define Py_stmt_Check(op) PyObject_TypeCheck(op, &Py_stmt_Type) + +struct Py_stmt{ + PyObject_HEAD int lineno; }; -struct _expr { - enum { BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4, - Dict_kind=5, ListComp_kind=6, GeneratorExp_kind=7, Yield_kind=8, - Compare_kind=9, Call_kind=10, Repr_kind=11, Num_kind=12, - Str_kind=13, Attribute_kind=14, Subscript_kind=15, Name_kind=16, - List_kind=17, Tuple_kind=18 } kind; - union { - struct { - boolop_ty op; - asdl_seq *values; - } BoolOp; - - struct { - expr_ty left; - operator_ty op; - expr_ty right; - } BinOp; - - struct { - unaryop_ty op; - expr_ty operand; - } UnaryOp; - - struct { - arguments_ty args; - expr_ty body; - } Lambda; - - struct { - asdl_seq *keys; - asdl_seq *values; - } Dict; - - struct { - expr_ty elt; - asdl_seq *generators; - } ListComp; - - struct { - expr_ty elt; - asdl_seq *generators; - } GeneratorExp; - - struct { - expr_ty value; - } Yield; - - struct { - expr_ty left; - asdl_seq *ops; - asdl_seq *comparators; - } Compare; - - struct { - expr_ty func; - asdl_seq *args; - asdl_seq *keywords; - expr_ty starargs; - expr_ty kwargs; - } Call; - - struct { - expr_ty value; - } Repr; - - struct { - object n; - } Num; - - struct { - string s; - } Str; - - struct { - expr_ty value; - identifier attr; - expr_context_ty ctx; - } Attribute; - - struct { - expr_ty value; - slice_ty slice; - expr_context_ty ctx; - } Subscript; - - struct { - identifier id; - expr_context_ty ctx; - } Name; - - struct { - asdl_seq *elts; - expr_context_ty ctx; - } List; - - struct { - asdl_seq *elts; - expr_context_ty ctx; - } Tuple; - - } v; +PyAPI_DATA(PyTypeObject) Py_stmt_FunctionDef_Type; +#define Py_stmt_FunctionDef_Check(op) PyObject_TypeCheck(op, &Py_stmt_FunctionDef_Type) + +struct Py_stmt_FunctionDef{ + struct Py_stmt _base; + PyObject* name; /* identifier */ + PyObject* args; /* arguments */ + PyObject* body; /* stmt */ + PyObject* decorators; /* expr */ +}; +PyObject *Py_stmt_FunctionDef_New(PyObject*, PyObject*, PyObject*, PyObject*, + int); + +PyAPI_DATA(PyTypeObject) Py_stmt_ClassDef_Type; +#define Py_stmt_ClassDef_Check(op) PyObject_TypeCheck(op, &Py_stmt_ClassDef_Type) + +struct Py_stmt_ClassDef{ + struct Py_stmt _base; + PyObject* name; /* identifier */ + PyObject* bases; /* expr */ + PyObject* body; /* stmt */ +}; +PyObject *Py_stmt_ClassDef_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Return_Type; +#define Py_stmt_Return_Check(op) PyObject_TypeCheck(op, &Py_stmt_Return_Type) + +struct Py_stmt_Return{ + struct Py_stmt _base; + PyObject* value; /* expr */ +}; +PyObject *Py_stmt_Return_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Delete_Type; +#define Py_stmt_Delete_Check(op) PyObject_TypeCheck(op, &Py_stmt_Delete_Type) + +struct Py_stmt_Delete{ + struct Py_stmt _base; + PyObject* targets; /* expr */ +}; +PyObject *Py_stmt_Delete_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Assign_Type; +#define Py_stmt_Assign_Check(op) PyObject_TypeCheck(op, &Py_stmt_Assign_Type) + +struct Py_stmt_Assign{ + struct Py_stmt _base; + PyObject* targets; /* expr */ + PyObject* value; /* expr */ +}; +PyObject *Py_stmt_Assign_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_AugAssign_Type; +#define Py_stmt_AugAssign_Check(op) PyObject_TypeCheck(op, &Py_stmt_AugAssign_Type) + +struct Py_stmt_AugAssign{ + struct Py_stmt _base; + PyObject* target; /* expr */ + PyObject* op; /* operator */ + PyObject* value; /* expr */ +}; +PyObject *Py_stmt_AugAssign_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Print_Type; +#define Py_stmt_Print_Check(op) PyObject_TypeCheck(op, &Py_stmt_Print_Type) + +struct Py_stmt_Print{ + struct Py_stmt _base; + PyObject* dest; /* expr */ + PyObject* values; /* expr */ + PyObject* nl; /* bool */ +}; +PyObject *Py_stmt_Print_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_For_Type; +#define Py_stmt_For_Check(op) PyObject_TypeCheck(op, &Py_stmt_For_Type) + +struct Py_stmt_For{ + struct Py_stmt _base; + PyObject* target; /* expr */ + PyObject* iter; /* expr */ + PyObject* body; /* stmt */ + PyObject* orelse; /* stmt */ +}; +PyObject *Py_stmt_For_New(PyObject*, PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_While_Type; +#define Py_stmt_While_Check(op) PyObject_TypeCheck(op, &Py_stmt_While_Type) + +struct Py_stmt_While{ + struct Py_stmt _base; + PyObject* test; /* expr */ + PyObject* body; /* stmt */ + PyObject* orelse; /* stmt */ +}; +PyObject *Py_stmt_While_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_If_Type; +#define Py_stmt_If_Check(op) PyObject_TypeCheck(op, &Py_stmt_If_Type) + +struct Py_stmt_If{ + struct Py_stmt _base; + PyObject* test; /* expr */ + PyObject* body; /* stmt */ + PyObject* orelse; /* stmt */ +}; +PyObject *Py_stmt_If_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Raise_Type; +#define Py_stmt_Raise_Check(op) PyObject_TypeCheck(op, &Py_stmt_Raise_Type) + +struct Py_stmt_Raise{ + struct Py_stmt _base; + PyObject* type; /* expr */ + PyObject* inst; /* expr */ + PyObject* tback; /* expr */ +}; +PyObject *Py_stmt_Raise_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_TryExcept_Type; +#define Py_stmt_TryExcept_Check(op) PyObject_TypeCheck(op, &Py_stmt_TryExcept_Type) + +struct Py_stmt_TryExcept{ + struct Py_stmt _base; + PyObject* body; /* stmt */ + PyObject* handlers; /* excepthandler */ + PyObject* orelse; /* stmt */ +}; +PyObject *Py_stmt_TryExcept_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_TryFinally_Type; +#define Py_stmt_TryFinally_Check(op) PyObject_TypeCheck(op, &Py_stmt_TryFinally_Type) + +struct Py_stmt_TryFinally{ + struct Py_stmt _base; + PyObject* body; /* stmt */ + PyObject* finalbody; /* stmt */ +}; +PyObject *Py_stmt_TryFinally_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Assert_Type; +#define Py_stmt_Assert_Check(op) PyObject_TypeCheck(op, &Py_stmt_Assert_Type) + +struct Py_stmt_Assert{ + struct Py_stmt _base; + PyObject* test; /* expr */ + PyObject* msg; /* expr */ +}; +PyObject *Py_stmt_Assert_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Import_Type; +#define Py_stmt_Import_Check(op) PyObject_TypeCheck(op, &Py_stmt_Import_Type) + +struct Py_stmt_Import{ + struct Py_stmt _base; + PyObject* names; /* alias */ +}; +PyObject *Py_stmt_Import_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_ImportFrom_Type; +#define Py_stmt_ImportFrom_Check(op) PyObject_TypeCheck(op, &Py_stmt_ImportFrom_Type) + +struct Py_stmt_ImportFrom{ + struct Py_stmt _base; + PyObject* module; /* identifier */ + PyObject* names; /* alias */ +}; +PyObject *Py_stmt_ImportFrom_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Exec_Type; +#define Py_stmt_Exec_Check(op) PyObject_TypeCheck(op, &Py_stmt_Exec_Type) + +struct Py_stmt_Exec{ + struct Py_stmt _base; + PyObject* body; /* expr */ + PyObject* globals; /* expr */ + PyObject* locals; /* expr */ +}; +PyObject *Py_stmt_Exec_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Global_Type; +#define Py_stmt_Global_Check(op) PyObject_TypeCheck(op, &Py_stmt_Global_Type) + +struct Py_stmt_Global{ + struct Py_stmt _base; + PyObject* names; /* identifier */ +}; +PyObject *Py_stmt_Global_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Expr_Type; +#define Py_stmt_Expr_Check(op) PyObject_TypeCheck(op, &Py_stmt_Expr_Type) + +struct Py_stmt_Expr{ + struct Py_stmt _base; + PyObject* value; /* expr */ +}; +PyObject *Py_stmt_Expr_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Pass_Type; +#define Py_stmt_Pass_Check(op) PyObject_TypeCheck(op, &Py_stmt_Pass_Type) + +struct Py_stmt_Pass{ + struct Py_stmt _base; +}; +PyObject *Py_stmt_Pass_New(int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Break_Type; +#define Py_stmt_Break_Check(op) PyObject_TypeCheck(op, &Py_stmt_Break_Type) + +struct Py_stmt_Break{ + struct Py_stmt _base; +}; +PyObject *Py_stmt_Break_New(int); + +PyAPI_DATA(PyTypeObject) Py_stmt_Continue_Type; +#define Py_stmt_Continue_Check(op) PyObject_TypeCheck(op, &Py_stmt_Continue_Type) + +struct Py_stmt_Continue{ + struct Py_stmt _base; +}; +PyObject *Py_stmt_Continue_New(int); + +PyAPI_DATA(PyTypeObject) Py_expr_Type; +#define Py_expr_Check(op) PyObject_TypeCheck(op, &Py_expr_Type) + +struct Py_expr{ + PyObject_HEAD int lineno; }; -struct _slice { - enum { Ellipsis_kind=1, Slice_kind=2, ExtSlice_kind=3, Index_kind=4 } - kind; - union { - struct { - expr_ty lower; - expr_ty upper; - expr_ty step; - } Slice; - - struct { - asdl_seq *dims; - } ExtSlice; - - struct { - expr_ty value; - } Index; - - } v; -}; - -struct _comprehension { - expr_ty target; - expr_ty iter; - asdl_seq *ifs; -}; - -struct _excepthandler { - expr_ty type; - expr_ty name; - asdl_seq *body; -}; - -struct _arguments { - asdl_seq *args; - identifier vararg; - identifier kwarg; - asdl_seq *defaults; -}; - -struct _keyword { - identifier arg; - expr_ty value; -}; - -struct _alias { - identifier name; - identifier asname; -}; - - -mod_ty Module(asdl_seq * body); -mod_ty Interactive(asdl_seq * body); -mod_ty Expression(expr_ty body); -mod_ty Suite(asdl_seq * body); -stmt_ty FunctionDef(identifier name, arguments_ty args, asdl_seq * body, - asdl_seq * decorators, int lineno); -stmt_ty ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int - lineno); -stmt_ty Return(expr_ty value, int lineno); -stmt_ty Delete(asdl_seq * targets, int lineno); -stmt_ty Assign(asdl_seq * targets, expr_ty value, int lineno); -stmt_ty AugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno); -stmt_ty Print(expr_ty dest, asdl_seq * values, bool nl, int lineno); -stmt_ty For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, - int lineno); -stmt_ty While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno); -stmt_ty If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno); -stmt_ty Raise(expr_ty type, expr_ty inst, expr_ty tback, int lineno); -stmt_ty TryExcept(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse, int - lineno); -stmt_ty TryFinally(asdl_seq * body, asdl_seq * finalbody, int lineno); -stmt_ty Assert(expr_ty test, expr_ty msg, int lineno); -stmt_ty Import(asdl_seq * names, int lineno); -stmt_ty ImportFrom(identifier module, asdl_seq * names, int lineno); -stmt_ty Exec(expr_ty body, expr_ty globals, expr_ty locals, int lineno); -stmt_ty Global(asdl_seq * names, int lineno); -stmt_ty Expr(expr_ty value, int lineno); -stmt_ty Pass(int lineno); -stmt_ty Break(int lineno); -stmt_ty Continue(int lineno); -expr_ty BoolOp(boolop_ty op, asdl_seq * values, int lineno); -expr_ty BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno); -expr_ty UnaryOp(unaryop_ty op, expr_ty operand, int lineno); -expr_ty Lambda(arguments_ty args, expr_ty body, int lineno); -expr_ty Dict(asdl_seq * keys, asdl_seq * values, int lineno); -expr_ty ListComp(expr_ty elt, asdl_seq * generators, int lineno); -expr_ty GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno); -expr_ty Yield(expr_ty value, int lineno); -expr_ty Compare(expr_ty left, asdl_seq * ops, asdl_seq * comparators, int - lineno); -expr_ty Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty - starargs, expr_ty kwargs, int lineno); -expr_ty Repr(expr_ty value, int lineno); -expr_ty Num(object n, int lineno); -expr_ty Str(string s, int lineno); -expr_ty Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int - lineno); -expr_ty Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int - lineno); -expr_ty Name(identifier id, expr_context_ty ctx, int lineno); -expr_ty List(asdl_seq * elts, expr_context_ty ctx, int lineno); -expr_ty Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno); -slice_ty Ellipsis(void); -slice_ty Slice(expr_ty lower, expr_ty upper, expr_ty step); -slice_ty ExtSlice(asdl_seq * dims); -slice_ty Index(expr_ty value); -comprehension_ty comprehension(expr_ty target, expr_ty iter, asdl_seq * ifs); -excepthandler_ty excepthandler(expr_ty type, expr_ty name, asdl_seq * body); -arguments_ty arguments(asdl_seq * args, identifier vararg, identifier kwarg, - asdl_seq * defaults); -keyword_ty keyword(identifier arg, expr_ty value); -alias_ty alias(identifier name, identifier asname); - -void free_mod(mod_ty); -void free_stmt(stmt_ty); -void free_expr(expr_ty); -void free_expr_context(expr_context_ty); -void free_slice(slice_ty); -void free_boolop(boolop_ty); -void free_operator(operator_ty); -void free_unaryop(unaryop_ty); -void free_cmpop(cmpop_ty); -void free_comprehension(comprehension_ty); -void free_excepthandler(excepthandler_ty); -void free_arguments(arguments_ty); -void free_keyword(keyword_ty); -void free_alias(alias_ty); +PyAPI_DATA(PyTypeObject) Py_expr_BoolOp_Type; +#define Py_expr_BoolOp_Check(op) PyObject_TypeCheck(op, &Py_expr_BoolOp_Type) + +struct Py_expr_BoolOp{ + struct Py_expr _base; + PyObject* op; /* boolop */ + PyObject* values; /* expr */ +}; +PyObject *Py_expr_BoolOp_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_BinOp_Type; +#define Py_expr_BinOp_Check(op) PyObject_TypeCheck(op, &Py_expr_BinOp_Type) + +struct Py_expr_BinOp{ + struct Py_expr _base; + PyObject* left; /* expr */ + PyObject* op; /* operator */ + PyObject* right; /* expr */ +}; +PyObject *Py_expr_BinOp_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_UnaryOp_Type; +#define Py_expr_UnaryOp_Check(op) PyObject_TypeCheck(op, &Py_expr_UnaryOp_Type) + +struct Py_expr_UnaryOp{ + struct Py_expr _base; + PyObject* op; /* unaryop */ + PyObject* operand; /* expr */ +}; +PyObject *Py_expr_UnaryOp_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Lambda_Type; +#define Py_expr_Lambda_Check(op) PyObject_TypeCheck(op, &Py_expr_Lambda_Type) + +struct Py_expr_Lambda{ + struct Py_expr _base; + PyObject* args; /* arguments */ + PyObject* body; /* expr */ +}; +PyObject *Py_expr_Lambda_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Dict_Type; +#define Py_expr_Dict_Check(op) PyObject_TypeCheck(op, &Py_expr_Dict_Type) + +struct Py_expr_Dict{ + struct Py_expr _base; + PyObject* keys; /* expr */ + PyObject* values; /* expr */ +}; +PyObject *Py_expr_Dict_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_ListComp_Type; +#define Py_expr_ListComp_Check(op) PyObject_TypeCheck(op, &Py_expr_ListComp_Type) + +struct Py_expr_ListComp{ + struct Py_expr _base; + PyObject* elt; /* expr */ + PyObject* generators; /* comprehension */ +}; +PyObject *Py_expr_ListComp_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_GeneratorExp_Type; +#define Py_expr_GeneratorExp_Check(op) PyObject_TypeCheck(op, &Py_expr_GeneratorExp_Type) + +struct Py_expr_GeneratorExp{ + struct Py_expr _base; + PyObject* elt; /* expr */ + PyObject* generators; /* comprehension */ +}; +PyObject *Py_expr_GeneratorExp_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Yield_Type; +#define Py_expr_Yield_Check(op) PyObject_TypeCheck(op, &Py_expr_Yield_Type) + +struct Py_expr_Yield{ + struct Py_expr _base; + PyObject* value; /* expr */ +}; +PyObject *Py_expr_Yield_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Compare_Type; +#define Py_expr_Compare_Check(op) PyObject_TypeCheck(op, &Py_expr_Compare_Type) + +struct Py_expr_Compare{ + struct Py_expr _base; + PyObject* left; /* expr */ + PyObject* ops; /* cmpop */ + PyObject* comparators; /* expr */ +}; +PyObject *Py_expr_Compare_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Call_Type; +#define Py_expr_Call_Check(op) PyObject_TypeCheck(op, &Py_expr_Call_Type) + +struct Py_expr_Call{ + struct Py_expr _base; + PyObject* func; /* expr */ + PyObject* args; /* expr */ + PyObject* keywords; /* keyword */ + PyObject* starargs; /* expr */ + PyObject* kwargs; /* expr */ +}; +PyObject *Py_expr_Call_New(PyObject*, PyObject*, PyObject*, PyObject*, + PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Repr_Type; +#define Py_expr_Repr_Check(op) PyObject_TypeCheck(op, &Py_expr_Repr_Type) + +struct Py_expr_Repr{ + struct Py_expr _base; + PyObject* value; /* expr */ +}; +PyObject *Py_expr_Repr_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Num_Type; +#define Py_expr_Num_Check(op) PyObject_TypeCheck(op, &Py_expr_Num_Type) + +struct Py_expr_Num{ + struct Py_expr _base; + PyObject* n; /* object */ +}; +PyObject *Py_expr_Num_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Str_Type; +#define Py_expr_Str_Check(op) PyObject_TypeCheck(op, &Py_expr_Str_Type) + +struct Py_expr_Str{ + struct Py_expr _base; + PyObject* s; /* string */ +}; +PyObject *Py_expr_Str_New(PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Attribute_Type; +#define Py_expr_Attribute_Check(op) PyObject_TypeCheck(op, &Py_expr_Attribute_Type) + +struct Py_expr_Attribute{ + struct Py_expr _base; + PyObject* value; /* expr */ + PyObject* attr; /* identifier */ + PyObject* ctx; /* expr_context */ +}; +PyObject *Py_expr_Attribute_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Subscript_Type; +#define Py_expr_Subscript_Check(op) PyObject_TypeCheck(op, &Py_expr_Subscript_Type) + +struct Py_expr_Subscript{ + struct Py_expr _base; + PyObject* value; /* expr */ + PyObject* slice; /* slice */ + PyObject* ctx; /* expr_context */ +}; +PyObject *Py_expr_Subscript_New(PyObject*, PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Name_Type; +#define Py_expr_Name_Check(op) PyObject_TypeCheck(op, &Py_expr_Name_Type) + +struct Py_expr_Name{ + struct Py_expr _base; + PyObject* id; /* identifier */ + PyObject* ctx; /* expr_context */ +}; +PyObject *Py_expr_Name_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_List_Type; +#define Py_expr_List_Check(op) PyObject_TypeCheck(op, &Py_expr_List_Type) + +struct Py_expr_List{ + struct Py_expr _base; + PyObject* elts; /* expr */ + PyObject* ctx; /* expr_context */ +}; +PyObject *Py_expr_List_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_expr_Tuple_Type; +#define Py_expr_Tuple_Check(op) PyObject_TypeCheck(op, &Py_expr_Tuple_Type) + +struct Py_expr_Tuple{ + struct Py_expr _base; + PyObject* elts; /* expr */ + PyObject* ctx; /* expr_context */ +}; +PyObject *Py_expr_Tuple_New(PyObject*, PyObject*, int); + +PyAPI_DATA(PyTypeObject) Py_slice_Type; +#define Py_slice_Check(op) PyObject_TypeCheck(op, &Py_slice_Type) + +struct Py_slice{ + PyObject_HEAD +}; + +PyAPI_DATA(PyTypeObject) Py_slice_Ellipsis_Type; +#define Py_slice_Ellipsis_Check(op) PyObject_TypeCheck(op, &Py_slice_Ellipsis_Type) + +struct Py_slice_Ellipsis{ + struct Py_slice _base; +}; +PyObject *Py_slice_Ellipsis_New(void); + +PyAPI_DATA(PyTypeObject) Py_slice_Slice_Type; +#define Py_slice_Slice_Check(op) PyObject_TypeCheck(op, &Py_slice_Slice_Type) + +struct Py_slice_Slice{ + struct Py_slice _base; + PyObject* lower; /* expr */ + PyObject* upper; /* expr */ + PyObject* step; /* expr */ +}; +PyObject *Py_slice_Slice_New(PyObject*, PyObject*, PyObject*); + +PyAPI_DATA(PyTypeObject) Py_slice_ExtSlice_Type; +#define Py_slice_ExtSlice_Check(op) PyObject_TypeCheck(op, &Py_slice_ExtSlice_Type) + +struct Py_slice_ExtSlice{ + struct Py_slice _base; + PyObject* dims; /* slice */ +}; +PyObject *Py_slice_ExtSlice_New(PyObject*); + +PyAPI_DATA(PyTypeObject) Py_slice_Index_Type; +#define Py_slice_Index_Check(op) PyObject_TypeCheck(op, &Py_slice_Index_Type) + +struct Py_slice_Index{ + struct Py_slice _base; + PyObject* value; /* expr */ +}; +PyObject *Py_slice_Index_New(PyObject*); + +PyAPI_DATA(PyTypeObject) Py_comprehension_Type; +#define Py_comprehension_Check(op) PyObject_TypeCheck(op, &Py_comprehension_Type) + +struct Py_comprehension { + PyObject_HEAD + PyObject* target; /* expr */ + PyObject* iter; /* expr */ + PyObject* ifs; /* expr */ +}; +PyObject *Py_comprehension_New(PyObject*, PyObject*, PyObject*); + +PyAPI_DATA(PyTypeObject) Py_excepthandler_Type; +#define Py_excepthandler_Check(op) PyObject_TypeCheck(op, &Py_excepthandler_Type) + +struct Py_excepthandler { + PyObject_HEAD + PyObject* type; /* expr */ + PyObject* name; /* expr */ + PyObject* body; /* stmt */ +}; +PyObject *Py_excepthandler_New(PyObject*, PyObject*, PyObject*); + +PyAPI_DATA(PyTypeObject) Py_arguments_Type; +#define Py_arguments_Check(op) PyObject_TypeCheck(op, &Py_arguments_Type) + +struct Py_arguments { + PyObject_HEAD + PyObject* args; /* expr */ + PyObject* vararg; /* identifier */ + PyObject* kwarg; /* identifier */ + PyObject* defaults; /* expr */ +}; +PyObject *Py_arguments_New(PyObject*, PyObject*, PyObject*, PyObject*); + +PyAPI_DATA(PyTypeObject) Py_keyword_Type; +#define Py_keyword_Check(op) PyObject_TypeCheck(op, &Py_keyword_Type) + +struct Py_keyword { + PyObject_HEAD + PyObject* arg; /* identifier */ + PyObject* value; /* expr */ +}; +PyObject *Py_keyword_New(PyObject*, PyObject*); + +PyAPI_DATA(PyTypeObject) Py_alias_Type; +#define Py_alias_Check(op) PyObject_TypeCheck(op, &Py_alias_Type) + +struct Py_alias { + PyObject_HEAD + PyObject* name; /* identifier */ + PyObject* asname; /* identifier */ +}; +PyObject *Py_alias_New(PyObject*, PyObject*); Deleted: /python/branches/ast-objects/Include/asdl.h ============================================================================== --- /python/branches/ast-objects/Include/asdl.h Wed Nov 30 20:11:25 2005 +++ (empty file) @@ -1,47 +0,0 @@ -#ifndef Py_ASDL_H -#define Py_ASDL_H - -typedef PyObject * identifier; -typedef PyObject * string; -typedef PyObject * object; - -typedef enum {false, true} bool; - -/* It would be nice if the code generated by asdl_c.py was completely - independent of Python, but it is a goal the requires too much work - at this stage. So, for example, I'll represent identifiers as - interned Python strings. -*/ - -/* XXX A sequence should be typed so that its use can be typechecked. */ - -/* XXX We shouldn't pay for offset when we don't need APPEND. */ - -typedef struct { - int size; - int offset; - void *elements[1]; -} asdl_seq; - -asdl_seq *asdl_seq_new(int size); -void asdl_seq_free(asdl_seq *); - -#ifdef Py_DEBUG -#define asdl_seq_GET(S, I) (S)->elements[(I)] -#define asdl_seq_SET(S, I, V) { \ - int _asdl_i = (I); \ - assert((S) && _asdl_i < (S)->size); \ - (S)->elements[_asdl_i] = (V); \ -} -#define asdl_seq_APPEND(S, V) { \ - assert((S) && (S)->offset < (S)->size); \ - (S)->elements[(S)->offset++] = (V); \ -} -#else -#define asdl_seq_GET(S, I) (S)->elements[(I)] -#define asdl_seq_SET(S, I, V) (S)->elements[I] = (V) -#define asdl_seq_APPEND(S, V) (S)->elements[(S)->offset++] = (V) -#endif -#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size) - -#endif /* !Py_ASDL_H */ Modified: python/branches/ast-objects/Makefile.pre.in ============================================================================== --- python/branches/ast-objects/Makefile.pre.in (original) +++ python/branches/ast-objects/Makefile.pre.in Wed Nov 30 20:11:25 2005 @@ -230,7 +230,6 @@ # Python PYTHON_OBJS= \ Python/Python-ast.o \ - Python/asdl.o \ Python/ast.o \ Python/bltinmodule.o \ Python/exceptions.o \ @@ -490,7 +489,6 @@ PYTHON_HEADERS= \ Include/Python.h \ Include/Python-ast.h \ - Include/asdl.h \ Include/abstract.h \ Include/boolobject.h \ Include/bufferobject.h \ Modified: python/branches/ast-objects/Parser/asdl_c.py ============================================================================== --- python/branches/ast-objects/Parser/asdl_c.py (original) +++ python/branches/ast-objects/Parser/asdl_c.py Wed Nov 30 20:11:25 2005 @@ -14,16 +14,14 @@ def get_c_type(name): """Return a string for the C name of the type. - This function special cases the default types provided by asdl: - identifier, string, int, bool. + This function special cases int; everything else is PyObject*: """ - # XXX ack! need to figure out where Id is useful and where string if isinstance(name, asdl.Id): name = name.value - if name in asdl.builtin_types: + if name in ("int"): return name else: - return "%s_ty" % name + return "PyObject*" def reflow_lines(s, depth): """Reflow the line s indented depth tabs. @@ -96,46 +94,48 @@ line = (" " * TABSIZE * depth) + line + "\n" self.file.write(line) -class TypeDefVisitor(EmitVisitor): +class TraversalVisitor(EmitVisitor): + def visitModule(self, mod): for dfn in mod.dfns: self.visit(dfn) - def visitType(self, type, depth=0): - self.visit(type.value, type.name, depth) + def visitType(self, type): + self.visit(type.value, type.name) - def visitSum(self, sum, name, depth): + def visitSum(self, sum, name): if is_simple(sum): - self.simple_sum(sum, name, depth) + pass # XXX else: - self.sum_with_constructors(sum, name, depth) + for t in sum.types: + self.visit(t, name, sum.attributes) - def simple_sum(self, sum, name, depth): - enum = [] - for i in range(len(sum.types)): - type = sum.types[i] - enum.append("%s=%d" % (type.name, i + 1)) - enums = ", ".join(enum) - ctype = get_c_type(name) - s = "typedef enum _%s { %s } %s;" % (name, enums, ctype) - self.emit(s, depth) - self.emit("", depth) + def get_args(self, fields): + """Return list of C argument into, one for each field. - def sum_with_constructors(self, sum, name, depth): - ctype = get_c_type(name) - s = "typedef struct _%(name)s *%(ctype)s;" % locals() - self.emit(s, depth) - self.emit("", depth) + Argument info is 3-tuple of a C type, variable name, and flag + that is true if type can be NULL. + """ + args = [] + for i,f in enumerate(fields): + if f.name is None: + name = "name%d" % i + else: + name = f.name + ctype = get_c_type(f.type) + args.append((ctype, name, f.opt or f.seq)) + return args - def visitProduct(self, product, name, depth): - ctype = get_c_type(name) - s = "typedef struct _%(name)s *%(ctype)s;" % locals() - self.emit(s, depth) - self.emit("", depth) -class StructVisitor(EmitVisitor): +class HeaderVisitor(EmitVisitor): """Visitor to generate typdefs for AST.""" + def emit_check(self, t, depth): + self.emit("PyAPI_DATA(PyTypeObject) Py_%s_Type;" % t, depth) + self.emit("#define Py_%s_Check(op) PyObject_TypeCheck(op, &Py_%s_Type)" % (t, t), + depth, reflow=False) + self.emit("",depth) + def visitModule(self, mod): for dfn in mod.dfns: self.visit(dfn) @@ -150,483 +150,171 @@ def sum_with_constructors(self, sum, name, depth): def emit(s, depth=depth): self.emit(s % sys._getframe(1).f_locals, depth) - enum = [] - for i in range(len(sum.types)): - type = sum.types[i] - enum.append("%s_kind=%d" % (type.name, i + 1)) - - emit("struct _%(name)s {") - emit("enum { " + ", ".join(enum) + " } kind;", depth + 1) - emit("union {", depth + 1) - for t in sum.types: - self.visit(t, depth + 2) - emit("} v;", depth + 1) + self.emit_check(name, depth) + emit("struct Py_%s{" % name) + emit("PyObject_HEAD", depth + 1) for field in sum.attributes: - # rudimentary attribute handling type = str(field.type) assert type in asdl.builtin_types, type - emit("%s %s;" % (type, field.name), depth + 1); + emit("%s %s;" % (type, field.name), depth + 1) emit("};") emit("") + for t in sum.types: + self.visitConstructor(name, t, sum.attributes, depth) - def visitConstructor(self, cons, depth): - if cons.fields: - self.emit("struct {", depth) - for f in cons.fields: - self.visit(f, depth + 1) - self.emit("} %s;" % cons.name, depth) - self.emit("", depth) - else: - # XXX not sure what I want here, nothing is probably fine - pass + def visitConstructor(self, name, cons, attrs, depth): + self.emit_check("%s_%s" % (name, cons.name), depth) + self.emit("struct Py_%s_%s{" % (name, cons.name), depth) + self.emit("struct Py_%s _base;" % name, depth+1) + field_types = [] + for f in cons.fields: + field_types.append(get_c_type(f.type)) + self.visit(f, depth + 1) + for f in attrs: + field_types.append(get_c_type(f.type)) + self.emit("};" % cons.name, depth) + args = ", ".join(field_types) or "void" + self.emit("PyObject *Py_%s_%s_New(%s);" % (name, cons.name, args), depth) + self.emit("", depth) def visitField(self, field, depth): - # XXX need to lookup field.type, because it might be something - # like a builtin... ctype = get_c_type(field.type) - name = field.name - if field.seq: - self.emit("asdl_seq *%(name)s;" % locals(), depth) - else: - self.emit("%(ctype)s %(name)s;" % locals(), depth) + self.emit("%s %s; /* %s */" % (ctype, field.name, field.type), depth) def visitProduct(self, product, name, depth): - self.emit("struct _%(name)s {" % locals(), depth) + self.emit_check(str(name), depth) + self.emit("struct Py_%(name)s {" % locals(), depth) + self.emit("PyObject_HEAD", depth+1) + field_types = [] for f in product.fields: + field_types.append(get_c_type(f.type)) self.visit(f, depth + 1) self.emit("};", depth) + self.emit("PyObject *Py_%s_New(%s);" % (name, ", ".join(field_types)), depth) self.emit("", depth) -class PrototypeVisitor(EmitVisitor): - """Generate function prototypes for the .h file""" - - def visitModule(self, mod): - for dfn in mod.dfns: - self.visit(dfn) - - def visitType(self, type): - self.visit(type.value, type.name) - - def visitSum(self, sum, name): - if is_simple(sum): - pass # XXX - else: - for t in sum.types: - self.visit(t, name, sum.attributes) - - def get_args(self, fields): - """Return list of C argument into, one for each field. - - Argument info is 3-tuple of a C type, variable name, and flag - that is true if type can be NULL. - """ - args = [] - unnamed = {} - for f in fields: - if f.name is None: - name = f.type - c = unnamed[name] = unnamed.get(name, 0) + 1 - if c > 1: - name = "name%d" % (c - 1) - else: - name = f.name - # XXX should extend get_c_type() to handle this - if f.seq: - ctype = "asdl_seq *" - else: - ctype = get_c_type(f.type) - args.append((ctype, name, f.opt or f.seq)) - return args - - def visitConstructor(self, cons, type, attrs): - args = self.get_args(cons.fields) - attrs = self.get_args(attrs) - ctype = get_c_type(type) - self.emit_function(cons.name, ctype, args, attrs) - - def emit_function(self, name, ctype, args, attrs, union=1): - args = args + attrs - if args: - argstr = ", ".join(["%s %s" % (atype, aname) - for atype, aname, opt in args]) - else: - argstr = "void" - self.emit("%s %s(%s);" % (ctype, name, argstr), 0) - - def visitProduct(self, prod, name): - self.emit_function(name, get_c_type(name), - self.get_args(prod.fields), [], union=0) - -class FunctionVisitor(PrototypeVisitor): +class FunctionVisitor(TraversalVisitor): """Visitor to generate constructor functions for AST.""" - def emit_function(self, name, ctype, args, attrs, union=1): + def emit_ctor(self, name, args, attrs): def emit(s, depth=0, reflow=1): self.emit(s, depth, reflow) argstr = ", ".join(["%s %s" % (atype, aname) for atype, aname, opt in args + attrs]) - self.emit("%s" % ctype, 0) - emit("%s(%s)" % (name, argstr)) + + emit("PyObject*") + emit("Py_%s_New(%s)" % (name, argstr)) emit("{") - emit("%s p;" % ctype, 1) - for argtype, argname, opt in args: - # XXX hack alert: false is allowed for a bool - if not opt and not argtype == "bool": - emit("if (!%s) {" % argname, 1) - emit("PyErr_SetString(PyExc_ValueError,", 2) - msg = "field %s is required for %s" % (argname, name) - emit(' "%s");' % msg, - 2, reflow=0) - emit('return NULL;', 2) - emit('}', 1) - - emit("p = (%s)malloc(sizeof(*p));" % ctype, 1) - emit("if (!p) {", 1) - emit("PyErr_NoMemory();", 2) + emit("struct Py_%s *result = PyObject_New(struct Py_%s, &Py_%s_Type);" % (name, name, name), 1, 0) + emit("if (result == NULL)", 1) emit("return NULL;", 2) - emit("}", 1) - if union: - self.emit_body_union(name, args, attrs) - else: - self.emit_body_struct(name, args, attrs) - emit("return p;", 1) + for argtype, argname, opt in args: + emit("result->%s = %s;" % (argname, argname), 1) + for argtype, argname, opt in attrs: + emit("result->_base.%s = %s;" % (argname, argname), 1) + emit("return (PyObject*)result;", 1) emit("}") emit("") - def emit_body_union(self, name, args, attrs): + def emit_dealloc(self, name, fields, attrs): def emit(s, depth=0, reflow=1): self.emit(s, depth, reflow) - emit("p->kind = %s_kind;" % name, 1) - for argtype, argname, opt in args: - emit("p->v.%s.%s = %s;" % (name, argname, argname), 1) + emit("static void") + emit("%s_dealloc(PyObject* _self)" % name) + emit("{") + emit("struct Py_%s *self = (struct Py_%s*)_self;" % (name, name), 1) + for argtype, argname, opt in fields: + if argtype == "PyObject*": + emit("Py_DECREF(self->%s);" % argname, 1) for argtype, argname, opt in attrs: - emit("p->%s = %s;" % (argname, argname), 1) - - def emit_body_struct(self, name, args, attrs): - def emit(s, depth=0, reflow=1): - self.emit(s, depth, reflow) - for argtype, argname, opt in args: - emit("p->%s = %s;" % (argname, argname), 1) - assert not attrs - -class PickleVisitor(EmitVisitor): - - def visitModule(self, mod): - for dfn in mod.dfns: - self.visit(dfn) - - def visitType(self, type): - self.visit(type.value, type.name) - - def visitSum(self, sum, name): - pass - - def visitProduct(self, sum, name): - pass - - def visitConstructor(self, cons, name): - pass - - def visitField(self, sum): - pass - -class MarshalPrototypeVisitor(PickleVisitor): - - def prototype(self, sum, name): - ctype = get_c_type(name) - self.emit("static int marshal_write_%s(PyObject **, int *, %s);" - % (name, ctype), 0) - - visitProduct = visitSum = prototype - -class FreePrototypeVisitor(PickleVisitor): - - def prototype(self, sum, name): - ctype = get_c_type(name) - self.emit("void free_%s(%s);" % (name, ctype), 0) - - visitProduct = visitSum = prototype - -_SPECIALIZED_SEQUENCES = ('stmt', 'expr') - -def find_sequence(fields, doing_specialization): - """Return True if any field uses a sequence.""" - for f in fields: - if f.seq: - if not doing_specialization: - return True - if str(f.type) not in _SPECIALIZED_SEQUENCES: - return True - return False - -def has_sequence(types, doing_specialization): - for t in types: - if find_sequence(t.fields, doing_specialization): - return True - return False - - -class StaticVisitor(PickleVisitor): - CODE = '''Very simple, always emit this static code. Overide CODE''' - - def visit(self, object): - self.emit(self.CODE, 0, reflow=False) - -class FreeUtilVisitor(StaticVisitor): - - CODE = '''static void -free_seq_exprs(asdl_seq *seq) -{ - int i, n; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_expr((expr_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); -} - -static void -free_seq_stmts(asdl_seq *seq) -{ - int i, n; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_stmt((stmt_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); -} -''' - -class FreeVisitor(PickleVisitor): - - def func_begin(self, name, has_seq): - ctype = get_c_type(name) - self.emit("void", 0) - self.emit("free_%s(%s o)" % (name, ctype), 0) - self.emit("{", 0) - if has_seq: - self.emit("int i, n;", 1) - self.emit("asdl_seq *seq;", 1) - self.emit('', 0) - self.emit('if (!o)', 1) - self.emit('return;', 2) - self.emit('', 0) - - def func_end(self): - self.emit("}", 0) - self.emit("", 0) - - def visitSum(self, sum, name): - has_seq = has_sequence(sum.types, True) - self.func_begin(name, has_seq) - if not is_simple(sum): - self.emit("switch (o->kind) {", 1) - for i in range(len(sum.types)): - t = sum.types[i] - self.visitConstructor(t, i + 1, name) - self.emit("}", 1) - self.emit("", 0) - self.emit("free(o);", 1) - self.func_end() + if argtype == "PyObject*": + emit("Py_DECREF(self->_base.%s);" % argname, 1) + emit("PyObject_Del(self);", 1) + emit("}") + emit("") - def visitProduct(self, prod, name): - self.func_begin(name, find_sequence(prod.fields, True)) - for field in prod.fields: - self.visitField(field, name, 1, True) - self.emit("", 0) - self.emit("free(o);", 1) - self.func_end() + def emit_type(self, name): + depth = 0 + def emit(s=1): + self.emit(s, depth) + def null(thing): + emit("0,\t\t/* tp_%s */" % thing) + emit("PyTypeObject Py_%s_Type = {" % name) + depth = 1 + emit("PyObject_HEAD_INIT(NULL)") + emit("0,\t\t/*ob_size*/") + emit('"%s",\t\t/*tp_name*/' % name) + emit("sizeof(struct Py_%s),\t/*tp_basicsize*/" % name) + null("itemsize") + emit("%s_dealloc,\t\t/*tp_dealloc*/" % name) + null("print") + null("getattr") + null("setattr") + for m in ("compare", "repr", "as_number", + "as_sequence", "as_mapping", "hash", "call", + "str", "getattro", "setattro", "as_buffer"): + null(m) - def visitConstructor(self, cons, enum, name): - self.emit("case %s_kind:" % cons.name, 1) - for f in cons.fields: - self.visitField(f, cons.name, 2, False) - self.emit("break;", 2) - - def visitField(self, field, name, depth, product): - def emit(s, d): - self.emit(s, depth + d) - if product: - value = "o->%s" % field.name - else: - value = "o->v.%s.%s" % (name, field.name) - if field.seq: - self.emitSeq(field, value, depth, emit) - - # XXX need to know the simple types in advance, so that we - # don't call free_TYPE() for them. - - elif field.opt: - emit("if (%s) {" % value, 0) - self.free(field, value, depth + 1) - emit("}", 0) - else: - self.free(field, value, depth) + emit("Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,\t\t/*tp_flags*/") + for m in ("doc", "traverse", "clear", "richcompare", + "weaklistoffset", "iter", "iternext", + "methods", "members", "getset", "base", + "dict", "descr_get", "descr_set", "dictoffset", + "init", "alloc", "new", "free", "is_gc"): + null(m) + emit("};") + emit("") - def emitSeq(self, field, value, depth, emit): - # specialize for freeing sequences of statements and expressions - if str(field.type) in _SPECIALIZED_SEQUENCES: - c_code = "free_seq_%ss(%s);" % (field.type, value) - emit(c_code, 0) - else: - emit("seq = %s;" % value, 0) - emit("n = asdl_seq_LEN(seq);", 0) - emit("for (i = 0; i < n; i++)", 0) - self.free(field, "asdl_seq_GET(seq, i)", depth + 1) - emit("asdl_seq_free(seq);", 0) - - def free(self, field, value, depth): - if str(field.type) in ("identifier", "string", "object"): - ctype = get_c_type(field.type) - self.emit("Py_DECREF((%s)%s);" % (ctype, value), depth) - elif str(field.type) == "bool": - return + def visitSum(self, sum, name): + if is_simple(sum): + pass # XXX else: - ctype = get_c_type(field.type) - self.emit("free_%s((%s)%s);" % (field.type, ctype, value), depth) + self.emit("#define %s_dealloc 0" % name, 0) + self.emit_type(name) + for t in sum.types: + self.visit(t, name, sum.attributes) + def visitProduct(self, prod, name): + args = self.get_args(prod.fields) + self.emit_ctor(str(name), args, []) + self.emit_dealloc(str(name), args, []) + self.emit_type(str(name)) -class MarshalUtilVisitor(StaticVisitor): + def visitConstructor(self, cons, name, attrs): + name = "%s_%s" % (name, cons.name) + args = self.get_args(cons.fields) + attrs = self.get_args(attrs) + self.emit_ctor(name, args, attrs) + self.emit_dealloc(name, args, attrs) + self.emit_type(name) - CODE = ''' -#define CHECKSIZE(BUF, OFF, MIN) { \\ - int need = *(OFF) + MIN; \\ - if (need >= PyString_GET_SIZE(*(BUF))) { \\ - int newsize = PyString_GET_SIZE(*(BUF)) * 2; \\ - if (newsize < need) \\ - newsize = need; \\ - if (_PyString_Resize((BUF), newsize) < 0) \\ - return 0; \\ - } \\ -} - -static int -marshal_write_int(PyObject **buf, int *offset, int x) -{ - char *s; - - CHECKSIZE(buf, offset, 4) - s = PyString_AS_STRING(*buf) + (*offset); - s[0] = (x & 0xff); - s[1] = (x >> 8) & 0xff; - s[2] = (x >> 16) & 0xff; - s[3] = (x >> 24) & 0xff; - *offset += 4; - return 1; -} - -static int -marshal_write_bool(PyObject **buf, int *offset, bool b) -{ - if (b) - marshal_write_int(buf, offset, 1); - else - marshal_write_int(buf, offset, 0); - return 1; -} - -static int -marshal_write_identifier(PyObject **buf, int *offset, identifier id) -{ - int l = PyString_GET_SIZE(id); - marshal_write_int(buf, offset, l); - CHECKSIZE(buf, offset, l); - memcpy(PyString_AS_STRING(*buf) + *offset, - PyString_AS_STRING(id), l); - *offset += l; - return 1; -} - -static int -marshal_write_string(PyObject **buf, int *offset, string s) -{ - int len = PyString_GET_SIZE(s); - marshal_write_int(buf, offset, len); - CHECKSIZE(buf, offset, len); - memcpy(PyString_AS_STRING(*buf) + *offset, - PyString_AS_STRING(s), len); - *offset += len; - return 1; -} - -static int -marshal_write_object(PyObject **buf, int *offset, object s) -{ - /* XXX */ - return 0; -} -''' - -class MarshalFunctionVisitor(PickleVisitor): - - def func_begin(self, name, has_seq): - ctype = get_c_type(name) - self.emit("static int", 0) - self.emit("marshal_write_%s(PyObject **buf, int *off, %s o)" % - (name, ctype), 0) +class InitVisitor(TraversalVisitor): + def visitModule(self, mod): + self.emit("void init_ast(void)", 0) self.emit("{", 0) - if has_seq: - self.emit("int i;", 1) - - def func_end(self): - self.emit("return 1;", 1) + for dfn in mod.dfns: + self.visit(dfn) self.emit("}", 0) - self.emit("", 0) - + def visitSum(self, sum, name): - self.func_begin(name, has_sequence(sum.types, False)) - simple = is_simple(sum) - if simple: - self.emit("switch (o) {", 1) + if is_simple(sum): + pass # XXX else: - self.emit("switch (o->kind) {", 1) - for i in range(len(sum.types)): - t = sum.types[i] - self.visitConstructor(t, i + 1, name, simple) - self.emit("}", 1) - self.func_end() + self.emit_init(name) + for t in sum.types: + self.visit(t, name, sum.attributes) def visitProduct(self, prod, name): - self.func_begin(name, find_sequence(prod.fields, False)) - for field in prod.fields: - self.visitField(field, name, 1, 1) - self.func_end() - - def visitConstructor(self, cons, enum, name, simple): - if simple: - self.emit("case %s:" % cons.name, 1) - self.emit("marshal_write_int(buf, off, %d);" % enum, 2); - self.emit("break;", 2) - else: - self.emit("case %s_kind:" % cons.name, 1) - self.emit("marshal_write_int(buf, off, %d);" % enum, 2) - for f in cons.fields: - self.visitField(f, cons.name, 2, 0) - self.emit("break;", 2) - - def visitField(self, field, name, depth, product): - def emit(s, d): - self.emit(s, depth + d) - if product: - value = "o->%s" % field.name - else: - value = "o->v.%s.%s" % (name, field.name) - if field.seq: - emit("marshal_write_int(buf, off, asdl_seq_LEN(%s));" % value, 0) - emit("for (i = 0; i < asdl_seq_LEN(%s); i++) {" % value, 0) - emit("void *elt = asdl_seq_GET(%s, i);" % value, 1); - ctype = get_c_type(field.type); - emit("marshal_write_%s(buf, off, (%s)elt);" % (field.type, - ctype), 1) - emit("}", 0) - elif field.opt: - emit("if (%s) {" % value, 0) - emit("marshal_write_int(buf, off, 1);", 1) - emit("marshal_write_%s(buf, off, %s);" % (field.type, value), 1) - emit("}", 0) - emit("else {", 0) - emit("marshal_write_int(buf, off, 0);", 1) - emit("}", 0) - else: - emit("marshal_write_%s(buf, off, %s);" % (field.type, value), 0) + self.emit_init(name) + + def visitConstructor(self, cons, name, attrs): + self.emit_init("%s_%s" % (name, cons.name), name) + + def emit_init(self, name, base = None): + if base: + self.emit("Py_%s_Type.tp_base = &Py_%s_Type;" % (name, base), 1) + self.emit("if (PyType_Ready(&Py_%s_Type) < 0)" % name, 1) + self.emit("return;", 2) class ChainOfVisitors: def __init__(self, *visitors): @@ -648,12 +336,7 @@ p = "%s-ast.h" % mod.name f = open(p, "wb") print >> f, auto_gen_msg - print >> f, '#include "asdl.h"\n' - c = ChainOfVisitors(TypeDefVisitor(f), - StructVisitor(f), - PrototypeVisitor(f), - FreePrototypeVisitor(f), - ) + c = HeaderVisitor(f) c.visit(mod) f.close() @@ -666,12 +349,8 @@ print >> f, '#include "Python.h"' print >> f, '#include "%s-ast.h"' % mod.name print >> f - v = ChainOfVisitors(MarshalPrototypeVisitor(f), - FunctionVisitor(f), - FreeUtilVisitor(f), - FreeVisitor(f), - MarshalUtilVisitor(f), - MarshalFunctionVisitor(f), + v = ChainOfVisitors(FunctionVisitor(f), + InitVisitor(f), ) v.visit(mod) f.close() Modified: python/branches/ast-objects/Python/Python-ast.c ============================================================================== --- python/branches/ast-objects/Python/Python-ast.c (original) +++ python/branches/ast-objects/Python/Python-ast.c Wed Nov 30 20:11:25 2005 @@ -3,2360 +3,3795 @@ #include "Python.h" #include "Python-ast.h" -static int marshal_write_mod(PyObject **, int *, mod_ty); -static int marshal_write_stmt(PyObject **, int *, stmt_ty); -static int marshal_write_expr(PyObject **, int *, expr_ty); -static int marshal_write_expr_context(PyObject **, int *, expr_context_ty); -static int marshal_write_slice(PyObject **, int *, slice_ty); -static int marshal_write_boolop(PyObject **, int *, boolop_ty); -static int marshal_write_operator(PyObject **, int *, operator_ty); -static int marshal_write_unaryop(PyObject **, int *, unaryop_ty); -static int marshal_write_cmpop(PyObject **, int *, cmpop_ty); -static int marshal_write_comprehension(PyObject **, int *, comprehension_ty); -static int marshal_write_excepthandler(PyObject **, int *, excepthandler_ty); -static int marshal_write_arguments(PyObject **, int *, arguments_ty); -static int marshal_write_keyword(PyObject **, int *, keyword_ty); -static int marshal_write_alias(PyObject **, int *, alias_ty); - -mod_ty -Module(asdl_seq * body) -{ - mod_ty p; - p = (mod_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Module_kind; - p->v.Module.body = body; - return p; -} - -mod_ty -Interactive(asdl_seq * body) -{ - mod_ty p; - p = (mod_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Interactive_kind; - p->v.Interactive.body = body; - return p; -} - -mod_ty -Expression(expr_ty body) -{ - mod_ty p; - if (!body) { - PyErr_SetString(PyExc_ValueError, - "field body is required for Expression"); - return NULL; - } - p = (mod_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Expression_kind; - p->v.Expression.body = body; - return p; -} - -mod_ty -Suite(asdl_seq * body) -{ - mod_ty p; - p = (mod_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Suite_kind; - p->v.Suite.body = body; - return p; -} - -stmt_ty -FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * - decorators, int lineno) -{ - stmt_ty p; - if (!name) { - PyErr_SetString(PyExc_ValueError, - "field name is required for FunctionDef"); - return NULL; - } - if (!args) { - PyErr_SetString(PyExc_ValueError, - "field args is required for FunctionDef"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = FunctionDef_kind; - p->v.FunctionDef.name = name; - p->v.FunctionDef.args = args; - p->v.FunctionDef.body = body; - p->v.FunctionDef.decorators = decorators; - p->lineno = lineno; - return p; -} - -stmt_ty -ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int lineno) -{ - stmt_ty p; - if (!name) { - PyErr_SetString(PyExc_ValueError, - "field name is required for ClassDef"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = ClassDef_kind; - p->v.ClassDef.name = name; - p->v.ClassDef.bases = bases; - p->v.ClassDef.body = body; - p->lineno = lineno; - return p; -} - -stmt_ty -Return(expr_ty value, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Return_kind; - p->v.Return.value = value; - p->lineno = lineno; - return p; -} - -stmt_ty -Delete(asdl_seq * targets, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Delete_kind; - p->v.Delete.targets = targets; - p->lineno = lineno; - return p; -} - -stmt_ty -Assign(asdl_seq * targets, expr_ty value, int lineno) -{ - stmt_ty p; - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for Assign"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Assign_kind; - p->v.Assign.targets = targets; - p->v.Assign.value = value; - p->lineno = lineno; - return p; -} - -stmt_ty -AugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno) -{ - stmt_ty p; - if (!target) { - PyErr_SetString(PyExc_ValueError, - "field target is required for AugAssign"); - return NULL; - } - if (!op) { - PyErr_SetString(PyExc_ValueError, - "field op is required for AugAssign"); - return NULL; - } - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for AugAssign"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = AugAssign_kind; - p->v.AugAssign.target = target; - p->v.AugAssign.op = op; - p->v.AugAssign.value = value; - p->lineno = lineno; - return p; -} - -stmt_ty -Print(expr_ty dest, asdl_seq * values, bool nl, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Print_kind; - p->v.Print.dest = dest; - p->v.Print.values = values; - p->v.Print.nl = nl; - p->lineno = lineno; - return p; -} - -stmt_ty -For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int - lineno) -{ - stmt_ty p; - if (!target) { - PyErr_SetString(PyExc_ValueError, - "field target is required for For"); - return NULL; - } - if (!iter) { - PyErr_SetString(PyExc_ValueError, - "field iter is required for For"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = For_kind; - p->v.For.target = target; - p->v.For.iter = iter; - p->v.For.body = body; - p->v.For.orelse = orelse; - p->lineno = lineno; - return p; -} - -stmt_ty -While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno) -{ - stmt_ty p; - if (!test) { - PyErr_SetString(PyExc_ValueError, - "field test is required for While"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = While_kind; - p->v.While.test = test; - p->v.While.body = body; - p->v.While.orelse = orelse; - p->lineno = lineno; - return p; -} - -stmt_ty -If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno) -{ - stmt_ty p; - if (!test) { - PyErr_SetString(PyExc_ValueError, - "field test is required for If"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = If_kind; - p->v.If.test = test; - p->v.If.body = body; - p->v.If.orelse = orelse; - p->lineno = lineno; - return p; -} - -stmt_ty -Raise(expr_ty type, expr_ty inst, expr_ty tback, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Raise_kind; - p->v.Raise.type = type; - p->v.Raise.inst = inst; - p->v.Raise.tback = tback; - p->lineno = lineno; - return p; -} - -stmt_ty -TryExcept(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = TryExcept_kind; - p->v.TryExcept.body = body; - p->v.TryExcept.handlers = handlers; - p->v.TryExcept.orelse = orelse; - p->lineno = lineno; - return p; -} - -stmt_ty -TryFinally(asdl_seq * body, asdl_seq * finalbody, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = TryFinally_kind; - p->v.TryFinally.body = body; - p->v.TryFinally.finalbody = finalbody; - p->lineno = lineno; - return p; -} - -stmt_ty -Assert(expr_ty test, expr_ty msg, int lineno) -{ - stmt_ty p; - if (!test) { - PyErr_SetString(PyExc_ValueError, - "field test is required for Assert"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Assert_kind; - p->v.Assert.test = test; - p->v.Assert.msg = msg; - p->lineno = lineno; - return p; -} - -stmt_ty -Import(asdl_seq * names, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Import_kind; - p->v.Import.names = names; - p->lineno = lineno; - return p; -} - -stmt_ty -ImportFrom(identifier module, asdl_seq * names, int lineno) -{ - stmt_ty p; - if (!module) { - PyErr_SetString(PyExc_ValueError, - "field module is required for ImportFrom"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = ImportFrom_kind; - p->v.ImportFrom.module = module; - p->v.ImportFrom.names = names; - p->lineno = lineno; - return p; -} - -stmt_ty -Exec(expr_ty body, expr_ty globals, expr_ty locals, int lineno) -{ - stmt_ty p; - if (!body) { - PyErr_SetString(PyExc_ValueError, - "field body is required for Exec"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Exec_kind; - p->v.Exec.body = body; - p->v.Exec.globals = globals; - p->v.Exec.locals = locals; - p->lineno = lineno; - return p; -} - -stmt_ty -Global(asdl_seq * names, int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Global_kind; - p->v.Global.names = names; - p->lineno = lineno; - return p; -} - -stmt_ty -Expr(expr_ty value, int lineno) -{ - stmt_ty p; - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for Expr"); - return NULL; - } - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Expr_kind; - p->v.Expr.value = value; - p->lineno = lineno; - return p; -} - -stmt_ty -Pass(int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Pass_kind; - p->lineno = lineno; - return p; -} - -stmt_ty -Break(int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Break_kind; - p->lineno = lineno; - return p; -} - -stmt_ty -Continue(int lineno) -{ - stmt_ty p; - p = (stmt_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Continue_kind; - p->lineno = lineno; - return p; -} - -expr_ty -BoolOp(boolop_ty op, asdl_seq * values, int lineno) -{ - expr_ty p; - if (!op) { - PyErr_SetString(PyExc_ValueError, - "field op is required for BoolOp"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = BoolOp_kind; - p->v.BoolOp.op = op; - p->v.BoolOp.values = values; - p->lineno = lineno; - return p; -} - -expr_ty -BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno) -{ - expr_ty p; - if (!left) { - PyErr_SetString(PyExc_ValueError, - "field left is required for BinOp"); - return NULL; - } - if (!op) { - PyErr_SetString(PyExc_ValueError, - "field op is required for BinOp"); - return NULL; - } - if (!right) { - PyErr_SetString(PyExc_ValueError, - "field right is required for BinOp"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = BinOp_kind; - p->v.BinOp.left = left; - p->v.BinOp.op = op; - p->v.BinOp.right = right; - p->lineno = lineno; - return p; -} - -expr_ty -UnaryOp(unaryop_ty op, expr_ty operand, int lineno) -{ - expr_ty p; - if (!op) { - PyErr_SetString(PyExc_ValueError, - "field op is required for UnaryOp"); - return NULL; - } - if (!operand) { - PyErr_SetString(PyExc_ValueError, - "field operand is required for UnaryOp"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = UnaryOp_kind; - p->v.UnaryOp.op = op; - p->v.UnaryOp.operand = operand; - p->lineno = lineno; - return p; -} - -expr_ty -Lambda(arguments_ty args, expr_ty body, int lineno) -{ - expr_ty p; - if (!args) { - PyErr_SetString(PyExc_ValueError, - "field args is required for Lambda"); - return NULL; - } - if (!body) { - PyErr_SetString(PyExc_ValueError, - "field body is required for Lambda"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Lambda_kind; - p->v.Lambda.args = args; - p->v.Lambda.body = body; - p->lineno = lineno; - return p; -} - -expr_ty -Dict(asdl_seq * keys, asdl_seq * values, int lineno) -{ - expr_ty p; - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Dict_kind; - p->v.Dict.keys = keys; - p->v.Dict.values = values; - p->lineno = lineno; - return p; -} - -expr_ty -ListComp(expr_ty elt, asdl_seq * generators, int lineno) -{ - expr_ty p; - if (!elt) { - PyErr_SetString(PyExc_ValueError, - "field elt is required for ListComp"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = ListComp_kind; - p->v.ListComp.elt = elt; - p->v.ListComp.generators = generators; - p->lineno = lineno; - return p; -} - -expr_ty -GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno) -{ - expr_ty p; - if (!elt) { - PyErr_SetString(PyExc_ValueError, - "field elt is required for GeneratorExp"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = GeneratorExp_kind; - p->v.GeneratorExp.elt = elt; - p->v.GeneratorExp.generators = generators; - p->lineno = lineno; - return p; -} - -expr_ty -Yield(expr_ty value, int lineno) -{ - expr_ty p; - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Yield_kind; - p->v.Yield.value = value; - p->lineno = lineno; - return p; -} - -expr_ty -Compare(expr_ty left, asdl_seq * ops, asdl_seq * comparators, int lineno) -{ - expr_ty p; - if (!left) { - PyErr_SetString(PyExc_ValueError, - "field left is required for Compare"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Compare_kind; - p->v.Compare.left = left; - p->v.Compare.ops = ops; - p->v.Compare.comparators = comparators; - p->lineno = lineno; - return p; -} - -expr_ty -Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs, - expr_ty kwargs, int lineno) -{ - expr_ty p; - if (!func) { - PyErr_SetString(PyExc_ValueError, - "field func is required for Call"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Call_kind; - p->v.Call.func = func; - p->v.Call.args = args; - p->v.Call.keywords = keywords; - p->v.Call.starargs = starargs; - p->v.Call.kwargs = kwargs; - p->lineno = lineno; - return p; -} - -expr_ty -Repr(expr_ty value, int lineno) -{ - expr_ty p; - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for Repr"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Repr_kind; - p->v.Repr.value = value; - p->lineno = lineno; - return p; -} - -expr_ty -Num(object n, int lineno) -{ - expr_ty p; - if (!n) { - PyErr_SetString(PyExc_ValueError, - "field n is required for Num"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Num_kind; - p->v.Num.n = n; - p->lineno = lineno; - return p; -} - -expr_ty -Str(string s, int lineno) -{ - expr_ty p; - if (!s) { - PyErr_SetString(PyExc_ValueError, - "field s is required for Str"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Str_kind; - p->v.Str.s = s; - p->lineno = lineno; - return p; -} - -expr_ty -Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno) -{ - expr_ty p; - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for Attribute"); - return NULL; - } - if (!attr) { - PyErr_SetString(PyExc_ValueError, - "field attr is required for Attribute"); - return NULL; - } - if (!ctx) { - PyErr_SetString(PyExc_ValueError, - "field ctx is required for Attribute"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Attribute_kind; - p->v.Attribute.value = value; - p->v.Attribute.attr = attr; - p->v.Attribute.ctx = ctx; - p->lineno = lineno; - return p; -} - -expr_ty -Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int lineno) -{ - expr_ty p; - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for Subscript"); - return NULL; - } - if (!slice) { - PyErr_SetString(PyExc_ValueError, - "field slice is required for Subscript"); - return NULL; - } - if (!ctx) { - PyErr_SetString(PyExc_ValueError, - "field ctx is required for Subscript"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Subscript_kind; - p->v.Subscript.value = value; - p->v.Subscript.slice = slice; - p->v.Subscript.ctx = ctx; - p->lineno = lineno; - return p; -} - -expr_ty -Name(identifier id, expr_context_ty ctx, int lineno) -{ - expr_ty p; - if (!id) { - PyErr_SetString(PyExc_ValueError, - "field id is required for Name"); - return NULL; - } - if (!ctx) { - PyErr_SetString(PyExc_ValueError, - "field ctx is required for Name"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Name_kind; - p->v.Name.id = id; - p->v.Name.ctx = ctx; - p->lineno = lineno; - return p; -} - -expr_ty -List(asdl_seq * elts, expr_context_ty ctx, int lineno) -{ - expr_ty p; - if (!ctx) { - PyErr_SetString(PyExc_ValueError, - "field ctx is required for List"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = List_kind; - p->v.List.elts = elts; - p->v.List.ctx = ctx; - p->lineno = lineno; - return p; -} - -expr_ty -Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno) -{ - expr_ty p; - if (!ctx) { - PyErr_SetString(PyExc_ValueError, - "field ctx is required for Tuple"); - return NULL; - } - p = (expr_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Tuple_kind; - p->v.Tuple.elts = elts; - p->v.Tuple.ctx = ctx; - p->lineno = lineno; - return p; -} - -slice_ty -Ellipsis() -{ - slice_ty p; - p = (slice_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Ellipsis_kind; - return p; -} - -slice_ty -Slice(expr_ty lower, expr_ty upper, expr_ty step) -{ - slice_ty p; - p = (slice_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Slice_kind; - p->v.Slice.lower = lower; - p->v.Slice.upper = upper; - p->v.Slice.step = step; - return p; -} - -slice_ty -ExtSlice(asdl_seq * dims) -{ - slice_ty p; - p = (slice_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = ExtSlice_kind; - p->v.ExtSlice.dims = dims; - return p; -} - -slice_ty -Index(expr_ty value) -{ - slice_ty p; - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for Index"); - return NULL; - } - p = (slice_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->kind = Index_kind; - p->v.Index.value = value; - return p; -} - -comprehension_ty -comprehension(expr_ty target, expr_ty iter, asdl_seq * ifs) -{ - comprehension_ty p; - if (!target) { - PyErr_SetString(PyExc_ValueError, - "field target is required for comprehension"); - return NULL; - } - if (!iter) { - PyErr_SetString(PyExc_ValueError, - "field iter is required for comprehension"); - return NULL; - } - p = (comprehension_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->target = target; - p->iter = iter; - p->ifs = ifs; - return p; -} - -excepthandler_ty -excepthandler(expr_ty type, expr_ty name, asdl_seq * body) -{ - excepthandler_ty p; - p = (excepthandler_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->type = type; - p->name = name; - p->body = body; - return p; -} - -arguments_ty -arguments(asdl_seq * args, identifier vararg, identifier kwarg, asdl_seq * - defaults) -{ - arguments_ty p; - p = (arguments_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->args = args; - p->vararg = vararg; - p->kwarg = kwarg; - p->defaults = defaults; - return p; -} - -keyword_ty -keyword(identifier arg, expr_ty value) -{ - keyword_ty p; - if (!arg) { - PyErr_SetString(PyExc_ValueError, - "field arg is required for keyword"); - return NULL; - } - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for keyword"); - return NULL; - } - p = (keyword_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->arg = arg; - p->value = value; - return p; -} - -alias_ty -alias(identifier name, identifier asname) -{ - alias_ty p; - if (!name) { - PyErr_SetString(PyExc_ValueError, - "field name is required for alias"); - return NULL; - } - p = (alias_ty)malloc(sizeof(*p)); - if (!p) { - PyErr_NoMemory(); - return NULL; - } - p->name = name; - p->asname = asname; - return p; -} - - -static void -free_seq_exprs(asdl_seq *seq) -{ - int i, n; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_expr((expr_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); -} - -static void -free_seq_stmts(asdl_seq *seq) -{ - int i, n; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_stmt((stmt_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); -} - - -void -free_mod(mod_ty o) -{ - if (!o) - return; - - switch (o->kind) { - case Module_kind: - free_seq_stmts(o->v.Module.body); - break; - case Interactive_kind: - free_seq_stmts(o->v.Interactive.body); - break; - case Expression_kind: - free_expr((expr_ty)o->v.Expression.body); - break; - case Suite_kind: - free_seq_stmts(o->v.Suite.body); - break; - } - - free(o); -} - -void -free_stmt(stmt_ty o) -{ - int i, n; - asdl_seq *seq; - - if (!o) - return; - - switch (o->kind) { - case FunctionDef_kind: - Py_DECREF((identifier)o->v.FunctionDef.name); - free_arguments((arguments_ty)o->v.FunctionDef.args); - free_seq_stmts(o->v.FunctionDef.body); - free_seq_exprs(o->v.FunctionDef.decorators); - break; - case ClassDef_kind: - Py_DECREF((identifier)o->v.ClassDef.name); - free_seq_exprs(o->v.ClassDef.bases); - free_seq_stmts(o->v.ClassDef.body); - break; - case Return_kind: - if (o->v.Return.value) { - free_expr((expr_ty)o->v.Return.value); - } - break; - case Delete_kind: - free_seq_exprs(o->v.Delete.targets); - break; - case Assign_kind: - free_seq_exprs(o->v.Assign.targets); - free_expr((expr_ty)o->v.Assign.value); - break; - case AugAssign_kind: - free_expr((expr_ty)o->v.AugAssign.target); - free_operator((operator_ty)o->v.AugAssign.op); - free_expr((expr_ty)o->v.AugAssign.value); - break; - case Print_kind: - if (o->v.Print.dest) { - free_expr((expr_ty)o->v.Print.dest); - } - free_seq_exprs(o->v.Print.values); - break; - case For_kind: - free_expr((expr_ty)o->v.For.target); - free_expr((expr_ty)o->v.For.iter); - free_seq_stmts(o->v.For.body); - free_seq_stmts(o->v.For.orelse); - break; - case While_kind: - free_expr((expr_ty)o->v.While.test); - free_seq_stmts(o->v.While.body); - free_seq_stmts(o->v.While.orelse); - break; - case If_kind: - free_expr((expr_ty)o->v.If.test); - free_seq_stmts(o->v.If.body); - free_seq_stmts(o->v.If.orelse); - break; - case Raise_kind: - if (o->v.Raise.type) { - free_expr((expr_ty)o->v.Raise.type); - } - if (o->v.Raise.inst) { - free_expr((expr_ty)o->v.Raise.inst); - } - if (o->v.Raise.tback) { - free_expr((expr_ty)o->v.Raise.tback); - } - break; - case TryExcept_kind: - free_seq_stmts(o->v.TryExcept.body); - seq = o->v.TryExcept.handlers; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_excepthandler((excepthandler_ty)asdl_seq_GET(seq, - i)); - asdl_seq_free(seq); - free_seq_stmts(o->v.TryExcept.orelse); - break; - case TryFinally_kind: - free_seq_stmts(o->v.TryFinally.body); - free_seq_stmts(o->v.TryFinally.finalbody); - break; - case Assert_kind: - free_expr((expr_ty)o->v.Assert.test); - if (o->v.Assert.msg) { - free_expr((expr_ty)o->v.Assert.msg); - } - break; - case Import_kind: - seq = o->v.Import.names; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_alias((alias_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); - break; - case ImportFrom_kind: - Py_DECREF((identifier)o->v.ImportFrom.module); - seq = o->v.ImportFrom.names; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_alias((alias_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); - break; - case Exec_kind: - free_expr((expr_ty)o->v.Exec.body); - if (o->v.Exec.globals) { - free_expr((expr_ty)o->v.Exec.globals); - } - if (o->v.Exec.locals) { - free_expr((expr_ty)o->v.Exec.locals); - } - break; - case Global_kind: - seq = o->v.Global.names; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - Py_DECREF((identifier)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); - break; - case Expr_kind: - free_expr((expr_ty)o->v.Expr.value); - break; - case Pass_kind: - break; - case Break_kind: - break; - case Continue_kind: - break; - } - - free(o); -} - -void -free_expr(expr_ty o) -{ - int i, n; - asdl_seq *seq; - - if (!o) - return; - - switch (o->kind) { - case BoolOp_kind: - free_boolop((boolop_ty)o->v.BoolOp.op); - free_seq_exprs(o->v.BoolOp.values); - break; - case BinOp_kind: - free_expr((expr_ty)o->v.BinOp.left); - free_operator((operator_ty)o->v.BinOp.op); - free_expr((expr_ty)o->v.BinOp.right); - break; - case UnaryOp_kind: - free_unaryop((unaryop_ty)o->v.UnaryOp.op); - free_expr((expr_ty)o->v.UnaryOp.operand); - break; - case Lambda_kind: - free_arguments((arguments_ty)o->v.Lambda.args); - free_expr((expr_ty)o->v.Lambda.body); - break; - case Dict_kind: - free_seq_exprs(o->v.Dict.keys); - free_seq_exprs(o->v.Dict.values); - break; - case ListComp_kind: - free_expr((expr_ty)o->v.ListComp.elt); - seq = o->v.ListComp.generators; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_comprehension((comprehension_ty)asdl_seq_GET(seq, - i)); - asdl_seq_free(seq); - break; - case GeneratorExp_kind: - free_expr((expr_ty)o->v.GeneratorExp.elt); - seq = o->v.GeneratorExp.generators; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_comprehension((comprehension_ty)asdl_seq_GET(seq, - i)); - asdl_seq_free(seq); - break; - case Yield_kind: - if (o->v.Yield.value) { - free_expr((expr_ty)o->v.Yield.value); - } - break; - case Compare_kind: - free_expr((expr_ty)o->v.Compare.left); - seq = o->v.Compare.ops; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_cmpop((cmpop_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); - free_seq_exprs(o->v.Compare.comparators); - break; - case Call_kind: - free_expr((expr_ty)o->v.Call.func); - free_seq_exprs(o->v.Call.args); - seq = o->v.Call.keywords; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_keyword((keyword_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); - if (o->v.Call.starargs) { - free_expr((expr_ty)o->v.Call.starargs); - } - if (o->v.Call.kwargs) { - free_expr((expr_ty)o->v.Call.kwargs); - } - break; - case Repr_kind: - free_expr((expr_ty)o->v.Repr.value); - break; - case Num_kind: - Py_DECREF((object)o->v.Num.n); - break; - case Str_kind: - Py_DECREF((string)o->v.Str.s); - break; - case Attribute_kind: - free_expr((expr_ty)o->v.Attribute.value); - Py_DECREF((identifier)o->v.Attribute.attr); - free_expr_context((expr_context_ty)o->v.Attribute.ctx); - break; - case Subscript_kind: - free_expr((expr_ty)o->v.Subscript.value); - free_slice((slice_ty)o->v.Subscript.slice); - free_expr_context((expr_context_ty)o->v.Subscript.ctx); - break; - case Name_kind: - Py_DECREF((identifier)o->v.Name.id); - free_expr_context((expr_context_ty)o->v.Name.ctx); - break; - case List_kind: - free_seq_exprs(o->v.List.elts); - free_expr_context((expr_context_ty)o->v.List.ctx); - break; - case Tuple_kind: - free_seq_exprs(o->v.Tuple.elts); - free_expr_context((expr_context_ty)o->v.Tuple.ctx); - break; - } - - free(o); -} - -void -free_expr_context(expr_context_ty o) -{ - if (!o) - return; - -} - -void -free_slice(slice_ty o) -{ - int i, n; - asdl_seq *seq; - - if (!o) - return; - - switch (o->kind) { - case Ellipsis_kind: - break; - case Slice_kind: - if (o->v.Slice.lower) { - free_expr((expr_ty)o->v.Slice.lower); - } - if (o->v.Slice.upper) { - free_expr((expr_ty)o->v.Slice.upper); - } - if (o->v.Slice.step) { - free_expr((expr_ty)o->v.Slice.step); - } - break; - case ExtSlice_kind: - seq = o->v.ExtSlice.dims; - n = asdl_seq_LEN(seq); - for (i = 0; i < n; i++) - free_slice((slice_ty)asdl_seq_GET(seq, i)); - asdl_seq_free(seq); - break; - case Index_kind: - free_expr((expr_ty)o->v.Index.value); - break; - } - - free(o); -} - -void -free_boolop(boolop_ty o) -{ - if (!o) - return; - -} - -void -free_operator(operator_ty o) -{ - if (!o) - return; - -} - -void -free_unaryop(unaryop_ty o) -{ - if (!o) - return; - -} - -void -free_cmpop(cmpop_ty o) -{ - if (!o) - return; - -} - -void -free_comprehension(comprehension_ty o) -{ - if (!o) - return; - - free_expr((expr_ty)o->target); - free_expr((expr_ty)o->iter); - free_seq_exprs(o->ifs); - - free(o); -} - -void -free_excepthandler(excepthandler_ty o) -{ - if (!o) - return; - - if (o->type) { - free_expr((expr_ty)o->type); - } - if (o->name) { - free_expr((expr_ty)o->name); - } - free_seq_stmts(o->body); - - free(o); -} - -void -free_arguments(arguments_ty o) -{ - if (!o) - return; - - free_seq_exprs(o->args); - if (o->vararg) { - Py_DECREF((identifier)o->vararg); - } - if (o->kwarg) { - Py_DECREF((identifier)o->kwarg); - } - free_seq_exprs(o->defaults); - - free(o); -} - -void -free_keyword(keyword_ty o) -{ - if (!o) - return; - - Py_DECREF((identifier)o->arg); - free_expr((expr_ty)o->value); - - free(o); -} - -void -free_alias(alias_ty o) -{ - if (!o) - return; - - Py_DECREF((identifier)o->name); - if (o->asname) { - Py_DECREF((identifier)o->asname); - } - - free(o); -} - - - -#define CHECKSIZE(BUF, OFF, MIN) { \ - int need = *(OFF) + MIN; \ - if (need >= PyString_GET_SIZE(*(BUF))) { \ - int newsize = PyString_GET_SIZE(*(BUF)) * 2; \ - if (newsize < need) \ - newsize = need; \ - if (_PyString_Resize((BUF), newsize) < 0) \ - return 0; \ - } \ -} - -static int -marshal_write_int(PyObject **buf, int *offset, int x) -{ - char *s; - - CHECKSIZE(buf, offset, 4) - s = PyString_AS_STRING(*buf) + (*offset); - s[0] = (x & 0xff); - s[1] = (x >> 8) & 0xff; - s[2] = (x >> 16) & 0xff; - s[3] = (x >> 24) & 0xff; - *offset += 4; - return 1; -} - -static int -marshal_write_bool(PyObject **buf, int *offset, bool b) -{ - if (b) - marshal_write_int(buf, offset, 1); - else - marshal_write_int(buf, offset, 0); - return 1; -} - -static int -marshal_write_identifier(PyObject **buf, int *offset, identifier id) -{ - int l = PyString_GET_SIZE(id); - marshal_write_int(buf, offset, l); - CHECKSIZE(buf, offset, l); - memcpy(PyString_AS_STRING(*buf) + *offset, - PyString_AS_STRING(id), l); - *offset += l; - return 1; -} - -static int -marshal_write_string(PyObject **buf, int *offset, string s) -{ - int len = PyString_GET_SIZE(s); - marshal_write_int(buf, offset, len); - CHECKSIZE(buf, offset, len); - memcpy(PyString_AS_STRING(*buf) + *offset, - PyString_AS_STRING(s), len); - *offset += len; - return 1; -} - -static int -marshal_write_object(PyObject **buf, int *offset, object s) -{ - /* XXX */ - return 0; -} - - -static int -marshal_write_mod(PyObject **buf, int *off, mod_ty o) -{ - int i; - switch (o->kind) { - case Module_kind: - marshal_write_int(buf, off, 1); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Module.body)); - for (i = 0; i < asdl_seq_LEN(o->v.Module.body); i++) { - void *elt = asdl_seq_GET(o->v.Module.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case Interactive_kind: - marshal_write_int(buf, off, 2); - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.Interactive.body)); - for (i = 0; i < asdl_seq_LEN(o->v.Interactive.body); i++) { - void *elt = asdl_seq_GET(o->v.Interactive.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case Expression_kind: - marshal_write_int(buf, off, 3); - marshal_write_expr(buf, off, o->v.Expression.body); - break; - case Suite_kind: - marshal_write_int(buf, off, 4); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Suite.body)); - for (i = 0; i < asdl_seq_LEN(o->v.Suite.body); i++) { - void *elt = asdl_seq_GET(o->v.Suite.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - } - return 1; -} - -static int -marshal_write_stmt(PyObject **buf, int *off, stmt_ty o) -{ - int i; - switch (o->kind) { - case FunctionDef_kind: - marshal_write_int(buf, off, 1); - marshal_write_identifier(buf, off, o->v.FunctionDef.name); - marshal_write_arguments(buf, off, o->v.FunctionDef.args); - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.FunctionDef.body)); - for (i = 0; i < asdl_seq_LEN(o->v.FunctionDef.body); i++) { - void *elt = asdl_seq_GET(o->v.FunctionDef.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.FunctionDef.decorators)); - for (i = 0; i < asdl_seq_LEN(o->v.FunctionDef.decorators); i++) - { - void *elt = asdl_seq_GET(o->v.FunctionDef.decorators, - i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - break; - case ClassDef_kind: - marshal_write_int(buf, off, 2); - marshal_write_identifier(buf, off, o->v.ClassDef.name); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.ClassDef.bases)); - for (i = 0; i < asdl_seq_LEN(o->v.ClassDef.bases); i++) { - void *elt = asdl_seq_GET(o->v.ClassDef.bases, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->v.ClassDef.body)); - for (i = 0; i < asdl_seq_LEN(o->v.ClassDef.body); i++) { - void *elt = asdl_seq_GET(o->v.ClassDef.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case Return_kind: - marshal_write_int(buf, off, 3); - if (o->v.Return.value) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Return.value); - } - else { - marshal_write_int(buf, off, 0); - } - break; - case Delete_kind: - marshal_write_int(buf, off, 4); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Delete.targets)); - for (i = 0; i < asdl_seq_LEN(o->v.Delete.targets); i++) { - void *elt = asdl_seq_GET(o->v.Delete.targets, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - break; - case Assign_kind: - marshal_write_int(buf, off, 5); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Assign.targets)); - for (i = 0; i < asdl_seq_LEN(o->v.Assign.targets); i++) { - void *elt = asdl_seq_GET(o->v.Assign.targets, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - marshal_write_expr(buf, off, o->v.Assign.value); - break; - case AugAssign_kind: - marshal_write_int(buf, off, 6); - marshal_write_expr(buf, off, o->v.AugAssign.target); - marshal_write_operator(buf, off, o->v.AugAssign.op); - marshal_write_expr(buf, off, o->v.AugAssign.value); - break; - case Print_kind: - marshal_write_int(buf, off, 7); - if (o->v.Print.dest) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Print.dest); - } - else { - marshal_write_int(buf, off, 0); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Print.values)); - for (i = 0; i < asdl_seq_LEN(o->v.Print.values); i++) { - void *elt = asdl_seq_GET(o->v.Print.values, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - marshal_write_bool(buf, off, o->v.Print.nl); - break; - case For_kind: - marshal_write_int(buf, off, 8); - marshal_write_expr(buf, off, o->v.For.target); - marshal_write_expr(buf, off, o->v.For.iter); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.For.body)); - for (i = 0; i < asdl_seq_LEN(o->v.For.body); i++) { - void *elt = asdl_seq_GET(o->v.For.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->v.For.orelse)); - for (i = 0; i < asdl_seq_LEN(o->v.For.orelse); i++) { - void *elt = asdl_seq_GET(o->v.For.orelse, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case While_kind: - marshal_write_int(buf, off, 9); - marshal_write_expr(buf, off, o->v.While.test); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.While.body)); - for (i = 0; i < asdl_seq_LEN(o->v.While.body); i++) { - void *elt = asdl_seq_GET(o->v.While.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->v.While.orelse)); - for (i = 0; i < asdl_seq_LEN(o->v.While.orelse); i++) { - void *elt = asdl_seq_GET(o->v.While.orelse, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case If_kind: - marshal_write_int(buf, off, 10); - marshal_write_expr(buf, off, o->v.If.test); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.If.body)); - for (i = 0; i < asdl_seq_LEN(o->v.If.body); i++) { - void *elt = asdl_seq_GET(o->v.If.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->v.If.orelse)); - for (i = 0; i < asdl_seq_LEN(o->v.If.orelse); i++) { - void *elt = asdl_seq_GET(o->v.If.orelse, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case Raise_kind: - marshal_write_int(buf, off, 11); - if (o->v.Raise.type) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Raise.type); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->v.Raise.inst) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Raise.inst); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->v.Raise.tback) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Raise.tback); - } - else { - marshal_write_int(buf, off, 0); - } - break; - case TryExcept_kind: - marshal_write_int(buf, off, 12); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.TryExcept.body)); - for (i = 0; i < asdl_seq_LEN(o->v.TryExcept.body); i++) { - void *elt = asdl_seq_GET(o->v.TryExcept.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.TryExcept.handlers)); - for (i = 0; i < asdl_seq_LEN(o->v.TryExcept.handlers); i++) { - void *elt = asdl_seq_GET(o->v.TryExcept.handlers, i); - marshal_write_excepthandler(buf, off, - (excepthandler_ty)elt); - } - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.TryExcept.orelse)); - for (i = 0; i < asdl_seq_LEN(o->v.TryExcept.orelse); i++) { - void *elt = asdl_seq_GET(o->v.TryExcept.orelse, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case TryFinally_kind: - marshal_write_int(buf, off, 13); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.TryFinally.body)); - for (i = 0; i < asdl_seq_LEN(o->v.TryFinally.body); i++) { - void *elt = asdl_seq_GET(o->v.TryFinally.body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.TryFinally.finalbody)); - for (i = 0; i < asdl_seq_LEN(o->v.TryFinally.finalbody); i++) { - void *elt = asdl_seq_GET(o->v.TryFinally.finalbody, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - break; - case Assert_kind: - marshal_write_int(buf, off, 14); - marshal_write_expr(buf, off, o->v.Assert.test); - if (o->v.Assert.msg) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Assert.msg); - } - else { - marshal_write_int(buf, off, 0); - } - break; - case Import_kind: - marshal_write_int(buf, off, 15); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Import.names)); - for (i = 0; i < asdl_seq_LEN(o->v.Import.names); i++) { - void *elt = asdl_seq_GET(o->v.Import.names, i); - marshal_write_alias(buf, off, (alias_ty)elt); - } - break; - case ImportFrom_kind: - marshal_write_int(buf, off, 16); - marshal_write_identifier(buf, off, o->v.ImportFrom.module); - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.ImportFrom.names)); - for (i = 0; i < asdl_seq_LEN(o->v.ImportFrom.names); i++) { - void *elt = asdl_seq_GET(o->v.ImportFrom.names, i); - marshal_write_alias(buf, off, (alias_ty)elt); - } - break; - case Exec_kind: - marshal_write_int(buf, off, 17); - marshal_write_expr(buf, off, o->v.Exec.body); - if (o->v.Exec.globals) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Exec.globals); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->v.Exec.locals) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Exec.locals); - } - else { - marshal_write_int(buf, off, 0); - } - break; - case Global_kind: - marshal_write_int(buf, off, 18); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Global.names)); - for (i = 0; i < asdl_seq_LEN(o->v.Global.names); i++) { - void *elt = asdl_seq_GET(o->v.Global.names, i); - marshal_write_identifier(buf, off, (identifier)elt); - } - break; - case Expr_kind: - marshal_write_int(buf, off, 19); - marshal_write_expr(buf, off, o->v.Expr.value); - break; - case Pass_kind: - marshal_write_int(buf, off, 20); - break; - case Break_kind: - marshal_write_int(buf, off, 21); - break; - case Continue_kind: - marshal_write_int(buf, off, 22); - break; - } - return 1; -} - -static int -marshal_write_expr(PyObject **buf, int *off, expr_ty o) -{ - int i; - switch (o->kind) { - case BoolOp_kind: - marshal_write_int(buf, off, 1); - marshal_write_boolop(buf, off, o->v.BoolOp.op); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.BoolOp.values)); - for (i = 0; i < asdl_seq_LEN(o->v.BoolOp.values); i++) { - void *elt = asdl_seq_GET(o->v.BoolOp.values, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - break; - case BinOp_kind: - marshal_write_int(buf, off, 2); - marshal_write_expr(buf, off, o->v.BinOp.left); - marshal_write_operator(buf, off, o->v.BinOp.op); - marshal_write_expr(buf, off, o->v.BinOp.right); - break; - case UnaryOp_kind: - marshal_write_int(buf, off, 3); - marshal_write_unaryop(buf, off, o->v.UnaryOp.op); - marshal_write_expr(buf, off, o->v.UnaryOp.operand); - break; - case Lambda_kind: - marshal_write_int(buf, off, 4); - marshal_write_arguments(buf, off, o->v.Lambda.args); - marshal_write_expr(buf, off, o->v.Lambda.body); - break; - case Dict_kind: - marshal_write_int(buf, off, 5); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Dict.keys)); - for (i = 0; i < asdl_seq_LEN(o->v.Dict.keys); i++) { - void *elt = asdl_seq_GET(o->v.Dict.keys, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Dict.values)); - for (i = 0; i < asdl_seq_LEN(o->v.Dict.values); i++) { - void *elt = asdl_seq_GET(o->v.Dict.values, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - break; - case ListComp_kind: - marshal_write_int(buf, off, 6); - marshal_write_expr(buf, off, o->v.ListComp.elt); - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.ListComp.generators)); - for (i = 0; i < asdl_seq_LEN(o->v.ListComp.generators); i++) { - void *elt = asdl_seq_GET(o->v.ListComp.generators, i); - marshal_write_comprehension(buf, off, - (comprehension_ty)elt); - } - break; - case GeneratorExp_kind: - marshal_write_int(buf, off, 7); - marshal_write_expr(buf, off, o->v.GeneratorExp.elt); - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.GeneratorExp.generators)); - for (i = 0; i < asdl_seq_LEN(o->v.GeneratorExp.generators); - i++) { - void *elt = asdl_seq_GET(o->v.GeneratorExp.generators, - i); - marshal_write_comprehension(buf, off, - (comprehension_ty)elt); - } - break; - case Yield_kind: - marshal_write_int(buf, off, 8); - if (o->v.Yield.value) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Yield.value); - } - else { - marshal_write_int(buf, off, 0); - } - break; - case Compare_kind: - marshal_write_int(buf, off, 9); - marshal_write_expr(buf, off, o->v.Compare.left); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Compare.ops)); - for (i = 0; i < asdl_seq_LEN(o->v.Compare.ops); i++) { - void *elt = asdl_seq_GET(o->v.Compare.ops, i); - marshal_write_cmpop(buf, off, (cmpop_ty)elt); - } - marshal_write_int(buf, off, - asdl_seq_LEN(o->v.Compare.comparators)); - for (i = 0; i < asdl_seq_LEN(o->v.Compare.comparators); i++) { - void *elt = asdl_seq_GET(o->v.Compare.comparators, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - break; - case Call_kind: - marshal_write_int(buf, off, 10); - marshal_write_expr(buf, off, o->v.Call.func); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Call.args)); - for (i = 0; i < asdl_seq_LEN(o->v.Call.args); i++) { - void *elt = asdl_seq_GET(o->v.Call.args, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Call.keywords)); - for (i = 0; i < asdl_seq_LEN(o->v.Call.keywords); i++) { - void *elt = asdl_seq_GET(o->v.Call.keywords, i); - marshal_write_keyword(buf, off, (keyword_ty)elt); - } - if (o->v.Call.starargs) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Call.starargs); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->v.Call.kwargs) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Call.kwargs); - } - else { - marshal_write_int(buf, off, 0); - } - break; - case Repr_kind: - marshal_write_int(buf, off, 11); - marshal_write_expr(buf, off, o->v.Repr.value); - break; - case Num_kind: - marshal_write_int(buf, off, 12); - marshal_write_object(buf, off, o->v.Num.n); - break; - case Str_kind: - marshal_write_int(buf, off, 13); - marshal_write_string(buf, off, o->v.Str.s); - break; - case Attribute_kind: - marshal_write_int(buf, off, 14); - marshal_write_expr(buf, off, o->v.Attribute.value); - marshal_write_identifier(buf, off, o->v.Attribute.attr); - marshal_write_expr_context(buf, off, o->v.Attribute.ctx); - break; - case Subscript_kind: - marshal_write_int(buf, off, 15); - marshal_write_expr(buf, off, o->v.Subscript.value); - marshal_write_slice(buf, off, o->v.Subscript.slice); - marshal_write_expr_context(buf, off, o->v.Subscript.ctx); - break; - case Name_kind: - marshal_write_int(buf, off, 16); - marshal_write_identifier(buf, off, o->v.Name.id); - marshal_write_expr_context(buf, off, o->v.Name.ctx); - break; - case List_kind: - marshal_write_int(buf, off, 17); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.List.elts)); - for (i = 0; i < asdl_seq_LEN(o->v.List.elts); i++) { - void *elt = asdl_seq_GET(o->v.List.elts, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - marshal_write_expr_context(buf, off, o->v.List.ctx); - break; - case Tuple_kind: - marshal_write_int(buf, off, 18); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.Tuple.elts)); - for (i = 0; i < asdl_seq_LEN(o->v.Tuple.elts); i++) { - void *elt = asdl_seq_GET(o->v.Tuple.elts, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - marshal_write_expr_context(buf, off, o->v.Tuple.ctx); - break; - } - return 1; -} - -static int -marshal_write_expr_context(PyObject **buf, int *off, expr_context_ty o) -{ - switch (o) { - case Load: - marshal_write_int(buf, off, 1); - break; - case Store: - marshal_write_int(buf, off, 2); - break; - case Del: - marshal_write_int(buf, off, 3); - break; - case AugLoad: - marshal_write_int(buf, off, 4); - break; - case AugStore: - marshal_write_int(buf, off, 5); - break; - case Param: - marshal_write_int(buf, off, 6); - break; - } - return 1; -} - -static int -marshal_write_slice(PyObject **buf, int *off, slice_ty o) -{ - int i; - switch (o->kind) { - case Ellipsis_kind: - marshal_write_int(buf, off, 1); - break; - case Slice_kind: - marshal_write_int(buf, off, 2); - if (o->v.Slice.lower) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Slice.lower); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->v.Slice.upper) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Slice.upper); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->v.Slice.step) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->v.Slice.step); - } - else { - marshal_write_int(buf, off, 0); - } - break; - case ExtSlice_kind: - marshal_write_int(buf, off, 3); - marshal_write_int(buf, off, asdl_seq_LEN(o->v.ExtSlice.dims)); - for (i = 0; i < asdl_seq_LEN(o->v.ExtSlice.dims); i++) { - void *elt = asdl_seq_GET(o->v.ExtSlice.dims, i); - marshal_write_slice(buf, off, (slice_ty)elt); - } - break; - case Index_kind: - marshal_write_int(buf, off, 4); - marshal_write_expr(buf, off, o->v.Index.value); - break; - } - return 1; -} - -static int -marshal_write_boolop(PyObject **buf, int *off, boolop_ty o) -{ - switch (o) { - case And: - marshal_write_int(buf, off, 1); - break; - case Or: - marshal_write_int(buf, off, 2); - break; - } - return 1; -} - -static int -marshal_write_operator(PyObject **buf, int *off, operator_ty o) -{ - switch (o) { - case Add: - marshal_write_int(buf, off, 1); - break; - case Sub: - marshal_write_int(buf, off, 2); - break; - case Mult: - marshal_write_int(buf, off, 3); - break; - case Div: - marshal_write_int(buf, off, 4); - break; - case Mod: - marshal_write_int(buf, off, 5); - break; - case Pow: - marshal_write_int(buf, off, 6); - break; - case LShift: - marshal_write_int(buf, off, 7); - break; - case RShift: - marshal_write_int(buf, off, 8); - break; - case BitOr: - marshal_write_int(buf, off, 9); - break; - case BitXor: - marshal_write_int(buf, off, 10); - break; - case BitAnd: - marshal_write_int(buf, off, 11); - break; - case FloorDiv: - marshal_write_int(buf, off, 12); - break; - } - return 1; -} - -static int -marshal_write_unaryop(PyObject **buf, int *off, unaryop_ty o) -{ - switch (o) { - case Invert: - marshal_write_int(buf, off, 1); - break; - case Not: - marshal_write_int(buf, off, 2); - break; - case UAdd: - marshal_write_int(buf, off, 3); - break; - case USub: - marshal_write_int(buf, off, 4); - break; - } - return 1; -} - -static int -marshal_write_cmpop(PyObject **buf, int *off, cmpop_ty o) -{ - switch (o) { - case Eq: - marshal_write_int(buf, off, 1); - break; - case NotEq: - marshal_write_int(buf, off, 2); - break; - case Lt: - marshal_write_int(buf, off, 3); - break; - case LtE: - marshal_write_int(buf, off, 4); - break; - case Gt: - marshal_write_int(buf, off, 5); - break; - case GtE: - marshal_write_int(buf, off, 6); - break; - case Is: - marshal_write_int(buf, off, 7); - break; - case IsNot: - marshal_write_int(buf, off, 8); - break; - case In: - marshal_write_int(buf, off, 9); - break; - case NotIn: - marshal_write_int(buf, off, 10); - break; - } - return 1; -} - -static int -marshal_write_comprehension(PyObject **buf, int *off, comprehension_ty o) -{ - int i; - marshal_write_expr(buf, off, o->target); - marshal_write_expr(buf, off, o->iter); - marshal_write_int(buf, off, asdl_seq_LEN(o->ifs)); - for (i = 0; i < asdl_seq_LEN(o->ifs); i++) { - void *elt = asdl_seq_GET(o->ifs, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - return 1; -} - -static int -marshal_write_excepthandler(PyObject **buf, int *off, excepthandler_ty o) -{ - int i; - if (o->type) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->type); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->name) { - marshal_write_int(buf, off, 1); - marshal_write_expr(buf, off, o->name); - } - else { - marshal_write_int(buf, off, 0); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->body)); - for (i = 0; i < asdl_seq_LEN(o->body); i++) { - void *elt = asdl_seq_GET(o->body, i); - marshal_write_stmt(buf, off, (stmt_ty)elt); - } - return 1; -} - -static int -marshal_write_arguments(PyObject **buf, int *off, arguments_ty o) -{ - int i; - marshal_write_int(buf, off, asdl_seq_LEN(o->args)); - for (i = 0; i < asdl_seq_LEN(o->args); i++) { - void *elt = asdl_seq_GET(o->args, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - if (o->vararg) { - marshal_write_int(buf, off, 1); - marshal_write_identifier(buf, off, o->vararg); - } - else { - marshal_write_int(buf, off, 0); - } - if (o->kwarg) { - marshal_write_int(buf, off, 1); - marshal_write_identifier(buf, off, o->kwarg); - } - else { - marshal_write_int(buf, off, 0); - } - marshal_write_int(buf, off, asdl_seq_LEN(o->defaults)); - for (i = 0; i < asdl_seq_LEN(o->defaults); i++) { - void *elt = asdl_seq_GET(o->defaults, i); - marshal_write_expr(buf, off, (expr_ty)elt); - } - return 1; -} - -static int -marshal_write_keyword(PyObject **buf, int *off, keyword_ty o) -{ - marshal_write_identifier(buf, off, o->arg); - marshal_write_expr(buf, off, o->value); - return 1; -} - -static int -marshal_write_alias(PyObject **buf, int *off, alias_ty o) -{ - marshal_write_identifier(buf, off, o->name); - if (o->asname) { - marshal_write_int(buf, off, 1); - marshal_write_identifier(buf, off, o->asname); - } - else { - marshal_write_int(buf, off, 0); - } - return 1; +#define mod_dealloc 0 +PyTypeObject Py_mod_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "mod", /*tp_name*/ + sizeof(struct Py_mod), /*tp_basicsize*/ + 0, /* tp_itemsize */ + mod_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_mod_Module_New(PyObject* body) +{ + struct Py_mod_Module *result = PyObject_New(struct Py_mod_Module, &Py_mod_Module_Type); + if (result == NULL) + return NULL; + result->body = body; + return (PyObject*)result; +} + +static void +mod_Module_dealloc(PyObject* _self) +{ + struct Py_mod_Module *self = (struct Py_mod_Module*)_self; + Py_DECREF(self->body); + PyObject_Del(self); +} + +PyTypeObject Py_mod_Module_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "mod_Module", /*tp_name*/ + sizeof(struct Py_mod_Module), /*tp_basicsize*/ + 0, /* tp_itemsize */ + mod_Module_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_mod_Interactive_New(PyObject* body) +{ + struct Py_mod_Interactive *result = PyObject_New(struct Py_mod_Interactive, &Py_mod_Interactive_Type); + if (result == NULL) + return NULL; + result->body = body; + return (PyObject*)result; +} + +static void +mod_Interactive_dealloc(PyObject* _self) +{ + struct Py_mod_Interactive *self = (struct Py_mod_Interactive*)_self; + Py_DECREF(self->body); + PyObject_Del(self); +} + +PyTypeObject Py_mod_Interactive_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "mod_Interactive", /*tp_name*/ + sizeof(struct Py_mod_Interactive), /*tp_basicsize*/ + 0, /* tp_itemsize */ + mod_Interactive_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_mod_Expression_New(PyObject* body) +{ + struct Py_mod_Expression *result = PyObject_New(struct Py_mod_Expression, &Py_mod_Expression_Type); + if (result == NULL) + return NULL; + result->body = body; + return (PyObject*)result; +} + +static void +mod_Expression_dealloc(PyObject* _self) +{ + struct Py_mod_Expression *self = (struct Py_mod_Expression*)_self; + Py_DECREF(self->body); + PyObject_Del(self); +} + +PyTypeObject Py_mod_Expression_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "mod_Expression", /*tp_name*/ + sizeof(struct Py_mod_Expression), /*tp_basicsize*/ + 0, /* tp_itemsize */ + mod_Expression_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_mod_Suite_New(PyObject* body) +{ + struct Py_mod_Suite *result = PyObject_New(struct Py_mod_Suite, &Py_mod_Suite_Type); + if (result == NULL) + return NULL; + result->body = body; + return (PyObject*)result; +} + +static void +mod_Suite_dealloc(PyObject* _self) +{ + struct Py_mod_Suite *self = (struct Py_mod_Suite*)_self; + Py_DECREF(self->body); + PyObject_Del(self); +} + +PyTypeObject Py_mod_Suite_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "mod_Suite", /*tp_name*/ + sizeof(struct Py_mod_Suite), /*tp_basicsize*/ + 0, /* tp_itemsize */ + mod_Suite_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +#define stmt_dealloc 0 +PyTypeObject Py_stmt_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt", /*tp_name*/ + sizeof(struct Py_stmt), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_FunctionDef_New(PyObject* name, PyObject* args, PyObject* body, + PyObject* decorators, int lineno) +{ + struct Py_stmt_FunctionDef *result = PyObject_New(struct Py_stmt_FunctionDef, &Py_stmt_FunctionDef_Type); + if (result == NULL) + return NULL; + result->name = name; + result->args = args; + result->body = body; + result->decorators = decorators; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_FunctionDef_dealloc(PyObject* _self) +{ + struct Py_stmt_FunctionDef *self = (struct Py_stmt_FunctionDef*)_self; + Py_DECREF(self->name); + Py_DECREF(self->args); + Py_DECREF(self->body); + Py_DECREF(self->decorators); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_FunctionDef_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_FunctionDef", /*tp_name*/ + sizeof(struct Py_stmt_FunctionDef), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_FunctionDef_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_ClassDef_New(PyObject* name, PyObject* bases, PyObject* body, int + lineno) +{ + struct Py_stmt_ClassDef *result = PyObject_New(struct Py_stmt_ClassDef, &Py_stmt_ClassDef_Type); + if (result == NULL) + return NULL; + result->name = name; + result->bases = bases; + result->body = body; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_ClassDef_dealloc(PyObject* _self) +{ + struct Py_stmt_ClassDef *self = (struct Py_stmt_ClassDef*)_self; + Py_DECREF(self->name); + Py_DECREF(self->bases); + Py_DECREF(self->body); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_ClassDef_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_ClassDef", /*tp_name*/ + sizeof(struct Py_stmt_ClassDef), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_ClassDef_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Return_New(PyObject* value, int lineno) +{ + struct Py_stmt_Return *result = PyObject_New(struct Py_stmt_Return, &Py_stmt_Return_Type); + if (result == NULL) + return NULL; + result->value = value; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Return_dealloc(PyObject* _self) +{ + struct Py_stmt_Return *self = (struct Py_stmt_Return*)_self; + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Return_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Return", /*tp_name*/ + sizeof(struct Py_stmt_Return), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Return_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Delete_New(PyObject* targets, int lineno) +{ + struct Py_stmt_Delete *result = PyObject_New(struct Py_stmt_Delete, &Py_stmt_Delete_Type); + if (result == NULL) + return NULL; + result->targets = targets; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Delete_dealloc(PyObject* _self) +{ + struct Py_stmt_Delete *self = (struct Py_stmt_Delete*)_self; + Py_DECREF(self->targets); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Delete_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Delete", /*tp_name*/ + sizeof(struct Py_stmt_Delete), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Delete_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Assign_New(PyObject* targets, PyObject* value, int lineno) +{ + struct Py_stmt_Assign *result = PyObject_New(struct Py_stmt_Assign, &Py_stmt_Assign_Type); + if (result == NULL) + return NULL; + result->targets = targets; + result->value = value; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Assign_dealloc(PyObject* _self) +{ + struct Py_stmt_Assign *self = (struct Py_stmt_Assign*)_self; + Py_DECREF(self->targets); + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Assign_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Assign", /*tp_name*/ + sizeof(struct Py_stmt_Assign), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Assign_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_AugAssign_New(PyObject* target, PyObject* op, PyObject* value, int + lineno) +{ + struct Py_stmt_AugAssign *result = PyObject_New(struct Py_stmt_AugAssign, &Py_stmt_AugAssign_Type); + if (result == NULL) + return NULL; + result->target = target; + result->op = op; + result->value = value; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_AugAssign_dealloc(PyObject* _self) +{ + struct Py_stmt_AugAssign *self = (struct Py_stmt_AugAssign*)_self; + Py_DECREF(self->target); + Py_DECREF(self->op); + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_AugAssign_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_AugAssign", /*tp_name*/ + sizeof(struct Py_stmt_AugAssign), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_AugAssign_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Print_New(PyObject* dest, PyObject* values, PyObject* nl, int lineno) +{ + struct Py_stmt_Print *result = PyObject_New(struct Py_stmt_Print, &Py_stmt_Print_Type); + if (result == NULL) + return NULL; + result->dest = dest; + result->values = values; + result->nl = nl; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Print_dealloc(PyObject* _self) +{ + struct Py_stmt_Print *self = (struct Py_stmt_Print*)_self; + Py_DECREF(self->dest); + Py_DECREF(self->values); + Py_DECREF(self->nl); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Print_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Print", /*tp_name*/ + sizeof(struct Py_stmt_Print), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Print_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_For_New(PyObject* target, PyObject* iter, PyObject* body, PyObject* + orelse, int lineno) +{ + struct Py_stmt_For *result = PyObject_New(struct Py_stmt_For, &Py_stmt_For_Type); + if (result == NULL) + return NULL; + result->target = target; + result->iter = iter; + result->body = body; + result->orelse = orelse; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_For_dealloc(PyObject* _self) +{ + struct Py_stmt_For *self = (struct Py_stmt_For*)_self; + Py_DECREF(self->target); + Py_DECREF(self->iter); + Py_DECREF(self->body); + Py_DECREF(self->orelse); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_For_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_For", /*tp_name*/ + sizeof(struct Py_stmt_For), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_For_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_While_New(PyObject* test, PyObject* body, PyObject* orelse, int lineno) +{ + struct Py_stmt_While *result = PyObject_New(struct Py_stmt_While, &Py_stmt_While_Type); + if (result == NULL) + return NULL; + result->test = test; + result->body = body; + result->orelse = orelse; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_While_dealloc(PyObject* _self) +{ + struct Py_stmt_While *self = (struct Py_stmt_While*)_self; + Py_DECREF(self->test); + Py_DECREF(self->body); + Py_DECREF(self->orelse); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_While_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_While", /*tp_name*/ + sizeof(struct Py_stmt_While), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_While_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_If_New(PyObject* test, PyObject* body, PyObject* orelse, int lineno) +{ + struct Py_stmt_If *result = PyObject_New(struct Py_stmt_If, &Py_stmt_If_Type); + if (result == NULL) + return NULL; + result->test = test; + result->body = body; + result->orelse = orelse; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_If_dealloc(PyObject* _self) +{ + struct Py_stmt_If *self = (struct Py_stmt_If*)_self; + Py_DECREF(self->test); + Py_DECREF(self->body); + Py_DECREF(self->orelse); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_If_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_If", /*tp_name*/ + sizeof(struct Py_stmt_If), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_If_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Raise_New(PyObject* type, PyObject* inst, PyObject* tback, int lineno) +{ + struct Py_stmt_Raise *result = PyObject_New(struct Py_stmt_Raise, &Py_stmt_Raise_Type); + if (result == NULL) + return NULL; + result->type = type; + result->inst = inst; + result->tback = tback; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Raise_dealloc(PyObject* _self) +{ + struct Py_stmt_Raise *self = (struct Py_stmt_Raise*)_self; + Py_DECREF(self->type); + Py_DECREF(self->inst); + Py_DECREF(self->tback); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Raise_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Raise", /*tp_name*/ + sizeof(struct Py_stmt_Raise), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Raise_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_TryExcept_New(PyObject* body, PyObject* handlers, PyObject* orelse, int + lineno) +{ + struct Py_stmt_TryExcept *result = PyObject_New(struct Py_stmt_TryExcept, &Py_stmt_TryExcept_Type); + if (result == NULL) + return NULL; + result->body = body; + result->handlers = handlers; + result->orelse = orelse; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_TryExcept_dealloc(PyObject* _self) +{ + struct Py_stmt_TryExcept *self = (struct Py_stmt_TryExcept*)_self; + Py_DECREF(self->body); + Py_DECREF(self->handlers); + Py_DECREF(self->orelse); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_TryExcept_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_TryExcept", /*tp_name*/ + sizeof(struct Py_stmt_TryExcept), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_TryExcept_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_TryFinally_New(PyObject* body, PyObject* finalbody, int lineno) +{ + struct Py_stmt_TryFinally *result = PyObject_New(struct Py_stmt_TryFinally, &Py_stmt_TryFinally_Type); + if (result == NULL) + return NULL; + result->body = body; + result->finalbody = finalbody; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_TryFinally_dealloc(PyObject* _self) +{ + struct Py_stmt_TryFinally *self = (struct Py_stmt_TryFinally*)_self; + Py_DECREF(self->body); + Py_DECREF(self->finalbody); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_TryFinally_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_TryFinally", /*tp_name*/ + sizeof(struct Py_stmt_TryFinally), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_TryFinally_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Assert_New(PyObject* test, PyObject* msg, int lineno) +{ + struct Py_stmt_Assert *result = PyObject_New(struct Py_stmt_Assert, &Py_stmt_Assert_Type); + if (result == NULL) + return NULL; + result->test = test; + result->msg = msg; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Assert_dealloc(PyObject* _self) +{ + struct Py_stmt_Assert *self = (struct Py_stmt_Assert*)_self; + Py_DECREF(self->test); + Py_DECREF(self->msg); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Assert_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Assert", /*tp_name*/ + sizeof(struct Py_stmt_Assert), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Assert_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Import_New(PyObject* names, int lineno) +{ + struct Py_stmt_Import *result = PyObject_New(struct Py_stmt_Import, &Py_stmt_Import_Type); + if (result == NULL) + return NULL; + result->names = names; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Import_dealloc(PyObject* _self) +{ + struct Py_stmt_Import *self = (struct Py_stmt_Import*)_self; + Py_DECREF(self->names); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Import_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Import", /*tp_name*/ + sizeof(struct Py_stmt_Import), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Import_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_ImportFrom_New(PyObject* module, PyObject* names, int lineno) +{ + struct Py_stmt_ImportFrom *result = PyObject_New(struct Py_stmt_ImportFrom, &Py_stmt_ImportFrom_Type); + if (result == NULL) + return NULL; + result->module = module; + result->names = names; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_ImportFrom_dealloc(PyObject* _self) +{ + struct Py_stmt_ImportFrom *self = (struct Py_stmt_ImportFrom*)_self; + Py_DECREF(self->module); + Py_DECREF(self->names); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_ImportFrom_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_ImportFrom", /*tp_name*/ + sizeof(struct Py_stmt_ImportFrom), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_ImportFrom_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Exec_New(PyObject* body, PyObject* globals, PyObject* locals, int + lineno) +{ + struct Py_stmt_Exec *result = PyObject_New(struct Py_stmt_Exec, &Py_stmt_Exec_Type); + if (result == NULL) + return NULL; + result->body = body; + result->globals = globals; + result->locals = locals; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Exec_dealloc(PyObject* _self) +{ + struct Py_stmt_Exec *self = (struct Py_stmt_Exec*)_self; + Py_DECREF(self->body); + Py_DECREF(self->globals); + Py_DECREF(self->locals); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Exec_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Exec", /*tp_name*/ + sizeof(struct Py_stmt_Exec), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Exec_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Global_New(PyObject* names, int lineno) +{ + struct Py_stmt_Global *result = PyObject_New(struct Py_stmt_Global, &Py_stmt_Global_Type); + if (result == NULL) + return NULL; + result->names = names; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Global_dealloc(PyObject* _self) +{ + struct Py_stmt_Global *self = (struct Py_stmt_Global*)_self; + Py_DECREF(self->names); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Global_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Global", /*tp_name*/ + sizeof(struct Py_stmt_Global), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Global_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Expr_New(PyObject* value, int lineno) +{ + struct Py_stmt_Expr *result = PyObject_New(struct Py_stmt_Expr, &Py_stmt_Expr_Type); + if (result == NULL) + return NULL; + result->value = value; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Expr_dealloc(PyObject* _self) +{ + struct Py_stmt_Expr *self = (struct Py_stmt_Expr*)_self; + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Expr_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Expr", /*tp_name*/ + sizeof(struct Py_stmt_Expr), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Expr_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Pass_New(int lineno) +{ + struct Py_stmt_Pass *result = PyObject_New(struct Py_stmt_Pass, &Py_stmt_Pass_Type); + if (result == NULL) + return NULL; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Pass_dealloc(PyObject* _self) +{ + struct Py_stmt_Pass *self = (struct Py_stmt_Pass*)_self; + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Pass_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Pass", /*tp_name*/ + sizeof(struct Py_stmt_Pass), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Pass_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Break_New(int lineno) +{ + struct Py_stmt_Break *result = PyObject_New(struct Py_stmt_Break, &Py_stmt_Break_Type); + if (result == NULL) + return NULL; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Break_dealloc(PyObject* _self) +{ + struct Py_stmt_Break *self = (struct Py_stmt_Break*)_self; + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Break_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Break", /*tp_name*/ + sizeof(struct Py_stmt_Break), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Break_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_stmt_Continue_New(int lineno) +{ + struct Py_stmt_Continue *result = PyObject_New(struct Py_stmt_Continue, &Py_stmt_Continue_Type); + if (result == NULL) + return NULL; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +stmt_Continue_dealloc(PyObject* _self) +{ + struct Py_stmt_Continue *self = (struct Py_stmt_Continue*)_self; + PyObject_Del(self); +} + +PyTypeObject Py_stmt_Continue_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "stmt_Continue", /*tp_name*/ + sizeof(struct Py_stmt_Continue), /*tp_basicsize*/ + 0, /* tp_itemsize */ + stmt_Continue_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +#define expr_dealloc 0 +PyTypeObject Py_expr_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr", /*tp_name*/ + sizeof(struct Py_expr), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_BoolOp_New(PyObject* op, PyObject* values, int lineno) +{ + struct Py_expr_BoolOp *result = PyObject_New(struct Py_expr_BoolOp, &Py_expr_BoolOp_Type); + if (result == NULL) + return NULL; + result->op = op; + result->values = values; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_BoolOp_dealloc(PyObject* _self) +{ + struct Py_expr_BoolOp *self = (struct Py_expr_BoolOp*)_self; + Py_DECREF(self->op); + Py_DECREF(self->values); + PyObject_Del(self); +} + +PyTypeObject Py_expr_BoolOp_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_BoolOp", /*tp_name*/ + sizeof(struct Py_expr_BoolOp), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_BoolOp_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_BinOp_New(PyObject* left, PyObject* op, PyObject* right, int lineno) +{ + struct Py_expr_BinOp *result = PyObject_New(struct Py_expr_BinOp, &Py_expr_BinOp_Type); + if (result == NULL) + return NULL; + result->left = left; + result->op = op; + result->right = right; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_BinOp_dealloc(PyObject* _self) +{ + struct Py_expr_BinOp *self = (struct Py_expr_BinOp*)_self; + Py_DECREF(self->left); + Py_DECREF(self->op); + Py_DECREF(self->right); + PyObject_Del(self); +} + +PyTypeObject Py_expr_BinOp_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_BinOp", /*tp_name*/ + sizeof(struct Py_expr_BinOp), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_BinOp_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_UnaryOp_New(PyObject* op, PyObject* operand, int lineno) +{ + struct Py_expr_UnaryOp *result = PyObject_New(struct Py_expr_UnaryOp, &Py_expr_UnaryOp_Type); + if (result == NULL) + return NULL; + result->op = op; + result->operand = operand; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_UnaryOp_dealloc(PyObject* _self) +{ + struct Py_expr_UnaryOp *self = (struct Py_expr_UnaryOp*)_self; + Py_DECREF(self->op); + Py_DECREF(self->operand); + PyObject_Del(self); +} + +PyTypeObject Py_expr_UnaryOp_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_UnaryOp", /*tp_name*/ + sizeof(struct Py_expr_UnaryOp), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_UnaryOp_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Lambda_New(PyObject* args, PyObject* body, int lineno) +{ + struct Py_expr_Lambda *result = PyObject_New(struct Py_expr_Lambda, &Py_expr_Lambda_Type); + if (result == NULL) + return NULL; + result->args = args; + result->body = body; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Lambda_dealloc(PyObject* _self) +{ + struct Py_expr_Lambda *self = (struct Py_expr_Lambda*)_self; + Py_DECREF(self->args); + Py_DECREF(self->body); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Lambda_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Lambda", /*tp_name*/ + sizeof(struct Py_expr_Lambda), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Lambda_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Dict_New(PyObject* keys, PyObject* values, int lineno) +{ + struct Py_expr_Dict *result = PyObject_New(struct Py_expr_Dict, &Py_expr_Dict_Type); + if (result == NULL) + return NULL; + result->keys = keys; + result->values = values; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Dict_dealloc(PyObject* _self) +{ + struct Py_expr_Dict *self = (struct Py_expr_Dict*)_self; + Py_DECREF(self->keys); + Py_DECREF(self->values); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Dict_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Dict", /*tp_name*/ + sizeof(struct Py_expr_Dict), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Dict_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_ListComp_New(PyObject* elt, PyObject* generators, int lineno) +{ + struct Py_expr_ListComp *result = PyObject_New(struct Py_expr_ListComp, &Py_expr_ListComp_Type); + if (result == NULL) + return NULL; + result->elt = elt; + result->generators = generators; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_ListComp_dealloc(PyObject* _self) +{ + struct Py_expr_ListComp *self = (struct Py_expr_ListComp*)_self; + Py_DECREF(self->elt); + Py_DECREF(self->generators); + PyObject_Del(self); +} + +PyTypeObject Py_expr_ListComp_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_ListComp", /*tp_name*/ + sizeof(struct Py_expr_ListComp), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_ListComp_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_GeneratorExp_New(PyObject* elt, PyObject* generators, int lineno) +{ + struct Py_expr_GeneratorExp *result = PyObject_New(struct Py_expr_GeneratorExp, &Py_expr_GeneratorExp_Type); + if (result == NULL) + return NULL; + result->elt = elt; + result->generators = generators; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_GeneratorExp_dealloc(PyObject* _self) +{ + struct Py_expr_GeneratorExp *self = (struct Py_expr_GeneratorExp*)_self; + Py_DECREF(self->elt); + Py_DECREF(self->generators); + PyObject_Del(self); +} + +PyTypeObject Py_expr_GeneratorExp_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_GeneratorExp", /*tp_name*/ + sizeof(struct Py_expr_GeneratorExp), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_GeneratorExp_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Yield_New(PyObject* value, int lineno) +{ + struct Py_expr_Yield *result = PyObject_New(struct Py_expr_Yield, &Py_expr_Yield_Type); + if (result == NULL) + return NULL; + result->value = value; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Yield_dealloc(PyObject* _self) +{ + struct Py_expr_Yield *self = (struct Py_expr_Yield*)_self; + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Yield_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Yield", /*tp_name*/ + sizeof(struct Py_expr_Yield), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Yield_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Compare_New(PyObject* left, PyObject* ops, PyObject* comparators, int + lineno) +{ + struct Py_expr_Compare *result = PyObject_New(struct Py_expr_Compare, &Py_expr_Compare_Type); + if (result == NULL) + return NULL; + result->left = left; + result->ops = ops; + result->comparators = comparators; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Compare_dealloc(PyObject* _self) +{ + struct Py_expr_Compare *self = (struct Py_expr_Compare*)_self; + Py_DECREF(self->left); + Py_DECREF(self->ops); + Py_DECREF(self->comparators); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Compare_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Compare", /*tp_name*/ + sizeof(struct Py_expr_Compare), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Compare_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Call_New(PyObject* func, PyObject* args, PyObject* keywords, PyObject* + starargs, PyObject* kwargs, int lineno) +{ + struct Py_expr_Call *result = PyObject_New(struct Py_expr_Call, &Py_expr_Call_Type); + if (result == NULL) + return NULL; + result->func = func; + result->args = args; + result->keywords = keywords; + result->starargs = starargs; + result->kwargs = kwargs; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Call_dealloc(PyObject* _self) +{ + struct Py_expr_Call *self = (struct Py_expr_Call*)_self; + Py_DECREF(self->func); + Py_DECREF(self->args); + Py_DECREF(self->keywords); + Py_DECREF(self->starargs); + Py_DECREF(self->kwargs); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Call_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Call", /*tp_name*/ + sizeof(struct Py_expr_Call), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Call_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Repr_New(PyObject* value, int lineno) +{ + struct Py_expr_Repr *result = PyObject_New(struct Py_expr_Repr, &Py_expr_Repr_Type); + if (result == NULL) + return NULL; + result->value = value; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Repr_dealloc(PyObject* _self) +{ + struct Py_expr_Repr *self = (struct Py_expr_Repr*)_self; + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Repr_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Repr", /*tp_name*/ + sizeof(struct Py_expr_Repr), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Repr_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Num_New(PyObject* n, int lineno) +{ + struct Py_expr_Num *result = PyObject_New(struct Py_expr_Num, &Py_expr_Num_Type); + if (result == NULL) + return NULL; + result->n = n; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Num_dealloc(PyObject* _self) +{ + struct Py_expr_Num *self = (struct Py_expr_Num*)_self; + Py_DECREF(self->n); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Num_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Num", /*tp_name*/ + sizeof(struct Py_expr_Num), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Num_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Str_New(PyObject* s, int lineno) +{ + struct Py_expr_Str *result = PyObject_New(struct Py_expr_Str, &Py_expr_Str_Type); + if (result == NULL) + return NULL; + result->s = s; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Str_dealloc(PyObject* _self) +{ + struct Py_expr_Str *self = (struct Py_expr_Str*)_self; + Py_DECREF(self->s); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Str_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Str", /*tp_name*/ + sizeof(struct Py_expr_Str), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Str_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Attribute_New(PyObject* value, PyObject* attr, PyObject* ctx, int + lineno) +{ + struct Py_expr_Attribute *result = PyObject_New(struct Py_expr_Attribute, &Py_expr_Attribute_Type); + if (result == NULL) + return NULL; + result->value = value; + result->attr = attr; + result->ctx = ctx; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Attribute_dealloc(PyObject* _self) +{ + struct Py_expr_Attribute *self = (struct Py_expr_Attribute*)_self; + Py_DECREF(self->value); + Py_DECREF(self->attr); + Py_DECREF(self->ctx); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Attribute_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Attribute", /*tp_name*/ + sizeof(struct Py_expr_Attribute), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Attribute_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Subscript_New(PyObject* value, PyObject* slice, PyObject* ctx, int + lineno) +{ + struct Py_expr_Subscript *result = PyObject_New(struct Py_expr_Subscript, &Py_expr_Subscript_Type); + if (result == NULL) + return NULL; + result->value = value; + result->slice = slice; + result->ctx = ctx; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Subscript_dealloc(PyObject* _self) +{ + struct Py_expr_Subscript *self = (struct Py_expr_Subscript*)_self; + Py_DECREF(self->value); + Py_DECREF(self->slice); + Py_DECREF(self->ctx); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Subscript_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Subscript", /*tp_name*/ + sizeof(struct Py_expr_Subscript), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Subscript_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Name_New(PyObject* id, PyObject* ctx, int lineno) +{ + struct Py_expr_Name *result = PyObject_New(struct Py_expr_Name, &Py_expr_Name_Type); + if (result == NULL) + return NULL; + result->id = id; + result->ctx = ctx; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Name_dealloc(PyObject* _self) +{ + struct Py_expr_Name *self = (struct Py_expr_Name*)_self; + Py_DECREF(self->id); + Py_DECREF(self->ctx); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Name_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Name", /*tp_name*/ + sizeof(struct Py_expr_Name), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Name_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_List_New(PyObject* elts, PyObject* ctx, int lineno) +{ + struct Py_expr_List *result = PyObject_New(struct Py_expr_List, &Py_expr_List_Type); + if (result == NULL) + return NULL; + result->elts = elts; + result->ctx = ctx; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_List_dealloc(PyObject* _self) +{ + struct Py_expr_List *self = (struct Py_expr_List*)_self; + Py_DECREF(self->elts); + Py_DECREF(self->ctx); + PyObject_Del(self); +} + +PyTypeObject Py_expr_List_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_List", /*tp_name*/ + sizeof(struct Py_expr_List), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_List_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_expr_Tuple_New(PyObject* elts, PyObject* ctx, int lineno) +{ + struct Py_expr_Tuple *result = PyObject_New(struct Py_expr_Tuple, &Py_expr_Tuple_Type); + if (result == NULL) + return NULL; + result->elts = elts; + result->ctx = ctx; + result->_base.lineno = lineno; + return (PyObject*)result; +} + +static void +expr_Tuple_dealloc(PyObject* _self) +{ + struct Py_expr_Tuple *self = (struct Py_expr_Tuple*)_self; + Py_DECREF(self->elts); + Py_DECREF(self->ctx); + PyObject_Del(self); +} + +PyTypeObject Py_expr_Tuple_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "expr_Tuple", /*tp_name*/ + sizeof(struct Py_expr_Tuple), /*tp_basicsize*/ + 0, /* tp_itemsize */ + expr_Tuple_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +#define slice_dealloc 0 +PyTypeObject Py_slice_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "slice", /*tp_name*/ + sizeof(struct Py_slice), /*tp_basicsize*/ + 0, /* tp_itemsize */ + slice_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_slice_Ellipsis_New() +{ + struct Py_slice_Ellipsis *result = PyObject_New(struct Py_slice_Ellipsis, &Py_slice_Ellipsis_Type); + if (result == NULL) + return NULL; + return (PyObject*)result; +} + +static void +slice_Ellipsis_dealloc(PyObject* _self) +{ + struct Py_slice_Ellipsis *self = (struct Py_slice_Ellipsis*)_self; + PyObject_Del(self); +} + +PyTypeObject Py_slice_Ellipsis_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "slice_Ellipsis", /*tp_name*/ + sizeof(struct Py_slice_Ellipsis), /*tp_basicsize*/ + 0, /* tp_itemsize */ + slice_Ellipsis_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_slice_Slice_New(PyObject* lower, PyObject* upper, PyObject* step) +{ + struct Py_slice_Slice *result = PyObject_New(struct Py_slice_Slice, &Py_slice_Slice_Type); + if (result == NULL) + return NULL; + result->lower = lower; + result->upper = upper; + result->step = step; + return (PyObject*)result; +} + +static void +slice_Slice_dealloc(PyObject* _self) +{ + struct Py_slice_Slice *self = (struct Py_slice_Slice*)_self; + Py_DECREF(self->lower); + Py_DECREF(self->upper); + Py_DECREF(self->step); + PyObject_Del(self); +} + +PyTypeObject Py_slice_Slice_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "slice_Slice", /*tp_name*/ + sizeof(struct Py_slice_Slice), /*tp_basicsize*/ + 0, /* tp_itemsize */ + slice_Slice_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_slice_ExtSlice_New(PyObject* dims) +{ + struct Py_slice_ExtSlice *result = PyObject_New(struct Py_slice_ExtSlice, &Py_slice_ExtSlice_Type); + if (result == NULL) + return NULL; + result->dims = dims; + return (PyObject*)result; +} + +static void +slice_ExtSlice_dealloc(PyObject* _self) +{ + struct Py_slice_ExtSlice *self = (struct Py_slice_ExtSlice*)_self; + Py_DECREF(self->dims); + PyObject_Del(self); +} + +PyTypeObject Py_slice_ExtSlice_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "slice_ExtSlice", /*tp_name*/ + sizeof(struct Py_slice_ExtSlice), /*tp_basicsize*/ + 0, /* tp_itemsize */ + slice_ExtSlice_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_slice_Index_New(PyObject* value) +{ + struct Py_slice_Index *result = PyObject_New(struct Py_slice_Index, &Py_slice_Index_Type); + if (result == NULL) + return NULL; + result->value = value; + return (PyObject*)result; +} + +static void +slice_Index_dealloc(PyObject* _self) +{ + struct Py_slice_Index *self = (struct Py_slice_Index*)_self; + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_slice_Index_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "slice_Index", /*tp_name*/ + sizeof(struct Py_slice_Index), /*tp_basicsize*/ + 0, /* tp_itemsize */ + slice_Index_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_comprehension_New(PyObject* target, PyObject* iter, PyObject* ifs) +{ + struct Py_comprehension *result = PyObject_New(struct Py_comprehension, &Py_comprehension_Type); + if (result == NULL) + return NULL; + result->target = target; + result->iter = iter; + result->ifs = ifs; + return (PyObject*)result; +} + +static void +comprehension_dealloc(PyObject* _self) +{ + struct Py_comprehension *self = (struct Py_comprehension*)_self; + Py_DECREF(self->target); + Py_DECREF(self->iter); + Py_DECREF(self->ifs); + PyObject_Del(self); +} + +PyTypeObject Py_comprehension_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "comprehension", /*tp_name*/ + sizeof(struct Py_comprehension), /*tp_basicsize*/ + 0, /* tp_itemsize */ + comprehension_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_excepthandler_New(PyObject* type, PyObject* name, PyObject* body) +{ + struct Py_excepthandler *result = PyObject_New(struct Py_excepthandler, &Py_excepthandler_Type); + if (result == NULL) + return NULL; + result->type = type; + result->name = name; + result->body = body; + return (PyObject*)result; } +static void +excepthandler_dealloc(PyObject* _self) +{ + struct Py_excepthandler *self = (struct Py_excepthandler*)_self; + Py_DECREF(self->type); + Py_DECREF(self->name); + Py_DECREF(self->body); + PyObject_Del(self); +} + +PyTypeObject Py_excepthandler_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "excepthandler", /*tp_name*/ + sizeof(struct Py_excepthandler), /*tp_basicsize*/ + 0, /* tp_itemsize */ + excepthandler_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_arguments_New(PyObject* args, PyObject* vararg, PyObject* kwarg, PyObject* + defaults) +{ + struct Py_arguments *result = PyObject_New(struct Py_arguments, &Py_arguments_Type); + if (result == NULL) + return NULL; + result->args = args; + result->vararg = vararg; + result->kwarg = kwarg; + result->defaults = defaults; + return (PyObject*)result; +} + +static void +arguments_dealloc(PyObject* _self) +{ + struct Py_arguments *self = (struct Py_arguments*)_self; + Py_DECREF(self->args); + Py_DECREF(self->vararg); + Py_DECREF(self->kwarg); + Py_DECREF(self->defaults); + PyObject_Del(self); +} + +PyTypeObject Py_arguments_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "arguments", /*tp_name*/ + sizeof(struct Py_arguments), /*tp_basicsize*/ + 0, /* tp_itemsize */ + arguments_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_keyword_New(PyObject* arg, PyObject* value) +{ + struct Py_keyword *result = PyObject_New(struct Py_keyword, &Py_keyword_Type); + if (result == NULL) + return NULL; + result->arg = arg; + result->value = value; + return (PyObject*)result; +} + +static void +keyword_dealloc(PyObject* _self) +{ + struct Py_keyword *self = (struct Py_keyword*)_self; + Py_DECREF(self->arg); + Py_DECREF(self->value); + PyObject_Del(self); +} + +PyTypeObject Py_keyword_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "keyword", /*tp_name*/ + sizeof(struct Py_keyword), /*tp_basicsize*/ + 0, /* tp_itemsize */ + keyword_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + +PyObject* +Py_alias_New(PyObject* name, PyObject* asname) +{ + struct Py_alias *result = PyObject_New(struct Py_alias, &Py_alias_Type); + if (result == NULL) + return NULL; + result->name = name; + result->asname = asname; + return (PyObject*)result; +} + +static void +alias_dealloc(PyObject* _self) +{ + struct Py_alias *self = (struct Py_alias*)_self; + Py_DECREF(self->name); + Py_DECREF(self->asname); + PyObject_Del(self); +} + +PyTypeObject Py_alias_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "alias", /*tp_name*/ + sizeof(struct Py_alias), /*tp_basicsize*/ + 0, /* tp_itemsize */ + alias_dealloc, /*tp_dealloc*/ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + }; + + +void init_ast(void) +{ + if (PyType_Ready(&Py_mod_Type) < 0) + return; + Py_mod_Module_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_mod_Module_Type) < 0) + return; + Py_mod_Interactive_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_mod_Interactive_Type) < 0) + return; + Py_mod_Expression_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_mod_Expression_Type) < 0) + return; + Py_mod_Suite_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_mod_Suite_Type) < 0) + return; + if (PyType_Ready(&Py_stmt_Type) < 0) + return; + Py_stmt_FunctionDef_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_FunctionDef_Type) < 0) + return; + Py_stmt_ClassDef_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_ClassDef_Type) < 0) + return; + Py_stmt_Return_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Return_Type) < 0) + return; + Py_stmt_Delete_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Delete_Type) < 0) + return; + Py_stmt_Assign_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Assign_Type) < 0) + return; + Py_stmt_AugAssign_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_AugAssign_Type) < 0) + return; + Py_stmt_Print_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Print_Type) < 0) + return; + Py_stmt_For_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_For_Type) < 0) + return; + Py_stmt_While_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_While_Type) < 0) + return; + Py_stmt_If_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_If_Type) < 0) + return; + Py_stmt_Raise_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Raise_Type) < 0) + return; + Py_stmt_TryExcept_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_TryExcept_Type) < 0) + return; + Py_stmt_TryFinally_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_TryFinally_Type) < 0) + return; + Py_stmt_Assert_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Assert_Type) < 0) + return; + Py_stmt_Import_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Import_Type) < 0) + return; + Py_stmt_ImportFrom_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_ImportFrom_Type) < 0) + return; + Py_stmt_Exec_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Exec_Type) < 0) + return; + Py_stmt_Global_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Global_Type) < 0) + return; + Py_stmt_Expr_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Expr_Type) < 0) + return; + Py_stmt_Pass_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Pass_Type) < 0) + return; + Py_stmt_Break_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Break_Type) < 0) + return; + Py_stmt_Continue_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_stmt_Continue_Type) < 0) + return; + if (PyType_Ready(&Py_expr_Type) < 0) + return; + Py_expr_BoolOp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_BoolOp_Type) < 0) + return; + Py_expr_BinOp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_BinOp_Type) < 0) + return; + Py_expr_UnaryOp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_UnaryOp_Type) < 0) + return; + Py_expr_Lambda_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Lambda_Type) < 0) + return; + Py_expr_Dict_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Dict_Type) < 0) + return; + Py_expr_ListComp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_ListComp_Type) < 0) + return; + Py_expr_GeneratorExp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_GeneratorExp_Type) < 0) + return; + Py_expr_Yield_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Yield_Type) < 0) + return; + Py_expr_Compare_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Compare_Type) < 0) + return; + Py_expr_Call_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Call_Type) < 0) + return; + Py_expr_Repr_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Repr_Type) < 0) + return; + Py_expr_Num_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Num_Type) < 0) + return; + Py_expr_Str_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Str_Type) < 0) + return; + Py_expr_Attribute_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Attribute_Type) < 0) + return; + Py_expr_Subscript_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Subscript_Type) < 0) + return; + Py_expr_Name_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Name_Type) < 0) + return; + Py_expr_List_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_List_Type) < 0) + return; + Py_expr_Tuple_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_expr_Tuple_Type) < 0) + return; + if (PyType_Ready(&Py_slice_Type) < 0) + return; + Py_slice_Ellipsis_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_slice_Ellipsis_Type) < 0) + return; + Py_slice_Slice_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_slice_Slice_Type) < 0) + return; + Py_slice_ExtSlice_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_slice_ExtSlice_Type) < 0) + return; + Py_slice_Index_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_slice_Index_Type) < 0) + return; + if (PyType_Ready(&Py_comprehension_Type) < 0) + return; + if (PyType_Ready(&Py_excepthandler_Type) < 0) + return; + if (PyType_Ready(&Py_arguments_Type) < 0) + return; + if (PyType_Ready(&Py_keyword_Type) < 0) + return; + if (PyType_Ready(&Py_alias_Type) < 0) + return; +} Deleted: /python/branches/ast-objects/Python/asdl.c ============================================================================== --- /python/branches/ast-objects/Python/asdl.c Wed Nov 30 20:11:25 2005 +++ (empty file) @@ -1,26 +0,0 @@ -#include "Python.h" -#include "asdl.h" - -asdl_seq * -asdl_seq_new(int size) -{ - asdl_seq *seq = NULL; - size_t n = sizeof(asdl_seq) + - (size ? (sizeof(void *) * (size - 1)) : 0); - - seq = (asdl_seq *)PyObject_Malloc(n); - if (!seq) { - PyErr_NoMemory(); - return NULL; - } - memset(seq, 0, n); - seq->size = size; - return seq; -} - -void -asdl_seq_free(asdl_seq *seq) -{ - PyObject_Free(seq); -} - From python-checkins at python.org Wed Nov 30 20:40:46 2005 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 30 Nov 2005 20:40:46 +0100 (CET) Subject: [Python-checkins] commit of r41569 - in python/branches/ast-objects: Include Parser Python Message-ID: <20051130194046.AD4501E4002@bag.python.org> Author: martin.v.loewis Date: Wed Nov 30 20:40:40 2005 New Revision: 41569 Modified: python/branches/ast-objects/Include/Python-ast.h python/branches/ast-objects/Parser/asdl_c.py python/branches/ast-objects/Python/Python-ast.c Log: Simplify the naming conventions, while still keeping it namespace-safe. Modified: python/branches/ast-objects/Include/Python-ast.h ============================================================================== --- python/branches/ast-objects/Include/Python-ast.h (original) +++ python/branches/ast-objects/Include/Python-ast.h Wed Nov 30 20:40:40 2005 @@ -1,518 +1,581 @@ /* File automatically generated by ./Parser/asdl_c.py */ +/* For convenience, this header provides several + macro, type and constant names which are not Py_-prefixed. + Therefore, the file should not be included in Python.h; + all symbols relevant to linkage are Py_-prefixed. */ PyAPI_DATA(PyTypeObject) Py_mod_Type; -#define Py_mod_Check(op) PyObject_TypeCheck(op, &Py_mod_Type) +#define mod_Check(op) PyObject_TypeCheck(op, &Py_mod_Type) -struct Py_mod{ +struct _mod{ PyObject_HEAD + enum {Module_kind, Interactive_kind, Expression_kind, Suite_kind} _kind; }; -PyAPI_DATA(PyTypeObject) Py_mod_Module_Type; -#define Py_mod_Module_Check(op) PyObject_TypeCheck(op, &Py_mod_Module_Type) +PyAPI_DATA(PyTypeObject) Py_Module_Type; +#define Module_Check(op) PyObject_TypeCheck(op, &Py_Module_Type) -struct Py_mod_Module{ - struct Py_mod _base; +struct _Module{ + struct _mod _base; PyObject* body; /* stmt */ }; -PyObject *Py_mod_Module_New(PyObject*); +PyObject *Py_Module_New(PyObject*); +#define Module Py_Module_New -PyAPI_DATA(PyTypeObject) Py_mod_Interactive_Type; -#define Py_mod_Interactive_Check(op) PyObject_TypeCheck(op, &Py_mod_Interactive_Type) +PyAPI_DATA(PyTypeObject) Py_Interactive_Type; +#define Interactive_Check(op) PyObject_TypeCheck(op, &Py_Interactive_Type) -struct Py_mod_Interactive{ - struct Py_mod _base; +struct _Interactive{ + struct _mod _base; PyObject* body; /* stmt */ }; -PyObject *Py_mod_Interactive_New(PyObject*); +PyObject *Py_Interactive_New(PyObject*); +#define Interactive Py_Interactive_New -PyAPI_DATA(PyTypeObject) Py_mod_Expression_Type; -#define Py_mod_Expression_Check(op) PyObject_TypeCheck(op, &Py_mod_Expression_Type) +PyAPI_DATA(PyTypeObject) Py_Expression_Type; +#define Expression_Check(op) PyObject_TypeCheck(op, &Py_Expression_Type) -struct Py_mod_Expression{ - struct Py_mod _base; +struct _Expression{ + struct _mod _base; PyObject* body; /* expr */ }; -PyObject *Py_mod_Expression_New(PyObject*); +PyObject *Py_Expression_New(PyObject*); +#define Expression Py_Expression_New -PyAPI_DATA(PyTypeObject) Py_mod_Suite_Type; -#define Py_mod_Suite_Check(op) PyObject_TypeCheck(op, &Py_mod_Suite_Type) +PyAPI_DATA(PyTypeObject) Py_Suite_Type; +#define Suite_Check(op) PyObject_TypeCheck(op, &Py_Suite_Type) -struct Py_mod_Suite{ - struct Py_mod _base; +struct _Suite{ + struct _mod _base; PyObject* body; /* stmt */ }; -PyObject *Py_mod_Suite_New(PyObject*); +PyObject *Py_Suite_New(PyObject*); +#define Suite Py_Suite_New PyAPI_DATA(PyTypeObject) Py_stmt_Type; -#define Py_stmt_Check(op) PyObject_TypeCheck(op, &Py_stmt_Type) +#define stmt_Check(op) PyObject_TypeCheck(op, &Py_stmt_Type) -struct Py_stmt{ +struct _stmt{ PyObject_HEAD + enum {FunctionDef_kind, ClassDef_kind, Return_kind, Delete_kind, + Assign_kind, AugAssign_kind, Print_kind, For_kind, While_kind, + If_kind, Raise_kind, TryExcept_kind, TryFinally_kind, + Assert_kind, Import_kind, ImportFrom_kind, Exec_kind, + Global_kind, Expr_kind, Pass_kind, Break_kind, Continue_kind} + _kind; int lineno; }; -PyAPI_DATA(PyTypeObject) Py_stmt_FunctionDef_Type; -#define Py_stmt_FunctionDef_Check(op) PyObject_TypeCheck(op, &Py_stmt_FunctionDef_Type) +PyAPI_DATA(PyTypeObject) Py_FunctionDef_Type; +#define FunctionDef_Check(op) PyObject_TypeCheck(op, &Py_FunctionDef_Type) -struct Py_stmt_FunctionDef{ - struct Py_stmt _base; +struct _FunctionDef{ + struct _stmt _base; PyObject* name; /* identifier */ PyObject* args; /* arguments */ PyObject* body; /* stmt */ PyObject* decorators; /* expr */ }; -PyObject *Py_stmt_FunctionDef_New(PyObject*, PyObject*, PyObject*, PyObject*, - int); +PyObject *Py_FunctionDef_New(PyObject*, PyObject*, PyObject*, PyObject*, int); +#define FunctionDef Py_FunctionDef_New -PyAPI_DATA(PyTypeObject) Py_stmt_ClassDef_Type; -#define Py_stmt_ClassDef_Check(op) PyObject_TypeCheck(op, &Py_stmt_ClassDef_Type) +PyAPI_DATA(PyTypeObject) Py_ClassDef_Type; +#define ClassDef_Check(op) PyObject_TypeCheck(op, &Py_ClassDef_Type) -struct Py_stmt_ClassDef{ - struct Py_stmt _base; +struct _ClassDef{ + struct _stmt _base; PyObject* name; /* identifier */ PyObject* bases; /* expr */ PyObject* body; /* stmt */ }; -PyObject *Py_stmt_ClassDef_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_ClassDef_New(PyObject*, PyObject*, PyObject*, int); +#define ClassDef Py_ClassDef_New -PyAPI_DATA(PyTypeObject) Py_stmt_Return_Type; -#define Py_stmt_Return_Check(op) PyObject_TypeCheck(op, &Py_stmt_Return_Type) +PyAPI_DATA(PyTypeObject) Py_Return_Type; +#define Return_Check(op) PyObject_TypeCheck(op, &Py_Return_Type) -struct Py_stmt_Return{ - struct Py_stmt _base; +struct _Return{ + struct _stmt _base; PyObject* value; /* expr */ }; -PyObject *Py_stmt_Return_New(PyObject*, int); +PyObject *Py_Return_New(PyObject*, int); +#define Return Py_Return_New -PyAPI_DATA(PyTypeObject) Py_stmt_Delete_Type; -#define Py_stmt_Delete_Check(op) PyObject_TypeCheck(op, &Py_stmt_Delete_Type) +PyAPI_DATA(PyTypeObject) Py_Delete_Type; +#define Delete_Check(op) PyObject_TypeCheck(op, &Py_Delete_Type) -struct Py_stmt_Delete{ - struct Py_stmt _base; +struct _Delete{ + struct _stmt _base; PyObject* targets; /* expr */ }; -PyObject *Py_stmt_Delete_New(PyObject*, int); +PyObject *Py_Delete_New(PyObject*, int); +#define Delete Py_Delete_New -PyAPI_DATA(PyTypeObject) Py_stmt_Assign_Type; -#define Py_stmt_Assign_Check(op) PyObject_TypeCheck(op, &Py_stmt_Assign_Type) +PyAPI_DATA(PyTypeObject) Py_Assign_Type; +#define Assign_Check(op) PyObject_TypeCheck(op, &Py_Assign_Type) -struct Py_stmt_Assign{ - struct Py_stmt _base; +struct _Assign{ + struct _stmt _base; PyObject* targets; /* expr */ PyObject* value; /* expr */ }; -PyObject *Py_stmt_Assign_New(PyObject*, PyObject*, int); +PyObject *Py_Assign_New(PyObject*, PyObject*, int); +#define Assign Py_Assign_New -PyAPI_DATA(PyTypeObject) Py_stmt_AugAssign_Type; -#define Py_stmt_AugAssign_Check(op) PyObject_TypeCheck(op, &Py_stmt_AugAssign_Type) +PyAPI_DATA(PyTypeObject) Py_AugAssign_Type; +#define AugAssign_Check(op) PyObject_TypeCheck(op, &Py_AugAssign_Type) -struct Py_stmt_AugAssign{ - struct Py_stmt _base; +struct _AugAssign{ + struct _stmt _base; PyObject* target; /* expr */ PyObject* op; /* operator */ PyObject* value; /* expr */ }; -PyObject *Py_stmt_AugAssign_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_AugAssign_New(PyObject*, PyObject*, PyObject*, int); +#define AugAssign Py_AugAssign_New -PyAPI_DATA(PyTypeObject) Py_stmt_Print_Type; -#define Py_stmt_Print_Check(op) PyObject_TypeCheck(op, &Py_stmt_Print_Type) +PyAPI_DATA(PyTypeObject) Py_Print_Type; +#define Print_Check(op) PyObject_TypeCheck(op, &Py_Print_Type) -struct Py_stmt_Print{ - struct Py_stmt _base; +struct _Print{ + struct _stmt _base; PyObject* dest; /* expr */ PyObject* values; /* expr */ PyObject* nl; /* bool */ }; -PyObject *Py_stmt_Print_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_Print_New(PyObject*, PyObject*, PyObject*, int); +#define Print Py_Print_New -PyAPI_DATA(PyTypeObject) Py_stmt_For_Type; -#define Py_stmt_For_Check(op) PyObject_TypeCheck(op, &Py_stmt_For_Type) +PyAPI_DATA(PyTypeObject) Py_For_Type; +#define For_Check(op) PyObject_TypeCheck(op, &Py_For_Type) -struct Py_stmt_For{ - struct Py_stmt _base; +struct _For{ + struct _stmt _base; PyObject* target; /* expr */ PyObject* iter; /* expr */ PyObject* body; /* stmt */ PyObject* orelse; /* stmt */ }; -PyObject *Py_stmt_For_New(PyObject*, PyObject*, PyObject*, PyObject*, int); +PyObject *Py_For_New(PyObject*, PyObject*, PyObject*, PyObject*, int); +#define For Py_For_New -PyAPI_DATA(PyTypeObject) Py_stmt_While_Type; -#define Py_stmt_While_Check(op) PyObject_TypeCheck(op, &Py_stmt_While_Type) +PyAPI_DATA(PyTypeObject) Py_While_Type; +#define While_Check(op) PyObject_TypeCheck(op, &Py_While_Type) -struct Py_stmt_While{ - struct Py_stmt _base; +struct _While{ + struct _stmt _base; PyObject* test; /* expr */ PyObject* body; /* stmt */ PyObject* orelse; /* stmt */ }; -PyObject *Py_stmt_While_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_While_New(PyObject*, PyObject*, PyObject*, int); +#define While Py_While_New -PyAPI_DATA(PyTypeObject) Py_stmt_If_Type; -#define Py_stmt_If_Check(op) PyObject_TypeCheck(op, &Py_stmt_If_Type) +PyAPI_DATA(PyTypeObject) Py_If_Type; +#define If_Check(op) PyObject_TypeCheck(op, &Py_If_Type) -struct Py_stmt_If{ - struct Py_stmt _base; +struct _If{ + struct _stmt _base; PyObject* test; /* expr */ PyObject* body; /* stmt */ PyObject* orelse; /* stmt */ }; -PyObject *Py_stmt_If_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_If_New(PyObject*, PyObject*, PyObject*, int); +#define If Py_If_New -PyAPI_DATA(PyTypeObject) Py_stmt_Raise_Type; -#define Py_stmt_Raise_Check(op) PyObject_TypeCheck(op, &Py_stmt_Raise_Type) +PyAPI_DATA(PyTypeObject) Py_Raise_Type; +#define Raise_Check(op) PyObject_TypeCheck(op, &Py_Raise_Type) -struct Py_stmt_Raise{ - struct Py_stmt _base; +struct _Raise{ + struct _stmt _base; PyObject* type; /* expr */ PyObject* inst; /* expr */ PyObject* tback; /* expr */ }; -PyObject *Py_stmt_Raise_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_Raise_New(PyObject*, PyObject*, PyObject*, int); +#define Raise Py_Raise_New -PyAPI_DATA(PyTypeObject) Py_stmt_TryExcept_Type; -#define Py_stmt_TryExcept_Check(op) PyObject_TypeCheck(op, &Py_stmt_TryExcept_Type) +PyAPI_DATA(PyTypeObject) Py_TryExcept_Type; +#define TryExcept_Check(op) PyObject_TypeCheck(op, &Py_TryExcept_Type) -struct Py_stmt_TryExcept{ - struct Py_stmt _base; +struct _TryExcept{ + struct _stmt _base; PyObject* body; /* stmt */ PyObject* handlers; /* excepthandler */ PyObject* orelse; /* stmt */ }; -PyObject *Py_stmt_TryExcept_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_TryExcept_New(PyObject*, PyObject*, PyObject*, int); +#define TryExcept Py_TryExcept_New -PyAPI_DATA(PyTypeObject) Py_stmt_TryFinally_Type; -#define Py_stmt_TryFinally_Check(op) PyObject_TypeCheck(op, &Py_stmt_TryFinally_Type) +PyAPI_DATA(PyTypeObject) Py_TryFinally_Type; +#define TryFinally_Check(op) PyObject_TypeCheck(op, &Py_TryFinally_Type) -struct Py_stmt_TryFinally{ - struct Py_stmt _base; +struct _TryFinally{ + struct _stmt _base; PyObject* body; /* stmt */ PyObject* finalbody; /* stmt */ }; -PyObject *Py_stmt_TryFinally_New(PyObject*, PyObject*, int); +PyObject *Py_TryFinally_New(PyObject*, PyObject*, int); +#define TryFinally Py_TryFinally_New -PyAPI_DATA(PyTypeObject) Py_stmt_Assert_Type; -#define Py_stmt_Assert_Check(op) PyObject_TypeCheck(op, &Py_stmt_Assert_Type) +PyAPI_DATA(PyTypeObject) Py_Assert_Type; +#define Assert_Check(op) PyObject_TypeCheck(op, &Py_Assert_Type) -struct Py_stmt_Assert{ - struct Py_stmt _base; +struct _Assert{ + struct _stmt _base; PyObject* test; /* expr */ PyObject* msg; /* expr */ }; -PyObject *Py_stmt_Assert_New(PyObject*, PyObject*, int); +PyObject *Py_Assert_New(PyObject*, PyObject*, int); +#define Assert Py_Assert_New -PyAPI_DATA(PyTypeObject) Py_stmt_Import_Type; -#define Py_stmt_Import_Check(op) PyObject_TypeCheck(op, &Py_stmt_Import_Type) +PyAPI_DATA(PyTypeObject) Py_Import_Type; +#define Import_Check(op) PyObject_TypeCheck(op, &Py_Import_Type) -struct Py_stmt_Import{ - struct Py_stmt _base; +struct _Import{ + struct _stmt _base; PyObject* names; /* alias */ }; -PyObject *Py_stmt_Import_New(PyObject*, int); +PyObject *Py_Import_New(PyObject*, int); +#define Import Py_Import_New -PyAPI_DATA(PyTypeObject) Py_stmt_ImportFrom_Type; -#define Py_stmt_ImportFrom_Check(op) PyObject_TypeCheck(op, &Py_stmt_ImportFrom_Type) +PyAPI_DATA(PyTypeObject) Py_ImportFrom_Type; +#define ImportFrom_Check(op) PyObject_TypeCheck(op, &Py_ImportFrom_Type) -struct Py_stmt_ImportFrom{ - struct Py_stmt _base; +struct _ImportFrom{ + struct _stmt _base; PyObject* module; /* identifier */ PyObject* names; /* alias */ }; -PyObject *Py_stmt_ImportFrom_New(PyObject*, PyObject*, int); +PyObject *Py_ImportFrom_New(PyObject*, PyObject*, int); +#define ImportFrom Py_ImportFrom_New -PyAPI_DATA(PyTypeObject) Py_stmt_Exec_Type; -#define Py_stmt_Exec_Check(op) PyObject_TypeCheck(op, &Py_stmt_Exec_Type) +PyAPI_DATA(PyTypeObject) Py_Exec_Type; +#define Exec_Check(op) PyObject_TypeCheck(op, &Py_Exec_Type) -struct Py_stmt_Exec{ - struct Py_stmt _base; +struct _Exec{ + struct _stmt _base; PyObject* body; /* expr */ PyObject* globals; /* expr */ PyObject* locals; /* expr */ }; -PyObject *Py_stmt_Exec_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_Exec_New(PyObject*, PyObject*, PyObject*, int); +#define Exec Py_Exec_New -PyAPI_DATA(PyTypeObject) Py_stmt_Global_Type; -#define Py_stmt_Global_Check(op) PyObject_TypeCheck(op, &Py_stmt_Global_Type) +PyAPI_DATA(PyTypeObject) Py_Global_Type; +#define Global_Check(op) PyObject_TypeCheck(op, &Py_Global_Type) -struct Py_stmt_Global{ - struct Py_stmt _base; +struct _Global{ + struct _stmt _base; PyObject* names; /* identifier */ }; -PyObject *Py_stmt_Global_New(PyObject*, int); +PyObject *Py_Global_New(PyObject*, int); +#define Global Py_Global_New -PyAPI_DATA(PyTypeObject) Py_stmt_Expr_Type; -#define Py_stmt_Expr_Check(op) PyObject_TypeCheck(op, &Py_stmt_Expr_Type) +PyAPI_DATA(PyTypeObject) Py_Expr_Type; +#define Expr_Check(op) PyObject_TypeCheck(op, &Py_Expr_Type) -struct Py_stmt_Expr{ - struct Py_stmt _base; +struct _Expr{ + struct _stmt _base; PyObject* value; /* expr */ }; -PyObject *Py_stmt_Expr_New(PyObject*, int); +PyObject *Py_Expr_New(PyObject*, int); +#define Expr Py_Expr_New -PyAPI_DATA(PyTypeObject) Py_stmt_Pass_Type; -#define Py_stmt_Pass_Check(op) PyObject_TypeCheck(op, &Py_stmt_Pass_Type) +PyAPI_DATA(PyTypeObject) Py_Pass_Type; +#define Pass_Check(op) PyObject_TypeCheck(op, &Py_Pass_Type) -struct Py_stmt_Pass{ - struct Py_stmt _base; +struct _Pass{ + struct _stmt _base; }; -PyObject *Py_stmt_Pass_New(int); +PyObject *Py_Pass_New(int); +#define Pass Py_Pass_New -PyAPI_DATA(PyTypeObject) Py_stmt_Break_Type; -#define Py_stmt_Break_Check(op) PyObject_TypeCheck(op, &Py_stmt_Break_Type) +PyAPI_DATA(PyTypeObject) Py_Break_Type; +#define Break_Check(op) PyObject_TypeCheck(op, &Py_Break_Type) -struct Py_stmt_Break{ - struct Py_stmt _base; +struct _Break{ + struct _stmt _base; }; -PyObject *Py_stmt_Break_New(int); +PyObject *Py_Break_New(int); +#define Break Py_Break_New -PyAPI_DATA(PyTypeObject) Py_stmt_Continue_Type; -#define Py_stmt_Continue_Check(op) PyObject_TypeCheck(op, &Py_stmt_Continue_Type) +PyAPI_DATA(PyTypeObject) Py_Continue_Type; +#define Continue_Check(op) PyObject_TypeCheck(op, &Py_Continue_Type) -struct Py_stmt_Continue{ - struct Py_stmt _base; +struct _Continue{ + struct _stmt _base; }; -PyObject *Py_stmt_Continue_New(int); +PyObject *Py_Continue_New(int); +#define Continue Py_Continue_New PyAPI_DATA(PyTypeObject) Py_expr_Type; -#define Py_expr_Check(op) PyObject_TypeCheck(op, &Py_expr_Type) +#define expr_Check(op) PyObject_TypeCheck(op, &Py_expr_Type) -struct Py_expr{ +struct _expr{ PyObject_HEAD + enum {BoolOp_kind, BinOp_kind, UnaryOp_kind, Lambda_kind, Dict_kind, + ListComp_kind, GeneratorExp_kind, Yield_kind, Compare_kind, + Call_kind, Repr_kind, Num_kind, Str_kind, Attribute_kind, + Subscript_kind, Name_kind, List_kind, Tuple_kind} _kind; int lineno; }; -PyAPI_DATA(PyTypeObject) Py_expr_BoolOp_Type; -#define Py_expr_BoolOp_Check(op) PyObject_TypeCheck(op, &Py_expr_BoolOp_Type) +PyAPI_DATA(PyTypeObject) Py_BoolOp_Type; +#define BoolOp_Check(op) PyObject_TypeCheck(op, &Py_BoolOp_Type) -struct Py_expr_BoolOp{ - struct Py_expr _base; +struct _BoolOp{ + struct _expr _base; PyObject* op; /* boolop */ PyObject* values; /* expr */ }; -PyObject *Py_expr_BoolOp_New(PyObject*, PyObject*, int); +PyObject *Py_BoolOp_New(PyObject*, PyObject*, int); +#define BoolOp Py_BoolOp_New -PyAPI_DATA(PyTypeObject) Py_expr_BinOp_Type; -#define Py_expr_BinOp_Check(op) PyObject_TypeCheck(op, &Py_expr_BinOp_Type) +PyAPI_DATA(PyTypeObject) Py_BinOp_Type; +#define BinOp_Check(op) PyObject_TypeCheck(op, &Py_BinOp_Type) -struct Py_expr_BinOp{ - struct Py_expr _base; +struct _BinOp{ + struct _expr _base; PyObject* left; /* expr */ PyObject* op; /* operator */ PyObject* right; /* expr */ }; -PyObject *Py_expr_BinOp_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_BinOp_New(PyObject*, PyObject*, PyObject*, int); +#define BinOp Py_BinOp_New -PyAPI_DATA(PyTypeObject) Py_expr_UnaryOp_Type; -#define Py_expr_UnaryOp_Check(op) PyObject_TypeCheck(op, &Py_expr_UnaryOp_Type) +PyAPI_DATA(PyTypeObject) Py_UnaryOp_Type; +#define UnaryOp_Check(op) PyObject_TypeCheck(op, &Py_UnaryOp_Type) -struct Py_expr_UnaryOp{ - struct Py_expr _base; +struct _UnaryOp{ + struct _expr _base; PyObject* op; /* unaryop */ PyObject* operand; /* expr */ }; -PyObject *Py_expr_UnaryOp_New(PyObject*, PyObject*, int); +PyObject *Py_UnaryOp_New(PyObject*, PyObject*, int); +#define UnaryOp Py_UnaryOp_New -PyAPI_DATA(PyTypeObject) Py_expr_Lambda_Type; -#define Py_expr_Lambda_Check(op) PyObject_TypeCheck(op, &Py_expr_Lambda_Type) +PyAPI_DATA(PyTypeObject) Py_Lambda_Type; +#define Lambda_Check(op) PyObject_TypeCheck(op, &Py_Lambda_Type) -struct Py_expr_Lambda{ - struct Py_expr _base; +struct _Lambda{ + struct _expr _base; PyObject* args; /* arguments */ PyObject* body; /* expr */ }; -PyObject *Py_expr_Lambda_New(PyObject*, PyObject*, int); +PyObject *Py_Lambda_New(PyObject*, PyObject*, int); +#define Lambda Py_Lambda_New -PyAPI_DATA(PyTypeObject) Py_expr_Dict_Type; -#define Py_expr_Dict_Check(op) PyObject_TypeCheck(op, &Py_expr_Dict_Type) +PyAPI_DATA(PyTypeObject) Py_Dict_Type; +#define Dict_Check(op) PyObject_TypeCheck(op, &Py_Dict_Type) -struct Py_expr_Dict{ - struct Py_expr _base; +struct _Dict{ + struct _expr _base; PyObject* keys; /* expr */ PyObject* values; /* expr */ }; -PyObject *Py_expr_Dict_New(PyObject*, PyObject*, int); +PyObject *Py_Dict_New(PyObject*, PyObject*, int); +#define Dict Py_Dict_New -PyAPI_DATA(PyTypeObject) Py_expr_ListComp_Type; -#define Py_expr_ListComp_Check(op) PyObject_TypeCheck(op, &Py_expr_ListComp_Type) +PyAPI_DATA(PyTypeObject) Py_ListComp_Type; +#define ListComp_Check(op) PyObject_TypeCheck(op, &Py_ListComp_Type) -struct Py_expr_ListComp{ - struct Py_expr _base; +struct _ListComp{ + struct _expr _base; PyObject* elt; /* expr */ PyObject* generators; /* comprehension */ }; -PyObject *Py_expr_ListComp_New(PyObject*, PyObject*, int); +PyObject *Py_ListComp_New(PyObject*, PyObject*, int); +#define ListComp Py_ListComp_New -PyAPI_DATA(PyTypeObject) Py_expr_GeneratorExp_Type; -#define Py_expr_GeneratorExp_Check(op) PyObject_TypeCheck(op, &Py_expr_GeneratorExp_Type) +PyAPI_DATA(PyTypeObject) Py_GeneratorExp_Type; +#define GeneratorExp_Check(op) PyObject_TypeCheck(op, &Py_GeneratorExp_Type) -struct Py_expr_GeneratorExp{ - struct Py_expr _base; +struct _GeneratorExp{ + struct _expr _base; PyObject* elt; /* expr */ PyObject* generators; /* comprehension */ }; -PyObject *Py_expr_GeneratorExp_New(PyObject*, PyObject*, int); +PyObject *Py_GeneratorExp_New(PyObject*, PyObject*, int); +#define GeneratorExp Py_GeneratorExp_New -PyAPI_DATA(PyTypeObject) Py_expr_Yield_Type; -#define Py_expr_Yield_Check(op) PyObject_TypeCheck(op, &Py_expr_Yield_Type) +PyAPI_DATA(PyTypeObject) Py_Yield_Type; +#define Yield_Check(op) PyObject_TypeCheck(op, &Py_Yield_Type) -struct Py_expr_Yield{ - struct Py_expr _base; +struct _Yield{ + struct _expr _base; PyObject* value; /* expr */ }; -PyObject *Py_expr_Yield_New(PyObject*, int); +PyObject *Py_Yield_New(PyObject*, int); +#define Yield Py_Yield_New -PyAPI_DATA(PyTypeObject) Py_expr_Compare_Type; -#define Py_expr_Compare_Check(op) PyObject_TypeCheck(op, &Py_expr_Compare_Type) +PyAPI_DATA(PyTypeObject) Py_Compare_Type; +#define Compare_Check(op) PyObject_TypeCheck(op, &Py_Compare_Type) -struct Py_expr_Compare{ - struct Py_expr _base; +struct _Compare{ + struct _expr _base; PyObject* left; /* expr */ PyObject* ops; /* cmpop */ PyObject* comparators; /* expr */ }; -PyObject *Py_expr_Compare_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_Compare_New(PyObject*, PyObject*, PyObject*, int); +#define Compare Py_Compare_New -PyAPI_DATA(PyTypeObject) Py_expr_Call_Type; -#define Py_expr_Call_Check(op) PyObject_TypeCheck(op, &Py_expr_Call_Type) +PyAPI_DATA(PyTypeObject) Py_Call_Type; +#define Call_Check(op) PyObject_TypeCheck(op, &Py_Call_Type) -struct Py_expr_Call{ - struct Py_expr _base; +struct _Call{ + struct _expr _base; PyObject* func; /* expr */ PyObject* args; /* expr */ PyObject* keywords; /* keyword */ PyObject* starargs; /* expr */ PyObject* kwargs; /* expr */ }; -PyObject *Py_expr_Call_New(PyObject*, PyObject*, PyObject*, PyObject*, - PyObject*, int); +PyObject *Py_Call_New(PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, + int); +#define Call Py_Call_New -PyAPI_DATA(PyTypeObject) Py_expr_Repr_Type; -#define Py_expr_Repr_Check(op) PyObject_TypeCheck(op, &Py_expr_Repr_Type) +PyAPI_DATA(PyTypeObject) Py_Repr_Type; +#define Repr_Check(op) PyObject_TypeCheck(op, &Py_Repr_Type) -struct Py_expr_Repr{ - struct Py_expr _base; +struct _Repr{ + struct _expr _base; PyObject* value; /* expr */ }; -PyObject *Py_expr_Repr_New(PyObject*, int); +PyObject *Py_Repr_New(PyObject*, int); +#define Repr Py_Repr_New -PyAPI_DATA(PyTypeObject) Py_expr_Num_Type; -#define Py_expr_Num_Check(op) PyObject_TypeCheck(op, &Py_expr_Num_Type) +PyAPI_DATA(PyTypeObject) Py_Num_Type; +#define Num_Check(op) PyObject_TypeCheck(op, &Py_Num_Type) -struct Py_expr_Num{ - struct Py_expr _base; +struct _Num{ + struct _expr _base; PyObject* n; /* object */ }; -PyObject *Py_expr_Num_New(PyObject*, int); +PyObject *Py_Num_New(PyObject*, int); +#define Num Py_Num_New -PyAPI_DATA(PyTypeObject) Py_expr_Str_Type; -#define Py_expr_Str_Check(op) PyObject_TypeCheck(op, &Py_expr_Str_Type) +PyAPI_DATA(PyTypeObject) Py_Str_Type; +#define Str_Check(op) PyObject_TypeCheck(op, &Py_Str_Type) -struct Py_expr_Str{ - struct Py_expr _base; +struct _Str{ + struct _expr _base; PyObject* s; /* string */ }; -PyObject *Py_expr_Str_New(PyObject*, int); +PyObject *Py_Str_New(PyObject*, int); +#define Str Py_Str_New -PyAPI_DATA(PyTypeObject) Py_expr_Attribute_Type; -#define Py_expr_Attribute_Check(op) PyObject_TypeCheck(op, &Py_expr_Attribute_Type) +PyAPI_DATA(PyTypeObject) Py_Attribute_Type; +#define Attribute_Check(op) PyObject_TypeCheck(op, &Py_Attribute_Type) -struct Py_expr_Attribute{ - struct Py_expr _base; +struct _Attribute{ + struct _expr _base; PyObject* value; /* expr */ PyObject* attr; /* identifier */ PyObject* ctx; /* expr_context */ }; -PyObject *Py_expr_Attribute_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_Attribute_New(PyObject*, PyObject*, PyObject*, int); +#define Attribute Py_Attribute_New -PyAPI_DATA(PyTypeObject) Py_expr_Subscript_Type; -#define Py_expr_Subscript_Check(op) PyObject_TypeCheck(op, &Py_expr_Subscript_Type) +PyAPI_DATA(PyTypeObject) Py_Subscript_Type; +#define Subscript_Check(op) PyObject_TypeCheck(op, &Py_Subscript_Type) -struct Py_expr_Subscript{ - struct Py_expr _base; +struct _Subscript{ + struct _expr _base; PyObject* value; /* expr */ PyObject* slice; /* slice */ PyObject* ctx; /* expr_context */ }; -PyObject *Py_expr_Subscript_New(PyObject*, PyObject*, PyObject*, int); +PyObject *Py_Subscript_New(PyObject*, PyObject*, PyObject*, int); +#define Subscript Py_Subscript_New -PyAPI_DATA(PyTypeObject) Py_expr_Name_Type; -#define Py_expr_Name_Check(op) PyObject_TypeCheck(op, &Py_expr_Name_Type) +PyAPI_DATA(PyTypeObject) Py_Name_Type; +#define Name_Check(op) PyObject_TypeCheck(op, &Py_Name_Type) -struct Py_expr_Name{ - struct Py_expr _base; +struct _Name{ + struct _expr _base; PyObject* id; /* identifier */ PyObject* ctx; /* expr_context */ }; -PyObject *Py_expr_Name_New(PyObject*, PyObject*, int); +PyObject *Py_Name_New(PyObject*, PyObject*, int); +#define Name Py_Name_New -PyAPI_DATA(PyTypeObject) Py_expr_List_Type; -#define Py_expr_List_Check(op) PyObject_TypeCheck(op, &Py_expr_List_Type) +PyAPI_DATA(PyTypeObject) Py_List_Type; +#define List_Check(op) PyObject_TypeCheck(op, &Py_List_Type) -struct Py_expr_List{ - struct Py_expr _base; +struct _List{ + struct _expr _base; PyObject* elts; /* expr */ PyObject* ctx; /* expr_context */ }; -PyObject *Py_expr_List_New(PyObject*, PyObject*, int); +PyObject *Py_List_New(PyObject*, PyObject*, int); +#define List Py_List_New -PyAPI_DATA(PyTypeObject) Py_expr_Tuple_Type; -#define Py_expr_Tuple_Check(op) PyObject_TypeCheck(op, &Py_expr_Tuple_Type) +PyAPI_DATA(PyTypeObject) Py_Tuple_Type; +#define Tuple_Check(op) PyObject_TypeCheck(op, &Py_Tuple_Type) -struct Py_expr_Tuple{ - struct Py_expr _base; +struct _Tuple{ + struct _expr _base; PyObject* elts; /* expr */ PyObject* ctx; /* expr_context */ }; -PyObject *Py_expr_Tuple_New(PyObject*, PyObject*, int); +PyObject *Py_Tuple_New(PyObject*, PyObject*, int); +#define Tuple Py_Tuple_New PyAPI_DATA(PyTypeObject) Py_slice_Type; -#define Py_slice_Check(op) PyObject_TypeCheck(op, &Py_slice_Type) +#define slice_Check(op) PyObject_TypeCheck(op, &Py_slice_Type) -struct Py_slice{ +struct _slice{ PyObject_HEAD + enum {Ellipsis_kind, Slice_kind, ExtSlice_kind, Index_kind} _kind; }; -PyAPI_DATA(PyTypeObject) Py_slice_Ellipsis_Type; -#define Py_slice_Ellipsis_Check(op) PyObject_TypeCheck(op, &Py_slice_Ellipsis_Type) +PyAPI_DATA(PyTypeObject) Py_Ellipsis_Type; +#define Ellipsis_Check(op) PyObject_TypeCheck(op, &Py_Ellipsis_Type) -struct Py_slice_Ellipsis{ - struct Py_slice _base; +struct _Ellipsis{ + struct _slice _base; }; -PyObject *Py_slice_Ellipsis_New(void); +PyObject *Py_Ellipsis_New(void); +#define Ellipsis Py_Ellipsis_New -PyAPI_DATA(PyTypeObject) Py_slice_Slice_Type; -#define Py_slice_Slice_Check(op) PyObject_TypeCheck(op, &Py_slice_Slice_Type) +PyAPI_DATA(PyTypeObject) Py_Slice_Type; +#define Slice_Check(op) PyObject_TypeCheck(op, &Py_Slice_Type) -struct Py_slice_Slice{ - struct Py_slice _base; +struct _Slice{ + struct _slice _base; PyObject* lower; /* expr */ PyObject* upper; /* expr */ PyObject* step; /* expr */ }; -PyObject *Py_slice_Slice_New(PyObject*, PyObject*, PyObject*); +PyObject *Py_Slice_New(PyObject*, PyObject*, PyObject*); +#define Slice Py_Slice_New -PyAPI_DATA(PyTypeObject) Py_slice_ExtSlice_Type; -#define Py_slice_ExtSlice_Check(op) PyObject_TypeCheck(op, &Py_slice_ExtSlice_Type) +PyAPI_DATA(PyTypeObject) Py_ExtSlice_Type; +#define ExtSlice_Check(op) PyObject_TypeCheck(op, &Py_ExtSlice_Type) -struct Py_slice_ExtSlice{ - struct Py_slice _base; +struct _ExtSlice{ + struct _slice _base; PyObject* dims; /* slice */ }; -PyObject *Py_slice_ExtSlice_New(PyObject*); +PyObject *Py_ExtSlice_New(PyObject*); +#define ExtSlice Py_ExtSlice_New -PyAPI_DATA(PyTypeObject) Py_slice_Index_Type; -#define Py_slice_Index_Check(op) PyObject_TypeCheck(op, &Py_slice_Index_Type) +PyAPI_DATA(PyTypeObject) Py_Index_Type; +#define Index_Check(op) PyObject_TypeCheck(op, &Py_Index_Type) -struct Py_slice_Index{ - struct Py_slice _base; +struct _Index{ + struct _slice _base; PyObject* value; /* expr */ }; -PyObject *Py_slice_Index_New(PyObject*); +PyObject *Py_Index_New(PyObject*); +#define Index Py_Index_New PyAPI_DATA(PyTypeObject) Py_comprehension_Type; -#define Py_comprehension_Check(op) PyObject_TypeCheck(op, &Py_comprehension_Type) +#define comprehension_Check(op) PyObject_TypeCheck(op, &Py_comprehension_Type) -struct Py_comprehension { +struct _comprehension { PyObject_HEAD PyObject* target; /* expr */ PyObject* iter; /* expr */ @@ -521,9 +584,9 @@ PyObject *Py_comprehension_New(PyObject*, PyObject*, PyObject*); PyAPI_DATA(PyTypeObject) Py_excepthandler_Type; -#define Py_excepthandler_Check(op) PyObject_TypeCheck(op, &Py_excepthandler_Type) +#define excepthandler_Check(op) PyObject_TypeCheck(op, &Py_excepthandler_Type) -struct Py_excepthandler { +struct _excepthandler { PyObject_HEAD PyObject* type; /* expr */ PyObject* name; /* expr */ @@ -532,9 +595,9 @@ PyObject *Py_excepthandler_New(PyObject*, PyObject*, PyObject*); PyAPI_DATA(PyTypeObject) Py_arguments_Type; -#define Py_arguments_Check(op) PyObject_TypeCheck(op, &Py_arguments_Type) +#define arguments_Check(op) PyObject_TypeCheck(op, &Py_arguments_Type) -struct Py_arguments { +struct _arguments { PyObject_HEAD PyObject* args; /* expr */ PyObject* vararg; /* identifier */ @@ -544,9 +607,9 @@ PyObject *Py_arguments_New(PyObject*, PyObject*, PyObject*, PyObject*); PyAPI_DATA(PyTypeObject) Py_keyword_Type; -#define Py_keyword_Check(op) PyObject_TypeCheck(op, &Py_keyword_Type) +#define keyword_Check(op) PyObject_TypeCheck(op, &Py_keyword_Type) -struct Py_keyword { +struct _keyword { PyObject_HEAD PyObject* arg; /* identifier */ PyObject* value; /* expr */ @@ -554,9 +617,9 @@ PyObject *Py_keyword_New(PyObject*, PyObject*); PyAPI_DATA(PyTypeObject) Py_alias_Type; -#define Py_alias_Check(op) PyObject_TypeCheck(op, &Py_alias_Type) +#define alias_Check(op) PyObject_TypeCheck(op, &Py_alias_Type) -struct Py_alias { +struct _alias { PyObject_HEAD PyObject* name; /* identifier */ PyObject* asname; /* identifier */ Modified: python/branches/ast-objects/Parser/asdl_c.py ============================================================================== --- python/branches/ast-objects/Parser/asdl_c.py (original) +++ python/branches/ast-objects/Parser/asdl_c.py Wed Nov 30 20:40:40 2005 @@ -132,7 +132,7 @@ def emit_check(self, t, depth): self.emit("PyAPI_DATA(PyTypeObject) Py_%s_Type;" % t, depth) - self.emit("#define Py_%s_Check(op) PyObject_TypeCheck(op, &Py_%s_Type)" % (t, t), + self.emit("#define %s_Check(op) PyObject_TypeCheck(op, &Py_%s_Type)" % (t, t), depth, reflow=False) self.emit("",depth) @@ -151,8 +151,10 @@ def emit(s, depth=depth): self.emit(s % sys._getframe(1).f_locals, depth) self.emit_check(name, depth) - emit("struct Py_%s{" % name) + emit("struct _%s{" % name) emit("PyObject_HEAD", depth + 1) + names = [t.name.value+"_kind" for t in sum.types] + emit("enum {%s} _kind;" % ", ".join(names), depth+1) for field in sum.attributes: type = str(field.type) assert type in asdl.builtin_types, type @@ -163,18 +165,20 @@ self.visitConstructor(name, t, sum.attributes, depth) def visitConstructor(self, name, cons, attrs, depth): - self.emit_check("%s_%s" % (name, cons.name), depth) - self.emit("struct Py_%s_%s{" % (name, cons.name), depth) - self.emit("struct Py_%s _base;" % name, depth+1) + self.emit_check(cons.name, depth) + self.emit("struct _%s{" % cons.name, depth) + self.emit("struct _%s _base;" % name, depth+1) field_types = [] for f in cons.fields: field_types.append(get_c_type(f.type)) self.visit(f, depth + 1) for f in attrs: field_types.append(get_c_type(f.type)) - self.emit("};" % cons.name, depth) + self.emit("};", depth) args = ", ".join(field_types) or "void" - self.emit("PyObject *Py_%s_%s_New(%s);" % (name, cons.name, args), depth) + self.emit("PyObject *Py_%s_New(%s);" % (cons.name, args), depth) + # for convenience + self.emit("#define %s Py_%s_New" % (cons.name, cons.name), depth) self.emit("", depth) def visitField(self, field, depth): @@ -183,7 +187,7 @@ def visitProduct(self, product, name, depth): self.emit_check(str(name), depth) - self.emit("struct Py_%(name)s {" % locals(), depth) + self.emit("struct _%(name)s {" % locals(), depth) self.emit("PyObject_HEAD", depth+1) field_types = [] for f in product.fields: @@ -205,7 +209,7 @@ emit("PyObject*") emit("Py_%s_New(%s)" % (name, argstr)) emit("{") - emit("struct Py_%s *result = PyObject_New(struct Py_%s, &Py_%s_Type);" % (name, name, name), 1, 0) + emit("struct _%s *result = PyObject_New(struct _%s, &Py_%s_Type);" % (name, name, name), 1, 0) emit("if (result == NULL)", 1) emit("return NULL;", 2) for argtype, argname, opt in args: @@ -222,7 +226,7 @@ emit("static void") emit("%s_dealloc(PyObject* _self)" % name) emit("{") - emit("struct Py_%s *self = (struct Py_%s*)_self;" % (name, name), 1) + emit("struct _%s *self = (struct _%s*)_self;" % (name, name), 1) for argtype, argname, opt in fields: if argtype == "PyObject*": emit("Py_DECREF(self->%s);" % argname, 1) @@ -244,7 +248,7 @@ emit("PyObject_HEAD_INIT(NULL)") emit("0,\t\t/*ob_size*/") emit('"%s",\t\t/*tp_name*/' % name) - emit("sizeof(struct Py_%s),\t/*tp_basicsize*/" % name) + emit("sizeof(struct _%s),\t/*tp_basicsize*/" % name) null("itemsize") emit("%s_dealloc,\t\t/*tp_dealloc*/" % name) null("print") @@ -262,6 +266,7 @@ "dict", "descr_get", "descr_set", "dictoffset", "init", "alloc", "new", "free", "is_gc"): null(m) + depth = 0 emit("};") emit("") @@ -281,12 +286,11 @@ self.emit_type(str(name)) def visitConstructor(self, cons, name, attrs): - name = "%s_%s" % (name, cons.name) args = self.get_args(cons.fields) attrs = self.get_args(attrs) - self.emit_ctor(name, args, attrs) - self.emit_dealloc(name, args, attrs) - self.emit_type(name) + self.emit_ctor(cons.name, args, attrs) + self.emit_dealloc(cons.name, args, attrs) + self.emit_type(cons.name) class InitVisitor(TraversalVisitor): def visitModule(self, mod): @@ -308,7 +312,7 @@ self.emit_init(name) def visitConstructor(self, cons, name, attrs): - self.emit_init("%s_%s" % (name, cons.name), name) + self.emit_init(cons.name, name) def emit_init(self, name, base = None): if base: @@ -336,6 +340,10 @@ p = "%s-ast.h" % mod.name f = open(p, "wb") print >> f, auto_gen_msg + print >> f, "/* For convenience, this header provides several" + print >> f, " macro, type and constant names which are not Py_-prefixed." + print >> f, " Therefore, the file should not be included in Python.h;" + print >> f, " all symbols relevant to linkage are Py_-prefixed. */" c = HeaderVisitor(f) c.visit(mod) f.close() Modified: python/branches/ast-objects/Python/Python-ast.c ============================================================================== --- python/branches/ast-objects/Python/Python-ast.c (original) +++ python/branches/ast-objects/Python/Python-ast.c Wed Nov 30 20:40:40 2005 @@ -8,7 +8,7 @@ PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "mod", /*tp_name*/ - sizeof(struct Py_mod), /*tp_basicsize*/ + sizeof(struct _mod), /*tp_basicsize*/ 0, /* tp_itemsize */ mod_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -46,12 +46,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_mod_Module_New(PyObject* body) +Py_Module_New(PyObject* body) { - struct Py_mod_Module *result = PyObject_New(struct Py_mod_Module, &Py_mod_Module_Type); + struct _Module *result = PyObject_New(struct _Module, &Py_Module_Type); if (result == NULL) return NULL; result->body = body; @@ -59,20 +59,20 @@ } static void -mod_Module_dealloc(PyObject* _self) +Module_dealloc(PyObject* _self) { - struct Py_mod_Module *self = (struct Py_mod_Module*)_self; + struct _Module *self = (struct _Module*)_self; Py_DECREF(self->body); PyObject_Del(self); } -PyTypeObject Py_mod_Module_Type = { +PyTypeObject Py_Module_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "mod_Module", /*tp_name*/ - sizeof(struct Py_mod_Module), /*tp_basicsize*/ + "Module", /*tp_name*/ + sizeof(struct _Module), /*tp_basicsize*/ 0, /* tp_itemsize */ - mod_Module_dealloc, /*tp_dealloc*/ + Module_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -108,12 +108,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_mod_Interactive_New(PyObject* body) +Py_Interactive_New(PyObject* body) { - struct Py_mod_Interactive *result = PyObject_New(struct Py_mod_Interactive, &Py_mod_Interactive_Type); + struct _Interactive *result = PyObject_New(struct _Interactive, &Py_Interactive_Type); if (result == NULL) return NULL; result->body = body; @@ -121,20 +121,20 @@ } static void -mod_Interactive_dealloc(PyObject* _self) +Interactive_dealloc(PyObject* _self) { - struct Py_mod_Interactive *self = (struct Py_mod_Interactive*)_self; + struct _Interactive *self = (struct _Interactive*)_self; Py_DECREF(self->body); PyObject_Del(self); } -PyTypeObject Py_mod_Interactive_Type = { +PyTypeObject Py_Interactive_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "mod_Interactive", /*tp_name*/ - sizeof(struct Py_mod_Interactive), /*tp_basicsize*/ + "Interactive", /*tp_name*/ + sizeof(struct _Interactive), /*tp_basicsize*/ 0, /* tp_itemsize */ - mod_Interactive_dealloc, /*tp_dealloc*/ + Interactive_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -170,12 +170,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_mod_Expression_New(PyObject* body) +Py_Expression_New(PyObject* body) { - struct Py_mod_Expression *result = PyObject_New(struct Py_mod_Expression, &Py_mod_Expression_Type); + struct _Expression *result = PyObject_New(struct _Expression, &Py_Expression_Type); if (result == NULL) return NULL; result->body = body; @@ -183,20 +183,20 @@ } static void -mod_Expression_dealloc(PyObject* _self) +Expression_dealloc(PyObject* _self) { - struct Py_mod_Expression *self = (struct Py_mod_Expression*)_self; + struct _Expression *self = (struct _Expression*)_self; Py_DECREF(self->body); PyObject_Del(self); } -PyTypeObject Py_mod_Expression_Type = { +PyTypeObject Py_Expression_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "mod_Expression", /*tp_name*/ - sizeof(struct Py_mod_Expression), /*tp_basicsize*/ + "Expression", /*tp_name*/ + sizeof(struct _Expression), /*tp_basicsize*/ 0, /* tp_itemsize */ - mod_Expression_dealloc, /*tp_dealloc*/ + Expression_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -232,12 +232,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_mod_Suite_New(PyObject* body) +Py_Suite_New(PyObject* body) { - struct Py_mod_Suite *result = PyObject_New(struct Py_mod_Suite, &Py_mod_Suite_Type); + struct _Suite *result = PyObject_New(struct _Suite, &Py_Suite_Type); if (result == NULL) return NULL; result->body = body; @@ -245,20 +245,20 @@ } static void -mod_Suite_dealloc(PyObject* _self) +Suite_dealloc(PyObject* _self) { - struct Py_mod_Suite *self = (struct Py_mod_Suite*)_self; + struct _Suite *self = (struct _Suite*)_self; Py_DECREF(self->body); PyObject_Del(self); } -PyTypeObject Py_mod_Suite_Type = { +PyTypeObject Py_Suite_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "mod_Suite", /*tp_name*/ - sizeof(struct Py_mod_Suite), /*tp_basicsize*/ + "Suite", /*tp_name*/ + sizeof(struct _Suite), /*tp_basicsize*/ 0, /* tp_itemsize */ - mod_Suite_dealloc, /*tp_dealloc*/ + Suite_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -294,14 +294,14 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + #define stmt_dealloc 0 PyTypeObject Py_stmt_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "stmt", /*tp_name*/ - sizeof(struct Py_stmt), /*tp_basicsize*/ + sizeof(struct _stmt), /*tp_basicsize*/ 0, /* tp_itemsize */ stmt_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -339,13 +339,13 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_FunctionDef_New(PyObject* name, PyObject* args, PyObject* body, - PyObject* decorators, int lineno) +Py_FunctionDef_New(PyObject* name, PyObject* args, PyObject* body, PyObject* + decorators, int lineno) { - struct Py_stmt_FunctionDef *result = PyObject_New(struct Py_stmt_FunctionDef, &Py_stmt_FunctionDef_Type); + struct _FunctionDef *result = PyObject_New(struct _FunctionDef, &Py_FunctionDef_Type); if (result == NULL) return NULL; result->name = name; @@ -357,9 +357,9 @@ } static void -stmt_FunctionDef_dealloc(PyObject* _self) +FunctionDef_dealloc(PyObject* _self) { - struct Py_stmt_FunctionDef *self = (struct Py_stmt_FunctionDef*)_self; + struct _FunctionDef *self = (struct _FunctionDef*)_self; Py_DECREF(self->name); Py_DECREF(self->args); Py_DECREF(self->body); @@ -367,13 +367,13 @@ PyObject_Del(self); } -PyTypeObject Py_stmt_FunctionDef_Type = { +PyTypeObject Py_FunctionDef_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_FunctionDef", /*tp_name*/ - sizeof(struct Py_stmt_FunctionDef), /*tp_basicsize*/ + "FunctionDef", /*tp_name*/ + sizeof(struct _FunctionDef), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_FunctionDef_dealloc, /*tp_dealloc*/ + FunctionDef_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -409,13 +409,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_ClassDef_New(PyObject* name, PyObject* bases, PyObject* body, int - lineno) +Py_ClassDef_New(PyObject* name, PyObject* bases, PyObject* body, int lineno) { - struct Py_stmt_ClassDef *result = PyObject_New(struct Py_stmt_ClassDef, &Py_stmt_ClassDef_Type); + struct _ClassDef *result = PyObject_New(struct _ClassDef, &Py_ClassDef_Type); if (result == NULL) return NULL; result->name = name; @@ -426,22 +425,22 @@ } static void -stmt_ClassDef_dealloc(PyObject* _self) +ClassDef_dealloc(PyObject* _self) { - struct Py_stmt_ClassDef *self = (struct Py_stmt_ClassDef*)_self; + struct _ClassDef *self = (struct _ClassDef*)_self; Py_DECREF(self->name); Py_DECREF(self->bases); Py_DECREF(self->body); PyObject_Del(self); } -PyTypeObject Py_stmt_ClassDef_Type = { +PyTypeObject Py_ClassDef_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_ClassDef", /*tp_name*/ - sizeof(struct Py_stmt_ClassDef), /*tp_basicsize*/ + "ClassDef", /*tp_name*/ + sizeof(struct _ClassDef), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_ClassDef_dealloc, /*tp_dealloc*/ + ClassDef_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -477,12 +476,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Return_New(PyObject* value, int lineno) +Py_Return_New(PyObject* value, int lineno) { - struct Py_stmt_Return *result = PyObject_New(struct Py_stmt_Return, &Py_stmt_Return_Type); + struct _Return *result = PyObject_New(struct _Return, &Py_Return_Type); if (result == NULL) return NULL; result->value = value; @@ -491,20 +490,20 @@ } static void -stmt_Return_dealloc(PyObject* _self) +Return_dealloc(PyObject* _self) { - struct Py_stmt_Return *self = (struct Py_stmt_Return*)_self; + struct _Return *self = (struct _Return*)_self; Py_DECREF(self->value); PyObject_Del(self); } -PyTypeObject Py_stmt_Return_Type = { +PyTypeObject Py_Return_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Return", /*tp_name*/ - sizeof(struct Py_stmt_Return), /*tp_basicsize*/ + "Return", /*tp_name*/ + sizeof(struct _Return), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Return_dealloc, /*tp_dealloc*/ + Return_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -540,12 +539,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Delete_New(PyObject* targets, int lineno) +Py_Delete_New(PyObject* targets, int lineno) { - struct Py_stmt_Delete *result = PyObject_New(struct Py_stmt_Delete, &Py_stmt_Delete_Type); + struct _Delete *result = PyObject_New(struct _Delete, &Py_Delete_Type); if (result == NULL) return NULL; result->targets = targets; @@ -554,20 +553,20 @@ } static void -stmt_Delete_dealloc(PyObject* _self) +Delete_dealloc(PyObject* _self) { - struct Py_stmt_Delete *self = (struct Py_stmt_Delete*)_self; + struct _Delete *self = (struct _Delete*)_self; Py_DECREF(self->targets); PyObject_Del(self); } -PyTypeObject Py_stmt_Delete_Type = { +PyTypeObject Py_Delete_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Delete", /*tp_name*/ - sizeof(struct Py_stmt_Delete), /*tp_basicsize*/ + "Delete", /*tp_name*/ + sizeof(struct _Delete), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Delete_dealloc, /*tp_dealloc*/ + Delete_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -603,12 +602,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Assign_New(PyObject* targets, PyObject* value, int lineno) +Py_Assign_New(PyObject* targets, PyObject* value, int lineno) { - struct Py_stmt_Assign *result = PyObject_New(struct Py_stmt_Assign, &Py_stmt_Assign_Type); + struct _Assign *result = PyObject_New(struct _Assign, &Py_Assign_Type); if (result == NULL) return NULL; result->targets = targets; @@ -618,21 +617,21 @@ } static void -stmt_Assign_dealloc(PyObject* _self) +Assign_dealloc(PyObject* _self) { - struct Py_stmt_Assign *self = (struct Py_stmt_Assign*)_self; + struct _Assign *self = (struct _Assign*)_self; Py_DECREF(self->targets); Py_DECREF(self->value); PyObject_Del(self); } -PyTypeObject Py_stmt_Assign_Type = { +PyTypeObject Py_Assign_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Assign", /*tp_name*/ - sizeof(struct Py_stmt_Assign), /*tp_basicsize*/ + "Assign", /*tp_name*/ + sizeof(struct _Assign), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Assign_dealloc, /*tp_dealloc*/ + Assign_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -668,13 +667,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_AugAssign_New(PyObject* target, PyObject* op, PyObject* value, int - lineno) +Py_AugAssign_New(PyObject* target, PyObject* op, PyObject* value, int lineno) { - struct Py_stmt_AugAssign *result = PyObject_New(struct Py_stmt_AugAssign, &Py_stmt_AugAssign_Type); + struct _AugAssign *result = PyObject_New(struct _AugAssign, &Py_AugAssign_Type); if (result == NULL) return NULL; result->target = target; @@ -685,22 +683,22 @@ } static void -stmt_AugAssign_dealloc(PyObject* _self) +AugAssign_dealloc(PyObject* _self) { - struct Py_stmt_AugAssign *self = (struct Py_stmt_AugAssign*)_self; + struct _AugAssign *self = (struct _AugAssign*)_self; Py_DECREF(self->target); Py_DECREF(self->op); Py_DECREF(self->value); PyObject_Del(self); } -PyTypeObject Py_stmt_AugAssign_Type = { +PyTypeObject Py_AugAssign_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_AugAssign", /*tp_name*/ - sizeof(struct Py_stmt_AugAssign), /*tp_basicsize*/ + "AugAssign", /*tp_name*/ + sizeof(struct _AugAssign), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_AugAssign_dealloc, /*tp_dealloc*/ + AugAssign_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -736,12 +734,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Print_New(PyObject* dest, PyObject* values, PyObject* nl, int lineno) +Py_Print_New(PyObject* dest, PyObject* values, PyObject* nl, int lineno) { - struct Py_stmt_Print *result = PyObject_New(struct Py_stmt_Print, &Py_stmt_Print_Type); + struct _Print *result = PyObject_New(struct _Print, &Py_Print_Type); if (result == NULL) return NULL; result->dest = dest; @@ -752,22 +750,22 @@ } static void -stmt_Print_dealloc(PyObject* _self) +Print_dealloc(PyObject* _self) { - struct Py_stmt_Print *self = (struct Py_stmt_Print*)_self; + struct _Print *self = (struct _Print*)_self; Py_DECREF(self->dest); Py_DECREF(self->values); Py_DECREF(self->nl); PyObject_Del(self); } -PyTypeObject Py_stmt_Print_Type = { +PyTypeObject Py_Print_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Print", /*tp_name*/ - sizeof(struct Py_stmt_Print), /*tp_basicsize*/ + "Print", /*tp_name*/ + sizeof(struct _Print), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Print_dealloc, /*tp_dealloc*/ + Print_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -803,13 +801,13 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_For_New(PyObject* target, PyObject* iter, PyObject* body, PyObject* - orelse, int lineno) +Py_For_New(PyObject* target, PyObject* iter, PyObject* body, PyObject* orelse, + int lineno) { - struct Py_stmt_For *result = PyObject_New(struct Py_stmt_For, &Py_stmt_For_Type); + struct _For *result = PyObject_New(struct _For, &Py_For_Type); if (result == NULL) return NULL; result->target = target; @@ -821,9 +819,9 @@ } static void -stmt_For_dealloc(PyObject* _self) +For_dealloc(PyObject* _self) { - struct Py_stmt_For *self = (struct Py_stmt_For*)_self; + struct _For *self = (struct _For*)_self; Py_DECREF(self->target); Py_DECREF(self->iter); Py_DECREF(self->body); @@ -831,13 +829,13 @@ PyObject_Del(self); } -PyTypeObject Py_stmt_For_Type = { +PyTypeObject Py_For_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_For", /*tp_name*/ - sizeof(struct Py_stmt_For), /*tp_basicsize*/ + "For", /*tp_name*/ + sizeof(struct _For), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_For_dealloc, /*tp_dealloc*/ + For_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -873,12 +871,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_While_New(PyObject* test, PyObject* body, PyObject* orelse, int lineno) +Py_While_New(PyObject* test, PyObject* body, PyObject* orelse, int lineno) { - struct Py_stmt_While *result = PyObject_New(struct Py_stmt_While, &Py_stmt_While_Type); + struct _While *result = PyObject_New(struct _While, &Py_While_Type); if (result == NULL) return NULL; result->test = test; @@ -889,22 +887,22 @@ } static void -stmt_While_dealloc(PyObject* _self) +While_dealloc(PyObject* _self) { - struct Py_stmt_While *self = (struct Py_stmt_While*)_self; + struct _While *self = (struct _While*)_self; Py_DECREF(self->test); Py_DECREF(self->body); Py_DECREF(self->orelse); PyObject_Del(self); } -PyTypeObject Py_stmt_While_Type = { +PyTypeObject Py_While_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_While", /*tp_name*/ - sizeof(struct Py_stmt_While), /*tp_basicsize*/ + "While", /*tp_name*/ + sizeof(struct _While), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_While_dealloc, /*tp_dealloc*/ + While_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -940,12 +938,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_If_New(PyObject* test, PyObject* body, PyObject* orelse, int lineno) +Py_If_New(PyObject* test, PyObject* body, PyObject* orelse, int lineno) { - struct Py_stmt_If *result = PyObject_New(struct Py_stmt_If, &Py_stmt_If_Type); + struct _If *result = PyObject_New(struct _If, &Py_If_Type); if (result == NULL) return NULL; result->test = test; @@ -956,22 +954,22 @@ } static void -stmt_If_dealloc(PyObject* _self) +If_dealloc(PyObject* _self) { - struct Py_stmt_If *self = (struct Py_stmt_If*)_self; + struct _If *self = (struct _If*)_self; Py_DECREF(self->test); Py_DECREF(self->body); Py_DECREF(self->orelse); PyObject_Del(self); } -PyTypeObject Py_stmt_If_Type = { +PyTypeObject Py_If_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_If", /*tp_name*/ - sizeof(struct Py_stmt_If), /*tp_basicsize*/ + "If", /*tp_name*/ + sizeof(struct _If), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_If_dealloc, /*tp_dealloc*/ + If_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1007,12 +1005,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Raise_New(PyObject* type, PyObject* inst, PyObject* tback, int lineno) +Py_Raise_New(PyObject* type, PyObject* inst, PyObject* tback, int lineno) { - struct Py_stmt_Raise *result = PyObject_New(struct Py_stmt_Raise, &Py_stmt_Raise_Type); + struct _Raise *result = PyObject_New(struct _Raise, &Py_Raise_Type); if (result == NULL) return NULL; result->type = type; @@ -1023,22 +1021,22 @@ } static void -stmt_Raise_dealloc(PyObject* _self) +Raise_dealloc(PyObject* _self) { - struct Py_stmt_Raise *self = (struct Py_stmt_Raise*)_self; + struct _Raise *self = (struct _Raise*)_self; Py_DECREF(self->type); Py_DECREF(self->inst); Py_DECREF(self->tback); PyObject_Del(self); } -PyTypeObject Py_stmt_Raise_Type = { +PyTypeObject Py_Raise_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Raise", /*tp_name*/ - sizeof(struct Py_stmt_Raise), /*tp_basicsize*/ + "Raise", /*tp_name*/ + sizeof(struct _Raise), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Raise_dealloc, /*tp_dealloc*/ + Raise_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1074,13 +1072,13 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_TryExcept_New(PyObject* body, PyObject* handlers, PyObject* orelse, int - lineno) +Py_TryExcept_New(PyObject* body, PyObject* handlers, PyObject* orelse, int + lineno) { - struct Py_stmt_TryExcept *result = PyObject_New(struct Py_stmt_TryExcept, &Py_stmt_TryExcept_Type); + struct _TryExcept *result = PyObject_New(struct _TryExcept, &Py_TryExcept_Type); if (result == NULL) return NULL; result->body = body; @@ -1091,22 +1089,22 @@ } static void -stmt_TryExcept_dealloc(PyObject* _self) +TryExcept_dealloc(PyObject* _self) { - struct Py_stmt_TryExcept *self = (struct Py_stmt_TryExcept*)_self; + struct _TryExcept *self = (struct _TryExcept*)_self; Py_DECREF(self->body); Py_DECREF(self->handlers); Py_DECREF(self->orelse); PyObject_Del(self); } -PyTypeObject Py_stmt_TryExcept_Type = { +PyTypeObject Py_TryExcept_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_TryExcept", /*tp_name*/ - sizeof(struct Py_stmt_TryExcept), /*tp_basicsize*/ + "TryExcept", /*tp_name*/ + sizeof(struct _TryExcept), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_TryExcept_dealloc, /*tp_dealloc*/ + TryExcept_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1142,12 +1140,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_TryFinally_New(PyObject* body, PyObject* finalbody, int lineno) +Py_TryFinally_New(PyObject* body, PyObject* finalbody, int lineno) { - struct Py_stmt_TryFinally *result = PyObject_New(struct Py_stmt_TryFinally, &Py_stmt_TryFinally_Type); + struct _TryFinally *result = PyObject_New(struct _TryFinally, &Py_TryFinally_Type); if (result == NULL) return NULL; result->body = body; @@ -1157,21 +1155,21 @@ } static void -stmt_TryFinally_dealloc(PyObject* _self) +TryFinally_dealloc(PyObject* _self) { - struct Py_stmt_TryFinally *self = (struct Py_stmt_TryFinally*)_self; + struct _TryFinally *self = (struct _TryFinally*)_self; Py_DECREF(self->body); Py_DECREF(self->finalbody); PyObject_Del(self); } -PyTypeObject Py_stmt_TryFinally_Type = { +PyTypeObject Py_TryFinally_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_TryFinally", /*tp_name*/ - sizeof(struct Py_stmt_TryFinally), /*tp_basicsize*/ + "TryFinally", /*tp_name*/ + sizeof(struct _TryFinally), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_TryFinally_dealloc, /*tp_dealloc*/ + TryFinally_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1207,12 +1205,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Assert_New(PyObject* test, PyObject* msg, int lineno) +Py_Assert_New(PyObject* test, PyObject* msg, int lineno) { - struct Py_stmt_Assert *result = PyObject_New(struct Py_stmt_Assert, &Py_stmt_Assert_Type); + struct _Assert *result = PyObject_New(struct _Assert, &Py_Assert_Type); if (result == NULL) return NULL; result->test = test; @@ -1222,21 +1220,21 @@ } static void -stmt_Assert_dealloc(PyObject* _self) +Assert_dealloc(PyObject* _self) { - struct Py_stmt_Assert *self = (struct Py_stmt_Assert*)_self; + struct _Assert *self = (struct _Assert*)_self; Py_DECREF(self->test); Py_DECREF(self->msg); PyObject_Del(self); } -PyTypeObject Py_stmt_Assert_Type = { +PyTypeObject Py_Assert_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Assert", /*tp_name*/ - sizeof(struct Py_stmt_Assert), /*tp_basicsize*/ + "Assert", /*tp_name*/ + sizeof(struct _Assert), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Assert_dealloc, /*tp_dealloc*/ + Assert_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1272,12 +1270,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Import_New(PyObject* names, int lineno) +Py_Import_New(PyObject* names, int lineno) { - struct Py_stmt_Import *result = PyObject_New(struct Py_stmt_Import, &Py_stmt_Import_Type); + struct _Import *result = PyObject_New(struct _Import, &Py_Import_Type); if (result == NULL) return NULL; result->names = names; @@ -1286,20 +1284,20 @@ } static void -stmt_Import_dealloc(PyObject* _self) +Import_dealloc(PyObject* _self) { - struct Py_stmt_Import *self = (struct Py_stmt_Import*)_self; + struct _Import *self = (struct _Import*)_self; Py_DECREF(self->names); PyObject_Del(self); } -PyTypeObject Py_stmt_Import_Type = { +PyTypeObject Py_Import_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Import", /*tp_name*/ - sizeof(struct Py_stmt_Import), /*tp_basicsize*/ + "Import", /*tp_name*/ + sizeof(struct _Import), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Import_dealloc, /*tp_dealloc*/ + Import_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1335,12 +1333,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_ImportFrom_New(PyObject* module, PyObject* names, int lineno) +Py_ImportFrom_New(PyObject* module, PyObject* names, int lineno) { - struct Py_stmt_ImportFrom *result = PyObject_New(struct Py_stmt_ImportFrom, &Py_stmt_ImportFrom_Type); + struct _ImportFrom *result = PyObject_New(struct _ImportFrom, &Py_ImportFrom_Type); if (result == NULL) return NULL; result->module = module; @@ -1350,21 +1348,21 @@ } static void -stmt_ImportFrom_dealloc(PyObject* _self) +ImportFrom_dealloc(PyObject* _self) { - struct Py_stmt_ImportFrom *self = (struct Py_stmt_ImportFrom*)_self; + struct _ImportFrom *self = (struct _ImportFrom*)_self; Py_DECREF(self->module); Py_DECREF(self->names); PyObject_Del(self); } -PyTypeObject Py_stmt_ImportFrom_Type = { +PyTypeObject Py_ImportFrom_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_ImportFrom", /*tp_name*/ - sizeof(struct Py_stmt_ImportFrom), /*tp_basicsize*/ + "ImportFrom", /*tp_name*/ + sizeof(struct _ImportFrom), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_ImportFrom_dealloc, /*tp_dealloc*/ + ImportFrom_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1400,13 +1398,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Exec_New(PyObject* body, PyObject* globals, PyObject* locals, int - lineno) +Py_Exec_New(PyObject* body, PyObject* globals, PyObject* locals, int lineno) { - struct Py_stmt_Exec *result = PyObject_New(struct Py_stmt_Exec, &Py_stmt_Exec_Type); + struct _Exec *result = PyObject_New(struct _Exec, &Py_Exec_Type); if (result == NULL) return NULL; result->body = body; @@ -1417,22 +1414,22 @@ } static void -stmt_Exec_dealloc(PyObject* _self) +Exec_dealloc(PyObject* _self) { - struct Py_stmt_Exec *self = (struct Py_stmt_Exec*)_self; + struct _Exec *self = (struct _Exec*)_self; Py_DECREF(self->body); Py_DECREF(self->globals); Py_DECREF(self->locals); PyObject_Del(self); } -PyTypeObject Py_stmt_Exec_Type = { +PyTypeObject Py_Exec_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Exec", /*tp_name*/ - sizeof(struct Py_stmt_Exec), /*tp_basicsize*/ + "Exec", /*tp_name*/ + sizeof(struct _Exec), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Exec_dealloc, /*tp_dealloc*/ + Exec_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1468,12 +1465,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Global_New(PyObject* names, int lineno) +Py_Global_New(PyObject* names, int lineno) { - struct Py_stmt_Global *result = PyObject_New(struct Py_stmt_Global, &Py_stmt_Global_Type); + struct _Global *result = PyObject_New(struct _Global, &Py_Global_Type); if (result == NULL) return NULL; result->names = names; @@ -1482,20 +1479,20 @@ } static void -stmt_Global_dealloc(PyObject* _self) +Global_dealloc(PyObject* _self) { - struct Py_stmt_Global *self = (struct Py_stmt_Global*)_self; + struct _Global *self = (struct _Global*)_self; Py_DECREF(self->names); PyObject_Del(self); } -PyTypeObject Py_stmt_Global_Type = { +PyTypeObject Py_Global_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Global", /*tp_name*/ - sizeof(struct Py_stmt_Global), /*tp_basicsize*/ + "Global", /*tp_name*/ + sizeof(struct _Global), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Global_dealloc, /*tp_dealloc*/ + Global_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1531,12 +1528,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Expr_New(PyObject* value, int lineno) +Py_Expr_New(PyObject* value, int lineno) { - struct Py_stmt_Expr *result = PyObject_New(struct Py_stmt_Expr, &Py_stmt_Expr_Type); + struct _Expr *result = PyObject_New(struct _Expr, &Py_Expr_Type); if (result == NULL) return NULL; result->value = value; @@ -1545,20 +1542,20 @@ } static void -stmt_Expr_dealloc(PyObject* _self) +Expr_dealloc(PyObject* _self) { - struct Py_stmt_Expr *self = (struct Py_stmt_Expr*)_self; + struct _Expr *self = (struct _Expr*)_self; Py_DECREF(self->value); PyObject_Del(self); } -PyTypeObject Py_stmt_Expr_Type = { +PyTypeObject Py_Expr_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Expr", /*tp_name*/ - sizeof(struct Py_stmt_Expr), /*tp_basicsize*/ + "Expr", /*tp_name*/ + sizeof(struct _Expr), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Expr_dealloc, /*tp_dealloc*/ + Expr_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1594,12 +1591,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Pass_New(int lineno) +Py_Pass_New(int lineno) { - struct Py_stmt_Pass *result = PyObject_New(struct Py_stmt_Pass, &Py_stmt_Pass_Type); + struct _Pass *result = PyObject_New(struct _Pass, &Py_Pass_Type); if (result == NULL) return NULL; result->_base.lineno = lineno; @@ -1607,19 +1604,19 @@ } static void -stmt_Pass_dealloc(PyObject* _self) +Pass_dealloc(PyObject* _self) { - struct Py_stmt_Pass *self = (struct Py_stmt_Pass*)_self; + struct _Pass *self = (struct _Pass*)_self; PyObject_Del(self); } -PyTypeObject Py_stmt_Pass_Type = { +PyTypeObject Py_Pass_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Pass", /*tp_name*/ - sizeof(struct Py_stmt_Pass), /*tp_basicsize*/ + "Pass", /*tp_name*/ + sizeof(struct _Pass), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Pass_dealloc, /*tp_dealloc*/ + Pass_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1655,12 +1652,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Break_New(int lineno) +Py_Break_New(int lineno) { - struct Py_stmt_Break *result = PyObject_New(struct Py_stmt_Break, &Py_stmt_Break_Type); + struct _Break *result = PyObject_New(struct _Break, &Py_Break_Type); if (result == NULL) return NULL; result->_base.lineno = lineno; @@ -1668,19 +1665,19 @@ } static void -stmt_Break_dealloc(PyObject* _self) +Break_dealloc(PyObject* _self) { - struct Py_stmt_Break *self = (struct Py_stmt_Break*)_self; + struct _Break *self = (struct _Break*)_self; PyObject_Del(self); } -PyTypeObject Py_stmt_Break_Type = { +PyTypeObject Py_Break_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Break", /*tp_name*/ - sizeof(struct Py_stmt_Break), /*tp_basicsize*/ + "Break", /*tp_name*/ + sizeof(struct _Break), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Break_dealloc, /*tp_dealloc*/ + Break_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1716,12 +1713,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_stmt_Continue_New(int lineno) +Py_Continue_New(int lineno) { - struct Py_stmt_Continue *result = PyObject_New(struct Py_stmt_Continue, &Py_stmt_Continue_Type); + struct _Continue *result = PyObject_New(struct _Continue, &Py_Continue_Type); if (result == NULL) return NULL; result->_base.lineno = lineno; @@ -1729,19 +1726,19 @@ } static void -stmt_Continue_dealloc(PyObject* _self) +Continue_dealloc(PyObject* _self) { - struct Py_stmt_Continue *self = (struct Py_stmt_Continue*)_self; + struct _Continue *self = (struct _Continue*)_self; PyObject_Del(self); } -PyTypeObject Py_stmt_Continue_Type = { +PyTypeObject Py_Continue_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "stmt_Continue", /*tp_name*/ - sizeof(struct Py_stmt_Continue), /*tp_basicsize*/ + "Continue", /*tp_name*/ + sizeof(struct _Continue), /*tp_basicsize*/ 0, /* tp_itemsize */ - stmt_Continue_dealloc, /*tp_dealloc*/ + Continue_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1777,14 +1774,14 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + #define expr_dealloc 0 PyTypeObject Py_expr_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "expr", /*tp_name*/ - sizeof(struct Py_expr), /*tp_basicsize*/ + sizeof(struct _expr), /*tp_basicsize*/ 0, /* tp_itemsize */ expr_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -1822,12 +1819,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_BoolOp_New(PyObject* op, PyObject* values, int lineno) +Py_BoolOp_New(PyObject* op, PyObject* values, int lineno) { - struct Py_expr_BoolOp *result = PyObject_New(struct Py_expr_BoolOp, &Py_expr_BoolOp_Type); + struct _BoolOp *result = PyObject_New(struct _BoolOp, &Py_BoolOp_Type); if (result == NULL) return NULL; result->op = op; @@ -1837,21 +1834,21 @@ } static void -expr_BoolOp_dealloc(PyObject* _self) +BoolOp_dealloc(PyObject* _self) { - struct Py_expr_BoolOp *self = (struct Py_expr_BoolOp*)_self; + struct _BoolOp *self = (struct _BoolOp*)_self; Py_DECREF(self->op); Py_DECREF(self->values); PyObject_Del(self); } -PyTypeObject Py_expr_BoolOp_Type = { +PyTypeObject Py_BoolOp_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_BoolOp", /*tp_name*/ - sizeof(struct Py_expr_BoolOp), /*tp_basicsize*/ + "BoolOp", /*tp_name*/ + sizeof(struct _BoolOp), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_BoolOp_dealloc, /*tp_dealloc*/ + BoolOp_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1887,12 +1884,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_BinOp_New(PyObject* left, PyObject* op, PyObject* right, int lineno) +Py_BinOp_New(PyObject* left, PyObject* op, PyObject* right, int lineno) { - struct Py_expr_BinOp *result = PyObject_New(struct Py_expr_BinOp, &Py_expr_BinOp_Type); + struct _BinOp *result = PyObject_New(struct _BinOp, &Py_BinOp_Type); if (result == NULL) return NULL; result->left = left; @@ -1903,22 +1900,22 @@ } static void -expr_BinOp_dealloc(PyObject* _self) +BinOp_dealloc(PyObject* _self) { - struct Py_expr_BinOp *self = (struct Py_expr_BinOp*)_self; + struct _BinOp *self = (struct _BinOp*)_self; Py_DECREF(self->left); Py_DECREF(self->op); Py_DECREF(self->right); PyObject_Del(self); } -PyTypeObject Py_expr_BinOp_Type = { +PyTypeObject Py_BinOp_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_BinOp", /*tp_name*/ - sizeof(struct Py_expr_BinOp), /*tp_basicsize*/ + "BinOp", /*tp_name*/ + sizeof(struct _BinOp), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_BinOp_dealloc, /*tp_dealloc*/ + BinOp_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -1954,12 +1951,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_UnaryOp_New(PyObject* op, PyObject* operand, int lineno) +Py_UnaryOp_New(PyObject* op, PyObject* operand, int lineno) { - struct Py_expr_UnaryOp *result = PyObject_New(struct Py_expr_UnaryOp, &Py_expr_UnaryOp_Type); + struct _UnaryOp *result = PyObject_New(struct _UnaryOp, &Py_UnaryOp_Type); if (result == NULL) return NULL; result->op = op; @@ -1969,21 +1966,21 @@ } static void -expr_UnaryOp_dealloc(PyObject* _self) +UnaryOp_dealloc(PyObject* _self) { - struct Py_expr_UnaryOp *self = (struct Py_expr_UnaryOp*)_self; + struct _UnaryOp *self = (struct _UnaryOp*)_self; Py_DECREF(self->op); Py_DECREF(self->operand); PyObject_Del(self); } -PyTypeObject Py_expr_UnaryOp_Type = { +PyTypeObject Py_UnaryOp_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_UnaryOp", /*tp_name*/ - sizeof(struct Py_expr_UnaryOp), /*tp_basicsize*/ + "UnaryOp", /*tp_name*/ + sizeof(struct _UnaryOp), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_UnaryOp_dealloc, /*tp_dealloc*/ + UnaryOp_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2019,12 +2016,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Lambda_New(PyObject* args, PyObject* body, int lineno) +Py_Lambda_New(PyObject* args, PyObject* body, int lineno) { - struct Py_expr_Lambda *result = PyObject_New(struct Py_expr_Lambda, &Py_expr_Lambda_Type); + struct _Lambda *result = PyObject_New(struct _Lambda, &Py_Lambda_Type); if (result == NULL) return NULL; result->args = args; @@ -2034,21 +2031,21 @@ } static void -expr_Lambda_dealloc(PyObject* _self) +Lambda_dealloc(PyObject* _self) { - struct Py_expr_Lambda *self = (struct Py_expr_Lambda*)_self; + struct _Lambda *self = (struct _Lambda*)_self; Py_DECREF(self->args); Py_DECREF(self->body); PyObject_Del(self); } -PyTypeObject Py_expr_Lambda_Type = { +PyTypeObject Py_Lambda_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Lambda", /*tp_name*/ - sizeof(struct Py_expr_Lambda), /*tp_basicsize*/ + "Lambda", /*tp_name*/ + sizeof(struct _Lambda), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Lambda_dealloc, /*tp_dealloc*/ + Lambda_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2084,12 +2081,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Dict_New(PyObject* keys, PyObject* values, int lineno) +Py_Dict_New(PyObject* keys, PyObject* values, int lineno) { - struct Py_expr_Dict *result = PyObject_New(struct Py_expr_Dict, &Py_expr_Dict_Type); + struct _Dict *result = PyObject_New(struct _Dict, &Py_Dict_Type); if (result == NULL) return NULL; result->keys = keys; @@ -2099,21 +2096,21 @@ } static void -expr_Dict_dealloc(PyObject* _self) +Dict_dealloc(PyObject* _self) { - struct Py_expr_Dict *self = (struct Py_expr_Dict*)_self; + struct _Dict *self = (struct _Dict*)_self; Py_DECREF(self->keys); Py_DECREF(self->values); PyObject_Del(self); } -PyTypeObject Py_expr_Dict_Type = { +PyTypeObject Py_Dict_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Dict", /*tp_name*/ - sizeof(struct Py_expr_Dict), /*tp_basicsize*/ + "Dict", /*tp_name*/ + sizeof(struct _Dict), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Dict_dealloc, /*tp_dealloc*/ + Dict_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2149,12 +2146,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_ListComp_New(PyObject* elt, PyObject* generators, int lineno) +Py_ListComp_New(PyObject* elt, PyObject* generators, int lineno) { - struct Py_expr_ListComp *result = PyObject_New(struct Py_expr_ListComp, &Py_expr_ListComp_Type); + struct _ListComp *result = PyObject_New(struct _ListComp, &Py_ListComp_Type); if (result == NULL) return NULL; result->elt = elt; @@ -2164,21 +2161,21 @@ } static void -expr_ListComp_dealloc(PyObject* _self) +ListComp_dealloc(PyObject* _self) { - struct Py_expr_ListComp *self = (struct Py_expr_ListComp*)_self; + struct _ListComp *self = (struct _ListComp*)_self; Py_DECREF(self->elt); Py_DECREF(self->generators); PyObject_Del(self); } -PyTypeObject Py_expr_ListComp_Type = { +PyTypeObject Py_ListComp_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_ListComp", /*tp_name*/ - sizeof(struct Py_expr_ListComp), /*tp_basicsize*/ + "ListComp", /*tp_name*/ + sizeof(struct _ListComp), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_ListComp_dealloc, /*tp_dealloc*/ + ListComp_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2214,12 +2211,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_GeneratorExp_New(PyObject* elt, PyObject* generators, int lineno) +Py_GeneratorExp_New(PyObject* elt, PyObject* generators, int lineno) { - struct Py_expr_GeneratorExp *result = PyObject_New(struct Py_expr_GeneratorExp, &Py_expr_GeneratorExp_Type); + struct _GeneratorExp *result = PyObject_New(struct _GeneratorExp, &Py_GeneratorExp_Type); if (result == NULL) return NULL; result->elt = elt; @@ -2229,21 +2226,21 @@ } static void -expr_GeneratorExp_dealloc(PyObject* _self) +GeneratorExp_dealloc(PyObject* _self) { - struct Py_expr_GeneratorExp *self = (struct Py_expr_GeneratorExp*)_self; + struct _GeneratorExp *self = (struct _GeneratorExp*)_self; Py_DECREF(self->elt); Py_DECREF(self->generators); PyObject_Del(self); } -PyTypeObject Py_expr_GeneratorExp_Type = { +PyTypeObject Py_GeneratorExp_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_GeneratorExp", /*tp_name*/ - sizeof(struct Py_expr_GeneratorExp), /*tp_basicsize*/ + "GeneratorExp", /*tp_name*/ + sizeof(struct _GeneratorExp), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_GeneratorExp_dealloc, /*tp_dealloc*/ + GeneratorExp_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2279,12 +2276,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Yield_New(PyObject* value, int lineno) +Py_Yield_New(PyObject* value, int lineno) { - struct Py_expr_Yield *result = PyObject_New(struct Py_expr_Yield, &Py_expr_Yield_Type); + struct _Yield *result = PyObject_New(struct _Yield, &Py_Yield_Type); if (result == NULL) return NULL; result->value = value; @@ -2293,20 +2290,20 @@ } static void -expr_Yield_dealloc(PyObject* _self) +Yield_dealloc(PyObject* _self) { - struct Py_expr_Yield *self = (struct Py_expr_Yield*)_self; + struct _Yield *self = (struct _Yield*)_self; Py_DECREF(self->value); PyObject_Del(self); } -PyTypeObject Py_expr_Yield_Type = { +PyTypeObject Py_Yield_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Yield", /*tp_name*/ - sizeof(struct Py_expr_Yield), /*tp_basicsize*/ + "Yield", /*tp_name*/ + sizeof(struct _Yield), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Yield_dealloc, /*tp_dealloc*/ + Yield_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2342,13 +2339,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Compare_New(PyObject* left, PyObject* ops, PyObject* comparators, int - lineno) +Py_Compare_New(PyObject* left, PyObject* ops, PyObject* comparators, int lineno) { - struct Py_expr_Compare *result = PyObject_New(struct Py_expr_Compare, &Py_expr_Compare_Type); + struct _Compare *result = PyObject_New(struct _Compare, &Py_Compare_Type); if (result == NULL) return NULL; result->left = left; @@ -2359,22 +2355,22 @@ } static void -expr_Compare_dealloc(PyObject* _self) +Compare_dealloc(PyObject* _self) { - struct Py_expr_Compare *self = (struct Py_expr_Compare*)_self; + struct _Compare *self = (struct _Compare*)_self; Py_DECREF(self->left); Py_DECREF(self->ops); Py_DECREF(self->comparators); PyObject_Del(self); } -PyTypeObject Py_expr_Compare_Type = { +PyTypeObject Py_Compare_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Compare", /*tp_name*/ - sizeof(struct Py_expr_Compare), /*tp_basicsize*/ + "Compare", /*tp_name*/ + sizeof(struct _Compare), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Compare_dealloc, /*tp_dealloc*/ + Compare_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2410,13 +2406,13 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Call_New(PyObject* func, PyObject* args, PyObject* keywords, PyObject* - starargs, PyObject* kwargs, int lineno) +Py_Call_New(PyObject* func, PyObject* args, PyObject* keywords, PyObject* + starargs, PyObject* kwargs, int lineno) { - struct Py_expr_Call *result = PyObject_New(struct Py_expr_Call, &Py_expr_Call_Type); + struct _Call *result = PyObject_New(struct _Call, &Py_Call_Type); if (result == NULL) return NULL; result->func = func; @@ -2429,9 +2425,9 @@ } static void -expr_Call_dealloc(PyObject* _self) +Call_dealloc(PyObject* _self) { - struct Py_expr_Call *self = (struct Py_expr_Call*)_self; + struct _Call *self = (struct _Call*)_self; Py_DECREF(self->func); Py_DECREF(self->args); Py_DECREF(self->keywords); @@ -2440,13 +2436,13 @@ PyObject_Del(self); } -PyTypeObject Py_expr_Call_Type = { +PyTypeObject Py_Call_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Call", /*tp_name*/ - sizeof(struct Py_expr_Call), /*tp_basicsize*/ + "Call", /*tp_name*/ + sizeof(struct _Call), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Call_dealloc, /*tp_dealloc*/ + Call_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2482,12 +2478,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Repr_New(PyObject* value, int lineno) +Py_Repr_New(PyObject* value, int lineno) { - struct Py_expr_Repr *result = PyObject_New(struct Py_expr_Repr, &Py_expr_Repr_Type); + struct _Repr *result = PyObject_New(struct _Repr, &Py_Repr_Type); if (result == NULL) return NULL; result->value = value; @@ -2496,20 +2492,20 @@ } static void -expr_Repr_dealloc(PyObject* _self) +Repr_dealloc(PyObject* _self) { - struct Py_expr_Repr *self = (struct Py_expr_Repr*)_self; + struct _Repr *self = (struct _Repr*)_self; Py_DECREF(self->value); PyObject_Del(self); } -PyTypeObject Py_expr_Repr_Type = { +PyTypeObject Py_Repr_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Repr", /*tp_name*/ - sizeof(struct Py_expr_Repr), /*tp_basicsize*/ + "Repr", /*tp_name*/ + sizeof(struct _Repr), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Repr_dealloc, /*tp_dealloc*/ + Repr_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2545,12 +2541,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Num_New(PyObject* n, int lineno) +Py_Num_New(PyObject* n, int lineno) { - struct Py_expr_Num *result = PyObject_New(struct Py_expr_Num, &Py_expr_Num_Type); + struct _Num *result = PyObject_New(struct _Num, &Py_Num_Type); if (result == NULL) return NULL; result->n = n; @@ -2559,20 +2555,20 @@ } static void -expr_Num_dealloc(PyObject* _self) +Num_dealloc(PyObject* _self) { - struct Py_expr_Num *self = (struct Py_expr_Num*)_self; + struct _Num *self = (struct _Num*)_self; Py_DECREF(self->n); PyObject_Del(self); } -PyTypeObject Py_expr_Num_Type = { +PyTypeObject Py_Num_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Num", /*tp_name*/ - sizeof(struct Py_expr_Num), /*tp_basicsize*/ + "Num", /*tp_name*/ + sizeof(struct _Num), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Num_dealloc, /*tp_dealloc*/ + Num_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2608,12 +2604,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Str_New(PyObject* s, int lineno) +Py_Str_New(PyObject* s, int lineno) { - struct Py_expr_Str *result = PyObject_New(struct Py_expr_Str, &Py_expr_Str_Type); + struct _Str *result = PyObject_New(struct _Str, &Py_Str_Type); if (result == NULL) return NULL; result->s = s; @@ -2622,20 +2618,20 @@ } static void -expr_Str_dealloc(PyObject* _self) +Str_dealloc(PyObject* _self) { - struct Py_expr_Str *self = (struct Py_expr_Str*)_self; + struct _Str *self = (struct _Str*)_self; Py_DECREF(self->s); PyObject_Del(self); } -PyTypeObject Py_expr_Str_Type = { +PyTypeObject Py_Str_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Str", /*tp_name*/ - sizeof(struct Py_expr_Str), /*tp_basicsize*/ + "Str", /*tp_name*/ + sizeof(struct _Str), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Str_dealloc, /*tp_dealloc*/ + Str_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2671,13 +2667,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Attribute_New(PyObject* value, PyObject* attr, PyObject* ctx, int - lineno) +Py_Attribute_New(PyObject* value, PyObject* attr, PyObject* ctx, int lineno) { - struct Py_expr_Attribute *result = PyObject_New(struct Py_expr_Attribute, &Py_expr_Attribute_Type); + struct _Attribute *result = PyObject_New(struct _Attribute, &Py_Attribute_Type); if (result == NULL) return NULL; result->value = value; @@ -2688,22 +2683,22 @@ } static void -expr_Attribute_dealloc(PyObject* _self) +Attribute_dealloc(PyObject* _self) { - struct Py_expr_Attribute *self = (struct Py_expr_Attribute*)_self; + struct _Attribute *self = (struct _Attribute*)_self; Py_DECREF(self->value); Py_DECREF(self->attr); Py_DECREF(self->ctx); PyObject_Del(self); } -PyTypeObject Py_expr_Attribute_Type = { +PyTypeObject Py_Attribute_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Attribute", /*tp_name*/ - sizeof(struct Py_expr_Attribute), /*tp_basicsize*/ + "Attribute", /*tp_name*/ + sizeof(struct _Attribute), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Attribute_dealloc, /*tp_dealloc*/ + Attribute_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2739,13 +2734,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Subscript_New(PyObject* value, PyObject* slice, PyObject* ctx, int - lineno) +Py_Subscript_New(PyObject* value, PyObject* slice, PyObject* ctx, int lineno) { - struct Py_expr_Subscript *result = PyObject_New(struct Py_expr_Subscript, &Py_expr_Subscript_Type); + struct _Subscript *result = PyObject_New(struct _Subscript, &Py_Subscript_Type); if (result == NULL) return NULL; result->value = value; @@ -2756,22 +2750,22 @@ } static void -expr_Subscript_dealloc(PyObject* _self) +Subscript_dealloc(PyObject* _self) { - struct Py_expr_Subscript *self = (struct Py_expr_Subscript*)_self; + struct _Subscript *self = (struct _Subscript*)_self; Py_DECREF(self->value); Py_DECREF(self->slice); Py_DECREF(self->ctx); PyObject_Del(self); } -PyTypeObject Py_expr_Subscript_Type = { +PyTypeObject Py_Subscript_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Subscript", /*tp_name*/ - sizeof(struct Py_expr_Subscript), /*tp_basicsize*/ + "Subscript", /*tp_name*/ + sizeof(struct _Subscript), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Subscript_dealloc, /*tp_dealloc*/ + Subscript_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2807,12 +2801,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Name_New(PyObject* id, PyObject* ctx, int lineno) +Py_Name_New(PyObject* id, PyObject* ctx, int lineno) { - struct Py_expr_Name *result = PyObject_New(struct Py_expr_Name, &Py_expr_Name_Type); + struct _Name *result = PyObject_New(struct _Name, &Py_Name_Type); if (result == NULL) return NULL; result->id = id; @@ -2822,21 +2816,21 @@ } static void -expr_Name_dealloc(PyObject* _self) +Name_dealloc(PyObject* _self) { - struct Py_expr_Name *self = (struct Py_expr_Name*)_self; + struct _Name *self = (struct _Name*)_self; Py_DECREF(self->id); Py_DECREF(self->ctx); PyObject_Del(self); } -PyTypeObject Py_expr_Name_Type = { +PyTypeObject Py_Name_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Name", /*tp_name*/ - sizeof(struct Py_expr_Name), /*tp_basicsize*/ + "Name", /*tp_name*/ + sizeof(struct _Name), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Name_dealloc, /*tp_dealloc*/ + Name_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2872,12 +2866,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_List_New(PyObject* elts, PyObject* ctx, int lineno) +Py_List_New(PyObject* elts, PyObject* ctx, int lineno) { - struct Py_expr_List *result = PyObject_New(struct Py_expr_List, &Py_expr_List_Type); + struct _List *result = PyObject_New(struct _List, &Py_List_Type); if (result == NULL) return NULL; result->elts = elts; @@ -2887,21 +2881,21 @@ } static void -expr_List_dealloc(PyObject* _self) +List_dealloc(PyObject* _self) { - struct Py_expr_List *self = (struct Py_expr_List*)_self; + struct _List *self = (struct _List*)_self; Py_DECREF(self->elts); Py_DECREF(self->ctx); PyObject_Del(self); } -PyTypeObject Py_expr_List_Type = { +PyTypeObject Py_List_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_List", /*tp_name*/ - sizeof(struct Py_expr_List), /*tp_basicsize*/ + "List", /*tp_name*/ + sizeof(struct _List), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_List_dealloc, /*tp_dealloc*/ + List_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -2937,12 +2931,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_expr_Tuple_New(PyObject* elts, PyObject* ctx, int lineno) +Py_Tuple_New(PyObject* elts, PyObject* ctx, int lineno) { - struct Py_expr_Tuple *result = PyObject_New(struct Py_expr_Tuple, &Py_expr_Tuple_Type); + struct _Tuple *result = PyObject_New(struct _Tuple, &Py_Tuple_Type); if (result == NULL) return NULL; result->elts = elts; @@ -2952,21 +2946,21 @@ } static void -expr_Tuple_dealloc(PyObject* _self) +Tuple_dealloc(PyObject* _self) { - struct Py_expr_Tuple *self = (struct Py_expr_Tuple*)_self; + struct _Tuple *self = (struct _Tuple*)_self; Py_DECREF(self->elts); Py_DECREF(self->ctx); PyObject_Del(self); } -PyTypeObject Py_expr_Tuple_Type = { +PyTypeObject Py_Tuple_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "expr_Tuple", /*tp_name*/ - sizeof(struct Py_expr_Tuple), /*tp_basicsize*/ + "Tuple", /*tp_name*/ + sizeof(struct _Tuple), /*tp_basicsize*/ 0, /* tp_itemsize */ - expr_Tuple_dealloc, /*tp_dealloc*/ + Tuple_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -3002,14 +2996,14 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + #define slice_dealloc 0 PyTypeObject Py_slice_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "slice", /*tp_name*/ - sizeof(struct Py_slice), /*tp_basicsize*/ + sizeof(struct _slice), /*tp_basicsize*/ 0, /* tp_itemsize */ slice_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -3047,31 +3041,31 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_slice_Ellipsis_New() +Py_Ellipsis_New() { - struct Py_slice_Ellipsis *result = PyObject_New(struct Py_slice_Ellipsis, &Py_slice_Ellipsis_Type); + struct _Ellipsis *result = PyObject_New(struct _Ellipsis, &Py_Ellipsis_Type); if (result == NULL) return NULL; return (PyObject*)result; } static void -slice_Ellipsis_dealloc(PyObject* _self) +Ellipsis_dealloc(PyObject* _self) { - struct Py_slice_Ellipsis *self = (struct Py_slice_Ellipsis*)_self; + struct _Ellipsis *self = (struct _Ellipsis*)_self; PyObject_Del(self); } -PyTypeObject Py_slice_Ellipsis_Type = { +PyTypeObject Py_Ellipsis_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "slice_Ellipsis", /*tp_name*/ - sizeof(struct Py_slice_Ellipsis), /*tp_basicsize*/ + "Ellipsis", /*tp_name*/ + sizeof(struct _Ellipsis), /*tp_basicsize*/ 0, /* tp_itemsize */ - slice_Ellipsis_dealloc, /*tp_dealloc*/ + Ellipsis_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -3107,12 +3101,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_slice_Slice_New(PyObject* lower, PyObject* upper, PyObject* step) +Py_Slice_New(PyObject* lower, PyObject* upper, PyObject* step) { - struct Py_slice_Slice *result = PyObject_New(struct Py_slice_Slice, &Py_slice_Slice_Type); + struct _Slice *result = PyObject_New(struct _Slice, &Py_Slice_Type); if (result == NULL) return NULL; result->lower = lower; @@ -3122,22 +3116,22 @@ } static void -slice_Slice_dealloc(PyObject* _self) +Slice_dealloc(PyObject* _self) { - struct Py_slice_Slice *self = (struct Py_slice_Slice*)_self; + struct _Slice *self = (struct _Slice*)_self; Py_DECREF(self->lower); Py_DECREF(self->upper); Py_DECREF(self->step); PyObject_Del(self); } -PyTypeObject Py_slice_Slice_Type = { +PyTypeObject Py_Slice_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "slice_Slice", /*tp_name*/ - sizeof(struct Py_slice_Slice), /*tp_basicsize*/ + "Slice", /*tp_name*/ + sizeof(struct _Slice), /*tp_basicsize*/ 0, /* tp_itemsize */ - slice_Slice_dealloc, /*tp_dealloc*/ + Slice_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -3173,12 +3167,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_slice_ExtSlice_New(PyObject* dims) +Py_ExtSlice_New(PyObject* dims) { - struct Py_slice_ExtSlice *result = PyObject_New(struct Py_slice_ExtSlice, &Py_slice_ExtSlice_Type); + struct _ExtSlice *result = PyObject_New(struct _ExtSlice, &Py_ExtSlice_Type); if (result == NULL) return NULL; result->dims = dims; @@ -3186,20 +3180,20 @@ } static void -slice_ExtSlice_dealloc(PyObject* _self) +ExtSlice_dealloc(PyObject* _self) { - struct Py_slice_ExtSlice *self = (struct Py_slice_ExtSlice*)_self; + struct _ExtSlice *self = (struct _ExtSlice*)_self; Py_DECREF(self->dims); PyObject_Del(self); } -PyTypeObject Py_slice_ExtSlice_Type = { +PyTypeObject Py_ExtSlice_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "slice_ExtSlice", /*tp_name*/ - sizeof(struct Py_slice_ExtSlice), /*tp_basicsize*/ + "ExtSlice", /*tp_name*/ + sizeof(struct _ExtSlice), /*tp_basicsize*/ 0, /* tp_itemsize */ - slice_ExtSlice_dealloc, /*tp_dealloc*/ + ExtSlice_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -3235,12 +3229,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* -Py_slice_Index_New(PyObject* value) +Py_Index_New(PyObject* value) { - struct Py_slice_Index *result = PyObject_New(struct Py_slice_Index, &Py_slice_Index_Type); + struct _Index *result = PyObject_New(struct _Index, &Py_Index_Type); if (result == NULL) return NULL; result->value = value; @@ -3248,20 +3242,20 @@ } static void -slice_Index_dealloc(PyObject* _self) +Index_dealloc(PyObject* _self) { - struct Py_slice_Index *self = (struct Py_slice_Index*)_self; + struct _Index *self = (struct _Index*)_self; Py_DECREF(self->value); PyObject_Del(self); } -PyTypeObject Py_slice_Index_Type = { +PyTypeObject Py_Index_Type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "slice_Index", /*tp_name*/ - sizeof(struct Py_slice_Index), /*tp_basicsize*/ + "Index", /*tp_name*/ + sizeof(struct _Index), /*tp_basicsize*/ 0, /* tp_itemsize */ - slice_Index_dealloc, /*tp_dealloc*/ + Index_dealloc, /*tp_dealloc*/ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -3297,12 +3291,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* Py_comprehension_New(PyObject* target, PyObject* iter, PyObject* ifs) { - struct Py_comprehension *result = PyObject_New(struct Py_comprehension, &Py_comprehension_Type); + struct _comprehension *result = PyObject_New(struct _comprehension, &Py_comprehension_Type); if (result == NULL) return NULL; result->target = target; @@ -3314,7 +3308,7 @@ static void comprehension_dealloc(PyObject* _self) { - struct Py_comprehension *self = (struct Py_comprehension*)_self; + struct _comprehension *self = (struct _comprehension*)_self; Py_DECREF(self->target); Py_DECREF(self->iter); Py_DECREF(self->ifs); @@ -3325,7 +3319,7 @@ PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "comprehension", /*tp_name*/ - sizeof(struct Py_comprehension), /*tp_basicsize*/ + sizeof(struct _comprehension), /*tp_basicsize*/ 0, /* tp_itemsize */ comprehension_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -3363,12 +3357,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* Py_excepthandler_New(PyObject* type, PyObject* name, PyObject* body) { - struct Py_excepthandler *result = PyObject_New(struct Py_excepthandler, &Py_excepthandler_Type); + struct _excepthandler *result = PyObject_New(struct _excepthandler, &Py_excepthandler_Type); if (result == NULL) return NULL; result->type = type; @@ -3380,7 +3374,7 @@ static void excepthandler_dealloc(PyObject* _self) { - struct Py_excepthandler *self = (struct Py_excepthandler*)_self; + struct _excepthandler *self = (struct _excepthandler*)_self; Py_DECREF(self->type); Py_DECREF(self->name); Py_DECREF(self->body); @@ -3391,7 +3385,7 @@ PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "excepthandler", /*tp_name*/ - sizeof(struct Py_excepthandler), /*tp_basicsize*/ + sizeof(struct _excepthandler), /*tp_basicsize*/ 0, /* tp_itemsize */ excepthandler_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -3429,13 +3423,13 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* Py_arguments_New(PyObject* args, PyObject* vararg, PyObject* kwarg, PyObject* defaults) { - struct Py_arguments *result = PyObject_New(struct Py_arguments, &Py_arguments_Type); + struct _arguments *result = PyObject_New(struct _arguments, &Py_arguments_Type); if (result == NULL) return NULL; result->args = args; @@ -3448,7 +3442,7 @@ static void arguments_dealloc(PyObject* _self) { - struct Py_arguments *self = (struct Py_arguments*)_self; + struct _arguments *self = (struct _arguments*)_self; Py_DECREF(self->args); Py_DECREF(self->vararg); Py_DECREF(self->kwarg); @@ -3460,7 +3454,7 @@ PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "arguments", /*tp_name*/ - sizeof(struct Py_arguments), /*tp_basicsize*/ + sizeof(struct _arguments), /*tp_basicsize*/ 0, /* tp_itemsize */ arguments_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -3498,12 +3492,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* Py_keyword_New(PyObject* arg, PyObject* value) { - struct Py_keyword *result = PyObject_New(struct Py_keyword, &Py_keyword_Type); + struct _keyword *result = PyObject_New(struct _keyword, &Py_keyword_Type); if (result == NULL) return NULL; result->arg = arg; @@ -3514,7 +3508,7 @@ static void keyword_dealloc(PyObject* _self) { - struct Py_keyword *self = (struct Py_keyword*)_self; + struct _keyword *self = (struct _keyword*)_self; Py_DECREF(self->arg); Py_DECREF(self->value); PyObject_Del(self); @@ -3524,7 +3518,7 @@ PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "keyword", /*tp_name*/ - sizeof(struct Py_keyword), /*tp_basicsize*/ + sizeof(struct _keyword), /*tp_basicsize*/ 0, /* tp_itemsize */ keyword_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -3562,12 +3556,12 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + PyObject* Py_alias_New(PyObject* name, PyObject* asname) { - struct Py_alias *result = PyObject_New(struct Py_alias, &Py_alias_Type); + struct _alias *result = PyObject_New(struct _alias, &Py_alias_Type); if (result == NULL) return NULL; result->name = name; @@ -3578,7 +3572,7 @@ static void alias_dealloc(PyObject* _self) { - struct Py_alias *self = (struct Py_alias*)_self; + struct _alias *self = (struct _alias*)_self; Py_DECREF(self->name); Py_DECREF(self->asname); PyObject_Del(self); @@ -3588,7 +3582,7 @@ PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "alias", /*tp_name*/ - sizeof(struct Py_alias), /*tp_basicsize*/ + sizeof(struct _alias), /*tp_basicsize*/ 0, /* tp_itemsize */ alias_dealloc, /*tp_dealloc*/ 0, /* tp_print */ @@ -3626,162 +3620,162 @@ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ - }; - +}; + void init_ast(void) { if (PyType_Ready(&Py_mod_Type) < 0) return; - Py_mod_Module_Type.tp_base = &Py_mod_Type; - if (PyType_Ready(&Py_mod_Module_Type) < 0) + Py_Module_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_Module_Type) < 0) return; - Py_mod_Interactive_Type.tp_base = &Py_mod_Type; - if (PyType_Ready(&Py_mod_Interactive_Type) < 0) + Py_Interactive_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_Interactive_Type) < 0) return; - Py_mod_Expression_Type.tp_base = &Py_mod_Type; - if (PyType_Ready(&Py_mod_Expression_Type) < 0) + Py_Expression_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_Expression_Type) < 0) return; - Py_mod_Suite_Type.tp_base = &Py_mod_Type; - if (PyType_Ready(&Py_mod_Suite_Type) < 0) + Py_Suite_Type.tp_base = &Py_mod_Type; + if (PyType_Ready(&Py_Suite_Type) < 0) return; if (PyType_Ready(&Py_stmt_Type) < 0) return; - Py_stmt_FunctionDef_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_FunctionDef_Type) < 0) + Py_FunctionDef_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_FunctionDef_Type) < 0) return; - Py_stmt_ClassDef_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_ClassDef_Type) < 0) + Py_ClassDef_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_ClassDef_Type) < 0) return; - Py_stmt_Return_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Return_Type) < 0) + Py_Return_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Return_Type) < 0) return; - Py_stmt_Delete_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Delete_Type) < 0) + Py_Delete_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Delete_Type) < 0) return; - Py_stmt_Assign_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Assign_Type) < 0) + Py_Assign_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Assign_Type) < 0) return; - Py_stmt_AugAssign_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_AugAssign_Type) < 0) + Py_AugAssign_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_AugAssign_Type) < 0) return; - Py_stmt_Print_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Print_Type) < 0) + Py_Print_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Print_Type) < 0) return; - Py_stmt_For_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_For_Type) < 0) + Py_For_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_For_Type) < 0) return; - Py_stmt_While_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_While_Type) < 0) + Py_While_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_While_Type) < 0) return; - Py_stmt_If_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_If_Type) < 0) + Py_If_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_If_Type) < 0) return; - Py_stmt_Raise_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Raise_Type) < 0) + Py_Raise_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Raise_Type) < 0) return; - Py_stmt_TryExcept_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_TryExcept_Type) < 0) + Py_TryExcept_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_TryExcept_Type) < 0) return; - Py_stmt_TryFinally_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_TryFinally_Type) < 0) + Py_TryFinally_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_TryFinally_Type) < 0) return; - Py_stmt_Assert_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Assert_Type) < 0) + Py_Assert_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Assert_Type) < 0) return; - Py_stmt_Import_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Import_Type) < 0) + Py_Import_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Import_Type) < 0) return; - Py_stmt_ImportFrom_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_ImportFrom_Type) < 0) + Py_ImportFrom_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_ImportFrom_Type) < 0) return; - Py_stmt_Exec_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Exec_Type) < 0) + Py_Exec_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Exec_Type) < 0) return; - Py_stmt_Global_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Global_Type) < 0) + Py_Global_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Global_Type) < 0) return; - Py_stmt_Expr_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Expr_Type) < 0) + Py_Expr_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Expr_Type) < 0) return; - Py_stmt_Pass_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Pass_Type) < 0) + Py_Pass_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Pass_Type) < 0) return; - Py_stmt_Break_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Break_Type) < 0) + Py_Break_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Break_Type) < 0) return; - Py_stmt_Continue_Type.tp_base = &Py_stmt_Type; - if (PyType_Ready(&Py_stmt_Continue_Type) < 0) + Py_Continue_Type.tp_base = &Py_stmt_Type; + if (PyType_Ready(&Py_Continue_Type) < 0) return; if (PyType_Ready(&Py_expr_Type) < 0) return; - Py_expr_BoolOp_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_BoolOp_Type) < 0) + Py_BoolOp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_BoolOp_Type) < 0) return; - Py_expr_BinOp_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_BinOp_Type) < 0) + Py_BinOp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_BinOp_Type) < 0) return; - Py_expr_UnaryOp_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_UnaryOp_Type) < 0) + Py_UnaryOp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_UnaryOp_Type) < 0) return; - Py_expr_Lambda_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Lambda_Type) < 0) + Py_Lambda_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Lambda_Type) < 0) return; - Py_expr_Dict_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Dict_Type) < 0) + Py_Dict_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Dict_Type) < 0) return; - Py_expr_ListComp_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_ListComp_Type) < 0) + Py_ListComp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_ListComp_Type) < 0) return; - Py_expr_GeneratorExp_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_GeneratorExp_Type) < 0) + Py_GeneratorExp_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_GeneratorExp_Type) < 0) return; - Py_expr_Yield_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Yield_Type) < 0) + Py_Yield_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Yield_Type) < 0) return; - Py_expr_Compare_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Compare_Type) < 0) + Py_Compare_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Compare_Type) < 0) return; - Py_expr_Call_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Call_Type) < 0) + Py_Call_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Call_Type) < 0) return; - Py_expr_Repr_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Repr_Type) < 0) + Py_Repr_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Repr_Type) < 0) return; - Py_expr_Num_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Num_Type) < 0) + Py_Num_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Num_Type) < 0) return; - Py_expr_Str_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Str_Type) < 0) + Py_Str_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Str_Type) < 0) return; - Py_expr_Attribute_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Attribute_Type) < 0) + Py_Attribute_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Attribute_Type) < 0) return; - Py_expr_Subscript_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Subscript_Type) < 0) + Py_Subscript_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Subscript_Type) < 0) return; - Py_expr_Name_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Name_Type) < 0) + Py_Name_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Name_Type) < 0) return; - Py_expr_List_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_List_Type) < 0) + Py_List_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_List_Type) < 0) return; - Py_expr_Tuple_Type.tp_base = &Py_expr_Type; - if (PyType_Ready(&Py_expr_Tuple_Type) < 0) + Py_Tuple_Type.tp_base = &Py_expr_Type; + if (PyType_Ready(&Py_Tuple_Type) < 0) return; if (PyType_Ready(&Py_slice_Type) < 0) return; - Py_slice_Ellipsis_Type.tp_base = &Py_slice_Type; - if (PyType_Ready(&Py_slice_Ellipsis_Type) < 0) + Py_Ellipsis_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_Ellipsis_Type) < 0) return; - Py_slice_Slice_Type.tp_base = &Py_slice_Type; - if (PyType_Ready(&Py_slice_Slice_Type) < 0) + Py_Slice_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_Slice_Type) < 0) return; - Py_slice_ExtSlice_Type.tp_base = &Py_slice_Type; - if (PyType_Ready(&Py_slice_ExtSlice_Type) < 0) + Py_ExtSlice_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_ExtSlice_Type) < 0) return; - Py_slice_Index_Type.tp_base = &Py_slice_Type; - if (PyType_Ready(&Py_slice_Index_Type) < 0) + Py_Index_Type.tp_base = &Py_slice_Type; + if (PyType_Ready(&Py_Index_Type) < 0) return; if (PyType_Ready(&Py_comprehension_Type) < 0) return; From python-checkins at python.org Wed Nov 30 21:16:23 2005 From: python-checkins at python.org (walter.doerwald) Date: Wed, 30 Nov 2005 21:16:23 +0100 (CET) Subject: [Python-checkins] commit of r41570 - python/trunk/PC Message-ID: <20051130201623.E4B271E4011@bag.python.org> Author: walter.doerwald Date: Wed Nov 30 21:16:17 2005 New Revision: 41570 Modified: python/trunk/PC/pyconfig.h Log: Fix typo. Modified: python/trunk/PC/pyconfig.h ============================================================================== --- python/trunk/PC/pyconfig.h (original) +++ python/trunk/PC/pyconfig.h Wed Nov 30 21:16:17 2005 @@ -29,7 +29,7 @@ /* Visual Studio 2005 introduces deprecation warnings for "insecure" and POSIX functions. The insecure functions should - be replaces by *_s versions (according to Microsoft); the + be replaced by *_s versions (according to Microsoft); the POSIX functions by _* versions (which, according to Microsoft, would be ISO C conforming). Neither renaming is feasible, so we just silence the warnings. */ From python-checkins at python.org Wed Nov 30 23:57:11 2005 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 30 Nov 2005 23:57:11 +0100 (CET) Subject: [Python-checkins] commit of r41571 - in python/branches/ast-objects: Parser Python Message-ID: <20051130225711.89AC71E4002@bag.python.org> Author: martin.v.loewis Date: Wed Nov 30 23:57:06 2005 New Revision: 41571 Modified: python/branches/ast-objects/Parser/asdl_c.py python/branches/ast-objects/Python/Python-ast.c Log: add missing INCREFs in ctor. Modified: python/branches/ast-objects/Parser/asdl_c.py ============================================================================== --- python/branches/ast-objects/Parser/asdl_c.py (original) +++ python/branches/ast-objects/Parser/asdl_c.py Wed Nov 30 23:57:06 2005 @@ -213,8 +213,12 @@ emit("if (result == NULL)", 1) emit("return NULL;", 2) for argtype, argname, opt in args: + if argtype == "PyObject*": + emit("Py_INCREF(%s);" % argname, 1) emit("result->%s = %s;" % (argname, argname), 1) for argtype, argname, opt in attrs: + if argtype == "PyObject*": + emit("Py_INCREF(%s);" % argname, 1) emit("result->_base.%s = %s;" % (argname, argname), 1) emit("return (PyObject*)result;", 1) emit("}") Modified: python/branches/ast-objects/Python/Python-ast.c ============================================================================== --- python/branches/ast-objects/Python/Python-ast.c (original) +++ python/branches/ast-objects/Python/Python-ast.c Wed Nov 30 23:57:06 2005 @@ -54,6 +54,7 @@ struct _Module *result = PyObject_New(struct _Module, &Py_Module_Type); if (result == NULL) return NULL; + Py_INCREF(body); result->body = body; return (PyObject*)result; } @@ -116,6 +117,7 @@ struct _Interactive *result = PyObject_New(struct _Interactive, &Py_Interactive_Type); if (result == NULL) return NULL; + Py_INCREF(body); result->body = body; return (PyObject*)result; } @@ -178,6 +180,7 @@ struct _Expression *result = PyObject_New(struct _Expression, &Py_Expression_Type); if (result == NULL) return NULL; + Py_INCREF(body); result->body = body; return (PyObject*)result; } @@ -240,6 +243,7 @@ struct _Suite *result = PyObject_New(struct _Suite, &Py_Suite_Type); if (result == NULL) return NULL; + Py_INCREF(body); result->body = body; return (PyObject*)result; } @@ -348,9 +352,13 @@ struct _FunctionDef *result = PyObject_New(struct _FunctionDef, &Py_FunctionDef_Type); if (result == NULL) return NULL; + Py_INCREF(name); result->name = name; + Py_INCREF(args); result->args = args; + Py_INCREF(body); result->body = body; + Py_INCREF(decorators); result->decorators = decorators; result->_base.lineno = lineno; return (PyObject*)result; @@ -417,8 +425,11 @@ struct _ClassDef *result = PyObject_New(struct _ClassDef, &Py_ClassDef_Type); if (result == NULL) return NULL; + Py_INCREF(name); result->name = name; + Py_INCREF(bases); result->bases = bases; + Py_INCREF(body); result->body = body; result->_base.lineno = lineno; return (PyObject*)result; @@ -484,6 +495,7 @@ struct _Return *result = PyObject_New(struct _Return, &Py_Return_Type); if (result == NULL) return NULL; + Py_INCREF(value); result->value = value; result->_base.lineno = lineno; return (PyObject*)result; @@ -547,6 +559,7 @@ struct _Delete *result = PyObject_New(struct _Delete, &Py_Delete_Type); if (result == NULL) return NULL; + Py_INCREF(targets); result->targets = targets; result->_base.lineno = lineno; return (PyObject*)result; @@ -610,7 +623,9 @@ struct _Assign *result = PyObject_New(struct _Assign, &Py_Assign_Type); if (result == NULL) return NULL; + Py_INCREF(targets); result->targets = targets; + Py_INCREF(value); result->value = value; result->_base.lineno = lineno; return (PyObject*)result; @@ -675,8 +690,11 @@ struct _AugAssign *result = PyObject_New(struct _AugAssign, &Py_AugAssign_Type); if (result == NULL) return NULL; + Py_INCREF(target); result->target = target; + Py_INCREF(op); result->op = op; + Py_INCREF(value); result->value = value; result->_base.lineno = lineno; return (PyObject*)result; @@ -742,8 +760,11 @@ struct _Print *result = PyObject_New(struct _Print, &Py_Print_Type); if (result == NULL) return NULL; + Py_INCREF(dest); result->dest = dest; + Py_INCREF(values); result->values = values; + Py_INCREF(nl); result->nl = nl; result->_base.lineno = lineno; return (PyObject*)result; @@ -810,9 +831,13 @@ struct _For *result = PyObject_New(struct _For, &Py_For_Type); if (result == NULL) return NULL; + Py_INCREF(target); result->target = target; + Py_INCREF(iter); result->iter = iter; + Py_INCREF(body); result->body = body; + Py_INCREF(orelse); result->orelse = orelse; result->_base.lineno = lineno; return (PyObject*)result; @@ -879,8 +904,11 @@ struct _While *result = PyObject_New(struct _While, &Py_While_Type); if (result == NULL) return NULL; + Py_INCREF(test); result->test = test; + Py_INCREF(body); result->body = body; + Py_INCREF(orelse); result->orelse = orelse; result->_base.lineno = lineno; return (PyObject*)result; @@ -946,8 +974,11 @@ struct _If *result = PyObject_New(struct _If, &Py_If_Type); if (result == NULL) return NULL; + Py_INCREF(test); result->test = test; + Py_INCREF(body); result->body = body; + Py_INCREF(orelse); result->orelse = orelse; result->_base.lineno = lineno; return (PyObject*)result; @@ -1013,8 +1044,11 @@ struct _Raise *result = PyObject_New(struct _Raise, &Py_Raise_Type); if (result == NULL) return NULL; + Py_INCREF(type); result->type = type; + Py_INCREF(inst); result->inst = inst; + Py_INCREF(tback); result->tback = tback; result->_base.lineno = lineno; return (PyObject*)result; @@ -1081,8 +1115,11 @@ struct _TryExcept *result = PyObject_New(struct _TryExcept, &Py_TryExcept_Type); if (result == NULL) return NULL; + Py_INCREF(body); result->body = body; + Py_INCREF(handlers); result->handlers = handlers; + Py_INCREF(orelse); result->orelse = orelse; result->_base.lineno = lineno; return (PyObject*)result; @@ -1148,7 +1185,9 @@ struct _TryFinally *result = PyObject_New(struct _TryFinally, &Py_TryFinally_Type); if (result == NULL) return NULL; + Py_INCREF(body); result->body = body; + Py_INCREF(finalbody); result->finalbody = finalbody; result->_base.lineno = lineno; return (PyObject*)result; @@ -1213,7 +1252,9 @@ struct _Assert *result = PyObject_New(struct _Assert, &Py_Assert_Type); if (result == NULL) return NULL; + Py_INCREF(test); result->test = test; + Py_INCREF(msg); result->msg = msg; result->_base.lineno = lineno; return (PyObject*)result; @@ -1278,6 +1319,7 @@ struct _Import *result = PyObject_New(struct _Import, &Py_Import_Type); if (result == NULL) return NULL; + Py_INCREF(names); result->names = names; result->_base.lineno = lineno; return (PyObject*)result; @@ -1341,7 +1383,9 @@ struct _ImportFrom *result = PyObject_New(struct _ImportFrom, &Py_ImportFrom_Type); if (result == NULL) return NULL; + Py_INCREF(module); result->module = module; + Py_INCREF(names); result->names = names; result->_base.lineno = lineno; return (PyObject*)result; @@ -1406,8 +1450,11 @@ struct _Exec *result = PyObject_New(struct _Exec, &Py_Exec_Type); if (result == NULL) return NULL; + Py_INCREF(body); result->body = body; + Py_INCREF(globals); result->globals = globals; + Py_INCREF(locals); result->locals = locals; result->_base.lineno = lineno; return (PyObject*)result; @@ -1473,6 +1520,7 @@ struct _Global *result = PyObject_New(struct _Global, &Py_Global_Type); if (result == NULL) return NULL; + Py_INCREF(names); result->names = names; result->_base.lineno = lineno; return (PyObject*)result; @@ -1536,6 +1584,7 @@ struct _Expr *result = PyObject_New(struct _Expr, &Py_Expr_Type); if (result == NULL) return NULL; + Py_INCREF(value); result->value = value; result->_base.lineno = lineno; return (PyObject*)result; @@ -1827,7 +1876,9 @@ struct _BoolOp *result = PyObject_New(struct _BoolOp, &Py_BoolOp_Type); if (result == NULL) return NULL; + Py_INCREF(op); result->op = op; + Py_INCREF(values); result->values = values; result->_base.lineno = lineno; return (PyObject*)result; @@ -1892,8 +1943,11 @@ struct _BinOp *result = PyObject_New(struct _BinOp, &Py_BinOp_Type); if (result == NULL) return NULL; + Py_INCREF(left); result->left = left; + Py_INCREF(op); result->op = op; + Py_INCREF(right); result->right = right; result->_base.lineno = lineno; return (PyObject*)result; @@ -1959,7 +2013,9 @@ struct _UnaryOp *result = PyObject_New(struct _UnaryOp, &Py_UnaryOp_Type); if (result == NULL) return NULL; + Py_INCREF(op); result->op = op; + Py_INCREF(operand); result->operand = operand; result->_base.lineno = lineno; return (PyObject*)result; @@ -2024,7 +2080,9 @@ struct _Lambda *result = PyObject_New(struct _Lambda, &Py_Lambda_Type); if (result == NULL) return NULL; + Py_INCREF(args); result->args = args; + Py_INCREF(body); result->body = body; result->_base.lineno = lineno; return (PyObject*)result; @@ -2089,7 +2147,9 @@ struct _Dict *result = PyObject_New(struct _Dict, &Py_Dict_Type); if (result == NULL) return NULL; + Py_INCREF(keys); result->keys = keys; + Py_INCREF(values); result->values = values; result->_base.lineno = lineno; return (PyObject*)result; @@ -2154,7 +2214,9 @@ struct _ListComp *result = PyObject_New(struct _ListComp, &Py_ListComp_Type); if (result == NULL) return NULL; + Py_INCREF(elt); result->elt = elt; + Py_INCREF(generators); result->generators = generators; result->_base.lineno = lineno; return (PyObject*)result; @@ -2219,7 +2281,9 @@ struct _GeneratorExp *result = PyObject_New(struct _GeneratorExp, &Py_GeneratorExp_Type); if (result == NULL) return NULL; + Py_INCREF(elt); result->elt = elt; + Py_INCREF(generators); result->generators = generators; result->_base.lineno = lineno; return (PyObject*)result; @@ -2284,6 +2348,7 @@ struct _Yield *result = PyObject_New(struct _Yield, &Py_Yield_Type); if (result == NULL) return NULL; + Py_INCREF(value); result->value = value; result->_base.lineno = lineno; return (PyObject*)result; @@ -2347,8 +2412,11 @@ struct _Compare *result = PyObject_New(struct _Compare, &Py_Compare_Type); if (result == NULL) return NULL; + Py_INCREF(left); result->left = left; + Py_INCREF(ops); result->ops = ops; + Py_INCREF(comparators); result->comparators = comparators; result->_base.lineno = lineno; return (PyObject*)result; @@ -2415,10 +2483,15 @@ struct _Call *result = PyObject_New(struct _Call, &Py_Call_Type); if (result == NULL) return NULL; + Py_INCREF(func); result->func = func; + Py_INCREF(args); result->args = args; + Py_INCREF(keywords); result->keywords = keywords; + Py_INCREF(starargs); result->starargs = starargs; + Py_INCREF(kwargs); result->kwargs = kwargs; result->_base.lineno = lineno; return (PyObject*)result; @@ -2486,6 +2559,7 @@ struct _Repr *result = PyObject_New(struct _Repr, &Py_Repr_Type); if (result == NULL) return NULL; + Py_INCREF(value); result->value = value; result->_base.lineno = lineno; return (PyObject*)result; @@ -2549,6 +2623,7 @@ struct _Num *result = PyObject_New(struct _Num, &Py_Num_Type); if (result == NULL) return NULL; + Py_INCREF(n); result->n = n; result->_base.lineno = lineno; return (PyObject*)result; @@ -2612,6 +2687,7 @@ struct _Str *result = PyObject_New(struct _Str, &Py_Str_Type); if (result == NULL) return NULL; + Py_INCREF(s); result->s = s; result->_base.lineno = lineno; return (PyObject*)result; @@ -2675,8 +2751,11 @@ struct _Attribute *result = PyObject_New(struct _Attribute, &Py_Attribute_Type); if (result == NULL) return NULL; + Py_INCREF(value); result->value = value; + Py_INCREF(attr); result->attr = attr; + Py_INCREF(ctx); result->ctx = ctx; result->_base.lineno = lineno; return (PyObject*)result; @@ -2742,8 +2821,11 @@ struct _Subscript *result = PyObject_New(struct _Subscript, &Py_Subscript_Type); if (result == NULL) return NULL; + Py_INCREF(value); result->value = value; + Py_INCREF(slice); result->slice = slice; + Py_INCREF(ctx); result->ctx = ctx; result->_base.lineno = lineno; return (PyObject*)result; @@ -2809,7 +2891,9 @@ struct _Name *result = PyObject_New(struct _Name, &Py_Name_Type); if (result == NULL) return NULL; + Py_INCREF(id); result->id = id; + Py_INCREF(ctx); result->ctx = ctx; result->_base.lineno = lineno; return (PyObject*)result; @@ -2874,7 +2958,9 @@ struct _List *result = PyObject_New(struct _List, &Py_List_Type); if (result == NULL) return NULL; + Py_INCREF(elts); result->elts = elts; + Py_INCREF(ctx); result->ctx = ctx; result->_base.lineno = lineno; return (PyObject*)result; @@ -2939,7 +3025,9 @@ struct _Tuple *result = PyObject_New(struct _Tuple, &Py_Tuple_Type); if (result == NULL) return NULL; + Py_INCREF(elts); result->elts = elts; + Py_INCREF(ctx); result->ctx = ctx; result->_base.lineno = lineno; return (PyObject*)result; @@ -3109,8 +3197,11 @@ struct _Slice *result = PyObject_New(struct _Slice, &Py_Slice_Type); if (result == NULL) return NULL; + Py_INCREF(lower); result->lower = lower; + Py_INCREF(upper); result->upper = upper; + Py_INCREF(step); result->step = step; return (PyObject*)result; } @@ -3175,6 +3266,7 @@ struct _ExtSlice *result = PyObject_New(struct _ExtSlice, &Py_ExtSlice_Type); if (result == NULL) return NULL; + Py_INCREF(dims); result->dims = dims; return (PyObject*)result; } @@ -3237,6 +3329,7 @@ struct _Index *result = PyObject_New(struct _Index, &Py_Index_Type); if (result == NULL) return NULL; + Py_INCREF(value); result->value = value; return (PyObject*)result; } @@ -3299,8 +3392,11 @@ struct _comprehension *result = PyObject_New(struct _comprehension, &Py_comprehension_Type); if (result == NULL) return NULL; + Py_INCREF(target); result->target = target; + Py_INCREF(iter); result->iter = iter; + Py_INCREF(ifs); result->ifs = ifs; return (PyObject*)result; } @@ -3365,8 +3461,11 @@ struct _excepthandler *result = PyObject_New(struct _excepthandler, &Py_excepthandler_Type); if (result == NULL) return NULL; + Py_INCREF(type); result->type = type; + Py_INCREF(name); result->name = name; + Py_INCREF(body); result->body = body; return (PyObject*)result; } @@ -3432,9 +3531,13 @@ struct _arguments *result = PyObject_New(struct _arguments, &Py_arguments_Type); if (result == NULL) return NULL; + Py_INCREF(args); result->args = args; + Py_INCREF(vararg); result->vararg = vararg; + Py_INCREF(kwarg); result->kwarg = kwarg; + Py_INCREF(defaults); result->defaults = defaults; return (PyObject*)result; } @@ -3500,7 +3603,9 @@ struct _keyword *result = PyObject_New(struct _keyword, &Py_keyword_Type); if (result == NULL) return NULL; + Py_INCREF(arg); result->arg = arg; + Py_INCREF(value); result->value = value; return (PyObject*)result; } @@ -3564,7 +3669,9 @@ struct _alias *result = PyObject_New(struct _alias, &Py_alias_Type); if (result == NULL) return NULL; + Py_INCREF(name); result->name = name; + Py_INCREF(asname); result->asname = asname; return (PyObject*)result; }