<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <TITLE>eGenix.com mx Extensions for Python</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <STYLE TYPE="text/css"> p { text-align: justify; } ul.indent { } body { } </STYLE> </HEAD> <BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000"> <HR NOSHADE WIDTH="100%"> <H2>eGenix.com mx Extensions for Python</H2> <HR SIZE=1 NOSHADE WIDTH="100%"> <TABLE WIDTH="100%"> <TR> <TD> <SMALL> <A HREF="#mxBASE">eGenix.com mx Base Distribution</A> <BR> ( <A HREF="#mxDateTime">mxDateTime</A> : <A HREF="#mxTextTools">mxTextTools</A> : <A HREF="#mxStack">mxStack</A> : <A HREF="#mxTools">mxTools</A> : <A HREF="#mxProxy">mxProxy</A> : <A HREF="#mxURL">mxURL</A> : <A HREF="#mxUID">mxUID</A> : <A HREF="#History-mxBASE">History</A> : <A HREF="#Download-mxBASE"><B>Download</B></A> ) <BR> <A HREF="#mxODBC">eGenix.com mxODBC Distribution</A> <BR> ( <A HREF="#History-mxODBC">History</A> : <A HREF="#BuyLicenses"><B>Buy Licenses</B></A> : <A HREF="#Download-mxODBC"><B>Download</B></A> ) <BR> <A HREF="#mxEXPERIMENTAL">eGenix.com mx Experimental Distribution</A> <BR> ( <A HREF="#mxNumber">mxNumber</A> : <A HREF="#mxTidy">mxTidy</A> : <A HREF="#History-mxEXPERIMENTAL">History</A> : <A HREF="#Download-mxEXPERIMENTAL"><B>Download</B></A> ) <BR> <A HREF="#Support"><B>Commercial Support</B></A> : <A HREF="" TARGET="_top">Home</A> </SMALL> </TD> <TD ALIGN=RIGHT VALIGN=TOP> <SMALL> <FONT COLOR="#FF0000"></FONT> </SMALL> </TD> </TABLE> <HR SIZE=1 NOSHADE WIDTH="100%"> <A NAME="Introduction"></A> <H3>Introduction</H3> <UL> <P> The <A HREF="http://www.egenix.com/">eGenix.com</A> mx Extensions for Python are a collection of professional quality Python software tools which enhance <A HREF="http://www.python.org/">Python</A>'s usability in many important areas such as ODBC database connectivity, fast text processing, date/time processing and web site programming. <P> The tools have a proven record of being portable across many Unix and Windows platforms, e.g. you can write applications which use an ODBC database on Windows which then run on Unix platforms without change due to the consistent platforms independent interfaces. <P> All of the available packages have shown their stability and usefulness in many mission critical applications and various commercial settings all around the world. <P> The two most well-known packages from the mx Extension Series are <A HREF="#mxDateTime">mxDateTime</A> and <A HREF="#mxODBC">mxODBC</A> providing date/time services and professional ODBC database connectivity on practically all supported Python platforms. These two packages enable database software which is portable not only across platforms, but also across database backends. </UL> <A NAME="Overview"></A> <H3>Overview</H3> <UL> <P> mxODBC, mxDateTime and all other mx packages are maintained by <A HREF="http://www.egenix.com/">eGenix.com Software GmbH, Langenfeld</A> in Germany. This assures the availability of <B><A HREF="#Support">commercial support</A></B>, which is important for companies building applications based on the eGenix.com mx Extensions. <P> <P> All new versions of the eGenix.com mx Extensions use the Python distutils packaging technology to simplify installation and use of the many different subpackages. This is expected to greatly enhance the installation and usage experience of the software. <P> <P> The software is delivered in three download archives: <UL> <LI> the <A HREF="#mxBASE">eGenix.com mx Base package</A> which holds all the Open Source tools from the series and provides the basis for the other add-ons, <P> <LI> the <A HREF="#mxODBC">eGenix.com mxODBC Distribution</A> and <P> <LI> the <A HREF="#mxEXPERIMENTAL">eGenix.com mx Experimental package</A> which we use to test drive new mx extensions before moving them to other distributions. <P> </UL> <P> The packages are covered by the eGenix.com Public License and/or the eGenix.com Commercial License. Details about the licenses can be found on the <A HREF="http://www.egenix.com/files/python/mxLicense.html">eGenix.com License Page</A>. <P> </UL> <A NAME="Packages"></A> <HR SIZE=1 NOSHADE WIDTH="100%"> <H3>Packages</H3> <UL> <P> The following subpackages are included in the eGenix.com mx Extension series, each providing fast and efficient implementations for various application domains. All subpackages live in the <TT>mx</TT> top-level Python package to avoid naming collisions with other Python software. <P> <TABLE BGCOLOR="#EEEEEE" CELLPADDING="5" CELLSPACING="0" BORDER="0" WIDTH="100%"> <TR><TD BGCOLOR="#96c8fa"> <P> <A HREF="#mxBASE" style="text-decoration:none;"><B>eGenix.com mx Base Distribution</B></A>: </TD></TR> <TR><TD> </TD></TR> <TR><TD> <UL> <SMALL> <A HREF="mxDateTime.pdf">mxDateTime</A> - Generic Date/Time Datatypes <BR> <A HREF="mxTextTools.pdf">mxTextTools</A> - Fast Text Processing Tools <BR> <A HREF="mxStack.pdf">mxStack</A> - Fast and Memory-Efficient Stack Datatype <BR> <A HREF="mxTools.pdf">mxTools</A> - Collection of Additional Builtins <BR> <A HREF="mxProxy.pdf">mxProxy</A> - Generic Object Proxy & Weak Reference Datatype <BR> <A HREF="mxBeeBase.pdf">mxBeeBase</A> - On-disk B+Tree Database Construction Kit <BR> <A HREF="mxURL.pdf">mxURL</A> - Efficient Storage and Management of URL/URI Information <BR> <A HREF="mxUID.pdf">mxUID</A> - Create and Manage Unique IDs </BR> <BR> >>> <A HREF="#Download-mxBASE"><B>Download</B></A> <BR> </SMALL> </UL> </TD></TR> <TR><TD BGCOLOR="#FFFFFF"> </TD></TR> <TR><TD BGCOLOR="#96c8fa"> <P> <A HREF="#mxODBC" style="text-decoration:none;"><B>eGenix.com mxODBC Distribution</B></A>: </TD></TR> <TR><TD> </TD></TR> <TR><TD> <UL> <SMALL> <A HREF="mxODBC.pdf">mxODBC</A></B> - Python DB-API compatible ODBC 2.0 - 3.5 database interface; <BR> supports Python 1.5.2 and Unicode for Python 2.0 and later<BR> <BR> >>> <A HREF="#Download-mxODBC"><B>Download</B></A> and <A HREF="#BuyLicenses"><B>Buy Licenses</B></A><BR> </SMALL> </UL> </TD></TR> <TR><TD BGCOLOR="#FFFFFF"> </TD></TR> <TR><TD BGCOLOR="#96c8fa"> <P> <A HREF="#mxEXPERIMENTAL" style="text-decoration:none;"><B>eGenix.com mx Experimental Distribution</B></A>: </TD></TR> <TR><TD> </TD></TR> <TR><TD> <UL> <SMALL> <A HREF="mxNumber.pdf">mxNumber</A> - Interface to GNU MP's High Precision Numerics <BR> <A HREF="mxTidy.pdf">mxTidy</A> - Interface to a library version of HTML Tidy <BR> <BR> >>> <A HREF="#Download-mxEXPERIMENTAL"><B>Download</B></A> <BR> </SMALL> </UL> </TD></TR> </TABLE> <BR><BR> </UL> <A NAME="mxBASE"></A> <HR SIZE=1 NOSHADE WIDTH="100%"> <H3>eGenix.com mx Extensions - Base Distribution</H3> <DIV ALIGN=RIGHT> <SMALL> <FONT COLOR="#FF0000">Version 3.0.0</FONT> </SMALL> </DIV> <UL> <P> The eGenix.com mx Base Distribution contains the Open Source parts of the eGenix.com mx Extension series. They are shipped under the new <A HREF="mxLicense.html#Public">eGenix.com Public License Agreement</A>. This license is an enhanced version of the Python 2.0 license and allows you to use and redistribute the <I>eGenix.com mx BASE</I> package in commercial and non-commercial applications without having to pay a fee or royalties. <P> The following subpackages are included in the Base Distribution: <A NAME="mxDateTime"></A> <H4><A HREF="mxDateTime.pdf">mxDateTime - Generic Date/Time Types</A></H4> <UL> <P> mxDateTime is an extension package that provides three new object types, DateTime, DateTimeDelta and RelativeDateTime, which let you store and handle date/time values in a much more natural way than by using ticks (seconds since 1.1.1970 0:00 UTC; the encoding used by the time module). <P> You can add, subtract and even multiply instances, pickle and copy them and convert the results to strings, COM dates, ticks and some other more esoteric values. In addition, there are several convenient constructors and formatters at hand to greatly simplify dealing with dates and times in real-world applications. <P> In addition to providing an easy-to-use Python interface the package also exports a comfortable C API interface for other extensions to build upon. This is especially interesting for database applications which often have to deal with date/time values (the <A HREF="#mxODBC">mxODBC</A> package is one example of an extension using this interface). </UL> <A NAME="mxTextTools"></A> <H4><A HREF="mxTextTools.pdf">mxTextTools - Fast Text Processing Tools</A></H4> <UL> <P> mxTextTools is an extension package for Python that provides several useful functions and types that implement high-performance text manipulation and searching algorithms in addition to a very flexible and extendable state machine, the Tagging Engine, that allows scanning and processing text based on low-level byte-code "programs" written using Python tuples. It gives you access to the speed of C without the need to do any compile and link steps every time you change the parsing description. <P> Applications include parsing structured text, finding and extracting text (either exact or using translation tables) and recombining strings to form new text. </UL> <A NAME="mxStack"></A> <H4><A HREF="mxStack.pdf">mxStack - Fast and Memory-Efficient Stack Type</A></H4> <UL> <P> mxStack is an extension package that provides a new object type called Stack. It works much like what you would expect from such a type, having .push() and .pop() methods and focusses on obtaining maximum speed at low memory costs. </UL> <A NAME="mxTools"></A> <H4><A HREF="mxTools.pdf">mxTools - Collection of Additional Builtins</A></H4> <UL> <P> mxTools is an extension package that includes a collection of handy functions and objects giving additional functionality in form of new builtins to the Python programmer. <P> The package auto-installs the new functions and objects as builtins upon first import. This means that they become instantely available to all other modules without any further action on your part. Add the line <CODE>import mx.Tools.NewBuiltins</CODE> to your site.py script and they will be available to all users at your site as if they were installed in the Python interpreter itself. </UL> <A NAME="mxProxy"></A> <H4><A HREF="mxProxy.pdf">mxProxy - Generic Proxy Wrapper Type</A></H4> <UL> <P> mxProxy is an extension package that provides a new type that is suitable to implement Bastion like features without the need to use restricted execution environments. <P> The type's main features are <I>secure data encapsulation</I> (the hidden objects are not accessible from Python since they are stored in internal C structures), <I>customizable attribute lookup</I> methods and a <I>cleanup protocol</I> that helps in breaking circular references prior to object deletion. <P> The latest version adds a very interesting new feature: <I>weak references</I> which help you work with circular references in a way that doesn't cause memory leakage in a Python system. </UL> <A NAME="mxBeeBase"></A> <H4><A HREF="mxBeeBase.pdf">mxBeeBase - On-disk B+Tree Based Database Kit</A></H4> <UL> <P> mxBeeBase is a high performance construction kit for disk based indexed databases. It offers components which you can plug together to easily build your own custom mid-sized databases (the current size limit is <CODE>sizeof(long)</CODE> which gives you an address range of around 2GB on 32-bit platforms). <P> The two basic building blocks in mxBeeBase are <I>storage</I> and <I>index</I>. Storage is implemented as variable record length data storage with integrated data protection features, automatic data recovery and locking for multi process access. Indexes use a high performance optimized B+Tree implementation built on top of <A HREF="http://epaperpress.com/">Thomas Niemann</A>'s Cookbook B+Tree implementation. </UL> <A NAME="mxURL"></A> <H4><A HREF="mxURL.pdf">mxURL - An URL Datatype</A></H4> <UL> <P> mxURL provides a new datatype for storing and manipulating URL values as well as a few helpers related to URL building, encoding and decoding. <P> The main intention of the package is to provide an easy to use, fast and lightwheight datatype for Universal Resource Locators (note the W3C now calls these URIs). </UL> <A NAME="mxUID"></A> <H4><A HREF="mxUID.pdf">mxUID - An UID Datatype</A></H4> <UL> <P> mxUID provides a fast mechanism for generating universal identification strings (UIDs). The intent is to make these UIDs unique with high probability in order to serve as object or data set identifiers. <P> A typical use lies in generating session IDs. Other areas where unique IDs play an important role are RPC-implementations, ORBs, etc. </UL> <A NAME="Download-mxBASE"></A></A> <H4>Downloads</H4> <UL> <TABLE BGCOLOR="#EEEEEE" CELLPADDING="5"> <TR><TD> <P> <B>IMPORTANT:</B> <P> By downloading, installing or using the <I>egenix-mx-base package</I>, you agree to the terms and conditions set forth in the <A HREF="mxLicense.html#Public">eGenix.com Public License Agreement</A> which is an Open Source license comparable to the Python license. <P> <B>Commercial Support:</B> <BR> Professional level <A HREF="#Support">support</A> for this package as well as all other mx packages is available directly from the developers at eGenix.com. <P> <B>Consulting:</B> <BR> eGenix.com offers professional consulting services around this package, including customized modifications, help with application design around this package and on-site problem solving. Please contact <a href="mailto:consulting@egenix.com">mailto:consulting@egenix.com</a> for details. <P> <B>Free User Support:</B> <BR> We have created a user mailing list where users can help users. To sign up, please use the <A HREF="http://www.egenix.com/mailman/listinfo/egenix-users">egenix-users</A> mailing list web-interface. You can unsubscribe using the same interface at any time. <p> Windows: <blockquote> <form name="windows" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-base"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="win32"> <select name="python"> <option value="py2.1.exe">Python 2.1 (Installer EXE)</option> <option value="py2.2.exe">Python 2.2 (Installer EXE)</option> <option value="py2.3.exe">Python 2.3 (Installer EXE)</option> <option value="py2.4.exe">Python 2.4 (Installer EXE)</option> <option value="py2.5.msi" selected>Python 2.5 (MSI Installer)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value; return true;"> </form> </blockquote> </p> <p> Linux, 32-bit: <blockquote> <form name="linux32" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-base"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="linux-i686"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Linux, 64-bit: <blockquote> <form name="linux64" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-base"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="linux-x86_64"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> FreeBSD, 32-bit: <blockquote> <form name="freebsd32" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-base"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Mac OS X, PPC + Intel (Universal Binaries): <blockquote> <form name="macosx" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-base"> <input name="version" type="hidden" value="3.0.0"> <select name="platformpython"> <option value="darwin-8.9.0-Power_Macintosh-py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="macosx-10.3-fat-py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="macosx-10.3-fat-py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platformpython.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Solaris, 32-bit: <blockquote> <form name="solaris" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-base"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <P> Source Code: <blockquote> <form name="source" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-base"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="archive"> <option value="zip" selected>Python 2.1 - 2.5 (Source Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.archive.value; return true;"> </form> </blockquote> </p> <P> <B>Notes:</B> <P> <UL> <LI> The <B>Windows installer</B> includes all the binaries necessary to import the extensions with a one particular Python version. Please always download the correct installer for your Python version, otherwise you won't be able to install the packages. <P> <LI> The <B>Linux binary RPMs</B> install to <TT>/usr</TT>. If you want to install the RPMs into a different path <TT>/usr</TT>, then you should fetch the source packages and rebuild them from source. When installing packages for multiple Python versions, be sure to first install the RPM for the oldest Python version and then proceed with the more recent ones (or use the <CODE>--force</CODE> option to install them in any order). <P> <LI> The <B>Prebuilt Distribution</B> is a distutils distribution that comes with pre-compiled C binaries. This allows you to install the package without having to run a C compiler. To install run <tt>python setup.py install</tt> in the prebuilt distribution directory. This will install the packages to your default site packages directory. You may need to have root permissions to complete the installation. <P> <LI> The <B>Source Distribution</B> will install on most platforms that support Python and distutils. To install run <tt>python setup.py install</tt> in the source distribution directory. This will install the packages to your default site packages directory. You may need to have root permissions to complete the installation. <P> </UL> </TD></TR> </TABLE> </UL> <A NAME="Install-mxBASE"></A> <H4>Installation</H4> <UL> <P> On Unix systems supporting the <B>RPM formats</B> the package can be installed using the standard operating system tools, e.g. <CODE>rpm -i egenix-mx-base-xxxx.rpm</CODE> will install the package and <CODE>rpm -e egenix-mx-base-xxxx</CODE> deinstall it. When installing packages for multiple Python versions, be sure to first install the RPM for the oldest Python version and then proceed with the more recent ones (or use the <CODE>--force</CODE> option to install them in any order). Note that the above RPMs install the extensions into <TT>/usr</TT> not <TT>/usr/local</TT> as previous versions did ! <P> On <B>Windows platforms</B> the preferred method for installation is using the the Windows installer, since this doesn't require a C compiler to be installed on the system. Thanks to Thomas Heller the installer also supports uninstall using the standard Windows uninstall procedure. If you have trouble selecting the right Python installation, you can also install the package using e.g. WinZIP -- the installer .exe is a readable ZIP archive. You'll loose the ability to uninstall the package, but at least you can get at the included files. For Python 2.1 and below, unzip into <TT>\Python\Lib</TT>; starting with Python 2.2, unzip into <TT>\Python\Lib\site-packages</TT>. <P> All other platforms can use the <A HREF="http://www.python.org/sigs/distutils-sig/">distutils</A> based installation which allows building and installing the package using the installed Python interpreter and the standard system C compiler. On such a system, unzip the package archive to a temporary directory and then run <CODE>python setup.py install</CODE> to install the package and <CODE>python setup.py uninstall</CODE> to uninstall it again. Documentation about the usage of distutils (which is part of Python since 2.0) is available online at the <A HREF="http://www.python.org/sigs/distutils-sig/doc/">distutils documentation</A> site. </UL> <P> <A NAME="History-mxBASE"></A> <H4>History</H4> <UL> <P> Note that this change log only lists changes to the package in general, not all the changes to the included subpackages. Please refer to the subpackage documentation for more detailed information. <P>Changes from 2.0.5 to 3.0.0: <UL> <LI> Fixed the distutils setup to now allow defining compiler options on the command line using 'python setup.py mx_autoconf -DENABLE_FEATURE install'. <P><LI> Lots of changes in the various sub-packages. See the sub-package documentation for a full list of new features. <P><LI> Added source code encoding markers to those files that need it. <P><LI> Moved mxURL and mxUID from the Experimental Distribution to the Base Distribution. <P><LI> Added better support for Python DEBUG builds. The total reference counting should now also work in case object constructors raise exceptions. <LI> Added Python 2.4 and 2.5 support. </UL> <P>Changes from 2.0.4 to 2.0.5: <UL> <LI> Added Python 2.3 support. </UL> <P>Changes from 2.0.3 to 2.0.4: <UL> <LI> RPMs now install to /usr/ instead of /usr/local/. This change was necessary to resynch to the standard Python RPMs. <P><LI> The mx distutils build system was updated to the latest version. </UL> <P>Changes from 2.0.2 to 2.0.3: <UL> <LI> Some cleanup of assignments to __debug__ which cause warnings in Python 2.1. <P><LI> Added some missing header files. These are needed by third party tools in case they rely on the provided C interfaces. <P><LI> <B>Changed</B> the error class object fullnames to properly include the complete package path. <P><LI> Corrected a bug in the free list management of the various types which showed up when using pymalloc. <P><LI> Prepared the tools for Python 2.2. </UL> <P>Changes from 2.0.1 to 2.0.2: <UL> <LI> Added compiler support for Cygwin. Thanks to Mark Hadfield for pointing out the necessary changes. <P><LI> Reworked the RPM packaging for different Python versions: you can now install the RPMs for different Python versions side-by-side. <P><LI> Updated a few packages, e.g. the mxDateTime package. </UL> <P>Changes from 2.0.0 to 2.0.1: <UL> <LI> Added back .h header files to the mx-subdirectories. Third-party software was relying on these files, but the distutils process did not include them per default. <P><LI> New release for Python 2.1. </UL> </UL> </UL> <P> <A NAME="mxCOMMERCIAL"></A> <A NAME="mxODBC"></A> <HR SIZE=1 NOSHADE WIDTH="100%"> <H3>eGenix.com mxODBC Distribution</H3> <DIV ALIGN=RIGHT> <SMALL> <FONT COLOR="#FF0000">Version 3.0.0</FONT> </SMALL> </DIV> <UL> <P> The eGenix.com mxODBC Distribution contains the commercial mxODBC package of the eGenix.com mx Extension series. It is shipped under the <A HREF="mxLicense.html#Commercial">eGenix.com Commercial License Agreement 1.2.0</A>. This license <a href="#BuyLicenses"><b>requires buying licenses</b></a> in order to be able to use the package.for. Please contact <A HREF="mailto:sales@egenix.com">sales@egenix.com</A> for details. <P> Note that <B>evaluation</B> of the eGenix.com mxODBC package is possible for a period of 30 days. Please request evaluation licenses from eGenix.com by sending an email to the <a href="mailto:sales@egenix.com?subject=mxODBC%20Zope%20DA%20Evaluation%20Request">eGenix.com Sales Team</a> and include the following information: name of the licensee, number of evaluation licenses. </p> <p> We will then send you the requested number of evaluation licenses. The evaluation licenses have a built-in timeout of 30 days, but are otherwise fully functional. </p> <A NAME="mxODBC"></A> <H4><A HREF="mxODBC.pdf">mxODBC - Generic ODBC Interface for Python</A></H4> <UL> <P> mxODBC is an extension package that provides a Python Database API compliant interface to ODBC capable database drivers and managers (supported ODBC versions are 2.0 - 3.5). <P> In addition to the capabilities provided through the standard DB API it also gives access to a rich set of catalog methods which allow you to scan the database for tables, procedures, etc. Furthermore, it uses the mxDateTime package for date/time value interfacing eliminating most of the problems these types normally introduce (other in/output formats are available too). <P> The new version does not only allow you to interface to more than one database from one process, it also comes with <B>support for Unicode</B> (which was added to Python in version 2.0). <P> The source package includes a varity of preconfigured setups for many commonly used databases such as MySQL, Oracle, Informix, Solid and many more. Precompiled versions of the extension for use with the Windows ODBC manager and the Unix iODBC manager are also available. </UL> <A NAME="Download-mxCOMMERCIAL"></A> <A NAME="Download-mxODBC"></A> <H4>Downloads</H4> <UL> <TABLE BGCOLOR="#EEEEEE" CELLPADDING="5"> <TR><TD> <P> <B>IMPORTANT:</B> <P> By downloading, installing or using <I>eGenix.com mxODBC Distribution</I>, you agree to the terms and conditions set forth in the <A HREF="mxLicense.html#Commercial">eGenix.com Commercial License Agreement</A>. <P> <B>Prerequisites:</B> <BR> The mxODBC distribution is based on the <A HREF="#Download-mxBASE">eGenix.com mx Base Distribution</A> which has to be installed prior to installing the mxODBC add-on. <P> <B>Commercial Support:</B> <BR> Professional level <A HREF="#Support">support</A> for this package as well as all other mx packages is available directly from the developers at eGenix.com. <P> <B>Consulting:</B> <BR> eGenix.com offers professional consulting services around this package, including customized modifications, help with application design around this package and on-site problem solving. Please contact <a href="mailto:consulting@egenix.com">mailto:consulting@egenix.com</a> for details. <P> <B>Free User Support:</B> <BR> We have created a user mailing list where users can help users. To sign up, please use the <A HREF="http://www.egenix.com/mailman/listinfo/egenix-users">egenix-users</A> mailing list web-interface. You can unsubscribe using the same interface at any time. <p> Windows: <blockquote> <form name="windows" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mxodbc"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="win32"> <select name="python"> <option value="py2.1.exe">Python 2.1 (Installer EXE)</option> <option value="py2.2.exe">Python 2.2 (Installer EXE)</option> <option value="py2.3.exe">Python 2.3 (Installer EXE)</option> <option value="py2.4.exe">Python 2.4 (Installer EXE)</option> <option value="py2.5.msi" selected>Python 2.5 (MSI Installer)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value; return true;"> </form> </blockquote> </p> <p> Linux, 32-bit: <blockquote> <form name="linux32" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mxodbc"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="linux-i686"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Linux, 64-bit: <blockquote> <form name="linux64" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mxodbc"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="linux-x86_64"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> FreeBSD, 32-bit: <blockquote> <form name="freebsd32" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mxodbc"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Mac OS X, PPC + Intel (Universal Binaries): <blockquote> <form name="macosx" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mxodbc"> <input name="version" type="hidden" value="3.0.0"> <select name="platformpython"> <option value="darwin-8.9.0-Power_Macintosh-py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="macosx-10.3-fat-py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="macosx-10.3-fat-py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platformpython.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Solaris, 32-bit: <blockquote> <form name="solaris" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mxodbc"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <P> <B>Notes:</B> <P> <UL> <LI> The <B>Windows installer</B> only includes the <CODE>mx.ODBC.Windows</CODE> subpackage as this is the only relevant sub-package on Windows. Please always download the correct installer for your Python version, otherwise you won't be able to install the packages. <P> <LI> The <B>Linux binary RPMs</B> only include the subpackages <CODE>mx.ODBC.iODBC</CODE> (<A HREF="http://www.iodbc.org/">iODBC Driver Manager</A> maintained by <A HREF="http://www.openlinksw.com/">OpenLink</A>) and <CODE>mx.ODBC.unixODBC</CODE> (<A HREF="http://www.unixODBC.org/">unixODBC Driver Manager</A>). You normally have these installed on your system if you happen to use an ODBC capable database on your Linux machine. When installing packages for multiple Python versions, be sure to first install the RPM for the oldest Python version and then proceed with the more recent ones (or use the <CODE>--force</CODE> option to install them in any order). Note that the above RPMs install the extensions into <TT>/usr</TT> ! <P> <LI> The <B>Prebuilt Distribution</B> is a distutils distribution that comes with pre-compiled C binaries. This allows you to install the package without having to run a C compiler. To install run <tt>python setup.py install</tt> in the prebuilt distribution directory. This will install the packages to your default site packages directory. You may need to have root permissions to complete the installation. <P> <LI> Please note that redistribution of these files is not allowed. Contact <A HREF="mailto:licenses@egenix.com">licenses@egenix.com</A> for details about redistribution terms. <P> </UL> </TD></TR> </TABLE> </UL> <A NAME="Install-mxCOMMERCIAL"></A> <A NAME="Install-mxODBC"></A> <H4>Installation</H4> <UL> <P> On Unix systems supporting the <B>RPM formats</B> the package can be installed using the standard operating system tools, e.g. <CODE>rpm -i egenix-mxodbc-xxxx.rpm</CODE> will install the package and <CODE>rpm -e egenix-mxodbc-xxxx</CODE> deinstall it. If you don't have both iODBC and unixODBC installed on your system, you should try to run <CODE>rpm -i --nodeps egenix-mxodbc-xxxx.rpm</CODE>. This will skip the dependency checks and forces an install even though RPM cannot find all required libs. <P> On <B>Windows platforms</B> the preferred method for installation is using the Windows installer, since this doesn't require a C compiler to be installed on the system. Thanks to Thomas Heller the installer also supports uninstall using the standard Windows uninstall procedure. If you have trouble selecting the right Python installation, you can also install the package using e.g. WinZIP -- the installer .exe is a readable ZIP archive. You'll loose the ability to uninstall the package, but at least you can get at the included files. For Python 2.1 and below, unzip into <TT>\Python\Lib</TT>; starting with Python 2.2, unzip into <TT>\Python\Lib\site-packages</TT>. <P> All other platforms can use the <A HREF="http://www.python.org/sigs/distutils-sig/">distutils</A> based installation which allows installing the distribution using the installed Python interpreter. On such a system, unzip the package archive to a temporary directory and then run <CODE>python setup.py install</CODE> to install the pre-built package and <CODE>python setup.py uninstall</CODE> to uninstall it again. Documentation about the usage of distutils (which is part of Python since 2.0) is available online at the <A HREF="http://www.python.org/sigs/distutils-sig/doc/">distutils documentation</A> site. </UL> <A NAME="BuyLicenses"></A> <H4>Buying Licenses</H4> <UL> <P> <TABLE BGCOLOR="#EEEEEE" CELLPADDING="5" CELLSPACING="0" BORDER="0"> <TR><TD BGCOLOR="#96c8fa"> <P> <B> License Offerings </B> </TD></TR> <TR><TD> </TD></TR> <TR><TD> <P> <B> End-User </B> <P> Licenses for commercial end-users are available as CPU licenses which allow installing and using mxODBC on one machine. <P> For pricing information and volume discounts, please see the <A HREF="http://shop.egenix.com/"><b>eGenix.com Online Shop</b></A>. We also offer site and corporate licenses; please write to <A HREF="mailto:sales@egenix.com">sales@egenix.com</A> for quotes on these. </TD></TR> <TR><TD> </TD></TR> <TR><TD> <P> <B> Developers </B> <P> For developers we offer a <I>Developer CPU license</I> which allows redistribution of mxODBC as part of products built on the Developer CPU. Please note that in order to benefit from the redistribution terms in that license, you will have to purchase a separate license for each Developer CPU used by the developers in the process of developing the product. <P> For pricing information and volume discounts, please see the <A HREF="http://shop.egenix.com/"><b>eGenix.com Online Shop</b></A>. <P> If you want to redistribute mxODBC as part of a product on a per-CPU basis (rather than on a per-developer basis), we have a special license agreement for this as well. Please send your request to <A HREF="mailto:licenses@egenix.com">licenses@egenix.com</A>. </TD></TR> </TABLE> <P> <B>Ordering</B> <P> mxODBC and all other mx packages are now maintained by my company eGenix.com Software GmbH, Langenfeld in Germany. To buy licenses for commercial use, please visit our secure <B><A HREF="http://shop.egenix.com/">eGenix.com Online Shop</A></B> which is powered by <A HREF="http://www.shareit.com/">ShareIT.com</A>. Payment options include credit card, bank/wire transfer, check and cash billed in either USD (US dollars) or EUR (Euro). <P> When ordering a license, you will receive a license key by <B>email</B> which identifies your license and works as temporary Proof of Authorization for the version you ordered as mentioned in the <A HREF="mxLicense.html#Commercial">eGenix.com Commercial License</A>. <P> When ordering a license, you will receive a license key by <B>email</B> which identifies your license and works as temporary Proof of Authorization for the version you ordered as mentioned in the <A HREF="mxLicense.html#Commercial">eGenix.com Commercial License</A>. After having received the order, eGenix.com will then send you a signed Proof of Authorization within four weeks. <P> For more details on payment options and licensed usage, please check the <A HREF="http://shop.egenix.com/">eGenix.com Online Shop</A> and the <A HREF="mxLicense.html">eGenix.com Licenses</A>. <P> <B>Support</B> <P> Support for the Python mx Extensions is available as well. See the <A HREF="#Support">Support Section</A> of this page for details. <P> Please send support questions regarding the new licenses to <A HREF="mailto:licenses@egenix.com">licenses@egenix.com</A>. <P> If you want to know more about the provided services, please contact the <A HREF="mailto:info@egenix.com">eGenix.com Information Desk</A>. </UL> <P> <A NAME="History-mxCOMMERCIAL"></A> <A NAME="History-mxODBC"></A> <H4>History</H4> <UL> <P> Note that this change log only lists changes to the package in general, not all the changes to the included subpackages. Please refer to the subpackage documentation for more detailed information. <P>Changes from 2.0.6 to 3.0.0: <UL> <LI> The usual bunch of small ODBC driver compatibility fixes for mxODBC. <P><LI> Lots of enhancements in mxODBC. See the mxODBC documentation for details. <P><LI> Fixed a bug in the distutils extension building mechanism which causes the compiler to share object between multiple subpackages. This caused e.g. the unixODBC (which is built after the iODBC package in standard builds) to not use unixODBC, but iODBC instead. <P><LI> <B>Changed</B> the error class object fullnames to properly include the complete package path. <P><LI> Added better support for Python DEBUG builds. The total reference counting should now also work in case object constructors raise exceptions. <LI> Added Python 2.4 and 2.5 support. <P><LI> Renamed the mx Commercial Distribution to mxODBC Distribution as mxODBC is the only package included. </UL> <P>Changes from 2.0.5 to 2.0.6: <UL> <LI> Added Python 2.3. support. </UL> <P>Changes from 2.0.4 to 2.0.5: <UL> <LI> Added full Unicode support for longchar and ntext columns for MS SQL Server and MS Access ODBC drivers. <P><LI> Moved the RPM installation paths from /usr/local to /usr to be compliant to the standard Python RPMs which are made available on python.org. </UL> <P>Changes from 2.0.3 to 2.0.4: <UL> <LI> Enhanced compatiblity to Unicode-aware ODBC drivers such as the latest MS SQL Server and MS Access ODBC drivers. <P><LI> Minor fixes to workaround problems with buggy ODBC drivers. </UL> <P>Changes from 2.0.2 to 2.0.3: <UL> <P><LI> Added compiler support for Cygwin. Thanks to Mark Hadfield for pointing out the necessary changes. <P><LI> Reworked the RPM packaging for different Python versions: you can now install the RPMs for different Python versions side-by-side. </UL> <P>Changes from 2.0.1 to 2.0.2: <UL> <P><LI> New release for Python 2.1. </UL> <P>Changes from 2.0.0 to 2.0.1: <UL> <P><LI> Added work-arounds to aid in connecting to databases using the Windows ODBC manager. </UL> </UL> </UL> <P> <A NAME="mxEXPERIMENTAL"></A> <HR SIZE=1 NOSHADE WIDTH="100%"> <H3>eGenix.com mx Extensions - Experimental Distribution</H3> <DIV ALIGN=RIGHT> <SMALL> <FONT COLOR="#FF0000">Version 3.0.0</FONT> </SMALL> </DIV> <UL> <P> The eGenix.com mx Experimental Distribution contains experimental software which will eventually be integrated into one of the standard eGenix.com mx Extension series packages. <P> The package may contain subpackages which are shipped under the <A HREF="mxLicense.html#Public">eGenix.com Public License Agreement</A>, the <A HREF="mxLicense.html#Commercial">eGenix.com Commercial License Agreement</A> and other licenses such as the Library GNU Public License (LGPL) or MIT licenses. <P> Please note that the software in these packages is still in alpha or beta state and does not meet the quality standards of production quality software. <P> The following subpackages are included in the Experimental Distribution: <A NAME="mxNumber"></A> <H4><A HREF="mxNumber.pdf">mxNumber - Extended Numeric Types</A></H4> <UL> <P> mxNumber is an extension package which provides access to a new set of basic numeric types. <P> The package uses the <A HREF="http://http://www.swox.com/gmp/">GNU Multi-Precision Library (GMP)</A> as basis for providing this functionality at high performance on a wide range of platforms including all Unix and Windows platforms. This library is licensed under the Library GNU Public License (LGPL) which means that it does not have the viral character as the standard GPL does. It usable with software which is not GPL-compatible, such as closed-source commercial software. <P> This mxNumber package is licensed under the <A HREF="mxLicense.html#Public">eGenix.com Public License Agreement</A>; the Windows package also includes a pre-compiled version of the <A HREF="http://http://www.swox.com/gmp/">GNU Multi-Precision Library (GMP)</A> which eGenix.com ported to Windows. The patches needed for porting GMP to Windows are also included in the source package. <P> <B>Note:</B> mxNumber relies on the new coercions features in Python 2.1. Older Python versions are not supported and mxNumber won't run with these versions. </UL> <A NAME="mxTidy"></A> <H4><A HREF="mxTidy.pdf">mxTidy - Interface to HTML Tidy (HTML/XML cleanup tool)</A></H4> <UL> <P> mxTidy provides a Python interface to a thread-safe, library version of the <a href="http://www.w3.org/People/Raggett/tidy/">HTML Tidy</a>. command line tool. <P> HTML Tidy helps you to cleanup coding errors in HTML and XML files and produce well-formed HTML, XHTML or XML as output. This allows you to preprocess web-page for inclusion in XML repositories, prepare broken XML files for validation and also makes it possible to write converters from well-known word processing applications such as MS Word to other structured data representations by using XML as intermediate format. </UL> <A NAME="Download-mxEXPERIMENTAL"></A> <H4>Downloads</H4> <UL> <TABLE BGCOLOR="#EEEEEE" CELLPADDING="5"> <TR><TD> <P> <B>IMPORTANT:</B> <P> By downloading, installing or using the <I>egenix-mx-experimental package</I>, you agree to the terms and conditions set forth by the licenses of the included subpackages (see previous section for details). <P> <B>Prerequisites:</B> <BR> The Experimental Distribution is based on the <A HREF="#Download-mxBASE">eGenix.com mx Base Distribution</A> which has to be installed prior to installing the EXPERIMENTAL add-on package. <P> <B>Commercial Support:</B> <BR> Professional level <A HREF="#Support">support</A> for this package as well as all other mx packages is available directly from the developers at eGenix.com. <P> <B>Consulting:</B> <BR> eGenix.com offers professional consulting services around this package, including customized modifications, help with application design around this package and on-site problem solving. Please contact <a href="mailto:consulting@egenix.com">mailto:consulting@egenix.com</a> for details. <P> <B>Free User Support:</B> <BR> We have created a user mailing list where users can help users. To sign up, please use the <A HREF="http://www.egenix.com/mailman/listinfo/egenix-users">egenix-users</A> mailing list web-interface. You can unsubscribe using the same interface at any time. <p> Windows: <blockquote> <form name="windows" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-experimental"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="win32"> <select name="python"> <option value="py2.1.exe">Python 2.1 (Installer EXE)</option> <option value="py2.2.exe">Python 2.2 (Installer EXE)</option> <option value="py2.3.exe">Python 2.3 (Installer EXE)</option> <option value="py2.4.exe">Python 2.4 (Installer EXE)</option> <option value="py2.5.msi" selected>Python 2.5 (MSI Installer)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value; return true;"> </form> </blockquote> </p> <p> Linux, 32-bit: <blockquote> <form name="linux32" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-experimental"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="linux-i686"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Linux, 64-bit: <blockquote> <form name="linux64" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-experimental"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="linux-x86_64"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> FreeBSD, 32-bit: <blockquote> <form name="freebsd32" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-experimental"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Mac OS X, PPC + Intel (Universal Binaries): <blockquote> <form name="macosx" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-experimental"> <input name="version" type="hidden" value="3.0.0"> <select name="platformpython"> <option value="darwin-8.9.0-Power_Macintosh-py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="darwin-8.9.0-Power_Macintosh-py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="macosx-10.3-fat-py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="macosx-10.3-fat-py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platformpython.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <p> Solaris, 32-bit: <blockquote> <form name="solaris" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-experimental"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="python"> <option value="py2.1_ucs2">Python 2.1 (Prebuilt Distribution as ZIP File)</option> <option value="py2.2_ucs2">Python 2.2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs2">Python 2.3 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.3_ucs4">Python 2.3 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs2">Python 2.4 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.4_ucs4">Python 2.4 UCS4 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs2">Python 2.5 UCS2 (Prebuilt Distribution as ZIP File)</option> <option value="py2.5_ucs4" selected>Python 2.5 UCS4 (Prebuilt Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.platform.value + '-' + form.python.value + '.prebuilt.zip'; return true;"> </form> </blockquote> </p> <P> Source Code: <blockquote> <form name="source" action=""> <input name="baseurl" type="hidden" value="http://downloads.egenix.com/python/"> <input name="product" type="hidden" value="egenix-mx-experimental"> <input name="version" type="hidden" value="3.0.0"> <input name="platform" type="hidden" value="freebsd-6.1-RELEASE-i386"> <select name="archive"> <option value="zip" selected>Python 2.1 - 2.5 (Source Distribution as ZIP File)</option> </select> <input value="download" type="submit" onClick="form.action = form.baseurl.value + form.product.value + '-' + form.version.value + '.' + form.archive.value; return true;"> </form> </blockquote> </p> <P> <B>Notes:</B> <P> <UL> <LI> The <B>Windows installer</B> includes all the binaries necessary to import the extensions with a one particular Python version. Please always download the correct installer for your Python version, otherwise you won't be able to install the packages. <P> <LI> The <B>Linux binary RPMs</B> install to <TT>/usr</TT>. If you want to install the RPMs into a different path <TT>/usr</TT>, then you should fetch the source packages and rebuild them from source. When installing packages for multiple Python versions, be sure to first install the RPM for the oldest Python version and then proceed with the more recent ones (or use the <CODE>--force</CODE> option to install them in any order). <P> <LI> The <B>Prebuilt Distribution</B> is a distutils distribution that comes with pre-compiled C binaries. This allows you to install the package without having to run a C compiler. To install run <tt>python setup.py install</tt> in the prebuilt distribution directory. This will install the packages to your default site packages directory. You may need to have root permissions to complete the installation. <P> <LI> The <B>Source Distribution</B> will install on most platforms that support Python and distutils. To install run <tt>python setup.py install</tt> in the source distribution directory. This will install the packages to your default site packages directory. You may need to have root permissions to complete the installation. <P> </UL> </TD></TR> </TABLE> </UL> <A NAME="Install-mxEXPERIMENTAL"></A> <H4>Installation</H4> <UL> <P> On Unix systems supporting the <B>RPM formats</B> the package can be installed using the standard operating system tools, e.g. <CODE>rpm -i egenix-mx-experimental-xxxx.rpm</CODE> will install the package and <CODE>rpm -e egenix-mx-experimental-xxxx</CODE> deinstall it. When installing packages for multiple Python versions, be sure to first install the RPM for the oldest Python version and then proceed with the more recent ones (or use the <CODE>--force</CODE> option to install them in any order). <P> On <B>Windows platforms</B> the preferred method for installation is using the the Windows installer, since this doesn't require a C compiler to be installed on the system. Thanks to Thomas Heller the installer also support uninstall using the standard Windows uninstall procedure. <P> All other platforms can use the <A HREF="http://www.python.org/sigs/distutils-sig/">distutils</A> based installation which allows building and installing the package using the installed Python interpreter and the standard system C compiler. On such a system, unzip the package archive to a temporary directory and then run <CODE>python setup.py install</CODE> to install the package and <CODE>python setup.py uninstall</CODE> to uninstall it again. Documentation about the usage of distutils (which is part of Python since version 2.0) is available online at the <A HREF="http://www.python.org/sigs/distutils-sig/doc/">distutils documentation</A> site. </UL> <P> <A NAME="History-mxEXPERIMENTAL"></A> <H4>History</H4> <UL> <P> Note that this change log only lists changes to the package in general, not all the changes to the included subpackages. Please refer to the subpackage documentation for more detailed information. <P>Changes from 0.8.0 to 3.0.0: <UL> <LI> <B>Moved</B> mxURL and mxUID into the Base Distribution. <P><LI> Added better support for Python DEBUG builds. The total reference counting should now also work in case object constructors raise exceptions. <P><LI> Synchronized the version number to the Base Distribution. <LI> Added Python 2.4 and 2.5 support. </UL> <P>Changes from 0.7.0 to 0.8.0: <UL> <LI> Added Python 2.3 support. </UL> <P>Changes from 0.6.0 to 0.7.0: <UL> <LI> <B>Changed</B> the error class object fullnames to properly include the complete package path. <P><LI> Fixed a bug in the distutils setup which caused the linking of mxNumber against GMP to be skipped on Unix platforms. Thanks to Keith Briggs for pointing me to this bug. <P><LI> Moved the RPM installation paths from /usr/local to /usr to be compliant to the standard Python RPMs which are made available on python.org. <P><LI> Fixed a UTF-8 related bug in mxTidy. </UL> <P>Changes from 0.5.0 to 0.6.0: <UL> <LI> Added new packages mxURL and mxUID. <P><LI> The package now depends on the Base Distribution (at least the new subpackages mx.URL and mx.UID do). </UL> <P>Changes from 0.4.0 to 0.5.0: <UL> <LI> Added some missing header files. These are needed by third party tools in case they rely on the provided C interfaces. <P><LI> Bugfixes in mxTidy, version 0.2.0. </UL> <P>Changes from 0.3.0 to 0.4.0: <UL> <LI> Added new experimental package mxTidy. <P><LI> Reworked the docs a little and corrected the misnaming of mxNumber (it was called mxNumeric in a few places). <P><LI> Minor tweaks to the mxNumber package. <P><LI> Added some missing header files. These are needed by third party tools in case they rely on the provided C interfaces. </UL> <P>Changes from 0.2.0 to 0.3.0: <UL> <LI> Updated mxNumber to version 0.3.0. <P><LI> Reworked the RPM packaging for different Python versions: you can now install the RPMs for different Python versions side-by-side. </UL> </UL> </UL> <P> <A NAME="Support"></A> <HR SIZE=1 NOSHADE WIDTH="100%"> <H3>Commercial Support</H3> <UL> <P> Commercial email support for all mx packages is now available from my company eGenix.com GmbH, Langenfeld, Germany. <P> Due to popular demand, I have setup a per-incident support service which is based on support tickets. A ticket is valid for one support incident and includes up to one hour of consulting work. Tickets can be bought online from the secure <B><A HREF="http://shop.egenix.com/">eGenix.com Online Shop</A></B> which is powered by <A HREF="http://www.shareit.com/">ShareIT.com</A>. <P> Support for the Python mx Extensions is available as email support only. Support languages are English or German. <P> Please send support questions to <A HREF="mailto:support@egenix.com?subject=%3Cquestion%3E%20(Ref%23%20%3Cyour%20ticket%20order%20ID%20goes%20here%3E)">support@egenix.com</A> together with the order reference ID (the ticket ID) you receive by email when buying tickets in the subject line, e.g. "mxODBC and Sybase (Ref# 667514)". <P> If you want to know more about the provided services, please contact the <A HREF="mailto:info@egenix.com">eGenix.com Information Desk</A>. </UL> <A NAME="Trademark"></A></A> <HR WIDTH="100%"> <CENTER><FONT SIZE=-1> © 1997-2000, Copyright by IKDS Marc-André Lemburg; All Rights Reserved. mailto: <A HREF="mailto:mal@lemburg.com">mal@lemburg.com</A> <BR> © 2000-2007, Copyright by eGenix.com Software GmbH, Langenfeld; All Rights Reserved. mailto: <A HREF="mailto:info@egenix.com">info@egenix.com</A> <BR> Trademarks: "mx Extensions" is a trademark of eGenix.com GmbH. </FONT></CENTER> </BODY> </HTML>