File: eGenix-mx-Extensions.html

package info (click to toggle)
egenix-mx-base 2.0.6-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,028 kB
  • ctags: 4,762
  • sloc: ansic: 14,965; python: 11,739; sh: 313; makefile: 117
file content (1613 lines) | stat: -rw-r--r-- 54,542 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
<!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">BASE package</A> <BR> &nbsp; &nbsp; (
	    <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="#History-mxBASE">History</A> :
	    <A HREF="#Download-mxBASE"><B>Download</B></A>
	    ) <BR>
	    <A HREF="#mxCOMMERCIAL">COMMERCIAL package</A> <BR>  &nbsp; &nbsp; (
	    <A HREF="#mxODBC">mxODBC</A> :
	    <A HREF="#History-mxCOMMERCIAL">History</A> :
	    <A HREF="#BuyLicenses"><B>Buy Licenses</B></A>  :
	    <A HREF="#BlackAdder"><B>Special Offer</B></A> :
	    <A HREF="#Download-mxCOMMERCIAL"><B>Download</B></A>
	    ) <BR>
	    <A HREF="#mxEXPERIMENTAL">EXPERIMENTAL package</A> <BR>  &nbsp; &nbsp; (
	    <A HREF="#mxNumber">mxNumber</A> :
	    <A HREF="#mxTidy">mxTidy</A> :
	    <A HREF="#mxURL">mxURL</A> :
	    <A HREF="#mxUID">mxUID</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>
	     &nbsp; <FONT COLOR="#FF0000"></FONT> &nbsp;
	  </SMALL>
	</TD>
    </TABLE>
    <HR SIZE=1 NOSHADE WIDTH="100%">

    <A NAME="Introduction">
      
    <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">
      
    <H3>Overview</H3>

    <UL>

      <P>
	mxODBC, mxDateTime and all other mx packages are 
	maintained by my new company <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="#mxCOMMERCIAL">eGenix.com
	mx COMMERCIAL package</A> which currently only contains the <A
	HREF="#mxODBC">mxODBC package</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 one of the other packages. <P>

	</UL>
	<P>
	  The packages are covered by the <A
	  HREF="mxLicense.html#Public">eGenix.com Public License</A>
	  and/or the <A HREF="mxLicense.html#Commercial">eGenix.com
	  Commercial License</A>. 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">
      
    <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 Package</B></A>:

	      </TD></TR>
	    
	    <TR><TD> </TD></TR>

	    <TR><TD>

		<UL>
		    <SMALL>
		      <A HREF="mxDateTime.html">mxDateTime</A> - Generic Date/Time Datatypes <BR>
		      <A HREF="mxTextTools.html">mxTextTools</A> - Fast Text Processing Tools <BR>
		      <A HREF="mxStack.html">mxStack</A> - Fast and Memory-Efficient Stack Datatype <BR>
		      <A HREF="mxTools.html">mxTools</A> - Collection of Additional Builtins  <BR>
		      <A HREF="mxProxy.html">mxProxy</A> - Generic Object Proxy & Weak Reference Datatype <BR>
		      <A HREF="mxBeeBase.html">mxBeeBase</A> - On-disk B+Tree Database Construction Kit <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="#mxCOMMERCIAL" style="text-decoration:none;"><B>eGenix.com mx COMMERCIAL Package</B></A>:

	      </TD></TR>
	    
	    <TR><TD> </TD></TR>

	    <TR><TD>

		<UL>
		    <SMALL>
		      <A HREF="mxODBC.html">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-mxCOMMERCIAL"><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 Package</B></A>:

	      </TD></TR>
	    
	    <TR><TD> </TD></TR>

	    <TR><TD>

		<UL>
		    <SMALL>
		      <A HREF="mxURL.html">mxURL</A> - Efficient Storage and Management of URL/URI Information <BR>
		      <A HREF="mxUID.html">mxUID</A> - Create and Manage Unique IDs </BR>
		      <A HREF="mxNumber.html">mxNumber</A> - Interface to GNU MP's High Precision Numerics <BR>
		      <A HREF="mxTidy.html">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>

    <HR SIZE=1 NOSHADE WIDTH="100%">

    <H3>eGenix.com mx Extensions - BASE Package</H3>

    <DIV ALIGN=RIGHT>
      <SMALL>
	&nbsp; <FONT COLOR="#FF0000">Version 2.0.5</FONT> &nbsp;
      </SMALL>
    </DIV>

    <UL>

	<P>
	  The eGenix.com mx BASE package 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 Version 1.0.0</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 package:

    <A NAME="mxDateTime">

    <H4><A HREF="mxDateTime.html">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.70
	  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">

    <H4><A HREF="mxTextTools.html">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">

    <H4><A HREF="mxStack.html">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">

    <H4><A HREF="mxTools.html">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">

    <H4><A HREF="mxProxy.html">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">

    <H4><A HREF="mxBeeBase.html">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="Download-mxBASE">

    <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 Version 1.0.0</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:
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5.win32-py1.5.exe">egenix-mx-base-2.0.5.win32-py1.5.exe (Windows installer, Python 1.5.2)</A>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5.win32-py2.0.exe">egenix-mx-base-2.0.5.win32-py2.0.exe (Windows installer, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5.win32-py2.1.exe">egenix-mx-base-2.0.5.win32-py2.1.exe (Windows installer, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5.win32-py2.2.exe">egenix-mx-base-2.0.5.win32-py2.2.exe (Windows installer, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5.win32-py2.3.exe">egenix-mx-base-2.0.5.win32-py2.3.exe (Windows installer, Python 2.3.x)</A> <BR>
	      </UL>

	      <P> Linux:
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py1.5_1.i386.rpm">egenix-mx-base-2.0.5-py1.5_1.i386.rpm (Binary RPM, i386, Python 1.5.2)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.0_1.i386.rpm">egenix-mx-base-2.0.5-py2.0_1.i386.rpm (Binary RPM, i386, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.1_1.i386.rpm">egenix-mx-base-2.0.5-py2.1_1.i386.rpm (Binary RPM, i386, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.2_1.i386.rpm">egenix-mx-base-2.0.5-py2.2_1.i386.rpm (Binary RPM, i386, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.3_1.i386.rpm">egenix-mx-base-2.0.5-py2.3_1.i386.rpm (Binary RPM, i386, Python 2.3.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py1.5_1.src.rpm">egenix-mx-base-2.0.5-py1.5_1.src.rpm (Source RPM, src, Python 1.5.2)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.0_1.src.rpm">egenix-mx-base-2.0.5-py2.0_1.src.rpm (Source RPM, src, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.1_1.src.rpm">egenix-mx-base-2.0.5-py2.1_1.src.rpm (Source RPM, src, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.2_1.src.rpm">egenix-mx-base-2.0.5-py2.2_1.src.rpm (Source RPM, src, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5-py2.3_1.src.rpm">egenix-mx-base-2.0.5-py2.3_1.src.rpm (Source RPM, src, Python 2.3.x)</A> <BR>
	      </UL>

	      <P>
		All Platforms (source distribution):
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5.zip">egenix-mx-base-2.0.5.zip (all platforms, C compiler, 1.5.2, 2.0 - 2.3.x)</A> 
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-base-2.0.5.tar.gz">egenix-mx-base-2.0.5.tar.gz (all platforms, C compiler, 1.5.2, 2.0 - 2.3.x)</A> <BR>
	      </UL>

	      <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 /usr/.  If
		  you want to install the RPMs into e.g. /usr/local/,
		  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>

	      </UL>

	    </TD></TR>
	</TABLE>
	
    </UL>

    <A NAME="Install-mxBASE">

    <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
	  /usr/ not /usr/local/ !

	<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-mxBASE">

    <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.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">

    <HR SIZE=1 NOSHADE WIDTH="100%">

    <H3>eGenix.com mx Extensions - COMMERCIAL Package</H3>

    <DIV ALIGN=RIGHT>
      <SMALL>
	&nbsp; <FONT COLOR="#FF0000">Version 2.0.6</FONT> &nbsp;
      </SMALL>
    </DIV>

    <UL>

	<P>
	  The eGenix.com mx COMMERCIAL package contains the commercial
	  parts of the eGenix.com mx Extension series. They are
	  shipped under the new <A
	  HREF="mxLicense.html#Commercial">eGenix.com Commercial
	  License Agreement Version 1.0.0</A>. This license allows use
	  of the software in non-commercial environment without fee or
	  royalty, but <a href="#BuyLicenses"><b>requires buying
	  licenses for commercial use or
	  redistribution</b></a>. Please contact <A
	  HREF="mailto:licenses@egenix.com">licenses@egenix.com</A>
	  for details about redistribution terms.

	<P>
	  Note that <B>evaluation</B> of the eGenix.com mx COMMERCIAL
	  package in commercial environments is possible during the
	  first 30 days after initial installation, so that you can
	  test the software thoroughly before making the decision to
	  buy the license or to stop using the software.

	<P>
	  The package comes with <B>full source code</B>, providing
	  you with the benefit of being able to dive into the details
	  of the implementation or to extend/adapt the functionality
	  to your needs.

	<A NAME="BlackAdder">

	<P>
	<TABLE CELLPADDING="5" CELLSPACING="0">

	  <TR><TD COLSPAN="2" BGCOLOR="#DDDDDD">
	      <FONT COLOR="#660000"><B>Special Offer</B></FONT>
	    </TD></TR>

	  <TR><TD BGCOLOR="#EEEEEE">

	      <TABLE CELLPADDING="10">
		<TR><TD>

		    <P>
		      <B>theKompany.com</B> has licensed this package
		      for inclusion in their brand new Qt-based
		      <B>Python IDE BlackAdder</B>. It allows
		      developing portable GUI-based database
		      applications which run on Windows and Linux
		      platforms without any change to the source code.

		    <P>
		      BlackAdder includes a <B>1 CPU license</B> for
		      this package at no extra cost, so you may want
		      to check out their great new product. Click on
		      the image to the right to go directly to
		      theKompany.com's secure online shop.

		  </TD></TR>
		</TABLE>
	    
	    </TD>
	    <TD ALIGN="RIGHT" BGCOLOR="#EEEEEE">
<!--
	      <form ACTION="https://www.thekompany.com/products/order/catalog.php3" METHOD="POST" TARGET="theKompanyShop">
		<input type="hidden" name="LinkSource" value="mxODBC">
		<INPUT TYPE="image" NAME="submit" VALUE="submit"
		  SRC="kompanyorder.gif" BORDER="0" ALT="Order" TITLE="Click here go to
		  theKompany.com's online shop">
	      </form>
-->
              <A HREF="https://www.thekompany.com/products/" TARGET="theKompanyShop"><IMG SRC="kompanyorder.gif" BORDER="0" ALT="Click here go to theKompany.com's online shop"></A>

	    </TD></TR>
	</TABLE>
	  
	<P>
	  The following subpackage is included in the COMMERCIAL package:

    <A NAME="mxODBC">

    <H4><A HREF="mxODBC.html">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">

    <H4>Downloads</H4>
    
    <UL>
      
	<TABLE BGCOLOR="#EEEEEE" CELLPADDING="5">
	  <TR><TD>

	      <P>
		<B>IMPORTANT:</B>

	      <P>
		By downloading, installing or using
		<I>egenix-mx-commercial package</I>, you agree to the
		terms and conditions set forth in the <A
		HREF="mxLicense.html#Commercial">eGenix.com Commercial
		License Agreement Version 1.0.0</A>. 
	      
	      <P>
		<B>Prerequisites:</B> <BR> 

		The COMMERCIAL package is based on the <A
		HREF="#Download-mxBASE">eGenix.com mx BASE package</A>
		which has to be installed prior to installing the
		COMMERCIAL 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>
		    <table border="1" cellpadding="5">
			<tr>
			  <td>

			    <B>Commercial Use:</B> <BR> 
			    
			    Users in commercial environments may use
			    this package for an <b>evaluation period
			    of 30 days</b> starting with the day of
			    initial installation. After this period,
			    commercial users must either <A
			    HREF="#BuyLicenses">buy licenses from
			    eGenix.com</A> for continued use or
			    uninstall the package.
    
			  </td>
			</tr>
		    </table>

	      <P>
		Windows:
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6.win32-py1.5.exe">egenix-mx-commercial-2.0.6.win32-py1.5.exe (Windows installer, Python 1.5.2)</A>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6.win32-py2.0.exe">egenix-mx-commercial-2.0.6.win32-py2.0.exe (Windows installer, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6.win32-py2.1.exe">egenix-mx-commercial-2.0.6.win32-py2.1.exe (Windows installer, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6.win32-py2.2.exe">egenix-mx-commercial-2.0.6.win32-py2.2.exe (Windows installer, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6.win32-py2.3.exe">egenix-mx-commercial-2.0.6.win32-py2.3.exe (Windows installer, Python 2.3.x)</A> <BR>
	      </UL>

	      <P> Linux:
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py1.5_1.i386.rpm">egenix-mx-commercial-2.0.6-py1.5_1.i386.rpm (Binary RPM, i386, Python 1.5.2)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.0_1.i386.rpm">egenix-mx-commercial-2.0.6-py2.0_1.i386.rpm (Binary RPM, i386, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.1_1.i386.rpm">egenix-mx-commercial-2.0.6-py2.1_1.i386.rpm (Binary RPM, i386, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.2_1.i386.rpm">egenix-mx-commercial-2.0.6-py2.2_1.i386.rpm (Binary RPM, i386, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.3_1.i386.rpm">egenix-mx-commercial-2.0.6-py2.3_1.i386.rpm (Binary RPM, i386, Python 2.3.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py1.5_1.src.rpm">egenix-mx-commercial-2.0.6-py1.5_1.src.rpm (Source RPM, src, Python 1.5.2)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.0_1.src.rpm">egenix-mx-commercial-2.0.6-py2.0_1.src.rpm (Source RPM, src, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.1_1.src.rpm">egenix-mx-commercial-2.0.6-py2.1_1.src.rpm (Source RPM, src, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.2_1.src.rpm">egenix-mx-commercial-2.0.6-py2.2_1.src.rpm (Source RPM, src, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6-py2.3_1.src.rpm">egenix-mx-commercial-2.0.6-py2.3_1.src.rpm (Source RPM, src, Python 2.3.x)</A> <BR>
	      </UL>

	      <P>
		All Platforms (source distribution):
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6.zip">egenix-mx-commercial-2.0.6.zip (all platforms, C compiler, Python 1.5.2, 2.0 - 2.3.x)</A> 
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-commercial-2.0.6.tar.gz">egenix-mx-commercial-2.0.6.tar.gz (all platforms, C compiler, Python 1.5.2, 2.0 - 2.3.x)</A> <BR>
	      </UL>

	      <P>
		<B>Notes:</B> 

	      <P>
	      <UL>
		<LI>
		  The <B>Windows installer</B> only includes the
		  <CODE>mx.ODBC.Windows</CODE> subpackage as this it
		  the only one relevant 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>) 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).
		  <P>

		<LI>
		  If you want to interface directly to an ODBC driver
		  using one of the other subpackages, please download
		  the source version and proceed as described in the
		  package documentation. Be warned though, that this
		  is not a simple task and requires much knowledge
		  about C programming, the C compiler and ODBC at the
		  C level. eGenix.com will also make precompiled
		  versions of other subpackages available if there is
		  demand.
		  <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">

    <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-commercial-xxxx.rpm</CODE> will install the
	  package and <CODE>rpm -e egenix-mx-commercial-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-mx-commercial-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 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>

    <A NAME="BuyLicenses">

    <H4>Buying Commercial Use Licenses</H4>

    <UL>

	<P>
	  Starting with mxODBC version 2.0.0, commercial use is no
	  longer free of charge.  In order to fund the continued
	  development of mxODBC and the other Open Source packages in
	  the mx Extension Series, I had to put a moderate license fee
	  on mxODBC -- the previous MySQL-style license model just
	  didn't work out.

	<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>
		Pricing is USD 75.00 for a 1-CPU license, for 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 have added a <I>Developer CPU
		license</I> which allows redistribution of mxODBC as
		part of products built using the developer
		license. The Developer CPU license costs USD 1,250.00
		per developer CPU.

	      <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 maintained by my
	  company eGenix.com Software GmbH, Langenfeld in Germany. To
	  buy licenses, please visit our secure <A
	  HREF="http://shop.egenix.com/"><b>eGenix.com
	  Online Shop</b></A> which is powered by our partner <A
	  HREF="http://www.shareit.com/">ShareIT.com</A> (a service of
	  the Element 5 AG, Cologne, Germany). Payment options include
	  credit card, bank/wire transfer, check and cash, billed in
	  many different currencies including US dollars and 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>.  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">

    <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 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.

	</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">
      
    <HR SIZE=1 NOSHADE WIDTH="100%">

    <H3>eGenix.com mx Extensions - EXPERIMENTAL Package</H3>

    <DIV ALIGN=RIGHT>
      <SMALL>
	&nbsp; <FONT COLOR="#FF0000">Version 0.8.0</FONT> &nbsp;
      </SMALL>
    </DIV>

    <UL>

	<P>
	  The eGenix.com mx EXPERIMENTAL package 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 Version 1.0.0</A>, the <A
	  HREF="mxLicense.html#Commercial">eGenix.com Commercial
	  License Agreement Version 1.0.0</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 package:

    <A NAME="mxNumber">

    <H4><A HREF="mxNumber.html">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 Version 1.0.0</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">

    <H4><A HREF="mxTidy.html">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="mxURL">

    <H4><A HREF="mxURL.html">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">

    <H4><A HREF="mxUID.html">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-mxEXPERIMENTAL">

    <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 package is based on the 
		<A HREF="#Download-mxBASE">eGenix.com mx
		BASE package</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:
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.win32-py1.5.exe">egenix-mx-experimental-0.8.0.win32-py1.5.exe (Windows installer, Python 1.5.2)</A>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.win32-py2.0.exe">egenix-mx-experimental-0.8.0.win32-py2.0.exe (Windows installer, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.win32-py2.1.exe">egenix-mx-experimental-0.8.0.win32-py2.1.exe (Windows installer, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.win32-py2.2.exe">egenix-mx-experimental-0.8.0.win32-py2.2.exe (Windows installer, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.win32-py2.3.exe">egenix-mx-experimental-0.8.0.win32-py2.3.exe (Windows installer, Python 2.3.x)</A> <BR>
	      </UL>

	      <P> Linux:
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py1.5_1.i386.rpm">egenix-mx-experimental-0.8.0-py1.5_1.i386.rpm (Binary RPM, i386, Python 1.5.2)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.0_1.i386.rpm">egenix-mx-experimental-0.8.0-py2.0_1.i386.rpm (Binary RPM, i386, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.1_1.i386.rpm">egenix-mx-experimental-0.8.0-py2.1_1.i386.rpm (Binary RPM, i386, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.2_1.i386.rpm">egenix-mx-experimental-0.8.0-py2.2_1.i386.rpm (Binary RPM, i386, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.3_1.i386.rpm">egenix-mx-experimental-0.8.0-py2.3_1.i386.rpm (Binary RPM, i386, Python 2.3.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py1.5_1.src.rpm">egenix-mx-experimental-0.8.0-py1.5_1.src.rpm (Source RPM, src, Python 1.5.2)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.0_1.src.rpm">egenix-mx-experimental-0.8.0-py2.0_1.src.rpm (Source RPM, src, Python 2.0.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.1_1.src.rpm">egenix-mx-experimental-0.8.0-py2.1_1.src.rpm (Source RPM, src, Python 2.1.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.2_1.src.rpm">egenix-mx-experimental-0.8.0-py2.2_1.src.rpm (Source RPM, src, Python 2.2.x)</A> <BR>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0-py2.3_1.src.rpm">egenix-mx-experimental-0.8.0-py2.3_1.src.rpm (Source RPM, src, Python 2.3.x)</A> <BR>
	      </UL>

	      <P>
		All Platforms (source distribution):
	      <UL>
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.zip">egenix-mx-experimental-0.8.0.zip (all platforms, C compiler, 1.5.2, 2.0 - 2.3.x)</A> 
		<LI> <A HREF="http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.tar.gz">egenix-mx-experimental-0.8.0.tar.gz (all platforms, C compiler, 1.5.2, 2.0 - 2.3.x)</A> <BR>
	      </UL>

	    </TD></TR>
	</TABLE>
	
    </UL>

    <A NAME="Install-mxEXPERIMENTAL">

    <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">

    <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.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 package (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">

    <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 for
	  USD/EUR 150.00 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">eGenix.com Information
	  Desk</A>.

    </UL>

    <A NAME="Trademark"></A>

    <HR WIDTH="100%">
    <CENTER><FONT SIZE=-1>
	
	&copy; 1997-2000, Copyright by Marc-Andr&eacute; Lemburg; All
	Rights Reserved. mailto: <A
	HREF="mailto:mal@lemburg.com">mal@lemburg.com</A>
	<BR>
	&copy; 2000-2003, 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 Marc-Andre
	Lemburg and eGenix.com GmbH.  

      </FONT></CENTER>

  </BODY>
</HTML>