From Fiona Czuczman Wed Nov 1 08:52:51 2000 From: Fiona Czuczman (Fiona Czuczman) Date: 1 Nov 2000 08:52:51 -0000 Subject: [FAQTS] Python Knowledge Base Update -- November 1st, 2000 Message-ID: Greetings, The latest entries into http://python.faqts.com regards, Fiona ## Edited Entries ############################################## ------------------------------------------------------------- Where can I best learn how to parse out both HTML and Javascript tags to extract text from a page? http://www.faqts.com/knowledge-base/view.phtml/aid/3680 ------------------------------------------------------------- Paul Allopenna, Matthew Schinckel, Magnus Lyckå Python Documentation If you want to (quickly) strip all HTML tags from a string of data, try using the re module: import re file = open(filename,'r') data = file.read() file.close() text = re.sub('', '', data) #Remove comments first, or '>' in #comments will be interpreted as #end of (comment) tag. text = re.sub('<.*?>', '', text) This will also strip any javascript, but only if the page has been made 'properly' - that is, the javascript is within HTML comments. If you want to know how it works, read the 're' chapter in the library reference, as it discusses the usefulness of 'non-greedy' regular expressions. ------------------------------------------------------------- How do I check and retrieve the error conditions & message of script executed via the Python/C API (without using PyErr_Print) http://www.faqts.com/knowledge-base/view.phtml/aid/6234 ------------------------------------------------------------- Kostas Karanikolas, Fiona Czuczman Alex Martelli See Section 4, "Exception Handling", in the Python/C API Reference Manual. PyErr_Occurred() returns a borrowed- reference pointer to the latext exception-type PyObject if any is pending, NULL if no error is pending; to check whether the exception is one you want to handle, pass this non-NULL pointer as the first argument to function PyErr_GivenExceptionMatches, second argument being the exception-type or class you want to handle -- it will return non-0 if matching. For finer control, you can call PyErr_Fetch, with three PyObject** arguments, for type, value, and traceback objects -- if no error is pending, each pointed-to pointer will be set to 0; else, at least the first (to type-object) will be non-0 (a reference will have be added to objects returned in this way). What you mean by "message" is probably what you get by PyObject_Str on the value object pointer (if non-0). ------------------------------------------------------------- I'm getting an error stating that "None" object has no attribute "groups" during setup of numpy, any ideas? http://www.faqts.com/knowledge-base/view.phtml/aid/6245 ------------------------------------------------------------- Michael Risser, Nicholas Hendley Oleg Broytmann It seems you are trying to do the following - match or search for regular expression: match_object = re.search(pattern, string) groups = match_object.groups() But your regexp didn't match anything in the string, so match_object here is really None. Test it before doing anything with it: match_object = re.search(pattern, string) if match_object: groups = match_object.groups() else: print "No match!" ------------------------------------------------------------- How do you access the printer from Python under Linux??? http://www.faqts.com/knowledge-base/view.phtml/aid/6376 ------------------------------------------------------------- Dave Berry, Donovan Baarda This question is very open. There are three main levels at which you can access the printer under linux; user, device, and IO port. The usual user level access is to print documents using the 'lpr' command. This will spool documents for printing in /var/spool/lpr to be printed in order when the printer is available, and allows multiple users to print documents without causing conflicts. This requires that the Linux box has lpd configured and running. Typicaly lpd is configured to use something like magic-filter to automaticly convert different types of documents into the format understood by the printer. This means most standard file types (postscript, png, text, etc) can be printed directly. (Note that there are alternatives to lpd, such as cups, that perform basicly the same thing). From Python, things can be printed as follows; import os filename='~/file.ps' os.system('lpr %s' % filename) or p=os.popen('lpr','w') p.write('printing test text string\n') p.close() Device level access involves directly opening the linux device file and writing to it. This requires that the user has write level access to the device, and does not allow shared access to the printer. This is not normaly what you want to do unless you are writing something like your own lpd replacement. Guru's might be able to do some ioctl magic on the device to do things like get the printer status, but otherwise this is pretty simple; p=os.open('/dev/lp1','w') p.write('printing text test string\n') p.close() IO port level access is the lowest level. You do not want to do this unless you really want to do wierd things with your printer port. An example of this might be plugging in some strange home-built hardware. There are a few ways to do this, but the easiest is using the linux '/dev/port' device that allows direct access to IO ports. The user must have write access to this device. WARNING!!! making a mistake when accessing '/dev/port' can seriously stuff up your system! You must know exactly what you are doing when you use this device. I probably shouldn't be writing this, because if you know enough to try this, you probably already know how :-) IOports=open("/dev/port","r+b",0) def GetChar(address): IOports.seek(address) return ord(IOports.read(1)) def PutChar(address,c): IOports.seek(address) IOports.write(chr(c)) class lpt: def __init__(self,port=0x378): self.address=port def Put_Data(self,c): PutChar(self.address,c) def Get_Data(self): return GetChar(self.address) def Put_Status(self,c): PutChar(self.address+1,c) def Get_Status(self): return GetChar(self.address+1) def Put_Control(self,c): PutChar(self.address+2,c) def Get_Control(self): return GetChar(self.address+2) p=lpt() p.Put_Data('a') c=p.Get_Status() IOPorts.close() ------------------------------------------------------------- How do you keep track of elements of "ravel"ed Numeric arrays http://www.faqts.com/knowledge-base/view.phtml/aid/4286 ------------------------------------------------------------- Nathan Wallace, Fiona Czuczman, Rob Hooft Hans Nowak, Snippet 93, Alex """ Packages: maths.numeric """ """ Hi, again. In case anyone else needs to do something like sorting an array and keeping track of what belongs where in the array, I've found the following function useful. It's not super-fast, but I guess it's doing a lot. """ import operator from Numeric import * def flatten_indices (array): index_array = indices (array.shape) index_list = map (ravel, tuple (index_array)) index_list = apply (map, (None, ) + tuple (index_list)) values = map (operator.getitem, \ len (index_list) * [array], \ index_list) return map (None, values, index_list) """ E.g. >>> b = reshape (arange (4), (2, 2)) >>> flatten_indices (b) [(0, (0, 0)), (1, (0, 1)), (2, (1, 0)), (3, (1, 1))] >>> """ From grante@visi.com Wed Nov 1 11:35:11 2000 From: grante@visi.com (Grant Edwards) Date: 1 Nov 2000 05:35:11 -0600 Subject: Dr. Dobb's Python-URL! - weekly Python news and links (Nov 1) Message-ID: Guido van Rossum: PythonLabs Team Moves to Digital Creations http://deja.com/=dnc/getdoc.xp?AN=686714305 Randy Hudson nicely illustrate the event-listener pattern in the context of Jython as an extension language for Java http://deja.com/=dnc/getdoc.xp?AN=688152500 Moshe Zadka shows a portable locking mechanism http://deja.com/=dnc/getdoc.xp?AN=687180692 Thomas Wouters provides a pointer to another locking scheme http://deja.com/=dnc/getdoc.xp?AN=687318753 A.M. Kuchling reviews _Teach_Yourself_Python_in_24_Hours_ http://deja.com/=dnc/getdoc.xp?AN=687798879 Alex Martelli explains why slice indices work the way they do http://deja.com/=dnc/getdoc.xp?AN=688046177 and builds a primitive "use strict" before a live audience http://deja.com/=dnc/getdoc.xp?AN=687764895 then re-does it metaprogrammatically http://deja.com/=dnc/getdoc.xp?AN=687700793 ======================================================================== Everything you want is probably one or two clicks away in these pages: Python.org's Python Language Website is the traditional center of Pythonia http://www.python.org although PythonLabs.com bills itself as "The Python Source", which is becoming increasingly true in 2000 http://www.pythonlabs.com/ PythonWare complements the digest you're reading with the daily python url http://www.pythonware.com/daily comp.lang.python.announce announces new Python software. Be sure to scan this newly-revitalized newsgroup at least weekly. http://deja.com/group/comp.lang.python.announce Andrew Kuchling writes marvelous summaries twice a month of the action on the python-dev mailing list, where the future of Python is truly determined http://www.kuchling.com/python/dev/ The Vaults of Parnassus ambitiously collects Python resources http://www.vex.net/~x/parnassus/ Much of Python's real work takes place on Special-Interest Group mailing lists http://www.python.org/sigs/ Python Consortium emerges as an independent nexus of activity http://www.python.org/consortium Cetus does much of the same http://www.cetus-links.de/oo_python.html Python FAQTS http://python.faqts.com/ Python To-Do List anticipates some of Python's future direction http://www.python.org/cgi-bin/todo.py Python Journal is at work on its second issue http://www.pythonjournal.com Links2Go is a new semi-automated link collection; it's impressive what AI can generate http://www.links2go.com/search?search=python Archive probing trick of the trade: http://www.dejanews.com/dnquery.xp?QRY=&DBS=2&ST=PS&defaultOp=AND&LNG=ALL&format=threaded&showsort=date&maxhits=100&groups=comp.lang.python Previous - (U)se the (R)esource, (L)uke! - messages are listed here: http://purl.org/thecliff/python/url.html or http://www.dejanews.com/dnquery.xp?QRY=~g%20comp.lang.python%20Python-URL%21 Suggestions/corrections for next week's posting are always welcome. [http://www.egroups.com/list/python-url-leads/ is hibernating. Just e-mail us ideas directly.] To receive a new issue of this posting in e-mail each Monday morning, ask to subscribe. Mention "Python-URL!". -- The Python-URL! Team-- Dr. Dobb's Journal (http://www.ddj.com) is pleased to participate in and sponsor the "Python-URL!" project. -- Cameron Laird Business: http://www.Phaseit.net Personal: http://starbase.neosoft.com/~claird/home.html From mal@lemburg.com Wed Nov 1 14:43:51 2000 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 01 Nov 2000 15:43:51 +0100 Subject: ANN: mx Extension Series for Python 2.0 Message-ID: ________________________________________________________________________ ANNOUNCING: mx Extension Series for Python 2.0 Full Source Python extensions providing important and useful services for Python programmers. ________________________________________________________________________ WHAT IS IT ?: The mx Extension Series is a collection of Python software packages which aims at providing professional quality add-ons for the Open Source Language Python (see http://www.python.org). All of the available packages are proven in every day use and fullfil mission critical jobs in various commercial settings all around the world. The two most well-known packages from the mx Extension Series are mxDateTime and mxODBC 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. ________________________________________________________________________ WHAT'S NEW ? The new download archives now all include binaries for Windows platforms which were compiled against Python 2.0. This means that installing the extensions on Windows boils down to unzipping the archives into C:\Python20\Lib. Versions for Python 1.5.2 are still available too. More packages and updated versions of the existing packages will be published in the first quarter 2001. All mx Extension Series packages will then move under a new top-level package named "mx". ________________________________________________________________________ PACKAGE OVERVIEW: mxDateTime - Generic Date/Time Types 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). 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. 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 mxODBC package is one example of an extension using this interface). mxODBC - Generic ODBC 2.0 interface mxODBC is an extension package that provides a Python Database API compliant interface to ODBC 2.0 capable database drivers and managers. 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). The latest version of the interface allows you to interface to more than one database from one process. It includes a varity of preconfigured setups for many commonly used databases such as MySQL, Oracle, Informix, Solid and many more. A precompiled version of the extension for use with the Windows ODBC manager is also included. mxTextTools - Fast Text Processing Tools 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. Applications include parsing structured text, finding and extracting text (either exact or using translation tables) and recombining strings to form new text. mxStack - Fast and Memory-Efficient Stack Type 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. mxTools - Collection of Additional Builtins 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. 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 import NewBuiltins 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. mxCrypto - Interface to Eric Young's SSLeay/OpenSSL mxCrypto is an extension package that provides OO-style access to the cipher algorithms and hash functions included in SSLeay, a very nifty cryptographic lib written by Eric Young now maintained by the OpenSSL team. Apart from being usable stand-alone, it provides hooks that make it work as high quality fill-in for the missing parts in Andrew Kuchling's pycrypt export package. Due to the ITAR export restrictions on cryptographic software Andrew's implementations are not legally downloadable from outside the US. SSLeay/OpenSSL is available world-wide. mxProxy - Generic Proxy Wrapper Type 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. The type's main features are secure data encapsulation (the hidden objects are not accessible from Python since they are stored in internal C structures), customizable attribute lookup methods and a cleanup protocol that helps in breaking circular references prior to object deletion. The latest version adds a very interesting new feature: weak references which help you work with circular references in a way that doesn't cause memory leakage in a Python system. ________________________________________________________________________ WHERE CAN I GET IT ? The download archives, full documentation and instructions for installing the packages can be found at: http://starship.python.net/~lemburg/mxExtensions.html ________________________________________________________________________ WHAT DOES IT COST ? Most packages come with a Python-style license, which means that you can use them in both commercial and non-commercial settings without fee or charge. All packages come with full source code. mxODBC comes with a license comparable to the old MySQL license: it is only free for in-house use. If you use it in consulting work or otherwise redistribute it in a commercial setting, you will have to get a commercial license. More information about mxODBC licensing is available at: http://starship.python.net/~lemburg/mxODBC-License.html The next version of mxODBC will be made available as shareware in order to support further development of the software (including full Unicode support, support for ODBC 3.5 data types and special hooks for vendor specific ODBC extensions such as binding to files). ________________________________________________________________________ WHERE CAN I GET SUPPORT ? Commercial support for these packages will be available from eGenix.com Software starting in January 2001. If you'd like more information about this service, contact the eGenix.com helpdesk at info@egenix.com . ________________________________________________________________________ REFERENCE:

