From karl at waclawek.net Wed Jan 7 13:19:22 2004 From: karl at waclawek.net (Karl Waclawek) Date: Wed Jan 7 13:19:29 2004 Subject: [Expat-discuss] Suspend/Resume capability for Expat committed to CVS Message-ID: <00e101c3d54a$c6473f00$9e539696@citkwaclaww2k> After getting no complaints about patch ##835123: Suspend/Resume functionality I finally committed it to CVS. This should be the last new feature added before release 2.0. Please test if interested in the functionality. There are three new API calls, as explained below (taken from header file): /* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return as soon as possible, but some handler call-backs - which would otherwise get lost - may still follow. Examples: endElementHandler() for empty elements when stopped in startElementHandler(), endNameSpaceDeclHandler() when stopped in endElementHandler(), and possibly others. Can be called from most handlers, including DTD related call-backs. Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. Possible error codes: XML_ERROR_SUSPENDED, XML_ERROR_FINISHED. When resumable = XML_TRUE then parsing is suspended, that is, XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. When suspended, parsing can be resumed by calling XML_ResumeParser(). */ XMLPARSEAPI(enum XML_Status) XML_StopParser(XML_Parser parser, XML_Bool resumable); /* Resumes parsing after it has been suspended with XML_StopParser(). Must not be called from within a handler call-back. Returns same status codes as XML_Parse() or XML_ParseBuffer(). Additional error code XML_ERROR_NOT_SUSPENDED possible. */ XMLPARSEAPI(enum XML_Status) XML_ResumeParser(XML_Parser parser); enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED }; typedef struct { enum XML_Parsing parsing; XML_Bool finalBuffer; } XML_ParsingStatus; /* Returns status of parser with respect to being initialized, parsing, finished, or suspended and processing the final buffer. XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED */ XMLPARSEAPI(XML_ParsingStatus) XML_GetParsingStatus(XML_Parser parser); Karl From suresh.soolannagan at bt.com Fri Jan 9 13:50:54 2004 From: suresh.soolannagan at bt.com (suresh.soolannagan@bt.com) Date: Fri Jan 9 13:51:00 2004 Subject: [Expat-discuss] Problem while running the examples outline.c Message-ID: Dear all, I get an error while running outline.c & elements.c on Sun Solaris (SPARC Machine) Getting the following error expat.h:898: warning: `cdecl' attribute directive ignored expat.h:899: warning: `cdecl' attribute directive ignored expat.h:905: warning: `cdecl' attribute directive ignored expat.h:920: warning: `cdecl' attribute directive ignored expat.h:929: warning: `cdecl' attribute directive ignored expat.h:933: warning: `cdecl' attribute directive ignored expat.h:936: warning: `cdecl' attribute directive ignored expat.h:939: warning: `cdecl' attribute directive ignored expat.h:943: warning: `cdecl' attribute directive ignored expat.h:947: warning: `cdecl' attribute directive ignored expat.h:951: warning: `cdecl' attribute directive ignored expat.h:963: warning: `cdecl' attribute directive ignored expat.h:985: warning: `cdecl' attribute directive ignored outline.c:35: warning: `cdecl' attribute directive ignored outline.c:53: warning: `cdecl' attribute directive ignored Undefined first referenced symbol in file XML_GetErrorCode /var/tmp/ccuwaGHs1.o XML_ErrorString /var/tmp/ccuwaGHs1.o XML_ParserCreate /var/tmp/ccuwaGHs1.o XML_GetCurrentLineNumber /var/tmp/ccuwaGHs1.o XML_Parse /var/tmp/ccuwaGHs1.o XML_SetElementHandler /var/tmp/ccuwaGHs1.o ld: fatal: Symbol referencing errors. No output written to a.out First I need to compile the outline.c and elements.c Then I am trying to implement XML using C on HTTP (I am using Apache Web server) Can any one please help me out? Cheers, Suresh From Greg.Martin at TELUS.COM Fri Jan 9 14:49:00 2004 From: Greg.Martin at TELUS.COM (Greg Martin) Date: Fri Jan 9 14:51:28 2004 Subject: [Expat-discuss] Problem while running the examples outline.c Message-ID: The XMLPARSEAPI macro needs to be undefined when you build expat with gcc for Solaris (AIX) too. It's not a problem if you use Sun's compiler. One way to cheat on this is to go into lib/expat.h in the source distro before you build expat and put #define XMLCALL near the top. I guess someone should figure out the correct autoconf macro thingy for this but this will work. -----Original Message----- From: expat-discuss-bounces+greg.martin=telus.com@libexpat.org [mailto:expat-discuss-bounces+greg.martin=telus.com@libexpat.org]On Behalf Of suresh.soolannagan@bt.com Sent: Friday, January 09, 2004 11:51 AM To: expat-discuss@libexpat.org Subject: [Expat-discuss] Problem while running the examples outline.c Dear all, I get an error while running outline.c & elements.c on Sun Solaris (SPARC Machine) Getting the following error expat.h:898: warning: `cdecl' attribute directive ignored expat.h:899: warning: `cdecl' attribute directive ignored expat.h:905: warning: `cdecl' attribute directive ignored expat.h:920: warning: `cdecl' attribute directive ignored expat.h:929: warning: `cdecl' attribute directive ignored expat.h:933: warning: `cdecl' attribute directive ignored expat.h:936: warning: `cdecl' attribute directive ignored expat.h:939: warning: `cdecl' attribute directive ignored expat.h:943: warning: `cdecl' attribute directive ignored expat.h:947: warning: `cdecl' attribute directive ignored expat.h:951: warning: `cdecl' attribute directive ignored expat.h:963: warning: `cdecl' attribute directive ignored expat.h:985: warning: `cdecl' attribute directive ignored outline.c:35: warning: `cdecl' attribute directive ignored outline.c:53: warning: `cdecl' attribute directive ignored Undefined first referenced symbol in file XML_GetErrorCode /var/tmp/ccuwaGHs1.o XML_ErrorString /var/tmp/ccuwaGHs1.o XML_ParserCreate /var/tmp/ccuwaGHs1.o XML_GetCurrentLineNumber /var/tmp/ccuwaGHs1.o XML_Parse /var/tmp/ccuwaGHs1.o XML_SetElementHandler /var/tmp/ccuwaGHs1.o ld: fatal: Symbol referencing errors. No output written to a.out First I need to compile the outline.c and elements.c Then I am trying to implement XML using C on HTTP (I am using Apache Web server) Can any one please help me out? Cheers, Suresh _______________________________________________ Expat-discuss mailing list Expat-discuss@libexpat.org http://mail.libexpat.org/mailman/listinfo/expat-discuss From vivek.aggarwal at scicmp.com Tue Jan 13 01:22:26 2004 From: vivek.aggarwal at scicmp.com (Vivek Aggarwal) Date: Tue Jan 13 11:54:33 2004 Subject: [Expat-discuss] Expat parser on Symbian platform Message-ID: <40038EA2.4C98BCF0@scicmp.com> Hi, I am new on Symbian platform and need to use XML parser on it. I had used expat parser on other platforms. Can it be used on Symbian series 60 platform also. Please send me some information on this. Thanks and Regards Vivek From mpilon at midrivers.com Thu Jan 15 11:37:21 2004 From: mpilon at midrivers.com (Mark Pilon) Date: Thu Jan 15 11:41:27 2004 Subject: [Expat-discuss] DTDs from 10,000 feet, for a novice Message-ID: <4006C1C1.9010901@midrivers.com> Hi, I'm looking to use expat in an implementation ofxhtml-print and am having a hard time putting the pieces together in my head -- I'm new to html/xhtml/xml ... I see that xhtml is html in xml, as specified by a DTD; I've been looking at some browser implementations to see how given DTDs are imported - and that's where I'm stuck. I see that expat can know what namespace a document specifies, but I haven't found where the corresponding DTD is imported into expat [for checking the content of the stream] ... I see how to hook a namespace -specific parser into libexpat but haven't found any examples to show the way. Is there a simple (bare, tiny, imcomplete ...) example of how expat handles different namespaces? I've found the namespace.c example, which identifies the current namespace as parsing progresses, but don't know where to go from there. any perspectives / suggestions gratefully accepted, Mark From gphat at loggerithim.org Fri Jan 16 17:04:13 2004 From: gphat at loggerithim.org (Cory 'G' Watson) Date: Fri Jan 16 17:07:59 2004 Subject: [Expat-discuss] segmentation fault Message-ID: The following perl crashes my mod_perl-ed apache, but seems to point to a bug in libexpat. I'm using Debian's unstable 1.95.6 package. Not sure why they are behind :/ (I've also cc'ed the perl-xml list, JIC) use XML::XPath; my $xp = XML::XPath->new(xml => "Foo"); my $res = $xp->getNodeText("/config/name"); That segfaults my apache every time, but works find when run on the command line. This seems to be caused by libexpat, and here is the gdb backtrace: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 16384 (LWP 20556)] 0x4022e245 in memmove () from /lib/libc.so.6 (gdb) bt #0 0x4022e245 in memmove () from /lib/libc.so.6 #1 0x080e9772 in XML_GetBuffer () #2 0x080e95c0 in XML_Parse () #3 0x4036fe9d in XS_XML__Parser__Expat_ParseString () from /usr/local/lib/perl/5.8.2/auto/XML/Parser/Expat/Expat.so Valgrind's output: ==20558== Invalid write of size 4 ==20558== at 0x4042A245: memmove (in /lib/libc-2.3.2.so) ==20558== by 0x80E9771: XML_GetBuffer (in /usr/local/apache/bin/httpd) ==20558== by 0x80E95BF: XML_Parse (in /usr/local/apache/bin/httpd) ==20558== by 0x423D9E9C: XS_XML__Parser__Expat_ParseString (in /usr/local/lib/perl/5.8.2/auto/XML/Parser/Expat/Expat.so) ==20558== Address 0x0 is not stack'd, malloc'd or free'd ==20558== ==20558== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==20558== Address not mapped to object at address 0x0 ==20558== at 0x4042A245: memmove (in /lib/libc-2.3.2.so) ==20558== by 0x80E9771: XML_GetBuffer (in /usr/local/apache/bin/httpd) ==20558== by 0x80E95BF: XML_Parse (in /usr/local/apache/bin/httpd) ==20558== by 0x423D9E9C: XS_XML__Parser__Expat_ParseString (in /usr/local/lib/perl/5.8.2/auto/XML/Parser/Expat/Expat.so) I saw some errors before I reduced the code that pointed to a memcpy() in growPool, but now I'm seeing this one. Any ideas? Mailman is acting up, so I'm not yet subscribed to libexpat-discuss yet, please cc me. Cory 'G' Watson "The universal aptitude for ineptitude makes any human accomplishment an incredible miracle." - Dr. John Paul Stapp From karl at waclawek.net Fri Jan 16 20:22:43 2004 From: karl at waclawek.net (Karl Waclawek) Date: Fri Jan 16 20:16:46 2004 Subject: [Expat-discuss] segmentation fault References: Message-ID: <001301c3dc98$683cca60$0207a8c0@karl> > The following perl crashes my mod_perl-ed apache, but seems to point to > a bug in libexpat. I'm using Debian's unstable 1.95.6 package. Not > sure why they are behind :/ > > (I've also cc'ed the perl-xml list, JIC) > > use XML::XPath; > > my $xp = XML::XPath->new(xml => " encoding=\"UTF-8\" ?>Foo"); > my $res = $xp->getNodeText("/config/name"); > > That segfaults my apache every time, but works find when run on the > command line. I don't think we have any perl experts on the Expat team. Can you reproduce this problem with a simple C program? Karl From swest.shen at corp.elong.com Sat Jan 17 06:39:23 2004 From: swest.shen at corp.elong.com (swest.shen) Date: Sat Jan 17 06:44:57 2004 Subject: [Expat-discuss] gb2312 encoding Message-ID: <00f601c3dcee$8e240bc0$810aa8c0@swest> hey all, i am new to expat, anyone can tell me how to support gb2312 encoding in = expat? thanks a lot! wesley From swest.shen at corp.elong.com Sat Jan 17 07:59:21 2004 From: swest.shen at corp.elong.com (swest.shen) Date: Sat Jan 17 08:04:53 2004 Subject: [Expat-discuss] gb2312 encoding Message-ID: <011501c3dcf9$b9bd1550$810aa8c0@swest> hi all, i am trying to use expat with xmls in gb2312 encoding. i know i need to = set an unknown encoding handler for the job. however, i don't know how = should i implement the callback function even after i've read the docs. can someone show me some codes on how to use XML_SetUnknownEncodingHandler? ( with multiple bytes encoding) thanks very much, wesley shen From karl at waclawek.net Mon Jan 19 11:00:55 2004 From: karl at waclawek.net (Karl Waclawek) Date: Mon Jan 19 11:01:02 2004 Subject: [Expat-discuss] segmentation fault References: <001301c3dc98$683cca60$0207a8c0@karl> Message-ID: <001001c3dea5$6bd69160$9e539696@citkwaclaww2k> > I tried to reproduce this as straight C, using the backtrace from gdb > as a guide. No dice. I will try building my own libexpat, rather than > using debian's package. It would be nice if we could resolve this issue before the upcoming release (1.95.8 probably), as this is very likely a pre-2.0 release which will then be re-released as 2.0 if no problems are discovered. Karl From nadermj at yahoo.com Mon Jan 19 14:22:16 2004 From: nadermj at yahoo.com (Moe Nader) Date: Mon Jan 19 14:22:30 2004 Subject: [Expat-discuss] Tabs/Carriage Returns Removal... In-Reply-To: <00b101c3b3b1$3f6542d0$0207a8c0@karl> Message-ID: <20040119192216.11641.qmail@web80802.mail.yahoo.com> Hi everyone, Does anyone know how to make expat ignore tabs and carriage retuns in xml file??? I would like to parse an xml file that contains tabs/carriage returns but have the callback functions return me tags, attributes and values without the tabs and carriage returns. Any information in this regard would greatly be appareciated... Thanx, Moe __________________________________ Do you Yahoo!? New Yahoo! Photos - easier uploading and sharing. http://photos.yahoo.com/ From karl at waclawek.net Mon Jan 19 14:45:52 2004 From: karl at waclawek.net (Karl Waclawek) Date: Mon Jan 19 14:45:56 2004 Subject: [Expat-discuss] Re: Tabs/Carriage Returns Removal... References: <20040119192216.11641.qmail@web80802.mail.yahoo.com> Message-ID: <004501c3dec4$d8ce4960$9e539696@citkwaclaww2k> > Does anyone know how to make expat ignore tabs and > carriage retuns in xml file??? > > I would like to parse an xml file that contains > tabs/carriage returns but have the callback functions > return me tags, attributes and values without the tabs > and carriage returns. You will have to filter these out in your call-backs. Should not be too difficult. When your characterData handler accumulates data into a buffer (usual approach) it can uses this opportunity to ignore tabs and carriage returns. Karl From matt at sergeant.org Mon Jan 19 15:54:42 2004 From: matt at sergeant.org (Matt Sergeant) Date: Mon Jan 19 15:56:18 2004 Subject: [Expat-discuss] segmentation fault In-Reply-To: References: <001301c3dc98$683cca60$0207a8c0@karl> Message-ID: On 19 Jan 2004, at 14:56, Cory 'G' Watson wrote: > Anyone on the Perl list have any ideas? This _only_ happens when > started under a mod_perl'ed Apache. Sorry for not replying sooner. This is the problem of expat conflicts (between perl and apache). See the AxKit FAQ or the perl-xml FAQ for more details. Matt. From chris.rogers at norcross.com.au Mon Jan 19 22:49:40 2004 From: chris.rogers at norcross.com.au (Chris Rogers) Date: Mon Jan 19 22:49:56 2004 Subject: [Expat-discuss] How to parse discrete entities only? (newbie question) Message-ID: <6.0.1.1.0.20040120143926.01b5b090@mail.m.norcross.com.au> Hello, Please forgive this newbie question - I have tried to find the answer by studying the source, in various FAQ's etc. Is it possible/sensible to try achieving the following using expat? I want to begin feeding the parser a stream of input but want it to stop/halt when it reaches various places in the stream. Specifically, I want expat to stop when it reaches the start or end of an entity. For example: ..... ..... attributes ..... ..... <--- after reading this line, stop ..... ..... attributes ..... ..... Is this something I should be trying to do with expat? Much thanks, Chris Rogers From hmcc at cs.york.ac.uk Tue Jan 20 05:37:47 2004 From: hmcc at cs.york.ac.uk (Heather McCartney) Date: Tue Jan 20 05:45:58 2004 Subject: [Expat-discuss] Tabs/Carriage Returns Removal... In-Reply-To: <20040119192216.11641.qmail@web80802.mail.yahoo.com> References: <00b101c3b3b1$3f6542d0$0207a8c0@karl> Message-ID: <4.3.2.7.0.20040120092208.00b63f38@imap.cs.york.ac.uk> Further to Karl's answer, I wrote some code to remove white space from strings passed to the character callback function a few weeks ago. It's not particularly pretty, because I'm still a beginner, but it seems to work. However, it doesn't attempt to filter out white space from characters that are split across 2 or more bytes. Heather static void XMLCALL charhndl(void *data, const XML_Char *s, int len) { char* s2; char* s3; int length; int i, j; /**************************** stage 1 ************************************/ /**************************** s -> s2 ************************************/ // Since I was using a buffer of a fixed length, the first stage for me is // to check the character data is followed by another tag, indicated by the // '<' character, and to discard everything in the buffer after this // character. if (!s) // quit if there is no string return; if(s[0] == '<') // quit if the "string" is return; // simply the next tag length = strlen(s); i = 0; while ((i s3 ************************************/ // The second stage is to remove all white space i.e. all characters with a // numeric value less than hexadecimal 20. If you want to remove only // carriage returns and tabs, just look up the character codes for these // and replace the lines "if (s2[i]>0x20)" with // "if ((s2[i]!= code for tab)&(s2[i]!= code for carriage return)) i = 0; j = 0; while(i 0x20) j++; i++; } if(j == 0) // quit if s2 contained only white return; // space length = j+1; // allocate memory for s3, including s3=(char *) malloc (length); // an extra byte for the \0 character i = 0; j = 0; while(i 0x20) { s3[j] = s2[i]; j++; } i++; } s3[j] = '\0'; // s3 is also null-terminated } From mme at lediet.fr Tue Jan 20 10:49:44 2004 From: mme at lediet.fr (Moncef Mezghani) Date: Tue Jan 20 10:49:57 2004 Subject: [Expat-discuss] How to remove warning: `cdecl' attribute directive ignored Message-ID: <44A99EA1-4B60-11D8-AE39-000A95A0ECC6@lediet.fr> Hello, I am using libexpat in a C++ project compiled with g++ (GCC) 3.3 20030304 (Apple Computer, Inc. build 1495) on a PowerBook G4 under OS X Version 10.3.2, and get many warning: `cdecl' attribute directive ignored. Is there somebody who has experienced masking theses warning? regards. Moncef. From fdrake at acm.org Tue Jan 20 11:07:26 2004 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Tue Jan 20 11:07:32 2004 Subject: [Expat-discuss] How to remove warning: `cdecl' attribute directive ignored In-Reply-To: <44A99EA1-4B60-11D8-AE39-000A95A0ECC6@lediet.fr> References: <44A99EA1-4B60-11D8-AE39-000A95A0ECC6@lediet.fr> Message-ID: <16397.21054.236051.489649@sftp.fdrake.net> Moncef Mezghani writes: > I am using libexpat in a C++ project compiled with g++ (GCC) 3.3 > 20030304 (Apple Computer, Inc. build 1495) on a PowerBook G4 under OS X > Version 10.3.2, and get many warning: `cdecl' attribute directive > ignored. This has been a frustrating problem. The catch is that there appears to be no generally good solution to the problem. I've committed the patch from SourceForge bug #846309; please try the current version from CVS if you can, and let me know how it works for you. (I'm seeing plenty of other warnings at the moment, but not the cdecl warning. Those will be addressed before the next release.) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From karl at waclawek.net Tue Jan 20 11:08:19 2004 From: karl at waclawek.net (Karl Waclawek) Date: Tue Jan 20 11:08:25 2004 Subject: [Expat-discuss] How to remove warning: `cdecl' attribute directiveignored References: <44A99EA1-4B60-11D8-AE39-000A95A0ECC6@lediet.fr> Message-ID: <00ca01c3df6f$9f108610$9e539696@citkwaclaww2k> > Hello, > I am using libexpat in a C++ project compiled with g++ (GCC) 3.3 > 20030304 (Apple Computer, Inc. build 1495) on a PowerBook G4 under OS X > Version 10.3.2, and get many warning: `cdecl' attribute directive > ignored. > > Is there somebody who has experienced masking theses warning? > regards. I think someone posted a patch recently. Basically, cdecl only works on i386 systems when using GCC. Check the archives. Has this patch been applied yet? Karl From fdrake at acm.org Tue Jan 20 11:10:45 2004 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Tue Jan 20 11:10:51 2004 Subject: [Expat-discuss] How to remove warning: `cdecl' attribute directiveignored In-Reply-To: <00ca01c3df6f$9f108610$9e539696@citkwaclaww2k> References: <44A99EA1-4B60-11D8-AE39-000A95A0ECC6@lediet.fr> <00ca01c3df6f$9f108610$9e539696@citkwaclaww2k> Message-ID: <16397.21253.497934.477372@sftp.fdrake.net> Karl Waclawek writes: > Has this patch been applied yet? I just checked it in before I got your message. ;-) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From gp at familiehaase.de Wed Jan 21 02:10:20 2004 From: gp at familiehaase.de (Gerrit P. Haase) Date: Wed Jan 21 02:25:26 2004 Subject: [Expat-discuss] Fwd: expat and embedded VC++ In-Reply-To: References: Message-ID: <1072012862.20040121081020@familiehaase.de> No personal mail please, I forwarded this mail to the expat-discuss list which is the appropriate forum for questions. G. Dies ist eine weitergeleitete Nachricht - This is a forwarded message Von : Leonidos Katzantakis Datum : Dienstag, 20. Januar 2004, 10:26 Betreff: expat and embedded VC++ ===8<=================== Original Nachrichtentext =================== Hi, I want to include expat into an WinCE application. I try the PC-.lib files. The linker found several unresolved external symbols, for instance __imp_XML_SetUserData (with a single underscore between 'imp' and 'XML'). Under VC++ (PC) I used libexpatw.lib and every thing was good. (Thanks a lot for the great work!!). But in all the lib's I searche, I never found _imp__XML_SetUserData (with double underscore between 'imp' and 'XML'). What is the error? Do I have to make seprate WinCE lib's and .dll's with emedded VC++ and what are the nessesary project settings? With best regards Leo ===8<============== Ende des Original Nachrichtentextes ============= Ciao, Gerrit -- =^..^= From gstein at lyra.org Wed Jan 21 02:28:20 2004 From: gstein at lyra.org (Greg Stein) Date: Wed Jan 21 02:34:02 2004 Subject: [Expat-discuss] upcoming release Message-ID: <20040120232820.D24041@lyra.org> This is just an email to say "yup... I see the activity towards a new expat release and will try to get my issues addressed within the next (say) week". Cheers, -g -- Greg Stein, http://www.lyra.org/ From fdrake at acm.org Wed Jan 21 03:18:03 2004 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Wed Jan 21 03:18:06 2004 Subject: [Expat-discuss] upcoming release In-Reply-To: <20040120232820.D24041@lyra.org> References: <20040120232820.D24041@lyra.org> Message-ID: <16398.13755.554496.570117@sftp.fdrake.net> Greg Stein writes: > This is just an email to say "yup... I see the activity towards a new > expat release and will try to get my issues addressed within the next > (say) week". Thanks, Greg! Will I see you at PyCon? -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation