From amitesh116 at gmail.com Fri Aug 10 08:58:29 2007 From: amitesh116 at gmail.com (amitesh kumar) Date: Fri, 10 Aug 2007 12:28:29 +0530 Subject: [XML-SIG] Parse MULTIPLE XML files in a directory Message-ID: Hi, Please review the following code and help me. Here I'm trying to : 1. Read each XML file in a folder. 2. Parse file. 3. Store some of the tags values as key-value pair in a map 4. Similarly maintain another collection that'll store one list per file. -- With Regards Amitesh K. 9850638640 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/xml-sig/attachments/20070810/d386d52a/attachment.htm -------------- next part -------------- import sys import xml.parsers.expat import dircache rec = {} rec2 = {} oli = {} ordtagname = '*' recList = {} cnt = 0 cnt2 = 0 ordtags = set() shptags = set() omptags = set() ordtags.add('orrfnbr') ordtags.add('afidlog') ordtags.add('orprtot') ordtags.add('ortxtot') ordtags.add('orshtot') ordtags.add('orcpcur') ordtags.add('orpstmp') ordtags.add('orustmp') ordtags.add('orappstat') ordtags.add('orappdt') shptags.add('strfnbr') shptags.add('stprnbr') shptags.add('stvdnbr') shptags.add('stprice') shptags.add('stquant') shptags.add('stpstmp') shptags.add('stustmp') shptags.add('starwbll') shptags.add('stdspchstat') shptags.add('stlogistics') shptags.add('stentrydt') shptags.add('stcpprice') shptags.add('stlstprice') omptags.add('ompaymthd') omptags.add('ommaxaamt') def start_element(name, attrs): global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2 if name in ordtags or name in shptags or name in omptags: ordtagname = name sys.stdout.flush() def end_element(name): global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2 if name in ordtags or name in shptags or name in omptags: ordtagname = '' if name == 'shipto': cnt2 = cnt2+1 if name == 'order': cnt2 = 0 sys.stdout.flush() def char_data(data): global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2 if None != data: if ordtagname in ordtags or ordtagname in shptags or ordtagname in omptags: if ordtagname in shptags : rec2[repr(ordtagname).strip('u\'')] = repr(data).strip('u\'') else: rec[repr(ordtagname).strip('u\'')] = repr(data).strip('u\'') rec['OLI-'+str(cnt2)] = rec2 sys.stdout.flush() for f in iter(dircache.listdir('./xmls/')): print f g=open('./xmls/'+f, 'r') p = xml.parsers.expat.ParserCreate() p.StartElementHandler = start_element p.CharacterDataHandler = char_data p.EndElementHandler = end_element p.ParseFile(g) recList['ORDER-'+str(cnt)] = rec print recList g.close() cnt = cnt+1 From stefan_ml at behnel.de Fri Aug 10 09:53:13 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Fri, 10 Aug 2007 09:53:13 +0200 Subject: [XML-SIG] Parse MULTIPLE XML files in a directory In-Reply-To: References: Message-ID: <46BC1969.1050900@behnel.de> Hi, first thing: don't use expat directly. Use (c)ElementTree's iterparse. It's in Python 2.5, but is also available as an external package for older Python versions. There's also lxml (which is mostly compatible to ElementTree), in case you ever need features like XPath, XSLT or whatever. amitesh kumar wrote: > Please review the following code and help me. > > Here I'm trying to : > 1. Read each XML file in a folder. > 2. Parse file. > 3. Store some of the tags values as key-value pair in a map > 4. Similarly maintain another collection that'll store one list per file. > ------------------------------------------------------------------------ > > ordtags = set() > shptags = set() > omptags = set() > > ordtags.add('orrfnbr') > ordtags.add('afidlog') [...] Better: ordtags = set(['offfnbr', 'afidlog', ...]) from xml.etree.cElementTree import iterparse for onefile in allfiles: for event, element in iterparse(onefile): if element.tag in ordtags: # do something like values[element.tag] = element.text elif element.tag in shptags: # do something else else: # don't do anything? element.clear() Stefan From amitesh116 at gmail.com Fri Aug 10 11:30:49 2007 From: amitesh116 at gmail.com (amitesh kumar) Date: Fri, 10 Aug 2007 15:00:49 +0530 Subject: [XML-SIG] Fwd: Parse MULTIPLE XML files in a directory In-Reply-To: <46BC1969.1050900@behnel.de> References: <46BC1969.1050900@behnel.de> Message-ID: ---------- Forwarded message ---------- From: Stefan Behnel Date: Aug 10, 2007 1:23 PM Subject: Re: [XML-SIG] Parse MULTIPLE XML files in a directory To: amitesh kumar Cc: xml-sig at python.org Hi, first thing: don't use expat directly. Use (c)ElementTree's iterparse. It's in Python 2.5, but is also available as an external package for older Python versions. There's also lxml (which is mostly compatible to ElementTree), in case you ever need features like XPath, XSLT or whatever. amitesh kumar wrote: > Please review the following code and help me. > > Here I'm trying to : > 1. Read each XML file in a folder. > 2. Parse file. > 3. Store some of the tags values as key-value pair in a map > 4. Similarly maintain another collection that'll store one list per file. > ------------------------------------------------------------------------ > > ordtags = set() > shptags = set() > omptags = set() > > ordtags.add('orrfnbr') > ordtags.add('afidlog') [...] Better: ordtags = set(['offfnbr', 'afidlog', ...]) from xml.etree.cElementTree import iterparse for onefile in allfiles: for event, element in iterparse(onefile): if element.tag in ordtags: # do something like values[element.tag] = element.text elif element.tag in shptags: # do something else else: # don't do anything? element.clear() Stefan -- With Regards Amitesh K. 9850638640 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/xml-sig/attachments/20070810/f8b354e7/attachment.html From stefan_ml at behnel.de Fri Aug 10 11:35:38 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Fri, 10 Aug 2007 11:35:38 +0200 Subject: [XML-SIG] Parse MULTIPLE XML files in a directory In-Reply-To: References: <46BC1969.1050900@behnel.de> Message-ID: <46BC316A.30604@behnel.de> Hi, why don't you use the code snippet I posted? It already solves most of your problems. The rest should be easy for you to add. Stefan amitesh kumar wrote: > I've updated my code to this extent: > > import sys > import xml.parsers.expat > import dircache > > rec = {} > rec2 = {} > oli = {} > ordtagname = '*' > recList = {} > cnt = 0 > cnt2 = 0 > > ordtags = > set(['orrfnbr','orrfnbr','afidlog','orprtot','ortxtot','orshtot','orcpcur','orpstmp','orustmp','orappstat','orappdt']) > > shptags = > set(['strfnbr','stprnbr','stvdnbr','stprice','stquant','stpstmp','stustmp','starwbll','stdspchstat','stlogistics','stentrydt','stcpprice','stlstprice']) > > omptags = set(['ompaymthd','ommaxaamt']) > > def start_element(name, attrs): > global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2 > if name in ordtags or name in shptags or name in omptags: > ordtagname = name > if name == 'shipto': > rec[cnt2] = rec2 > if name == 'order': > recList[cnt] = rec > sys.stdout.flush() > > def end_element(name): > global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2 > if name in ordtags or name in shptags or name in omptags: > ordtagname = '' > if name == 'shipto': > cnt2 = cnt2+1 > rec2 = {} > #rec[cnt2] = rec2 > if name == 'order': > cnt2 = 0 > #recList[cnt] = rec > rec = {} > cnt = cnt+1 > sys.stdout.flush() > > def char_data(data): > global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2 > if None != data: > if ordtagname in ordtags or ordtagname in shptags or ordtagname > in omptags: > if ordtagname in shptags : > rec2[repr(ordtagname).strip('u\'')] = > repr(data).strip('u\'') > else: > rec[repr(ordtagname).strip('u\'')] = repr(data).strip('u\'') > sys.stdout.flush() > > for f in iter(dircache.listdir('./xmls/')): > #print f > g=open('./xmls/'+f, 'r') > p = xml.parsers.expat.ParserCreate() > p.StartElementHandler = start_element > p.CharacterDataHandler = char_data > p.EndElementHandler = end_element > p.ParseFile(g) > g.close() > print recList > > ----------- > > > Now, I've to access recList elements in a iterative manner and do > further processing. Will you please help me in this effort. > > Current output is: > > {0: {0: {'stentrydt': 'null', 'stustmp': '2007-07-18 14:49:43.0', > 'stlogistics': '7', 'stprnbr': '10197436', 'stlstprice': '284', > 'stdspchstat': '0', 'starwbll': 'null', 'strfnbr': '4491691', 'stquant': > '1', 'stprice': ' 284.0', 'stpstmp': '2007-07-18 14:49:43.0', 'stvdnbr': > '4143', 'stcpprice': '221.52'}, 'orustmp': '2007-07-19 18:29:23.0', 2: > {'stentrydt': 'null', 'stustmp': '2007-07-18 14:49: 44.0', > 'stlogistics': '7', 'stprnbr': '10158532', 'stlstprice': '325', > 'stdspchstat': '0', 'starwbll': 'null', 'strfnbr': '4491693', 'stquant': > '1', 'stprice': ' 325.0', 'stpstmp': '2007-07-18 14:49:44.0', 'stvdnbr': > '4285', 'stcpprice': '276.25'}, 'orappstat': '1', 4: {'stentrydt': > 'null', 'stustmp': '2007-07-18 14:49: 44.0', 'stlogistics': '0', > 'stprnbr': '10193438', 'stlstprice': '199', 'stdspchstat': '0', > 'starwbll': 'null', 'strfnbr': '4491695', 'stquant': '1', 'stprice': ' > 129.0', 'stpstmp': '2007-07-18 14:49:44.0', 'stvdnbr': '956', > 'stcpprice': '90.3'}, 3: {'stentrydt': 'null', 'stustmp': '2007-07-18 > 14:49:44.0 ', 'stlogistics': '7', 'stprnbr': '10092402', 'stlstprice': > '199', 'stdspchstat': '0', 'starwbll': 'null', 'strfnbr': '4491694', > 'stquant': '1', 'stprice': ' 189.0', 'stpstmp': '2007-07-18 14:49:44.0', > 'stvdnbr': '4094', 'stcpprice': '151.2'}, 1: {'stentrydt': 'null', > 'stustmp': '2007-07-18 14:49:43.0 ', 'stlogistics': '7', 'stprnbr': > '10188562', 'stlstprice': '1299', 'stdspchstat': '0', 'starwbll': 'll', > 'strfnbr': '4491692', 'stquant': '1', 'stprice': ' 909.0', 'stpstmp': > '2007-07-18 14:49:43.0', 'stvdnbr': '3557', 'stcpprice': '727.2'}, > 'orpstmp': '2007-07-18 14:49:44.0', 'ompaymthd': 'ICI ', 'orappdt': > '2007-07-19 18:29: 23.0', 'orshtot': '241.0', 'orcpcur': 'INR', > 'ommaxaamt': '2077.0', 'orrfnbr': '3992187', 'orprtot': '1836.0', > 'ortxtot': '0.0 '}, 1: {0: {'stentrydt': 'null', 'stustmp': '2007-07-19 > 22:52:14.0', 'stlogistics': '0', 'stprnbr': '1030470', 'stlstprice': > '2475', 'stdspchstat': '0', 'starwbll': 'null', 'strfnbr': '4494126', > 'stquant': '1', 'stprice': ' 2475.0', 'stpstmp': '2007-07-19 > 22:52:14.0', 'stvdnbr': '2179', 'stcpprice': '1750.0'}, 'orustmp': > '2007-07-19 22:52:16.0', 'orappstat': '-1', 1: {'stentrydt': 'null', > 'stustmp': '2007-07-19 22:52: 14.0', 'stlogistics': '0', 'stprnbr': > '1048790', 'stlstprice': '2475', 'stdspchstat': '0', 'starwbll': 'null', > 'strfnbr': '4494127', 'stquant': '1', 'stprice': ' 2475.0', 'stpstmp': > '2007-07-19 22:52:14.0', 'stvdnbr': '2179', 'stcpprice': '0.0'}, > 'orpstmp': '2007-07-19 22:52:14.0', 'ompaymthd': 'MAST ', 'orappdt': > 'null', 'orshtot': ' 0.0', 'orcpcur': 'INR', 'ommaxaamt': '4950.0', > 'orrfnbr': '3994456', 'orprtot': '4950.0', 'ortxtot': '0.0'}, 2: {0: > {'stentrydt': 'null', 'stustmp': '2007-07-19 23:05: 05.0', > 'stlogistics': '0', 'stprnbr': '3539177', 'stlstprice': '1', > 'stdspchstat': '0', 'starwbll': 'null', 'strfnbr': '4494139', 'stquant': > '1', 'stprice': ' 500.0', 'stpstmp': '2007-07-19 23:05:05.0', 'stvdnbr': > '4370', 'stcpprice': '465.0'}, 'orustmp': '2007-07-20 00:20:06.0', > 'orappstat': '5', 'orpstmp': '2007-07-19 23:05: 05.0', 'ompaymthd': > 'ICI ', 'orappdt': 'null', 'afidlog': 'Auction', 'orshtot': '0.0', > 'orcpcur': 'INR', 'ommaxaamt': '500.0 ', 'orrfnbr': '3994466', > 'orprtot': '500.0', 'ortxtot': '0.0'}, 3: {0: {'stentrydt': 'null', > 'stustmp': '2007-07-19 23:38:56.0', 'stlogistics': '0', 'stprnbr': > '2771831', 'stlstprice': '843', 'stdspchstat': '0', 'starwbll': 'null', > 'strfnbr': '4494158', 'stquant': '1', 'stprice': ' 900.0', 'stpstmp': > '2007-07-19 23:38:56.0', 'stvdnbr': '3991', 'stcpprice': '543.0'}, > 'orustmp': '2007-07-19 23:38:57.0', 'orappstat': '-1', 'orpstmp': > '2007-07-19 23:38: 56.0', 'ompaymthd': 'AMEX ', 'orappdt': 'null', > 'orshtot': '0.0', 'orcpcur': 'INR', 'ommaxaamt': '900.0', 'orrfnbr': > '3994481', 'orprtot': ' 900.0', 'ortxtot': '0.0'}} > > > Thanks, > > Amitesh > > > > > On 8/10/07, *Stefan Behnel* < stefan_ml at behnel.de > > wrote: > > Hi, > > first thing: don't use expat directly. Use (c)ElementTree's > iterparse. It's in > Python 2.5, but is also available as an external package for older > Python > versions. There's also lxml (which is mostly compatible to > ElementTree), in > case you ever need features like XPath, XSLT or whatever. > > > amitesh kumar wrote: > > Please review the following code and help me. > > > > Here I'm trying to : > > 1. Read each XML file in a folder. > > 2. Parse file. > > 3. Store some of the tags values as key-value pair in a map > > 4. Similarly maintain another collection that'll store one list > per file. > > > ------------------------------------------------------------------------ > > > > ordtags = set() > > shptags = set() > > omptags = set() > > > > ordtags.add('orrfnbr') > > ordtags.add('afidlog') > [...] > > Better: > > ordtags = set(['offfnbr', 'afidlog', ...]) > > from xml.etree.cElementTree import iterparse > > for onefile in allfiles: > for event, element in iterparse(onefile): > if element.tag in ordtags: > # do something like > values[ element.tag] = element.text > elif element.tag in shptags: > # do something else > else: > # don't do anything? > element.clear() > > Stefan > > > > > -- > With Regards > Amitesh K. > 9850638640 From maarten.ter.huurne at philips.com Fri Aug 10 19:19:28 2007 From: maarten.ter.huurne at philips.com (Maarten ter Huurne) Date: Fri, 10 Aug 2007 19:19:28 +0200 Subject: [XML-SIG] Two bugs in catalog parsing Message-ID: Hi, I found and patched two bugs in the catalog parsing code of PyXML. Because I could not find a bug tracker for PyXML itself, I reported them in the tracker of Ubuntu, the Linux distro I'm using. CatalogParser does not recognise "DTDDECL" https://bugs.launchpad.net/bugs/131595 EntityParser does not accept whitespace at end of file https://bugs.launchpad.net/bugs/131604 Bye, Maarten -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/xml-sig/attachments/20070810/53cd2da7/attachment.html From stefan_ml at behnel.de Sat Aug 11 10:37:36 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Sat, 11 Aug 2007 10:37:36 +0200 Subject: [XML-SIG] Two bugs in catalog parsing In-Reply-To: References: Message-ID: <46BD7550.5010803@behnel.de> Maarten ter Huurne wrote: > I found and patched two bugs in the catalog parsing code of PyXML. > Because I could not find a bug tracker for PyXML itself, I reported them > in the tracker of Ubuntu, the Linux distro I'm using. Hi, PyXML hasn't been actively maintained since the last release a few years ago, so you'd be very lucky if someone comes up with a new release that fixes this. If you need that feature, feel free to check if lxml handles this as expected. It's based on libxml2, so it should follow the standard. It's also much easier to use than PyXML. http://codespeak.net/lxml/ Stefan From maarten.ter.huurne at philips.com Mon Aug 13 18:29:56 2007 From: maarten.ter.huurne at philips.com (Maarten ter Huurne) Date: Mon, 13 Aug 2007 18:29:56 +0200 Subject: [XML-SIG] Two bugs in catalog parsing In-Reply-To: <46BD7550.5010803@behnel.de> Message-ID: Stefan Behnel wrote on 2007-08-11 10:37:36 AM: > PyXML hasn't been actively maintained since the last release a few years ago, > so you'd be very lucky if someone comes up with a new release that fixes this. Thanks for the warning. > If you need that feature, feel free to check if lxml handles this asexpected. > It's based on libxml2, so it should follow the standard. It's also much easier > to use than PyXML. > > http://codespeak.net/lxml/ I am now switching to lxml and besides the fact that it is maintained, there is another advantage for me: lxml reports all validation problems in an error log, while PyXML would only report the first validation problem by raising an exception. Thanks! Bye, Maarten -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/xml-sig/attachments/20070813/cc9515b9/attachment.html From info at thegrantinstitute.com Tue Aug 21 13:56:43 2007 From: info at thegrantinstitute.com (Anthony Jones) Date: 21 Aug 2007 04:56:43 -0700 Subject: [XML-SIG] Professional Grant Proposal Writing Workshop (September 2007: California State University, Los Angeles) Message-ID: <20070821045642.52DFF4574C66A162@thegrantinstitute.com> An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/xml-sig/attachments/20070821/cf292726/attachment.htm From Childs at mpimp-golm.mpg.de Thu Aug 30 13:33:38 2007 From: Childs at mpimp-golm.mpg.de (Liam Childs) Date: Thu, 30 Aug 2007 13:33:38 +0200 Subject: [XML-SIG] Installing PyXML problems Message-ID: <8AB41BD516C9BA43B679016D08318F1F2B949A3758@MAIL01.mpimp-golm.mpg.de> To whom it may concern, I'm getting the following error when trying to install PyXML after running "python setup.py install": error: Python was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py. 1. I am using Python 2.5 and there are no binaries available for it so I downloaded PyXML-0.8.4.tar.gz. 2. I extracted it to its own directory. 3. I ran "python setup.py build" and got the above error. 4. I ran "python setup.py build -c mingw32" and it ran without any problems. 5. I ran "python setup.py install" and got the above error. 6. I ran "python setup.py install -c mingw32" and still got the above error. I've also tried ZSI-2.0-py2.5.egg, but it turns up the same error message. I do have cygwin installed and the gcc option was selected. The binaries are accessible through PATH. I'm using Python 2.5.1. I'm running Microsoft Windows XP Professional I am installing this package as a requirement for SOAPpy or ZSI Regards, Liam -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/xml-sig/attachments/20070830/7a1f6428/attachment.htm From kmcneillie at softwarespecialists.com Thu Aug 30 18:16:30 2007 From: kmcneillie at softwarespecialists.com (Kelley McNeillie) Date: Thu, 30 Aug 2007 12:16:30 -0400 Subject: [XML-SIG] Please assist- Python consultant needed for 3-6 month long contract Message-ID: I am contacting you from a company called Software Specialists, an IT Placement Firm based in Pittsburgh, PA. We are prepared to make a donation to your organization if you could please help us out with a referral. We are looking for a python developer with web-based application experience. If you know of anyone, or if you would be able to post this opportunity on your site, I would greatly appreciate it. I am finding this skill pretty much impossible to identify locally, and I really would like to be able to assist my client with this position. I am just trying to be creative in my search, I hope I am reaching the right person with this request. If not, I apologize. Thank you in advance for any assistance you may be able to provide. Best Regards, Kelley McNeillie Software Specialists, Inc. 357 Northgate Drive Suite 10 Warrendale, PA 15086 724 933 6100 x 1105 724 933 6106 (F) kmcneillie at softwarespecialists.com www.softwarespecialists.com From dieter at handshake.de Fri Aug 31 21:48:32 2007 From: dieter at handshake.de (Dieter Maurer) Date: Fri, 31 Aug 2007 21:48:32 +0200 Subject: [XML-SIG] Installing PyXML problems In-Reply-To: <8AB41BD516C9BA43B679016D08318F1F2B949A3758@MAIL01.mpimp-golm.mpg.de> References: <8AB41BD516C9BA43B679016D08318F1F2B949A3758@MAIL01.mpimp-golm.mpg.de> Message-ID: <18136.28816.598923.907514@gargle.gargle.HOWL> Liam Childs wrote at 2007-8-30 13:33 +0200: > ... >I'm getting the following error when trying to install PyXML after running "python setup.py install": > >error: Python was built with Visual Studio 2003; >extensions must be built with a compiler than can generate compatible binaries. >Visual Studio 2003 was not found on this system. If you have Cygwin installed, >you can try compiling with MingW32, by passing "-c mingw32" to setup.py. This is a *VERY* informative error message. Read it carefully. It precisely tells you what went wrong (did not find a Visual Studio 2003) and tells you a workaround. To solve your problem: either install Visual Studio 2003 and run "setup.py install" again (you probably must pay lots of dollars to MS) or you install the priceless "Cygwin" and run "setup.py -c mingw32 install". -- Dieter From stefan_ml at behnel.de Fri Aug 31 21:53:08 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Fri, 31 Aug 2007 21:53:08 +0200 Subject: [XML-SIG] Installing PyXML problems In-Reply-To: <8AB41BD516C9BA43B679016D08318F1F2B949A3758@MAIL01.mpimp-golm.mpg.de> References: <8AB41BD516C9BA43B679016D08318F1F2B949A3758@MAIL01.mpimp-golm.mpg.de> Message-ID: <46D871A4.80705@behnel.de> Liam Childs wrote: > I?m getting the following error when trying to install PyXML after > running ?python setup.py install?: Any reason you can't use ElementTree or lxml? As opposed to PyXML, both are well maintained and very easy to use. Stefan From Brenda.Taylor at nokia.com Tue Aug 21 13:52:47 2007 From: Brenda.Taylor at nokia.com (Brenda.Taylor at nokia.com) Date: Tue, 21 Aug 2007 11:52:47 -0000 Subject: [XML-SIG] PyXML for py 2.5 Message-ID: <8B473CE55AB5B34FAAE37EF3BE19EE949E09E6@esebe113.NOE.Nokia.com> Hi Do you have a version of PyXML that works with python version 2.5? If not when do you expect it to be available? Regards Brenda Nokia UK Limited registered in England & Wales Registered Number: 02212202 Registered Office: Lancaster House, Lancaster Way, Ermine Business Park, Huntingdon, Cambridgeshire, PE29 6YJ The contents of this email are intended for the named addressee only. It contains information which may be confidential, legally privileged and protected by law. Unauthorised use, disclosure or copying of it may be unlawful. If you have received this email in error please notify us immediately by email and then delete the original email from your system. We make every effort to keep our network free from computer viruses. However, internet communications are not secure and therefore you do need to verify that this email and any attachment(s) are free of viruses as we can take no responsibility for any computer virus which might be transferred by way of this email. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/xml-sig/attachments/20070821/8196e204/attachment.htm