Commit 942ca9b9 authored by SVN-Git Migration's avatar SVN-Git Migration

Imported Upstream version 1.2.99

parent 81bacb14
@call "c:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
@echo on
rem figure out where we are
for %%I in ( %0\..\.. ) do set WORKDIR=%%~fI
......@@ -8,6 +5,8 @@ set PY_MAJ=2
if not "%1" == "" set PY_MAJ=%1
set PY_MIN=3
if not "%2" == "" set PY_MIN=%2
set BUILD_TYPE=Release
if not "%3" == "" set BUILD_TYPE=%3
rem Save CWD
pushd .
......@@ -22,14 +21,14 @@ if exist ..\..\ReleaseEngineering\win32-%COMPILER%\software-versions.cmd call ..
set PYCXX=%WORKDIR%\Import\pycxx_%PYCXX_VER%
set OPENSSL=%TARGET%\openssl-%OPENSSL_VER%
set SUBVERSION=%TARGET%\subversion-%SVN_VER%
set APR=%TARGET%\httpd-%HTTPD_VER%\srclib
set APR=%SUBVERSION%
set PY=c:\python%PY_MAJ%%PY_MIN%
set PYLIB=python%PY_MAJ%%PY_MIN%
set PYTHONPATH=%WORKDIR%\Source
set PYTHON=%PY%\python.exe
rem Need python and DB4 on the path
PATH %PY%;%SUBVERSION%\db4-win32\bin;%SUBVERSION%\Release\subversion\svnadmin;%APR%\apr\Release;%APR%\apr-util\Release;%APR%\apr-iconv\Release;%PATH%
PATH %PY%;%SUBVERSION%\db4-win\bin;%SUBVERSION%\db4-win\lib;%SUBVERSION%\svn-win32-libintl\bin;%SUBVERSION%\%BUILD_TYPE%\subversion\svnadmin;%SUBVERSION%\%BUILD_TYPE%\subversion\svnversion;%SUBVERSION%\%BUILD_TYPE%\subversion\clients\cmdline;%APR%\apr\%BUILD_TYPE%;%APR%\apr-util\%BUILD_TYPE%;%APR%\apr-iconv\%BUILD_TYPE%;%PATH%
rem prove the python version selected
python -c "import sys;print 'Info: Python Version',sys.version"
......
MAJOR=1
MINOR=2
MINOR=3
PATCH=0
BUILD=0
......@@ -3,10 +3,10 @@ BUILD_TYPE=Release
build: all test kit
all:
cd ..\Source && msdev pysvn.dsw /make "pysvn - Win32 $(BUILD_TYPE)"
cd ..\Source && msdev /useenv pysvn.dsw /make "pysvn - Win32 $(BUILD_TYPE)"
clean:
cd ..\Source && msdev pysvn.dsw /make "pysvn - Win32 $(BUILD_TYPE)" /clean
cd ..\Source && msdev /useenv pysvn.dsw /make "pysvn - Win32 $(BUILD_TYPE)" /clean
cd ..\Tests && $(MAKE) -f win32.mak clean
cd ..\kit\Win32 && $(MAKE) clean
......
......@@ -3,10 +3,11 @@ BUILD_TYPE=Release
build: all test kit
all:
cd ..\Source && devenv pysvn.sln /build "$(BUILD_TYPE)" /project "pysvn"
cd ..\Source && devenv pysvn.sln /useenv /build "$(BUILD_TYPE)" /project "pysvn"
clean:
cd ..\Source && devenv pysvn.sln /clean "$(BUILD_TYPE)" /project "pysvn"
cd ..\Source && devenv pysvn.sln /useenv /clean "$(BUILD_TYPE)" /project "pysvn"
cd ..\Tests && $(MAKE) -f win32.mak clean
cd ..\kit\Win32 && $(MAKE) clean
kit:
......
......@@ -55,12 +55,12 @@ directory without adding its contents.</p>
<pre>import pysvn
client = pysvn.Client()
#check out the current version of the pysvn project
client.checkout('svn://localhost/example/trunk',
'~/examples/pysvn')
client.checkout('http://localhost/example/trunk',
'./examples/pysvn')
#check out revision 11 of the pysvn project
client.checkout('svn://localhost/example/trunk',
'~/examples/pysvn-11',
pysvn.Revision(pysvn.opt_revision_kind.number, 11))
client.checkout('http://localhost/example/trunk',
'./examples/pysvn-11',
revision=pysvn.Revision(pysvn.opt_revision_kind.number, 11))
</pre><p>
This example creates a working copy of the example project in the
directory examples/pysvn. This project is used in the remaining
......@@ -69,7 +69,7 @@ examples.</p>
<h3>Add a file or directory to the repository</h3>
<pre>import pysvn
# write a file foo.txt
f = open('~/examples/pysvn/foo.txt', 'w')
f = file('./examples/pysvn/foo.txt', 'w')
f.write('Sample versioned file via pithon\n')
f.close()
client = pysvn.Client()
......@@ -111,7 +111,7 @@ directories that need to be committed as a unit.</p>
<h3>Discard changes in the working copy</h3>
<pre>import pysvn
# edit the file foo.txt
f = open('./examples/pysvn/foo.txt', 'w')
f = file('./examples/pysvn/foo.txt', 'w')
f.write('This change will never be seen\n')
f.close()
#discard the edits
......@@ -178,7 +178,7 @@ print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.unversio
Generating a diff or patch</h2>
<pre>import pysvn
client = pysvn.Client()
diff_text = client.diff('.')
diff_text = client.diff('./tmp-file-prefix-', '.')
</pre>
<h2>Determining the repository URL</h2>
......
......@@ -300,43 +300,43 @@ True if subversion is to use the username and password.
<td><a href="#pysvn_client_get_auto_props">get_auto_props</a></td>
<td><a href="#pysvn_client_import_">import_</a></td>
<td><a href="#pysvn_client_info">info</a></td>
<td><a href="#pysvn_client_is_url">is_url</a></td>
<td><a href="#pysvn_client_info">info2</a></td>
</tr>
<tr>
<td><a href="#pysvn_client_is_url">is_url</a></td>
<td><a href="#pysvn_client_log">log</a></td>
<td><a href="#pysvn_client_lock">lock</a></td>
<td><a href="#pysvn_client_ls">ls</a></td>
<td><a href="#pysvn_client_merge">merge</a></td>
<td><a href="#pysvn_client_mkdir">mkdir</a></td>
<td><a href="#pysvn_client_move">move</a></td>
<td><a href="#pysvn_client_proplist">proplist</a></td>
<td><a href="#pysvn_client_propget">propget</a></td>
</tr>
<tr bgcolor="#e0e0e0">
<td><a href="#pysvn_client_proplist">proplist</a></td>
<td><a href="#pysvn_client_propget">propget</a></td>
<td><a href="#pysvn_client_propset">propset</a></td>
<td><a href="#pysvn_client_propdel">propdel</a></td>
<td><a href="#pysvn_client_relocate">relocate</a></td>
<td><a href="#pysvn_client_remove">remove</a></td>
<td><a href="#pysvn_client_resolved">resolved</a></td>
<td><a href="#pysvn_client_revert">revert</a></td>
<td><a href="#pysvn_client_revproplist">revproplist</a></td>
</tr>
<tr>
<td><a href="#pysvn_client_revert">revert</a></td>
<td><a href="#pysvn_client_revproplist">revproplist</a></td>
<td><a href="#pysvn_client_revpropget">revpropget</a></td>
<td><a href="#pysvn_client_revpropset">revpropset</a></td>
<td><a href="#pysvn_client_revpropdel">revpropdel</a></td>
<td><a href="#pysvn_client_set_auth_cache">set_auth_cache</a></td>
<td><a href="#pysvn_client_set_auto_props">set_auto_props</a></td>
<td><a href="#pysvn_client_status">status</a></td>
<td><a href="#pysvn_client_switch">switch</a></td>
</tr>
<tr bgcolor="#e0e0e0">
<td><a href="#pysvn_client_status">status</a></td>
<td><a href="#pysvn_client_switch">switch</a></td>
<td><a href="#pysvn_client_unlock">unlock</a></td>
<td><a href="#pysvn_client_update">update</a></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
......@@ -382,27 +382,6 @@ cat( url_or_path,
Return the contents of url_or_path for the specified revision as a string, file_text.
</p>
<h4><a name="pysvn_client_checkout"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.checkout</a></h4>
<pre>
revision = \
checkout( url,
path,
recurse=True,
revision=pysvn.Revision( opt_revision_kind.head ) )
</pre>
<p>
checkout the repository at url into the location specified by path.
Set recurse to True to recursively check out a directory's children.
Specify a revision to check out a particular version of the source tree.</p>
<p>checkout returns a pysvn.Revision containing the number of the checked out revision.
</p>
<h4><a name="pysvn_client_cleanup"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.cleanup</a></h4>
<pre>
cleanup( path )
</pre>
<p>
Clean up any locks in the working copy at path. Usually such locks are the result of a failed or interrupted operation.
</p>
<h4><a name="pysvn_client_checkin"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.checkin</a></h4>
<pre>
revision = \
......@@ -419,6 +398,25 @@ checkin the files in the path_list to the repository with the specifed log_messa
Set recurse to True to recursively checkin a directory's children with the same log message.
</p>
<p>checkin returns a pysvn.Revision containing the number of the checked in revision.</p>
<h4><a name="pysvn_client_checkout"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.checkout</a></h4>
<pre>
revision = \
checkout( url,
path,
recurse=True,
revision=pysvn.Revision( opt_revision_kind.head ) )
</pre>
<p>
checkout the repository at url into the location specified by path.
Set recurse to True to recursively check out a directory's children.
Specify a revision to check out a particular version of the source tree.</p>
<p>checkout returns a pysvn.Revision containing the number of the checked out revision.
Note: Subversion seems to return 0 rather then the actual revision.
Use a notify callback and record the revision reported for the <a href="#pysvn">pysvn</a>.wc_notify_action.update_completed event.
This is what the svn command does.
</p>
<h4><a name="pysvn_client_copy"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.copy</a></h4>
<pre>
copy( src_url_or_path,
......@@ -440,6 +438,15 @@ if the src_path is a URL otherwise to pysvn.Revision( opt_revision_kind.working
</p>
<p>If the destination is a URL the <a href="#pysvn_client_callback_get_log_message">client_get_log_message</a>
callback must be implemented to return a log message.
<h4><a name="pysvn_client_cleanup"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.cleanup</a></h4>
<pre>
cleanup( path )
</pre>
<p>
Clean up any locks in the working copy at path. Usually such locks are the result of a failed or interrupted operation.
</p>
<h4><a name="pysvn_client_diff"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.diff</a></h4>
<pre>
......@@ -511,12 +518,60 @@ Commit an unversioned file or tree into the repository.
Parent directories are created as necessary in the repository.
</p>
<p>import_ returns a pysvn.Revision containing the number of the checked in revision.</p>
<h4><a name="pysvn_client_info"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.info</a></h4>
<pre>
entry = info( path )
</pre>
<p>return information on path as a <a href="#entry">Entry</a> object.</p>
<h4><a name="pysvn_client_info2"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.info2</a></h4>
<pre>
entry_list = \
info2( url_or_path,
revision=pysvn.Revision( opt_revision_kind.unspecified ),
peg_revision=pysvn.Revision( opt_revision_kind.unspecified ),
recurse=True )
</pre>
<p>return information on url_or_path as a list of (path, info_dict) tuples.</p>
<p>The info_dict contains:
<ul>
<li>URL - URL or path
<li>rev - pysvn.<a href="#pysvn_revision">Revision</a> or None
<li>kind - kind of path
<li>repos_root_URL - string
<li>repos_UUID - string
<li>last_changed_rev - pysvn.<a href="#pysvn_revision">Revision</a> or None
<li>last_changed_date - time or None
<li>last_changed_author - string or None
<li>lock - None or dictionary containing:
<ul>
<li>path - string
<li>token - string or None
<li>owner - string or None
<li>comment - string or None
<li>is_dav_comment - true if is DAV comment
<li>creation_date - time or None
</ul>
<li>wc_info - None or dictionary containing:
<ul>
<li>schedule - pysvn.wc_schedule or None
<li>copyfrom_url - string or None
<li>copyfrom_rev - pysvn.<a href="#pysvn_revision">Revision</a> or None
<li>text_time - time or None
<li>prop_time - time or None
<li>checksum - string or None
<li>conflict_old - string or None
<li>conflict_new - string or None
<li>conflict_wrk - string or None
<li>prejfile - string or None
</ul>
</ul>
<p>Note: The info2 command is only available with svn 1.2.0 or later</p>
<h4><a name="pysvn_client_is_url"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.is_url</a></h4>
<pre>
rc = \
......@@ -524,6 +579,15 @@ is_url( url )
</pre>
<p>return True if the url is a known subversion url.</p>
<h4><a name="pysvn_client_lock"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.lock</a></h4>
<pre>
lock( url_or_path, lock_comment, force=False )
</pre>
<p>
lock the url_or_path with lock_comment. Set force to True to override any lock held by another user.
</p>
<p>Note: The lock command is only available with svn 1.2.0 or later</p>
<h4><a name="pysvn_client_log"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.log</a></h4>
<pre>
log_messages = \
......@@ -804,6 +868,16 @@ switch( path,
<li>Reconnect the working copy when the repository URL has changed.
</ol>
</p>
<h4><a name="pysvn_client_unlock"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.unlock</a></h4>
<pre>
unlock( url_or_path, force=False )
</pre>
<p>
unlock the url_or_path. Set force to True to unlock any lock held by another user.
</p>
<p>Note: The unlock command is only available with svn 1.2.0 or later</p>
<h4><a name="pysvn_client_update"><a href="#pysvn">pysvn</a>.<a href="#pysvn_client">Client</a>.update</a></h4>
<pre>
revision = \
......
This diff is collapsed.
......@@ -15,21 +15,20 @@ code {background-color: #dddddd; }
<p>To build pysvn you will require:</p>
<ul>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=3180">PyCXX V5.3.3</a>
<li><a href="http://subversion.tigris.org">subversion</a> 1.x.x</a>
<li><a href="http://subversion.tigris.org">subversion</a> 1.1.x or 1.2.x
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=3180">PyCXX V5.3.4</a> which is included in the pysvn source kit.
</ul>
<h3>Building on win32</h3>
<p>These instructions assume you have Microsoft Visual C++ 6.0 to compile the code
and <a href="http://www.jrsoftware.org/">INNO</a> 4.0.10 to create the installation kit.</p>
<p>Note: you must build with MSVC6 as python 2.3 was built with that version.</p>
<p>MSVC 2003.NET is not expected to work until there is a version of python
built with VC++ 2003.NET released (issues of C runtime compatibility).</p>
<p>Note: You must build with MSVC 6.0 as python 2.3 and earlier was built with that version.</p>
<p>Note: You must build with MSVC 2003.NET for python 2.4 or later.</p>
<ol>
<li>build subversion (tested with 1.0.0 to 1.0.6 and 1.1.0 to 1.1.3)
<li>build subversion (tested with SVN 1.1.4 and SVN 1.2.3)
<li>fetch and expand the pysvn source code into <em>extdir</em>
<li>Expand pycxx_5_3_3.tar.gz into <em>extdir</em>\Import
<li>Expand pycxx_5_3_4.tar.gz into <em>extdir</em>\Import if not using a source kit
<li>edit Builder\builder_custom_init.cmd to match the locations of the sources.
<li><code>cd Builder</code>
<li><code>builder_custom_init.cmd</code>
......@@ -43,16 +42,16 @@ built with VC++ 2003.NET released (issues of C runtime compatibility).</p>
<li><code>nmake -f win32.mak install</code>
</ol>
<h3>Building on unix systems.</h3>
<h3>Building on unix and Mac OS X systems.</h3>
<ol>
<li>build subversion (tested with 1.0.0 to 1.0.6 and 1.1.0 to 1.1.3)
<li>Install subversion
<li>get the pysvn source code
<li><code>tar xzf pycxx_5_3_3.tar.gz</code> into <em>extdir</em>/Import
<li>cd Source
<li><code>tar xzf pycxx_5_3_4.tar.gz</code> into <em>extdir</em>/Import if not using a source kit
<li><code>cd Source</code>
<li>Create the Makefile using <code>python setup.py configure</code>
<li><code>make</code>
<li>cd Tests
<li><code>cd Tests</code>
<li>Test pysvn by running <code>make -f unix.mak PYTHON=<em>path-to-python-to-use</em></code>
</ol>
......
#ifndef __PyCXX_config_hh__
#define __PyCXX_config_hh__
//
// Microsoft VC++ 6.0 has no traits
//
#if defined( _MSC_VER )
# define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
#elif defined( __GNUC__ )
# if __GNUC__ >= 3
# define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
# else
# define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 0
#endif
//
// Assume all other compilers do
//
#else
// Macros to deal with deficiencies in compilers
# define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
#endif
#if STANDARD_LIBRARY_HAS_ITERATOR_TRAITS
# define random_access_iterator_parent(itemtype) std::iterator<std::random_access_iterator_tag,itemtype,int>
#else
# define random_access_iterator_parent(itemtype) std::random_access_iterator<itemtype, int>
#endif
//
// Which C++ standard is in use?
//
#if defined( _MSC_VER )
# if _MSC_VER <= 1200
// MSVC++ 6.0
# define PYCXX_ISO_CPP_LIB 0
# define STR_STREAM <strstream>
# define TEMPLATE_TYPENAME class
# else
# define PYCXX_ISO_CPP_LIB 1
# define STR_STREAM <sstream>
# define TEMPLATE_TYPENAME typename
# endif
#elif defined( __GNUC__ )
# if __GNUC__ >= 3
# define PYCXX_ISO_CPP_LIB 1
# define STR_STREAM <sstream>
# define TEMPLATE_TYPENAME typename
# else
# define PYCXX_ISO_CPP_LIB 0
# define STR_STREAM <strstream>
# define TEMPLATE_TYPENAME class
# endif
#endif
#if PYCXX_ISO_CPP_LIB
# define STR_STREAM <sstream>
# define OSTRSTREAM ostringstream
# define EXPLICIT_TYPENAME typename
# define EXPLICIT_CLASS class
# define TEMPLATE_TYPENAME typename
#else
# define STR_STREAM <strstream>
# define OSTRSTREAM ostrstream
# define EXPLICIT_TYPENAME
# define EXPLICIT_CLASS
# define TEMPLATE_TYPENAME class
#endif
#endif // __PyCXX_config_hh__
//----------------------------------*-C++-*----------------------------------//
// Copyright 1998 The Regents of the University of California.
// All rights reserved. See LEGAL.LLNL for full text and disclaimer.
//---------------------------------------------------------------------------//
#ifndef __CXX_Exception_h
#define __CXX_Exception_h
#include "Python.h"
#include "CXX/Version.hxx"
#include "CXX/Config.hxx"
#include "CXX/IndirectPythonInterface.hxx"
#include <string>
#include <iostream>
// This mimics the Python structure, in order to minimize confusion
namespace Py
{
class ExtensionExceptionType;
class Object;
class Exception
{
public:
Exception( ExtensionExceptionType &exception, const std::string& reason );
Exception( ExtensionExceptionType &exception, Object &reason );
explicit Exception ()
{}
Exception (const std::string& reason)
{
PyErr_SetString (Py::_Exc_RuntimeError(), reason.c_str());
}
Exception (PyObject* exception, const std::string& reason)
{
PyErr_SetString (exception, reason.c_str());
}
Exception (PyObject* exception, Object &reason);
void clear() // clear the error
// technically but not philosophically const
{
PyErr_Clear();
}
};
// Abstract
class StandardError: public Exception
{
protected:
explicit StandardError()
{}
};
class LookupError: public StandardError
{
protected:
explicit LookupError()
{}
};
class ArithmeticError: public StandardError
{
protected:
explicit ArithmeticError()
{}
};
class EnvironmentError: public StandardError
{
protected:
explicit EnvironmentError()
{}
};
// Concrete
class TypeError: public StandardError
{
public:
TypeError (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_TypeError(),reason.c_str());
}
};
class IndexError: public LookupError
{
public:
IndexError (const std::string& reason)
: LookupError()
{
PyErr_SetString (Py::_Exc_IndexError(), reason.c_str());
}
};
class AttributeError: public StandardError
{
public:
AttributeError (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_AttributeError(), reason.c_str());
}
};
class NameError: public StandardError
{
public:
NameError (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_NameError(), reason.c_str());
}
};
class RuntimeError: public StandardError
{
public:
RuntimeError (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_RuntimeError(), reason.c_str());
}
};
class SystemError: public StandardError
{
public:
SystemError (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_SystemError(),reason.c_str());
}
};
class KeyError: public LookupError
{
public:
KeyError (const std::string& reason)
: LookupError()
{
PyErr_SetString (Py::_Exc_KeyError(),reason.c_str());
}
};
class ValueError: public StandardError
{
public:
ValueError (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_ValueError(), reason.c_str());
}
};
class OverflowError: public ArithmeticError
{
public:
OverflowError (const std::string& reason)
: ArithmeticError()
{
PyErr_SetString (Py::_Exc_OverflowError(), reason.c_str());
}
};
class ZeroDivisionError: public ArithmeticError
{
public:
ZeroDivisionError (const std::string& reason)
: ArithmeticError()
{
PyErr_SetString (Py::_Exc_ZeroDivisionError(), reason.c_str());
}
};
class FloatingPointError: public ArithmeticError
{
public:
FloatingPointError (const std::string& reason)
: ArithmeticError()
{
PyErr_SetString (Py::_Exc_FloatingPointError(), reason.c_str());
}
};
class MemoryError: public StandardError
{
public:
MemoryError (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_MemoryError(), reason.c_str());
}
};
class SystemExit: public StandardError
{
public:
SystemExit (const std::string& reason)
: StandardError()
{
PyErr_SetString (Py::_Exc_SystemExit(),reason.c_str());
}
};
}// Py
#endif
This diff is collapsed.
#ifndef __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
#define __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
#include <Python.h>
namespace Py
{
bool InitialisePythonIndirectInterface();
//
// Wrap Exception variables as function calls
//
PyObject * _Exc_Exception();
PyObject * _Exc_StandardError();
PyObject * _Exc_ArithmeticError();
PyObject * _Exc_LookupError();
PyObject * _Exc_AssertionError();
PyObject * _Exc_AttributeError();
PyObject * _Exc_EOFError();
PyObject * _Exc_FloatingPointError();
PyObject * _Exc_EnvironmentError();
PyObject * _Exc_IOError();
PyObject * _Exc_OSError();
PyObject * _Exc_ImportError();
PyObject * _Exc_IndexError();
PyObject * _Exc_KeyError();
PyObject * _Exc_KeyboardInterrupt();
PyObject * _Exc_MemoryError();
PyObject * _Exc_NameError();
PyObject * _Exc_OverflowError();
PyObject * _Exc_RuntimeError();
PyObject * _Exc_NotImplementedError();
PyObject * _Exc_SyntaxError();
PyObject * _Exc_SystemError();
PyObject * _Exc_SystemExit();
PyObject * _Exc_TypeError();
PyObject * _Exc_ValueError();
PyObject * _Exc_ZeroDivisionError();
#ifdef MS_WINDOWS