Python-dev summary, October 17-31, 2000 ======================================= (To comment on material in this python-dev summary, you can simply post to comp.lang.python / .) Pythoneers Move to Digital Creations ==================================== The most significant news in this two-week span was the five Pythoneers (GvR, Fred Drake, Jeremy Hylton, Tim Peters, Barry Warsaw) leaving BeOpen and being hired by Digital Creations. The terms of their hiring seem quite liberal. From GvR's announcement: "We will be spending part of our time on core Python development (including Jython and Mailman) and part of our time on Python infrastructure improvements that also benefit Zope." And, a few paragraphs later: "All future work we do on Python as Digital Creations employees will be owned by a non-profit organization yet to be created. We think of this new organization as the Python Software Foundation. In the meantime (while the PSF is under construction) I will own such copyrights personally." http://www.python.org/digicool.html No official statement from DC has been made as of this writing, though Paul Everitt has made some informal statements: "I'd like to start by saying that Guido and I have known each other a long time now. Barry too. We all really like each other, but we also know how to disagree constructively." http://weblogs.userland.com/zopeNewbies/discuss/msgReader$831 There was only a slight amount of paranoia triggered by the news. Some people wondered if DC would begin dictating Python's development, or start slanting the standard library toward Zope (discouraging enhancements to the Web development tools, for example). This scenario seems quite improbable. Instead, my crystal ball says it's more likely that certain language features and proposals will be given more of GvR's attention than they've previously gotten. For example, Jim Fulton, Zope's primary architect, has long been interested in ways to specify interfaces in Python: http://www.foretec.com/python/workshops/1998-11/dd-fulton-sum.html So interfaces may suddenly become a bit more interesting to Guido. Mending the class/type dichotomy would also be useful for Zope, and that means the odds of ExtensionClass or some equivalent functionality, being added to Python have probably just increased. (See "Other Matters", below, for an example. ) But I do expect Guido will keep calling the shots as to exactly how any such new features fit into the language. Whither Tk? =========== It was an eventful two weeks for scripting languages in general, really. On October 20th that a company called Interwoven announced that it will be acquiring Ajuba Solutions, formerly known as Scriptics. Scriptics was the company founded by John Ousterhout to provide support for the Tcl scripting language and the Tk GUI toolkit. However, Interwoven isn't interested in Tcl/Tk at all and will not be funding its development. Ajuba knew this was coming, of course, and over the past few months efforts have been made to open up Tcl/Tk development to the community, taking such steps as moving the CVS trees to SourceForge, electing a Tcl Core Team with 14 members, and specifying processes for proposing and voting on core changes (the Tcl equivalent of PEPs). http://dev.scriptics.com/community/coreteam/ http://sourceforge.net/projects/tcl http://sourceforge.net/projects/tktoolkit However, this process is still in its infancy, and the announcement caused much worrying in the Tcl/Tk user community about the language's future and its continued maintenance. This affects Python because Tk, through the Tkinter module, is the most GUI most commonly used with Python. Tkinter is included in the source distribution, it's the most extensively documented, and it's the most portable, supported on the Big Three platforms, namely Windows, Unix, and MacOS. Fredrik Lundh first posted a note about the announcement, and Eric S. Raymond raised the question of what this meant for Tkinter: "This raises anew a question I've been meaning to bring up for the last week: is it finally time to move away from Python's dependence on Tcl/Tk for GUI support?" http://www.python.org/pipermail/python-dev/2000-October/016753.html People were split on this question, though Guido was receptive to the idea ("Yes, it may be time to have this discussion again.") and pointed out some reasons to stick with Tkinter: "Tk has two very high quality widgets: the Canvas and Text widgets are unsurpassed in functionality and robustness by other widget sets. You can draw more lines or characters per second in most toolkits, but few toolkits offer the convenience of marks and tags, not having to deal with refresh events, being able to group objects, move them around, change attributes, etc., etc., etc." http://www.python.org/pipermail/python-dev/2000-October/016754.html Greg Wilson's reaction was "Yes please", and he went on to explain what factors kept him using Tkinter for a recent course: http://www.python.org/pipermail/python-dev/2000-October/016757.html /F thought Tk was still a good choice, and said " ... and trust me, the Python 2.0/Tk8.4/Tkinter3000 combo will rock ;-)". Tkinter3000 is an improved Tk interface that /F has been working on, with more flexibility and better performance. http://tkinter.effbot.org /F also hoped that the Tcl Core Team would become more receptive to making it easier to use Tk from other languages without Tcl having to be in the middle, which would let the maintainers of Tkinter and the Perl/Tk interface participate more in Tk's development. Eric S. Raymond speculated about the success of Tcl's new development model: "Good for Tcl: Osterhout's rather lame attempts to develop under a mixed model have almost certainly come to an end in favor of an Apache-like model funded by big Tcl users." http://www.python.org/pipermail/python-dev/2000-October/016763.html Greg Ewing wondered if stdwin should be revived. GvR and Raymond both thought that far too much work, and not productive of very good results. "And stdwin would really look pathetic in this time", GvR observed. Python isn't tied very tightly to Tk, of course; well-maintained and reasonably complete bindings exist for many different GUI toolkits, such as Qt, GTk+, wxWindows, Windows MFC, and a few more. http://www.thekompany.com/projects/pykde/ http://www.daa.com.au/~james/pygtk/ http://wxpython.org/ http://http://www.oreillynet.com/pub/a/217 wxWindows is probably the most obvious second candidate, since it actually supports all of the Big Three platforms, and no other toolkit does. Robin Dunn, author of the wxPython binding, posted to discuss the status of wxWindows on the Mac: "My understanding is that the version in CVS is nearly up to date with the features in the MSW and GTK versions, though I haven't had a chance to use it myself. ... The next step I guess is getting it wrapped up in wxPython..." http://www.python.org/pipermail/python-dev/2000-October/016764.html There was no clear final decision, and my crystal ball didn't deign to give an answer. Given all the uncertainties, it's probably best to wait and see. If Tk's development continues to progress and becomes more open to languages other than Tcl, Tkinter will probably continue to be the most common Python GUI. If not, we can consider this question in another 6 months, which will give wxWindows and wxPython time to develop on the Mac platform. And who knows? Maybe something else will happen, such as Qt or GTk+ being ported to the Macintosh. Gradual Migration ================= Paul Prescod suggested that we should start thinking about how to make the transition to the vaporware Python 3000 easier: "Rather than delaying painful backwards-compatibility breakage I think we should make it less painful. We should decide where we are going long before we ask our users to move there. I think we should start including alternatives to syntaxes and features that we know are broken. Once people move to the alternatives we can 'reassign' or remove the original syntax with much less pain." http://www.python.org/pipermail/python-dev/2000-October/016776.html Reaction was enthusiastic, GvR commenting: "I think the proper approach is to start a separate migration process for each of these proposed changes. Each should be paced separately (the pace may depend on how hard to swallow the change is for users as well as how hard it is to implement the new functionality) and for each, a separate PEP in the 3000 series should be started." http://www.python.org/pipermail/python-dev/2000-October/016780.html Paul got approval to write PEP #5: "Guidelines for Language Evolution". http://python.sourceforge.net/peps/pep-0005.html Along the way, Tim Peters commented: "Not just to be my usual self , but I do see a from-scratch rewrite as being less likely as the years go by. There's nothing I know of in Guido's plans that can't be done incrementally instead -- and if he doesn't either, selling a total-rewrite project to an employer is probably impossible. The most successful projects I've seen and been on *did* rewrite all the code routinely, but one subsystem at a time." http://www.python.org/pipermail/python-dev/2000-October/016819.html Other matters ============= Neil Schemenauer posted a proposal for a core change that would make ExtensionClass better able to simulate a Python instance: "Extension classes can never pass the PyInstance_Check predicate. I've searched for all occurances of PyInstance_Check in the 2.0 source. In many places that PyInstance_Check occurs a more general 'is this an instance-like type' check would seem to be more suitable." http://www.python.org/pipermail/python-dev/2000-October/016797.html Guido thought this simply papers over the problem in this one particular case, and said "Rather than formalizing the exceptions made for instances, we should work on eradicating the differences between classes and types. I believe that the plans for rich comparisons would or could also take care of this. I hope I'll have more time soon to explore this." Jim Fulton, in a brief followup, said "Me too." Barry Warsaw proposed adding a function to the sys module which would return the stack frame for getting the stack frame of the function's caller: http://www.python.org/pipermail/python-dev/2000-October/016802.html People liked the idea; M.-A. Lemburg, Greg Ward, and Ka-Ping Yee all had their own implementations of this function already. ?!ng reminded the list of his inspect.py module which provides this function, and other functions for inspecting live Python code, and suggested it for inclusion in the standard library: http://lfw.org/python/inspect.py No resolution was arrived at. Related Links ============= Python-dev archives: http://www.python.org/pipermail/python-dev/ Python project page on SourceForge: http://sourceforge.net/projects/python Python Enhancement Proposals (PEPs): http://python.sourceforge.net/peps/ What's New in Python 2.0: http://www.kuchling.com/python/writing/new-python/ From arcege@shore.net Fri Nov 3 16:52:51 2000 From: arcege@shore.net (arcege@shore.net) Date: Fri, 03 Nov 2000 16:52:51 GMT Subject: ExpectPy 1.8.3 (patch) and moving developement to SourceForge Message-ID: I've made a patch to ExpectPy 1.8.2 to handle incompatibilities with Python 2.0's PCRE module ("re"). If you would like to upgrade to Python 2.0, please install this patch. I have also starting using SourceForge for development of ExpectPy. User lists, bug reporting, tarfiles, etc. are hosted there for the ExpectPy code. I hope this encourages people to help me improve the module. The URL at sourceforge is and the new patch is there as well. -Arcege From grante@visi.com Mon Nov 6 14:53:04 2000 From: grante@visi.com (Grant Edwards) Date: 6 Nov 2000 08:53:04 -0600 Subject: Dr. Dobb's Python-URL! - weekly Python news and links (Nov 6) Message-ID: Johannes Nix posts a brief overview of graphics packages and requests advice http://deja.com/=dnc/getdoc.xp?AN=688345444 Janko Hauser replies with a additional suggestion. http://deja.com/=dnc/getdoc.xp?AN=688348989 Jason Cunliffe suggests looking at Blender for game programming. http://deja.com/=dnc/getdoc.xp?AN=688907500 Steve Holden posts a utility to list functions, classes, and variabled from libraries. http://deja.com/=dnc/getdoc.xp?AN=688966613 Alex Martelli explains text search/replace methods. http://deja.com/=dnc/getdoc.xp?AN=689031090 http://deja.com/=dnc/getdoc.xp?AN=689168550 ======================================================================== Everything you want is probably one or two clicks away in these pages: Python.org's Python Language Website is the traditional center of Pythonia http://www.python.org although PythonLabs.com bills itself as "The Python Source", which is becoming increasingly true in 2000 http://www.pythonlabs.com/ PythonWare complements the digest you're reading with the daily python url http://www.pythonware.com/daily comp.lang.python.announce announces new Python software. Be sure to scan this newly-revitalized newsgroup at least weekly. http://deja.com/group/comp.lang.python.announce Andrew Kuchling writes marvelous summaries twice a month of the action on the python-dev mailing list, where the future of Python is truly determined http://www.kuchling.com/python/dev/ The Vaults of Parnassus ambitiously collects Python resources http://www.vex.net/~x/parnassus/ Much of Python's real work takes place on Special-Interest Group mailing lists http://www.python.org/sigs/ Python Consortium emerges as an independent nexus of activity http://www.python.org/consortium Cetus does much of the same http://www.cetus-links.de/oo_python.html Python FAQTS http://python.faqts.com/ Python To-Do List anticipates some of Python's future direction http://www.python.org/cgi-bin/todo.py Python Journal is at work on its second issue http://www.pythonjournal.com Links2Go is a new semi-automated link collection; it's impressive what AI can generate http://www.links2go.com/search?search=python Archive probing trick of the trade: http://www.dejanews.com/dnquery.xp?QRY=&DBS=2&ST=PS&defaultOp=AND&LNG=ALL&format=threaded&showsort=date&maxhits=100&groups=comp.lang.python Previous - (U)se the (R)esource, (L)uke! - messages are listed here: http://purl.org/thecliff/python/url.html or http://www.dejanews.com/dnquery.xp?QRY=~g%20comp.lang.python%20Python-URL%21 Suggestions/corrections for next week's posting are always welcome. [http://www.egroups.com/list/python-url-leads/ is hibernating. Just e-mail us ideas directly.] To receive a new issue of this posting in e-mail each Monday morning, ask to subscribe. Mention "Python-URL!". -- The Python-URL! Team-- Dr. Dobb's Journal (http://www.ddj.com) is pleased to participate in and sponsor the "Python-URL!" project. -- Cameron Laird Business: http://www.Phaseit.net Personal: http://starbase.neosoft.com/~claird/home.html From edcjones@erols.com Mon Nov 6 22:45:38 2000 From: edcjones@erols.com (Edward C. Jones) Date: Mon, 06 Nov 2000 17:45:38 -0500 Subject: ANN: Fetchem image newsgroup filter first release Message-ID: The first public version of Fetchem has been released. It can be found at "http://sourceforge.net/projects/fetchem/". Fetchem is a download/filter/decode program for image newsgroups written entirely in Python. It uses a variety of algorithms to filter spam out of image newsgroups. There is currently so much spam in these newsgroups that it has become very difficult to read them. Good spam filters require a fully powered programming language. Some of the spam can be removed by regex searches of the news article headers. But removing other spam, including the notorious high volume PH.E'R-OM,O^NE spam, requires the power of a complete programming language. Since Python (http://www.python.org) is easy to read and write, it is used in Fetchem. FEATURES Some of the features of Fetchem (terrible name) are: 1. Powerful filtering capabilities that the user can reprogram. (See match.py.) 2. Prepares HTML for your browser. "html.py" contains (yet another) HTML writing program. It uses Python's keyword arguments to pass in the attributes for each tag. For example, FONT('stuff', Color='ff0000') returns the string stuff 3. The header data is kept in a robust MySQL database. 4. Downloads news article headers and bodies. Uses the uudeview library to decode the images. 5. Interfaces with your browser using a proxy server written using medusa. REQUIREMENTS A Linux system with Python 2.0 installed. MySQL, MySQLdb, medusa, and uudeview should be present. From aleaxit@yahoo.com Tue Nov 7 16:00:53 2000 From: aleaxit@yahoo.com (Alex Martelli) Date: Tue, 7 Nov 2000 17:00:53 +0100 Subject: gmpy 0.1 (pre-alpha) at http://sourceforge.net/projects/gmpy/ Message-ID: A new module interfacing GMP 3 to Python 2. So far, only mpz (integer) and mpf (float) types, no mpq (rational); incomplete; sketchy docs. "Comes with" a "found-on-the-net" GMP.LIB for Win32/MSVC++6 and a working gmpy.pyd for Python 2 built with it (separate download from gmpy.c and distutils' setup.py). Needs some project-direction decisions pretty soon (keep types immutable or make them mutable; use C or C++...), so all interested parties are invited to visit the sourceforge pages & participate/advise. Alex From aleaxit@yahoo.com Tue Nov 7 19:49:19 2000 From: aleaxit@yahoo.com (Alex Martelli) Date: Tue, 7 Nov 2000 20:49:19 +0100 Subject: gmpy 0.1 (pre-alpha) available on Sourceforge References: Message-ID: [Reposting due to justified requests for extra info -- sorry for being too skimpy the first time around!] "GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers" -- stands for "GNU Multiple Precision" arithmetic library, lives at http://www.swox.com/gmp/. gmpy (General Multiprecision PYthon arithmetic stuff) is (initially) a Python 2 module interfacing to GMP 3, and lives at http://sourceforge.net/projects/gmpy/. It's based on C sources originally by AMK and Niels Möller (for earlier GMP and Python releases, and only exposing arbitrary-precision-integers functionality). Current gmpy version is 0.1 (pre-alpha): only exposes mpz (integer) and mpf (float) types, not yet mpq (rationals), from GMP. gmpy comes with a "found on the net" GMP.LIB for Win32/MSVC++6 (from site http://member.nifty.ne.jp/tkouya/bnc/wingmp.html, which is in Japanese, a language I can't, alas, read), and a working gmp.pyd built from it. (In a separate download from the C-source/doc.txt/setup.py one). gmpy needs some project-direction decisions pretty soon (keep types immutable or make them mutable; use C or C++...), so all interested parties are invited to visit the sourceforge page & participate/advise. Alex From Vadim.zeitlin@dptmaths.ens-cachan.fr Fri Nov 10 18:05:09 2000 From: Vadim.zeitlin@dptmaths.ens-cachan.fr (Vadim Zeitlin) Date: Fri, 10 Nov 2000 19:05:09 +0100 (CET) Subject: ANN: Mahogany 0.60 GTK+/Win32 mail client with Python scripting Message-ID: A new release of the `Mahogany' e-Mail and News client has been made. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Source and binaries for a variety of Linux and Unix systems are available at http://mahogany.sourceforge.net/ and http://sourceforge.net/projects/mahogany/ Binaries for Win32 systems and debian packages will be made available in a couple of days. In this message: 1. Announcing Mahogany Version 0.60 2. Changes against the previous release Announcing Mahogany Version 0.60 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Mahogany is an OpenSource(TM) cross-platform mail and news client. It is available for X11/Unix and MS Windows platforms, supporting a wide range of protocols and standards, including POP3, IMAP and full MIME support as well as secure communicaionts via SSL. Thanks to its built-in Python interpreter it can be extended far beyond its original functionality. Mahogany's wealth of features and ease of use make it one of the most powerful clients available, providing a consistent and intuitive interface across all supported platforms. It aims at supporting GNOME (and KDE for that matter) and includes an extendable address book system supporting hierarchical organisation of entries, group aliases, searching the database and easy editing, with support for other program's address database formats. Currently Mahogany's native format, (X)Emacs' BBDB address books and PalmOS address books are supported. Mahogany is being developed using the OpenSource wxWindows application framework, building on the GTK+ toolkit on Unix. Mahogany is constantly being tested on a variety of Linux system, Solaris-sparc and MS Windows. It should compile and work on any modern Unix platform. Changes Since Release 0.50 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Key changes are: - fixes to all serious bugs from version 0.50 - significantly improved IMAP support: it is now possible to subscribe to all folders on an IMAP server with a single click or to manually select them from a dialog; Mahogany also uses server side message functions when possible resulting in huge performance improvement - new, improved filtering system (warning: old filters won't work any more, contact us if this is really a serious problem for you) - charset and encoding support for message contents and headers (including autodetecting the charset of incoming messages and setting it for the outgoing ones) - mail can be sent using local MDA (sendmail) in addition to SMTP - import of settings and folder collections from Pine and XFMail, vCard support (import/export from addess book, attach to messages) UI improvements: - drag and drop for message copying and moving - "Quick Move" and "Quick Filter" functions - folders now can (finally) be renamed - quoted text highlighting in the message viewer! - sort the messages display by simply clicking on the corresponding column, the sorting dialog also has been improved - folders with new/recent messages are highlighted in the folder tree Other miscellaneous improvements: - it is possible (although still discouraged) to run Mahogany as root - passwords in the config file are encrypted using TwoFish algorithm - option to always use external editor by default - messages from oneself are optionally marked as such - support for password protected SMTP and NNTP servers - more verbose error reporting and detection - OpenSSL loaded dynamically if available - PalmOS module supports AvantGo/MAL synchronisation - templates now may be used for replying/forwarding as well - many other various fixes New experimental features include: - supporting multiple-identities and easy switching between them - support of storing configuration settings on an IMAP server allowing to share them between different machines/accounts Please see the CHANGES file in the distribution for an even more detailed list of changes. Future Plans =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Next, we hope to tackle the following: - improving the message editor (work in progress) - full HTML message editing/displaying (almost complete) - better POP support by using persistent message IDs and flags - multi-threading to allow network operations to happen in background - PGP/GPG support - LDAP support Please direct any queries to mahogany-developers@lists.sourceforge.net and don't hesitate to contact us if you would like to participate in Mahogany development! Known bugs: ----------- There are always some, listed on our bugtracker at http://www.wxwindows.org/m-bugs/ and we are working on them. Hoping you will find Mahogany usefull, M dev-team From grante@visi.com Tue Nov 14 05:15:55 2000 From: grante@visi.com (Grant Edwards) Date: 13 Nov 2000 23:15:55 -0600 Subject: Dr. Dobb's Python-URL! - weekly Python news and links (Nov 13) Message-ID: Arcege announces beta release of ExpectPy 1.9 http://deja.com/=dnc/getdoc.xp?AN=690007045 Gordon McMillan's web pages on stackless python. http://deja.com/=dnc/getdoc.xp?AN=690118682 Mike Clarkson announced version 8.1.0 of Tix widget set. http://deja.com/=dnc/getdoc.xp?AN=690402323 Alex Martelli discusses "interfaces" and Python. http://deja.com/=dnc/getdoc.xp?AN=690096797 http://deja.com/=dnc/getdoc.xp?AN=691164862 http://deja.com/=dnc/getdoc.xp?AN=691013918 David Bolen with hints on thread programming. http://deja.com/=dnc/getdoc.xp?AN=691029995 Alex Martelli and Steve Horne on how to implement conditionals in lambdas http://deja.com/=dnc/getdoc.xp?AN=691631820 http://deja.com/=dnc/getdoc.xp?AN=691650417 http://deja.com/=dnc/getdoc.xp?AN=691682649 http://deja.com/=dnc/getdoc.xp?AN=691590465 Martelli, Hammond, et al. on exporting events from Python COM classes http://deja.com/=dnc/viewthread.xp?AN=692080474 ======================================================================== Everything you want is probably one or two clicks away in these pages: Python.org's Python Language Website is the traditional center of Pythonia http://www.python.org although PythonLabs.com bills itself as "The Python Source", which is becoming increasingly true in 2000 http://www.pythonlabs.com/ PythonWare complements the digest you're reading with the daily python url http://www.pythonware.com/daily comp.lang.python.announce announces new Python software. Be sure to scan this newly-revitalized newsgroup at least weekly. http://deja.com/group/comp.lang.python.announce Andrew Kuchling writes marvelous summaries twice a month of the action on the python-dev mailing list, where the future of Python is truly determined http://www.kuchling.com/python/dev/ The Vaults of Parnassus ambitiously collects Python resources http://www.vex.net/~x/parnassus/ Much of Python's real work takes place on Special-Interest Group mailing lists http://www.python.org/sigs/ Python Consortium emerges as an independent nexus of activity http://www.python.org/consortium Cetus does much of the same http://www.cetus-links.de/oo_python.html Python FAQTS http://python.faqts.com/ Python To-Do List anticipates some of Python's future direction http://www.python.org/cgi-bin/todo.py Python Journal is at work on its second issue http://www.pythonjournal.com Links2Go is a new semi-automated link collection; it's impressive what AI can generate http://www.links2go.com/search?search=python Archive probing trick of the trade: http://www.dejanews.com/dnquery.xp?QRY=&DBS=2&ST=PS&defaultOp=AND&LNG=ALL&format=threaded&showsort=date&maxhits=100&groups=comp.lang.python Previous - (U)se the (R)esource, (L)uke! - messages are listed here: http://purl.org/thecliff/python/url.html or http://www.dejanews.com/dnquery.xp?QRY=~g%20comp.lang.python%20Python-URL%21 Suggestions/corrections for next week's posting are always welcome. [http://www.egroups.com/list/python-url-leads/ is hibernating. Just e-mail us ideas directly.] To receive a new issue of this posting in e-mail each Monday morning, ask to subscribe. Mention "Python-URL!". -- The Python-URL! Team-- Dr. Dobb's Journal (http://www.ddj.com) is pleased to participate in and sponsor the "Python-URL!" project. -- Cameron Laird Business: http://www.Phaseit.net Personal: http://starbase.neosoft.com/~claird/home.html From loewis@informatik.hu-berlin.de Mon Nov 13 23:15:28 2000 From: loewis@informatik.hu-berlin.de (Martin von Loewis) Date: 14 Nov 2000 00:15:28 +0100 Subject: PyXML 0.6.2 Message-ID: Version 0.6.2 of the Python/XML distribution is now available. It should be considered a beta release, and can be downloaded from the following URLs: http://download.sourceforge.net/pyxml/PyXML-0.6.2.tar.gz http://download.sourceforge.net/pyxml/PyXML-0.6.2.win32-py1.5.exe http://download.sourceforge.net/pyxml/PyXML-0.6.2.win32-py2.0.exe http://download.sourceforge.net/pyxml/PyXML-0.6.2-1.5.2.i586.rpm http://download.sourceforge.net/pyxml/PyXML-0.6.2-2.0.i586.rpm Changes in this version, compared to 0.6.1: * Synchronize with standard library from Python 2.0 * Updated to 4DOM from 4Suite 0.9.1. This corrects many errors, see the 4Suite ChangeLog for details. Most notably, the SAX reader interface has been expanded to support arbitrary parsers, and a PyExpat reader class was added. * Add minidom functions: normalize and hasAttribute. * Fix a number of minor bugs. * More tests pass now, in particular test_dom, and test/dom/test. The Python/XML distribution contains the basic tools required for processing XML data using the Python programming language, assembled into one easy-to-install package. The distribution includes parsers and standard interfaces such as SAX and DOM, along with various other useful modules. The package currently contains: * XML parsers: Pyexpat (Jack Jansen), xmlproc (Lars Marius Garshol), sgmlop (Fredrik Lundh). * SAX interface (Lars Marius Garshol) * DOM interface (Stefane Fermigier, A.M. Kuchling) * 4DOM interface from Fourthought (Uche Ogbuji, Mike Olson) * Various utility modules and functions (various people) * Documentation and example programs (various people) The code is being developed bazaar-style by contributors from the Python XML Special Interest Group, so please send comments, questions, or bug reports to . For more information about Python and XML, see: http://www.python.org/topics/xml/ -- Martin v. Löwis http://www.informatik.hu-berlin.de/~loewis From michels@linmpi.mpg.de Tue Nov 14 08:27:55 2000 From: michels@linmpi.mpg.de (Helmut Michels) Date: Tue, 14 Nov 2000 09:27:55 +0100 Subject: Data Plotting Library DISLIN 7.4 Message-ID: I am pleased to announce version 7.4 of the data plotting software DISLIN. DISLIN is a high-level and easy to use plotting library for displaying data as curves, bar graphs, pie charts, 3D-colour plots, surfaces, contours and maps. Several output formats are supported such as X11, VGA, PostScript, CGM, HPGL, TIFF, PNG and Prescribe. The software is available for several C, Fortran 77 and Fortran 90 compilers. Plotting extensions for the interpreting languages Perl, Python and Java are also supported for the most operating systems. Some of the new features of DISLIN version 7.4 are: - TeX instructions for plotting mathematical formulas can be used in all text plotting routines; - plotting of isosurfaces based on the Marching Cubes method is supported; - lighting can be enabled for shaded surfaces; - the PPM format is added to the list of output formats. DISLIN distributions and manuals in PDF, PostScript and HTML format are available from the DISLIN Home Page http://www.linmpi.mpg.de/dislin and via FTP from the server ftp://ftp.gwdg.de/pub/grafik/dislin ------------------- Helmut Michels Max-Planck-Institut fuer Aeronomie Phone: +49 5556 979-334 Max-Planck-Str. 2 Fax : +49 5556 979-240 D-37191 Katlenburg-Lindau Mail : michels@linmpi.mpg.de From Jerome.Alet@unice.fr Tue Nov 14 11:10:05 2000 From: Jerome.Alet@unice.fr (Jerome Alet) Date: Tue, 14 Nov 2000 12:10:05 +0100 Subject: ANN: ScanErrLog 1.6 Message-ID: Hi, I'm pleased to announce that ScanErrLog 1.6 is out. ScanErrLog is a tool to parse Apache's error_log files and generate reports based on the number of occurences of each error message. This is particulary useful for web sites maintainers or hosting providers to know what are the most frequent/annoying errors web surfers encounter when visiting their web sites. You can test it online at http://cortex.unice.fr/~jerome/scanerrlog/TRY-ME.html ScanErrLog can be used as a standalone program, as a CGI script, or you can import it in your own Python programs and use the classes it defines. ScanErrLog can produce reports in HTML, PDF, XML and plain TEXT format. This new version fixes the last known bug in the PDF output (You'll need ReportLab 1.01 - http://www.reportlab.com). You can download ScanErrLog from http://cortex.unice.fr/~jerome/scanerrlog/ Comments are very welcome. thank you for reading. -- Jerome ALET - alet@unice.fr - http://cortex.unice.fr/~jerome Fac de Medecine de Nice http://wwwmed.unice.fr Tel: (+33) 4 93 37 76 30 Fax: (+33) 4 93 53 15 15 28 Avenue de Valombrose - 06107 NICE Cedex 2 - FRANCE From ljohnson@resgen.com Tue Nov 14 15:14:21 2000 From: ljohnson@resgen.com (Lyle Johnson) Date: Tue, 14 Nov 2000 09:14:21 -0600 Subject: ANNOUNCE: FXPy-0.99.143 (Python Bindings to FOX GUI Library) Message-ID: This is an update of FXPy, a Python extension module which provides an interface to the FOX cross-platform GUI library: Home Page: http://home.hiwaay.net/~johnson2/FXPy Download Source: ftp://ftp.cfdrc.com/pub/FOX/FXPy-0.99.143.tar.gz Windows Binaries: ftp://ftp.cfdrc.com/pub/FOX/FXPy-0.99.143-win32.exe To build FXPy from the sources, you will also need to download version 0.99.143 of the FOX library: FOX Home Page: http://www.cfdrc.com/FOX/fox.html Download Source: ftp://ftp.cfdrc.com/pub/FOX/fox-0.99.143.tar.gz ftp://ftp.cfdrc.com/pub/FOX/fox-0.99.143.zip As you may have guessed by now, the latest release of FXPy is version 0.99.143. What is it? ----------- FXPy is a Python extension module which provides an interface to the FOX cross-platform GUI library. With a few minor exceptions, FXPy provides a complete interface to FOX. FOX is a C++-based toolkit for developing graphical user interfaces easily and effectively. Some of the significant features of FOX include: * A rich set of widgets (including dials, shutters, tree lists, and many other "modern" widgets). * Powerful but easy-to-use layout managers. * Extensive support for 3-D modeling using OpenGL or Mesa. * Supports the XDND (v4) protocol for drag-and-drop. * Registry for persistent application settings. * Runs natively under Unix/X and Microsoft Windows. * And much, much more! Please see the FOX home page (URL listed above) for more details about the FOX library's features. Also consider subscribing to the foxgui-users mailing list for the latest news about FOX development; again, see the FOX home page for information on this. FXPy is (c) 1999, 2000 Lyle Johnson (lyle@users.sourceforge.net) and is released under the GNU Lesser General Public License.

