The Vancouver Python and Zope user group is proud to announce its next
meeting:
* "Plone: Zope's killer app" by Andy McKay
A review of Plone 1.0 which is a: "free open source, point-clicky
through-the-web, customizable content management system
built in Zope with loads of features that can be up and running
in five minutes". I'll give a quick demo of Plone, and an overview
of the features including changes since some of the earlier releases.
This will followed by pointy-clicky beers at the through-the-door drinking
establishment.
Date: Tuesday, Oct. 1st
Time: 7pm
Location: ActiveState, 580 Granville, Vancouver, BC
(http://www.activestate.com/Contact/)
VanPyZ is the Vancouver Python and Zope user group. We meet
monthly to discuss Python and Zope. Anyone is welcome to come.
Website: http://vanpyz.agmweb.ca
Mailing List: http://lists.zpug.org/mailman/listinfo/vanpyz
--
Andy McKay
www.agmweb.ca
--
Andy McKay
www.agmweb.ca
________________________________________________________________________
ANNOUNCING:
eGenix.com mx BASE Extension Package for Python
Version 2.0.4
Open Source Python extensions providing important and useful
services for Python programmers.
________________________________________________________________________
WHAT IS IT ?:
The eGenix.com mx BASE Extensions for Python are a collection of
professional quality software tools which enhance Python's usability
in many important areas such as fast text searching, date/time
processing and high speed datatypes.
Python is an object-oriented Open Source programming language which
runs on all modern platforms (http://www.python.org/). By integrating
ease-of-use, clarity in coding, enterprise application connectivity
and rapid application design, Python establishes an ideal programming
platform for todays IT challenges.
The tools have a proven record of being portable across many Unix and
Windows platforms. You can write applications which use the tools on
Windows and then run them on Unix platforms without change due to the
consistent platform independent interfaces.
All available packages have proven their stability and usefulness in
many mission critical applications and various commercial settings all
around the world.
________________________________________________________________________
WHAT'S NEW ?
The RPM packages were updated to install to /usr/ instead
of /usr/local/ to comply with the Linux Standard Base (LSB)
and to be compatible with the Python RPMs which are available
from python.org.
As always we are providing precompiled versions of the package for
Windows and Linux as well as sources which allow you to install the
package on all other supported platforms.
________________________________________________________________________
EGENIX.COM MX BASE 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).
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.
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. Note that
even though Python 2.1+ has its own weak reference implemetation,
this package can be used to write applications which also work on
Python 1.5.2 and 2.0.
mxBeeBase - On-disk B+Tree Based Database Kit
mxBeeBase is a high performance construction kit for disk based
indexed databases. It offers components which you can plug
together to easily build your own custom mid-sized databases (the
current size limit is sizeof(long) which gives you an address
range of around 2GB on 32-bit platforms).
The two basic building blocks in mxBeeBase are storage and
index. Storage is implemented as variable record length data
storage with integrated data protection features, automatic data
recovery and locking for multi process access. Indexes use a high
performance optimized B+Tree implementation built on top of
Thomas Niemann's Cookbook B+Tree implementation
(http://epaperpress.com/).
________________________________________________________________________
WHERE CAN I GET IT ?
The download archives and instructions for installing the packages can
be found at:
http://www.egenix.com/
________________________________________________________________________
WHAT DOES IT COST ?
The BASE package comes with a Python 2.0 style license, which means
that you can use it in both commercial and non-commercial settings
without fee or charge. The package comes with full source code.
________________________________________________________________________
WHERE CAN I GET SUPPORT ?
Commercial quality support for these packages is available from
eGenix.com Software GmbH. Please see
http://www.egenix.com/files/python/eGenix-mx-Extensions.html#Support
for details about the eGenix support offerings.
________________________________________________________________________
Enjoy,
--
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting: http://www.egenix.com/
Python Software: http://www.egenix.com/files/python/
This is to announce a very simple yet useful wrapper around the GNU
tools 'find', 'cpio', 'gzip' and 'zcat'.
The script makes is easy to do a verified backup of a hierarchy of
directories using sane tool options (I hope !).
Restoring a few files from the archive selected by a pattern is simple and
straightforward.
Filenames with non ASCII characters are restored correctly. If they are
shown correctly, depends on the setting of LC_ALL. A recipe for success
is included in the script.
The homepage is here:
http://www.net-es.dk/~pj/python/backup-admin/
Give it a spin and tell me if it works for you.
/Per
http://wwwsearch.sourceforge.net/ClientForm
ClientForm 0.0.2a
WARNING: this is an alpha release. The API may change, and don't
expect everything to work properly!
ClientForm is a Python module for handling HTML forms on the client
side, useful for parsing HTML forms, filling them in and returning the
completed forms to the server. It is a port (more-or-less) of Gisle
Aas' Perl module HTML::Form, from the libwww-perl library.
import ClientForm
import urllib2
request = urllib2.Request("http://www.acme.com/form.html")
response = urllib2.urlopen(request)
forms = ClientForm.ParseResponse(response)
form = forms[0]
form["author"] = "Gisle Aas"
request2 = form.click("Thanks")
response2 = urllib2.urlopen(request2)
print result2.geturl()
print result2.info() # headers
for line in result2.readlines(): # body
print line
All of the standard input types are supported: TEXT, PASSWORD, FILE,
HIDDEN, BUTTON, RESET, IMAGE, SUBMIT, CHECKBOX, SELECT/OPTION and
RADIO. TEXTAREA and FILE (for file upload) are not yet supported, but
will be in a future version.
Python 2.0 or above is required. I will backport to 1.5.2 later. To
run the tests, you need the unittest module (from PyUnit).
John
Lightweight Languages Worshop 2002 (LL2)
----------------------------------
Saturday, November 9, 2002, MIT, Cambridge, MA
http://ll2.ai.mit.edu mailto:ll2@ai.mit.edu
CALL FOR PRESENTATIONS
LL2 will be an intense, exciting, one-day forum bringing together the
best programming language implementors and researchers, from both
academia and industry, to exchange ideas and information, to challenge
one another, and to learn from one another.
The focus of the workshop is not whether or not a particular language
is "lightweight", but how to get usable and useful programming tools
into the hands of programmers, minimizing dogma, and maximizing
flexibility.
Proposal Abstracts - due Tuesday Oct. 8:
------------------
We are seeking two to five page abstracts of talks to be given at
the workshop. There will be two talk lengths:
(1) Rapid Fire: 10 minutes strict time limit.
(2) Regular: 30 minutes.
Some suggested topics are:
* Success or failure stories: History and analysis of:
- language design: features that either worked out great or were
a curse,
- language implementation: clever implementation ideas that
either worked or failed miserably,
- application war stories involving lightweight languages.
* "From scripts to programs" - software engineering with
lightweight and/or a mix of languages. How to (or not to!)
scale from little scripts to large, complex applications.
* From ivory tower to cube - what language implementors need to
know from academic programming languages research.
* and back.
Indicate whether you intend the talk to be a 10 minute or a 30
minute talk.
Send submissions to: ll2-submit(a)ai.mit.edu
We want presentations that will inspire, motivate, and educate. We
want language implementors and researchers to leave the workshop fired
up with ideas for future languages, features, and implementation
tricks. We want language users to leave the workshop fired up with
new ideas and new tools.
In addition to submitted presentations, there will be a number of
invited talks, and a panel or debate. After the workshop, there will
be an evening social event and dinner.
Last year's workshop is online at http://ll1.mit.edu.
Dates: Tuesday, Oct. 8 - submissions due by end of day.
Tuesday, Oct. 15 - notification of acceptance
Saturday, Nov. 9, 9am-7pm - LL2!
Program Committee:
Paul Graham <pg(a)bugbear.com>
Jeremy Hylton <jeremy(a)zope.com>
Shriram Krishnamurthi <sk(a)cs.brown.edu>
Mike Salib <msalib(a)mit.edu>
Olin Shivers <shivers(a)cc.gatech.edu>
Dan Sugalski <dan(a)sidhe.org>
Greg Sullivan <gregs(a)ai.mit.edu> (chair)
Dan Weinreb <DLWeinreb(a)attbi.com>
What's new ?
------------
* add pyvcg command line tool
* add support for *.pyreverserc
* documentation reorganization and improvement
* fix a bug in pyargo
What's PyReverse ?
------------------
Pyreverse is a set of utilities to reverse enginering Python code. So
far, it features dependency analysis tools, unittest generation,
and XMI generation for importation in a UML modeling tool. A special
module can be used to generate files readable by Argo UML.
It uses a representation of a Python project in a class hierarchy
which can be used to extract any information (such as generating UML
diagrams and make a few statistics from the Python code, as "pyargo"
and "pystats")
Home page
---------
http://www.logilab.org/pyreverse/
Download
--------
ftp://ftp.logilab.org/pub/pyreverse/
Mailing list
------------
mailto://xml-logilab@logilab.org
--
Sylvain Thénault
LOGILAB http://www.logilab.org
#~ ANN: RuneBlade-Foundation-0.3.2 ~~~~~~~~~~~~~~~~~~~
RuneBlade Foundation is a set of GUI skinning and other tools created to ease
the development of XML-based applications. Application such as Jabber (XML)
for communications; XML "skin" for a wxPython GUI; or, an XML "skin" for
xhtml or svg output similar to other templating engines.
More information, including distributables, can be found at
http://www.runeblade.com/foundation/ or by contacting the author at
shane.holloway(a)runeblade.com
RuneBlade Foundation Release 0.3.2 includes:
Updated Skinning code to work with wxPython 2.3.3.1 and 2.3.2.1
Addition of an Aspect Oriented support package
Alpha-level addition of an Aspect Oriented Subject Observer package
And many optimizations and bugfixes
See http://www.runeblade.com/foundation/revision.html for more information.
RuneBlade Foundation is governed by a BSD style open-source LICENSE, and can
be found at http://www.runeblade.com/foundation/bsd.html
Future announcements will also be made via mailing list, which can be found
at http://www.runeblade.com/mailman/listinfo/foundation-announce
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<a href="http://www.runeblade.com/foundation">RuneBlade-Foundation-0.3.2</a>
- RuneBlade Foundation is a set of GUI skinning and other tools created to
ease the development of XML-based applications. (20-Sep-02)
wxPython 2.3.3.1 has just been released! You can get binaries for
Win32, Mac OS X or Linux, as well as sources, documentaion, etc. from
http://wxPython.org/ or directly from SourceForge at
http://sf.net/project/showfiles.php?group_id=10718&release_id=111669
wxPython is an extension module for Python that provides access to many
of the wxWindows GUI C++ classes from applications written in the Python
programming language. It uses native controls wherever possible
providing native Look and Feel as well as the speed you would expect
from natvie compiled applications.
Major changes from the previous release are listed below.
--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!
Changes in 2.3.3.1
------------------
Added wxSplashScreen.
Added wxGenericDirCtrl.
Added wxMultiChoiceDialog.
The calltip window and autocomplete window in wxSTC will now use a
wxPopupWindow if available on the platform (and functioning correctly)
so they can extend beyond the client area of the STC if needed.
Finished wrapping and providing typemaps for wxInputStream and also
added the stream ctor and other methods for wxImage so images can now
be loaded from any Python "file-like" object.
Changed the img2py tool to use PNG instead of XPM for embedding image
data in Python source code, and the generated code now uses streams to
convert the image data to wxImage, wxBitmap, or wxIcon.
Added the wxPython.lib.rcsizer module which contains RowColSizer.
This sizer is based on code from Niki Spahiev and lets you specify a
row and column for each item, as well as optional column or row
spanning. Cells with no item assigned to it are just left blank.
Stretchable rows or columns are specified and work the same as in
wxFlexGridSizer.
Updated XRCed from Roman Rolinsky
Added wxBufferedDC.
Upgraded wxSTC from Scintilla 1.40 to Scintilla 1.45, and then again
to version 1.47, and one more time to 1.48! <wink>
UNICODE!
wxWindows/wxPython can be compiled with unicode support enabled or
disabled. Previous to wxPython 2.3.3 non-unicode mode was always
used. Starting with 2.3.3 either mode is supported, but only if
it is also available in wxWindows on the platform. Currently
wxWindows only supports unicode on MS Windows platforms, but with
the recent release of GTK+ 2.0 it is only a matter of time until
it can be done on wxGTK (Linux and other unixes) as well.
Unicode works best on platforms in the NT branch of the Windows
family tree (NT, win2k, XP) but it is now also possible to use the
same unicode binaries on win95/98/ME platforms as well! This is
done by using a special library and DLL with the application
called MSLU, (Microsoft Layer for Unicode). It simply gets out of
the way if the app is run on an NT box, otherwise if run on a
win9x box it loads a special DLL that provides the unicode
versions of the windows API. So far I have not been able to get
this to work perfectly on win9x. Most things work fine but
wxTaskBarIcon for example will cause a crash if used with the
unicode build on win95.
So how do you use it? It's very simple. When unicode is enabled,
then all functions and methods in wxPython that return a wxString
from the C++ function will return a Python unicode object, and
parameters to C++ functions/methods that expect a wxString can
accept either a Python string or unicode object. If a string
object is passed then it will be decoded into unicode using the
converter pointed to by wxConvCurrent, which will use the default
system encoding. If you need to use a string in some other
encoding then you should convert it to unicode using the Python
codecs first and then pass the unicode string to the wxPython
method.
Added wxListCtrlAutoWidthMixin from Erik Westra.
Added wxIconBundle and wxTopLevelWindow.SetIcons.
Added wxLocale and wxEncodingConverter.
A little black magic... When the C++ object (for a window or
whatever) is deleted there is no way to force the Python shadow object
to also be destroyed and clean up all references to it. This leads to
crashes if the shadow object tries to call a method with the old C++
pointer. The black magic I've done is to replace the __class__ in the
Python instance object with a class that raises an exception whenever
a method call (or other attribute access) is attempted. This works
for any class that is OOR aware.
Added OOR support for wxGridCellRenderer, wxGridCellEditor,
wxGridCellAttr, wxGridCellAttrProvider, wxGridTableBase and their
derived classes.
Added wxImage.GetDataBuffer which returns an in-place edit buffer of
the image data. (Patch #546009)
Added a sample that shows how to embed wxPython in a wxWindows C++
application.
Added wxPyWindow, wxPyPanel and wxPyControl which are just like their
wx counterparts except they allow some of the more common C++ virtual
methods to be overridden in Python derived classes. The methods
supported are:
DoMoveWindow
DoSetSize
DoSetClientSize
DoSetVirtualSize
DoGetSize
DoGetClientSize
DoGetPosition
DoGetVirtualSize
DoGetBestSize
InitDialog
TransferDataFromWindow
TransferDataToWindow
Validate
AcceptsFocus
AcceptsFocusFromKeyboard
GetMaxSize
AddChild
RemoveChild
If there are other methods that you think should be supported
please let me know.
Changed wxGenButton to derive from wxPyControl and overload
DoGetBestSize and AcceptsFocus.
Added wxArtProvider.
Added wxCallAfter which is a helper function that registers a function
(or any callable Python object) to be called once the next time there
are no pending events. This is useful for when you need to do
something but it can't be done during the current event handler. The
implementation is very simple, see wxPython/wx.py.
Fixed a boatload of reference leaks.
Added a demo of using a sizer in a wxScrolledWindow, in effect
creating a ScrolledPanel.
Added a sample to the demo that shows how to use radio menu items, and
other menu stuff.
Added wxIEHtmlWin. This is essentially the same as using IE with the
ActiveXWrapper already in the library, but it is implemented all in
C++ and therefore does not need any of the modules from win32all and
so it is less fragile in the face of changes.
Fixed the ActiveXWrapper problem. Looks like when the win32com
modules make a "callback" that they (incorrectly, IMHO) allocate a
transient thread state structure. Since wxPython is now saving
tstates for it's own callbacks it ended up using garbage after
win32com got rid of the temporary tstate...
Added a generic static text control to wxPython.lib.stattext. This is
so things like Boa and PythonCard can have a static text that can
respond to mouse events and etc.
Changed the wxDateTime.Parse* methods to return an int that will be -1
on failure, and the index where parsing stopped otherwise.
Moved tools to be a Python package in wxPython.tools, added scripts to
import and launch each tool. This will let you import and use the
tools in your own scripts or apps as needed. On Linux and OS X the
tool scripts are installed to {prefix}/bin so you should be able to
easily launch them from the command line. For example, PyCrust can be
started with just the "pycrust" command.
Added a sample to the demo that catches various key events and
displays the details of the event.
Added wxWizard, wxWizardPage, wxWizardPageSimple and wxPyWizardPage.
Added wxXmlResourceHandler which allows you to create custom handlers
for nonstandard class types in XRC resources. See the demo for an
example.
Added wxPython.lib.mixins.rubberband module from Robb Shecter.
Added wxTimeCtrl from Will Sadkin.