FXPy-0.99.143 - interface to the FOX cross-platform GUI library. (13-Nov-00) From kare@speech.kth.se Tue Nov 14 17:52:21 2000 From: kare@speech.kth.se (Kare Sjolander) Date: Tue, 14 Nov 2000 18:52:21 +0100 Subject: ANNOUNCE: The Snack Sound Toolkit v2.0.3 Message-ID: This release contains: * Many bug-fixes * Updated documentation * Updated demos that reflect new Snack features * Expanded test suite * Improved Windows installers The Snack Sound Toolkit is designed to be used with a scripting language. Snack adds commands to play, record, and process sound and supports in-memory sound objects, file based audio, and streaming audio. It handles fileformats such as WAV, MP3, AU, AIFF, and NIST/Sphere. Snack is extensible, new commands, filters, and sound file formats can be added using the Snack C-library. An easy to build example extension is contained in the source distribution. Snack also does sound visualization, e.g. waveforms and spectrograms. The visualization objects update in real-time and can output postscript. Snack works with Tcl8.0 - Tcl8.4 and Python 1.5.2-2.0 Platforms: Linux, Solaris, HP-UX, IRIX, NetBSD, Macintosh, and Windows95/98/NT/2K. Source and binaries can be downloaded from http://www.speech.kth.se/snack/ Regards, Kare Sjolander kare@speech.kth.se From djc@object-craft.com.au Thu Nov 16 00:06:24 2000 From: djc@object-craft.com.au (Dave Cole) Date: 16 Nov 2000 11:06:24 +1100 Subject: Sybase module 0.9 released Message-ID: What is it: The Sybase module provides a Python interface to the Sybase relational database system. The Sybase package supports almost all of the Python Database API, version 2.0 with extensions. The module works with Python versions 1.5.2 and later and Sybase versions 11.0.3 and later. It is based on the Sybase Client Library (ct_* API), and the Bulk-Library Client (blk_* API) interfaces. Changes: - A Numeric object exposes the Sybase numeric / decimal data type to Python. Columns of type numeric / decimal will be returned as Numeric objects. Numeric objects can be used in almost all places as other Python number objects. The following operations have been implemented; +, -, *, /, int(), float(), long(), str(), cmp(), repr(), hash(), abs(). A Numeric object has two readonly attributes; precision, and scale. You can create a new Numeric object by using the Sybase.numeric(value) function. This will convert the int / long / float / string object passed as value to Numeric. At the moment, money and money4 types are still transformed into float objects because I have not worked out how to tell the Sybase library to generate the right number of decimal places in arithmetic results. For example: You can pickle the new numeric data type. >>> import Sybase >>> n = Sybase.numeric(100200300400500L) >>> n.precision, n.scale (77, 0) >>> m = Sybase.numeric(n, 30, 2) >>> m 100200300400500.00 >>> m.precision, m.scale (30, 2) If you want to increase the scale without modifying the precision, pass -1 as the precision. >>> m = Sybase.numeric(n, -1, 4) >>> m 100200300400500.0000 >>> m.precision, m.scale (77, 4) Where can you get it: http://www.object-craft.com.au/projects/sybase/ - Dave -- http://www.object-craft.com.au From uche.ogbuji@fourthought.com Thu Nov 16 02:53:21 2000 From: uche.ogbuji@fourthought.com (uche.ogbuji@fourthought.com) Date: Wed, 15 Nov 2000 19:53:21 -0700 Subject: ANN: 4Suite 0.9.2 Message-ID: ANN: 4Suite 0.9.2 Fourthought, Inc. (http://Fourthought.com) announces the release of 4Suite 0.9.2 --------------------------- Open source tools for standards-based XML, DOM, XPath, XSLT, RDF XPointer, XLink and object-database development in Python 4Suite is a collection of Python tools for XML processing and object database management. An integrated packaging of several formerly separately-distributed components: 4DOM, 4XPath and 4XSLT, 4RDF, 4ODS 4XPointer and featuring the new 4XLink and DbDOM. News ---- - The 4Suite home page has been moved to http://4Suite.org - 4Suite has moved to a derivative of the Apache license. - 4Suite now workd with Python 2.0 as well as Python 1.5.2. Python 1.6 is not supported, although it might work. Python 1.5.2 support is expected to be dropped in the next release of 4Suite. - PyXML 0.6.2 is still required even if you are using Python 2.0 http://sourceforge.net/projects/pyxml - Changes to the software: * Introduced 4XLink: A processor to expand XLink attributes * Introduced DbDom: An alpha Dom implmentaiton on top of 4ODS * ODS: Improved the test suites to handle more cases and conform to protocol * cDomlette: added support for methods * 4RDF: Fixes and improvements to serialization, the back end and the API * All: Many improvements to the docs * All: Standardized reader interfaces across DOM implementations * All: Test with python 2.0 * All: PyXML not needed with Python 2.0 * Many misc optimizations * Many misc bug-fixes - We have set up a contest for stories of 4Suite usage. See http://www.4suite.org/contest.epy More info and Obtaining 4Suite ------------------------------ Please see http://4Suite.org From where you can download source, Windows and Linux binaries. 4Suite is distributed under a license similar to that of the Apache Web Server. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +01 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Ste. C, Boulder, CO 80301-2537, USA Software-engineering, knowledge-management, XML, CORBA, Linux, Python From akuchlin@mems-exchange.org Thu Nov 16 03:55:12 2000 From: akuchlin@mems-exchange.org (A.M. Kuchling) Date: Wed, 15 Nov 2000 22:55:12 -0500 Subject: python-dev summary, Nov 1-15 Message-ID: Python-dev summary, November 1-15, 2000 ======================================= To comment on material in this python-dev summary, you can simply post to comp.lang.python / . These summaries are archived at . The move to Digital Creations has broken the dam, burying python-dev in a flood of new ideas. This two week period was very busy, beginning with a call for feature proposals for Python 2.1. This summary will therefore be more telegraphic than usual; it would be too time-consuming to summarize the major threads, which were all quite lengthy, and the final result would still distort the arguments. So, if one of the topics is of interest to you, please refer to the python-dev archives for all the details. Python 2.1 tasks ================ GvR listed the PEPs he wants to consider for Python 2.1, and requested more input: "If you have an idea for a PEP that you think should be implemented in Python 2.1, or if you want to revive a PEP that's currently listed in one of the "unattainable" categories, now's the time to make a plea!" http://www.python.org/pipermail/python-dev/2000-November/017072.html Various people followed up stating what they'd like to work on: Moshe Zadka wants to tackle the question of integer division (see below), AMK wants to use the Distutils to build Python itself, and so forth. Discussion of most of the topics covered in this summary was triggered by this call for suggestions. After being closely focused on the release of Python 2.0 for so long, python-dev is beginning to direct its gaze toward the distant horizon of the future. Integer division ================ Moshe drafted PEP 228, "Reworking Python's Numeric Model". This PEP proposes a numeric model for Python that isn't based on C's model, which ultimately derives from machine representations of integers and floats. "While coercion rules will remain for add-on types and classes, the built in type system will have exactly one Python type -- a number." http://python.sourceforge.net/peps/pep-0228.html The ensuing discussion was scattered, mostly revolving around whether and when to use rational numbers, and whether floating point literals should be considered exact or inexact numbers. It's not obvious that this PEP can be solidified in time for its results to be incorporated in Python 2.1. Stackless Python, and microthreads ================================== Some sort of resolution to Stackless Python seems likely for 2.1. Guido is inclined to take a solution for 90% of the problems: "I still think that the current Stackless implementation is too complex, and that continuations aren't worth the insanity they seem to require (or cause :-), but that microthreads and coroutines *are* worth having and that something not completely unlike Stackless will be one day the way to get there..." He then went on to post a strawman API for microthreads: http://www.python.org/pipermail/python-dev/2000-November/017216.html Christian Tismer agreed with him that continuations aren't really necessary. "I'm happy to toss continuations for core Python, if we can find the right building blocks for coro/gen/uthreads. I think Guido comes quite near this, already." http://www.python.org/pipermail/python-dev/2000-November/017252.html And so did Tim: "I don't know of any comprehensible application of continuations that can't be done without them." http://www.python.org/pipermail/python-dev/2000-November/017258.html Christian Tismer enumerated the changes to ceval.c made by Stackless: http://www.python.org/pipermail/python-dev/2000-November/017238.html Finally, Gordon McMillan put up a Stackless intro and tutorial: http://www.mcmillan-inc.com/stackless.html Class/type dichotomy ==================== The seam that runs between classes, defined in Python code, and types, defined in C code, has been in Python from the beginning. Various schemes for bridging the gap were suggested. M.A. Lemburg suggested adding an extra indirection, letting C types identify themselves as subclasses of another C type: http://www.python.org/pipermail/python-dev/2000-November/017152.html Greg Ewing, inspired by Ruby's implementation, suggested adding a global dictionary to add extra attributes to type instances: http://www.python.org/pipermail/python-dev/2000-November/017196.html Scoping changes =============== Python's two-level scoping rules have been the subject of debate for a while. Many new users expect Python to have Pascal-like static scoping and are surprised when variable references in lambdas or other nested functions behave unexpectedly. Previously this would have presented technical problems, since nesting scopes would create cyclical references, which couldn't be handled by Python's reference counting. Jeremy wrote PEP 227, "Statically Nested Scopes", to make a concrete proposal: "The current language definition defines exactly three namespaces that are used to resolve names -- the local, global, and built-in namespaces. The addition of nested scopes would allow resolution of unbound local names in enclosing functions' namespaces." http://python.sourceforge.net/peps/pep-0227.html Some discussion ensued, mostly about whether it's worth changing this just to fix nested functions. A side thread on dynamic scoping, as opposed to static, spun off at one point, but since practically everyone thought it was a bad idea, nothing emerged from it worth summarizing. Other matters ============= Another item on GvR's list for 2.1 was a framework for printing optional warnings: http://www.python.org/pipermail/python-dev/2000-November/017134.html Coincidentally, Paul Prescod was also working on a warning framework, and had a draft PEP: http://www.python.org/pipermail/python-dev/2000-November/017144.html AMK tried to raise some interest in PEP 222, which lists some improvements to make Web programming in Python easier, but there seems to be little interest. If no further interest is shown by the community, the PEP will simply be abandoned. http://python.sourceforge.net/peps/pep-0222.html A Web page listing critical patches for 2.0 was created: http://www.python.org/cgi-bin/moinmoin Related Links ============= Python-dev archives: http://www.python.org/pipermail/python-dev/ Python project page on SourceForge: http://sourceforge.net/projects/python Python Enhancement Proposals (PEPs): http://python.sourceforge.net/peps/ From mal@lemburg.com Thu Nov 16 15:24:15 2000 From: mal@lemburg.com (M.-A. Lemburg) Date: Thu, 16 Nov 2000 16:24:15 +0100 Subject: ANN: New URL for the mx-Extensions (mxDateTime,mxODBC,etc) Message-ID: [I'm resending this, because the note I sent yesterday didn't seem to have made it to the newsgroups.] Hi everybody, due to the frequent downtimes of Starship.python.net I am moving all my Python Pages including the mx Extensions to a new site which will hopefully provide a more stable platform. Python Pages URL ---------------- You can find everything at this new URL: http://www.lemburg.com/python/ Please update your links to this new URL. Once I get my login for starship to work again, I'll also post an announcement there. mx Extensions URL ------------------ The mx Extensions (e.g. mxDateTime, mxODBC, mxTextTools, etc.) can be downloaded in versions for Python 1.5.2 and Python 2.0 from: http://www.lemburg.com/python/mxExtensions.html Sorry for the delays and mixups during the last few days, -- Marc-Andre Lemburg ______________________________________________________________________ Company: http://www.egenix.com/ Consulting: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/ From johnw@gnu.org Thu Nov 16 18:57:16 2000 From: johnw@gnu.org (John Wiegley) Date: Thu, 16 Nov 2000 11:57:16 -0700 Subject: ANN: DOOP (Distributed Pythontic MOO) 0.1.1 Message-ID: DOOP is a distributed, object-oriented MOO server written in Python. It began with the POO source of last year, but has diverged greatly from it. This version is GPL, with the kind permission of the original POO author, Joseph Strout. The server is in pre-alpha stage at the moment, though most of the functionality is working just fine. I still have to hammer out some of the scripts, and test the remoting/multi-threaded code under heavy load. You can try out a one-user version of the server at: http://doop.sourceforge.net Just run the script "bootstrap", followed by "run". Note that you will need Pyro 1.4 to use DOOP, with the modifications below. Suggestions are welcome! John Wiegley ---------------------------------------------------------------------- --- Pyro-1_4/Pyro/__init__.py Mon Aug 7 14:07:51 2000 +++ pyro/Pyro/__init__.py Thu Nov 16 10:19:52 2000 @@ -27,13 +27,15 @@ PYRO_VERSION = '1.4' -import configuration, os +import configuration, os, os.path config = configuration.Config() try: confFile = os.environ['PYRO_CONFIG_FILE'] except KeyError: confFile = '' +if not confFile and os.path.isfile("Pyro.conf"): + confFile = "Pyro.conf" config.setup(confFile) --- Pyro-1_4/Pyro/core.py Sun Oct 15 06:01:36 2000 +++ pyro/Pyro/core.py Thu Nov 16 10:21:23 2000 @@ -60,7 +60,7 @@ if flags & RIF_Varargs: # reconstruct the varargs from a tuple like (a,b,(va1,va2,va3...)) args=args[:-1]+args[-1] - if method in ('remote_hasattr', 'remote_getattr', 'remote_setattr'): + if method in dir(ObjBase): return apply(getattr(self,method),args,keywords) else: return apply(getattr(self.delegate,method),args,keywords) @@ -187,11 +187,6 @@ def __str__(self): return repr(self) - # Note that a slightly faster way of calling is this: - # instead of proxy.method(args...) use proxy('method',args...) - def __call__(self, method, *vargs, **kargs): - self._name.append(method) - return self.__invokePYRO__ def __invokePYRO__(self, *vargs, **kargs): if self.adapter is None: # delayed adapter binding. . From jh@web.de Sat Nov 18 00:06:56 2000 From: jh@web.de (Jürgen Hermann) Date: Sat, 18 Nov 2000 01:06:56 +0100 Subject: [ANN] MoinMoin Release 0.5 Message-ID: A WikiWikiWeb is a collaborative hypertext environment, with an emphasis on easy access to and modification of information. MoinMoin is a Python WikiClone that allows you to easily set up your own wiki, only requiring a Web server and a Python installation. This release features graphical smileys, processing instructions (page redirection, multiple input formats, comments), a RandomPage macro, configurable HTML page footers, and the usual set of bugfixes. The code is now refactored to modules, and as expected a lot easier to extend and maintain. While some of the new features are not fully finished, some quite useful ones are (see the list below), and the active code base has reached some maturity. As a consequence of the multi-module implementation, starting with this release you need to have the "MoinMoin" directory in your python path, since "moin.cgi" is now only a small driver to a package named "MoinMoin" (said directory). See "INSTALL" for more information. As a compensation for the slightly more complex setup, there is now a "test.cgi" script to check your installation. For multi-wiki setups, the new scheme is actually easier (only one directory you need to update). Homepage: http://moin.sourceforge.net/ Download: http://download.sourceforge.net/moin/ Mailing lists: http://lists.dragon-ware.com/mailman/listinfo/moin-users http://lists.dragon-ware.com/mailman/listinfo/moin-dev New features: * Major refactoring: code is now broken up into modules within the "MoinMoin" package * Diagnosis of installation via a "test.cgi" script * Smileys * "#format" processing instruction * "##comment" * [[RandomPage]] and [[RandomPage(number)]] macro * configurable footer ("page_footer1" and "page_footer2") * "#redirect" processing instruction Bugfixes: * Bugfix for broken CGI environment of IIS/4.0 * URLs and InterWiki links are now less greedy (punctuation at the end is excluded, and "<" ends them, too) From frederic.giacometti@arakne.com Mon Nov 20 02:42:15 2000 From: frederic.giacometti@arakne.com (Frederic Giacometti) Date: Sun, 19 Nov 2000 21:42:15 -0500 Subject: JPE - Java Python Extension Project Message-ID: Hello, I am just dropping a note to announce the alpha release of the first implementation of a full-fledged Java-Python integration: JPE. In contrast to JPython, this implementation relies on "C" Python and Java 2.0 SDK 1.2's JNI C API. In other terms, JPE maintains a Java and a Python virtual machines running in the same process space (while JPython entirely runs within the Java virtual machine). Java and Python threads are associated together at the OS thread level. For many other question: http://www/arakne.com/jpe. The source (Mozilla open source license) is available on sourceforge at http://sourceforge.net/projects/jpe. Ciao, Frederic Giacometti frederic.giacometti@arakne.com From grante@visi.com Mon Nov 20 16:49:06 2000 From: grante@visi.com (Grant Edwards) Date: 20 Nov 2000 10:49:06 -0600 Subject: Dr. Dobb's Python-URL! - weekly Python news and links (Nov 20) Message-ID: Kind of a slow week -- maybe everybody is paying too much attention to Florida. Keep watching comp.lan.python.announce, though. Steve Holden points out the "dtuple" package for turning tuples/lists into objects or dictionaries with named attributes. http://deja.com/=dnc/getdoc.xp?AN=691663734 Bernhard Reiter publishes wxPython article (German) in magzine "sw-development". http://deja.com/=dnc/getdoc.xp?AN=694747967 Andrew Dalke politely explains the convention of a "main" function and associated textual formatting http://deja.com/=dnc/getdoc.xp?AN=695235053 Alex Martelli writes wisely and comprehensively. This time his subject is run-time type calculation http://deja.com/=dnc/getdoc.xp?AN=695348220 While thinking about list comprehensions, he ventures perilously near the land of over-refined arcana, before emerging with a lovely example of correct and meaningful usage http://deja.com/=dnc/getdoc.xp?AN=695705631 jepler epler correctly promotes os.path as a superior alternative to RE-slinging http://deja.com/=dnc/getdoc.xp?AN=695477505 A loooong thread on "Ruby and Python" includes highlights which not only sagely contrast those two, but also examine several interesting tangents http://deja.com/=dnc/viewthread.xp?AN=694317151 ======================================================================== Everything you want is probably one or two clicks away in these pages: Python.org's Python Language Website is the traditional center of Pythonia http://www.python.org although PythonLabs.com bills itself as "The Python Source", which is becoming increasingly true in 2000 http://www.pythonlabs.com/ PythonWare complements the digest you're reading with the daily python url http://www.pythonware.com/daily comp.lang.python.announce announces new Python software. Be sure to scan this newly-revitalized newsgroup at least weekly. http://deja.com/group/comp.lang.python.announce Andrew Kuchling writes marvelous summaries twice a month of the action on the python-dev mailing list, where the future of Python is truly determined http://www.kuchling.com/python/dev/ The Vaults of Parnassus ambitiously collects Python resources http://www.vex.net/~x/parnassus/ Much of Python's real work takes place on Special-Interest Group mailing lists http://www.python.org/sigs/ Python Consortium emerges as an independent nexus of activity http://www.python.org/consortium Cetus does much of the same http://www.cetus-links.de/oo_python.html Python FAQTS http://python.faqts.com/ Python To-Do List anticipates some of Python's future direction http://www.python.org/cgi-bin/todo.py Python Journal is at work on its second issue http://www.pythonjournal.com Links2Go is a new semi-automated link collection; it's impressive what AI can generate http://www.links2go.com/search?search=python Archive probing trick of the trade: http://www.dejanews.com/dnquery.xp?QRY=&DBS=2&ST=PS&defaultOp=AND&LNG=ALL&format=threaded&showsort=date&maxhits=100&groups=comp.lang.python Previous - (U)se the (R)esource, (L)uke! - messages are listed here: http://purl.org/thecliff/python/url.html or http://www.dejanews.com/dnquery.xp?QRY=~g%20comp.lang.python%20Python-URL%21 Suggestions/corrections for next week's posting are always welcome. [http://www.egroups.com/list/python-url-leads/ is hibernating. Just e-mail us ideas directly.] To receive a new issue of this posting in e-mail each Monday morning, ask to subscribe. Mention "Python-URL!". -- The Python-URL! Team-- Dr. Dobb's Journal (http://www.ddj.com) is pleased to participate in and sponsor the "Python-URL!" project. -- Cameron Laird Business: http://www.Phaseit.net Personal: http://starbase.neosoft.com/~claird/home.html From paul.cain@exoLink.com Mon Nov 20 19:44:03 2000 From: paul.cain@exoLink.com (Paul Cain) Date: Mon, 20 Nov 2000 13:44:03 -0600 Subject: Python/JPython Job Opportunities in Dallas, TX Message-ID: Programmer/Analyst (Python/JPython) - Dallas, TX Job Description: - Translate Business Specifications into Python/JPython scripts. - Interact with Business Analysts, Systems Analysts, and Quality Assurance to understand business/functional requirements. - Interact with Java Developers to implement and test scripts. - Create and design test cases and plans. Minimum Required Skills: - 1+ year Python and/or JPython - Basic data modeling knowledge/experience - Good design skills - Ability to manage time and meet schedule commitments - Initiative - High attention to detail with documentation, design, coding, and maintaining standards - Excellent written and verbal communications skills for interaction with other groups - Desire to learn - Great attitude and personality Desired Skills: - Documenting Business Process Flows - Creating Functional Specifications - Developing Test Cases ExoLink Corporation is an e-business broker / transaction clearinghouse. We are located at I-35 and Corporate Drive in Lewisville, TX. We provide e-commerce services for companies engaged in the de-regulated retail energy industry. This is accomplished through the creation of a virtual marketplace via our ExoTran application. This cutting edge Java based system allows for the fast and most efficient flow of all forms of data across all platforms. We utilize technologies such as Java, CORBA, Oracle v8i RDBMS, Windows NT v4.0, UNIX (Sun Solaris) and more. ExoLink Corporation is a small, rapidly growing company. We currently have 70+ employees and have open positions for an additional 20-30 employees. Our rapid growth rate is due to new clients and projects resulting from both direct and strategic marketing partners. The company has an objective to go public by 2002. ExoLink has a fun and fast paced environment. Our dress is business casual. We have great benefits and offer PRE-IPO STOCK OPTIONS. - 3 Positions Available - Start Date: ASAP - SALARY: Open (dependent upon skill set, skill level, and experience) + Pre-IPO Stock Options + Benefits - Benefits: Health Insurance (Company pays employee's: monthly medical premiums, monthly dental premiums, long term disability, life insurance), 18 Paid Time Off (PTO) days/year (covers vacation, illness, personal time, etc.) + 10 holidays, 401(k), Pre-IPO Stock Options - Travel: NO TRAVEL - Location: Dallas, TX (Lewisville) For more information about ExoLink, please visit us at www.exolink.com Paul Cain ExoLink Corporation (972) 538-6977 (972) 538-6850 fax paul.cain@exolink.com www.exolink.com