In this week's ZWN, make Zope your career, take Zope classes, read about security,
get Zope 2.2.2, all while tracking HiperDOM, WikiNG, Sessions,
and the continued evolution of Zope.org.
The opinions expressed in Zope Weekly news are solely the authors',
and not the opinions of Digital Creations, The Zope Community
at-large, or the Spanish Inquisition.
If you or your company are doing something cool with zope,
"submit it to the Zope Weekly News",
mailto:zope-web@zope.org
for possible inclusion.
And Now For Something Completely Different:
---
Get Paid for Doing Zope
In the very near future, a Fortune 100 media company will launch a new
web initiative for which Zope is the content management platform.
Digital Creations has been working closely with the company on the
architecture for the project.
With the initial success, the company wants to augment its internal Zope
technical staffing. The job opening is for someone with strong
Zope/Python skills, preferably on Linux. Background in web design,
information architectures, and project management are beneficial.
The vision for this project is quite exciting indeed. If any of you are
interested in a prime-time Zope position in New York City, "contact Paul",
mailto:paul@digicool.com
and he'll pass along your contact information.
More Training & Education Coming
Kaivo, in partnership with Digital Creations, is expanding
and enhancing the training courses availiable for Zope.
Get all the jucy details from "the press release",
http://www.newsalert.com/bin/story?StoryId=CoCBKWbKbytaZodK
---
Documentation
Chris McDonough has been hard at work on a security chapter
for the product developer's guide. It will give a comprehensive
overview of Zope's security features and details the ins
and outs of making *your* product secure: Currently,
it gives and overview and covers Python Products, with
ZClass Products in the works.
Take "a preview look",
http://www.zope.org/Members/mcdonc/PDG/6-1-Security.stx
and send him feedback.
---
Zope Status
-- by Brian Lloyd
Summary
Zope 2.2.2 released, planning for Zope 2.3
Last Week
Last week I worked on weaving in feedback to the draft of the
first deliverable for the "new security assertions" project, the
Zope Security for Developers guide. The window of opportunity for
having your say in this is closing soon, so be sure to "check out
the draft",
http://dev.zope.org/Wikis/DevSite/Projects/DeclarativeSecurity/ZopeSecurity…
Several spirited discussion have been going on (on both the zope-dev
list and dev.zope.org) regarding the HiperDOM proposal and the WikiNG
proposal. Both of these are still very much in the "big picture" phase
of figuring out what they mean.
The fleshing out of 'core' session tracking (relating private
namespaces to anonymous visitors) is coming along nicely. Fishbowl
suggestions played a key role in design. A complete set of use cases has been
drawn up, and a primordial implementation is in the works. For more
information see the "Core Session Tracking fishbowl project",
http://dev.zope.org/Wikis/DevSite/Projects/CoreSessionTracking.
I also started on the task list for the next "planned feature release"
of Zope. We need to figure out how to best expose the work for a
particular release on dev.zope.org (a project?, a dedicated "next
release" area?)
This week
This week we'll get the information for the next Zope feature release
up on dev.zope.org. We've also made a Zope 2.2.2 release. This
is a minor update, most consisting of fixes to support ZEO
deployment. I also hope to (finally!) finalize the Zope Security for
Developers document (implementing it is currently on the 2.3 list).
---
Zope Web
-- by Ethan Fremen
Community Development of Zope.org
Maik Roeder, Rik Hoekstra, and Tom Deprez (all of ZDP fame)
have volunteered to help redevelop the Documentation
section of Zope.org!
Tim Cook deserves kudos for his work on
categorizing all the How-To's for topic oriented access.
ZEO Smells Good
Only a few short weeks in the intense heat of the Zope.org
oven, coupled with the tender ministrations of Jim Fulton,
and ZEO is getting pleasantly baked.
Scaling Zope.org
We're in the process of preparing some boxes to give Zope.org
a replicated home, where ZEO is in full play and multiple
Zope clients answer requests. The boxen and connection are
being provided by VA Linux Systems, with load balancing and
failover design being provided by baymountain.
-EOT-
Python-dev summary, September 1-15, 2000
========================================
Released at last!
=================
Python 1.6final was released on September 5.
http://www.python.org/1.6/
Python 2.0beta1 was released, also on September 5. GvR's announcement:
"A unique event in all the history of Python: two releases on the same day!"
http://www.python.org/pipermail/python-dev/2000-September/015924.html
Python 2.0 home page:
http://www.pythonlabs.com/tech/python2.0/
Remember, the "What's New in Python 2.0" article goes into detail on 2.0's
changes and new features.
http://starship.python.net/crew/amk/python/writing/new-python/
Current plans are for a beta2 release around September 26th, and
issue the final release two weeks later on October 10th.
Squabbling over the meaning of "print >>None" occupied some time; this
is the same as "print >>sys.stdout". Vladimir Marangozov pointed out
that this feels wrong: "In Python, this form surely looks & feels like
the Unix cat /dev/null, that is, since None doesn't have a 'write'
method, the print statement is expected to either raise an exception
or be specialized for None to mean "the print statement has no
effect". The deliberate choice of sys.stdout is not obvious."
http://www.python.org/pipermail/python-dev/2000-September/015966.html
The BDFL's reaction: "You don't have to make a strong association with
sys.stdout. When the file expression is None, the whole ">>file, "
part disappears!"
http://www.python.org/pipermail/python-dev/2000-September/016011.html
Licensing
=========
The licensing squabble become highly visible outside the community,
stemming from a debian-devel posting. The basic problem is that one
term in CNRI's 1.6 license specifies that the contract should be
interpreted using Virginia law, because that's where CNRI is located.
The FSF's lawyer believes that this term is incompatible with the GPL,
because the GPL doesn't allow adding restrictions, and this counts as
a restriction.
GvR's posting: "At this point, our best shot seems to be to arrange a
meeting between CNRI's lawyer and Stallman's lawyer. Without the
lawyers there, we never seem to be able to get a commitment to an
agreement. CNRI is willing to do this; Stallman's lawyer (Eben
Moglen; he's a law professor at Columbia U, not NYU as I previously
mentioned) is even harder to get a hold of than Stallman himself, so
it may be a while."
http://www.python.org/pipermail/python-dev/2000-September/015909.html
LinuxToday:
http://linuxtoday.com/news_story.php3?ltsn=2000-09-07-001-21-OS-CY-DB
GvR's reaction:
http://linuxtoday.com/news_story.php3?ltsn=2000-09-07-011-21-OS-CY-SW
Upside:
http://www.upside.com/texis/mvm/story?id=39c10a5e0
Other matters
=============
XML support for 2.0 poses a problem, because it adds a package named
'xml' to the standard library, but this package name was already in
use by the package being developed by the XML-SIG. There's a hack in
Lib/xml/__init__.py that tries to delegate imports to an _xmlplus
package if one is installed, but it doesn't work:
http://www.python.org/pipermail/python-dev/2000-September/016110.html
Discussion continued for a while, but no clear resolution to the
problem has been made. Possible fixes might be to use __import__
instead of the imp module, renaming the packages to xmlbase and xml,
or dropping the xml/ package from Python 2.0 completely.
An long-standing error in the docs for the re module was found by Paul
Prescod. The docs claimed that the .start() and .end() methods of
MatchObjects return None when the group didn't participate in the
match, but the code actually returns -1. The fix was to change the
docs to match the code, not the other way around. GvR: "I'd suggest
fixing SRE and the docs, because -1 is a more useful indicator for 'no
match' than None: it has the same type as valid indices. It makes it
easier to adapt to static typing later."
http://www.python.org/pipermail/python-dev/2000-September/015846.html
Greg Ward wrote a Distutils setup script for IDLE:
http://www.python.org/pipermail/python-dev/2000-September/015967.html
And the usual pile of minor fixes.
Related Links
=============
Temporary archive of python-dev summaries:
http://starship.python.net/crew/amk/python/dev/
Python-dev archives:
http://www.python.org/pipermail/python-dev/
Python project page on SourceForge:
http://sourceforge.net/projects/python
Python Enhancement Proposals (PEPs) summarize recent and past
proposals for enhancements:
http://python.sourceforge.net/peps/
The python-dev summaries are intended to inform the larger Python
community of currently ongoing development. To comment on material in
this python-dev summary, simply post to comp.lang.python or
<python-list(a)python.org>. Give your posting a meaningful subject
line, and if it's about a PEP, include the PEP number (e.g. Subject:
PEP 201 - Lockstep iteration) All python-dev members are interested in
seeing ideas discussed by the community, so don't hesitate to take a
stance on a PEP if you can share an informed opinion.
Hi all!
XIST 0.4 is released!
What is it?
-----------
XIST is an XML based extensible HTML generator.
Some of the significant features of XIST include:
* Easily extensible with new XML elements
* Can be used for offline or online page generation
* Allows embedding Python code in XML files
* Works together with httpdapy/mod_python/PyWX
* Simplifies handling of deeply nested directory trees
* Automatically generates HEIGHT and WIDTH attributes for images
It was written as a replacement for the HTML preprocessor HSC
(http://www.giga.or.at/~agi/hsc/), and borrows some features and
ideas from it.
It also borrows the basic ideas (XML/HTML elements as Python objects)
from HTMLgen or HyperText.
What's new?
-----------
XIST now requires at least Python 2.0b1.
A new bugfixed version of the sgmlop source is available
from the FTP site.
XIST now completely supports Unicode. For output any
encoding known to Python can be used, so now you
can output your HTML in ascii, latin1, utf8, utf16,
and even shift_jis if you have the codec installed.
All publishers have been updated to support Unicode.
The publishing interface has been streamlined (encoding
and XHTML parameters are now attributes of the publisher)
asString() will now always return a Unicode string. If you
want a byte string use asBytes() instead, where the encoding
can be specified as an argument.
There an additional publisher class FilePublisher, which can
be used for publishing to a file (or anything else that has
a write and a writelines method, and is supported by the stream
writer available through codecs.lookup).
Element and attribute names are no longer converted to lowercase.
If you have an attribute name which clashes with a Python
keyword (e.g. "class") append an underscore (_), which will be
removed before accessing the attribute. This is the "official"
Python method for handling these cases.
Elements and entities are no longer registered one by one. Now
you can build Namespace objects which are used for searching
and there are pushNamespace and popNamespace functions in XSC.xsc.
For more info, see the source.
Image size calculation has been removed from html.img and html.input.
Use specials.autoimg and specials.autoinput for that.
{Frag,Element}.__{set,get,del}item__ now accepts a list as an argument.
The method will be applied recursively, i.e. e[[0, 1, "foo", 2] is the
same as e[0][1]["foo"][2].
The deprecated module db no longer exists. Useful functions and elements
from db have been moved to sql.py and form.py respectively.
When using xsc.make() the encoding and XHTML parameters to use can now
be specified on the command line (e.g. --encoding utf-8 --xhtml 2)
Handling of multiline <?xsc-eval?> and <?xsc-exec?> has been enhanced,
although XIST will not be able to guess the correct indentation in all
cases. As a workaround simply add a Python comment at the beginning:
<?xsc-exec
for i in xrange(10):
do(i)
?>
won't work
<?xsc-exec
#
for i in xrange(10):
do(i)
?>
will.
Make functionality has been moved to make.py, as certain modules
can't be used as the main script, because reimporting them in processing
instructions won't work. Now you can simply call
python make.py --import xist.html --import project.main foo.xsc
There is a new module cond, that contains elements that can be used for
conditionals:
<?xsc-exec a=42?>
<if cond="a==21">
<b>foo</b>
<elif cond="a==42"/>
<i>bar</i>
<else/>
baz
</if>
Where can I get it?
-------------------
XIST is available from ftp://titan.bnbt.de/pub/livinglogic/xist/.
Direct questions regarding XIST to walter(a)livinglogic.de.
<p><a href="ftp://titan.bnbt.de/pub/livinglogic/xist/">XIST 0.4</a> -
an XML based extensible HTML generator. (19-Sep-2000)
Bye...
Walter Dörwald
Sent via Deja.comhttp://www.deja.com/
Before you buy.
Hi Guys,
The latest entries into http://python.faqts.com
cheers,
Fiona
## Unanswered Questions ########################################
-------------------------------------------------------------
How do I get the full pathname of a module? Let's say I use 'import' to load a module. How can I find the location of its *.py or *.pyc file?
http://www.faqts.com/knowledge-base/view.phtml/aid/5918
-------------------------------------------------------------
Rolf Freimuth
## New Entries #################################################
-------------------------------------------------------------
How do I set the default font for a window and all its widgets?
http://www.faqts.com/knowledge-base/view.phtml/aid/5922
-------------------------------------------------------------
Fiona Czuczman
Paul Magwene
You can set application wide defaults very easily in Tkinter. The
following is from John Grayson's excellent book, Python and Tkinter
programming (you NEED this book if you want to do any really portable
Python GUI work):
-- Create a file called optionDB (or any other name you'd like) in the
same directory as your source code. This file is a simple text file
specifying defaults (like the .Xdefaults file on X windows). E.g. (taken
directly from Grayson):
*font: Verdana 10
*Label*font: Verdana 10 bold
*background: Gray80
*Entry*background: white
This will set the application wide default to Verdana, 10 pt, except for
lables which will use a bold version of the font. The other options
should be self explanatory.
Then in your sourcecode do something like:
root = Tk()
root.option_readfile('optionDB')
-------------------------------------------------------------
Python routine to remove blank lines from a text file
http://www.faqts.com/knowledge-base/view.phtml/aid/5924
-------------------------------------------------------------
Fiona Czuczman
Alex Martelli, Tyler Eaves, Jeremy Hylton
out = open(r'C:\bar.txt', 'w')
for line in open(r'c:\foo.txt').readlines():
if len(line)>1:
out.write(line)
out.close()
Notes:
we can use the r'string' notation to let backslashes (\) be
used in a platform-natural way on Windows, without doubling
them up (we could also write 'c:/foo.txt', etc);
we don't need an explicitly named object for the input-file,
as we just get its list-of-lines in the for statement itself;
thus, we don't need to close it, either (it is automatically
closed by the Python runtime as soon as possible & convenient).
----- Alternatively ------
import fileinput
f = open("c:\\bar.txt", "w")
for line in fileinput.input("c:\\foo.txt"):
if not line.startswith("\n"):
f.write(line)
f.close()
If I could modify the behavior a bit, I would: (1) make it skip any
non-blank line that only has whitespace and (2) have it edit the file
in place.
import fileinput
for line in fileinput.input("c:\\foo.txt", inplace=1):
if line.strip():
f.write(line)
f.close()
-------------------------------------------------------------
Is there any way to set the initial seed for the Gaussian random number generator function "gauss"?
http://www.faqts.com/knowledge-base/view.phtml/aid/5925
-------------------------------------------------------------
Fiona Czuczman
Frédéric van der Plancke
The seed function is not in module random (too bad) but in
module whrandom:
So you can do:
import whrandom
whrandom.seed()
#or, with up to three integer arguments:
whrandom.seed(1,2,3)
(whrandom is actually meant to be "hidden implementation
details", but we obviously still need it explicitly.)
This release has major new functionality with respect to earlier
versions
New features in Snack v2.0
* Support for the Python scripting language in addition to Tcl/Tk
* All audio data handled as floating point internally
* Multiple simultaneous playback and recording sessions
* New filter command which operates on sound objects and also on streams
for
pseudo real-time operation. C-API to define custom filters
* Support for embedding Snack sound objects in other higher level
constructs
* Support for new sample encoding formats lin24, lin32, float, and
double
on all hardware using on-the-fly conversion
* Support for WAV/AU/AIFF file formats with lin24, lin32, and float
sample
encoding
* Formant synthesis demo
This release owes a lot to the many Snack users contributing to it.
Thanks!
Special thanks to Kevin Russell for the Python module and Jonas Beskow
for
the formant synthesis demo.
The Snack Sound Toolkit is designed to be used with a scripting
language.
Snack adds commands to play and record audio and supports in-memory
sound
objects, file based audio, and streaming audio, with background
audio processing. It handles fileformats such as WAV, MP3, AU, AIFF, and
NIST/Sphere.
Snack is extensible, new commands and sound file formats can be added
using the Snack C-library.
Snack also does sound visualization, e.g. waveforms and spectrograms.
The visualization canvas item types update in real-time and can output
postscript.
Snack works with Tcl8.0 - Tcl8.4 and Python 1.5.2-1.6
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(a)speech.kth.se
Hi Zopistas !
Zope is going to be present with its own booth at the SYSTEMS IT fair
in Munich from 6.-10. November 2000. After the CeBIT in Hannover it
is the 2nd-largest IT fair in Germany with over 130.000 visitors last
year. There will be a large focus on the Open Source movement with a
dedicated forum called LinuxPark, which was a huge success in 1999. See
the homepage at http://www.systems.de for general information and
http://www.linux-events.de/, a Zope site, for information on LinuxPark.
We will have a booth supplied by Linux New Media who is organizing
LinuxPark. The booth is supported by Iuveno and Beehive and features two
separate work-places with internet access where we can have two computers
and two posters. The Zope booth is going to be some steps away from
the shared Iuveno and Beehive booth, and the Linux-Cafe is just ahead.
Around the corner is going to be the Gimp and Debian folks, and the
Samba people are next to us.
We will have the chance to present Zope related projects, so we
are looking for people who could prepare some talks. We need many Zopistas
who would like to help with the preparation of the fair and who can man
the Zope booth on the four days of the event. We also need two computers
and preferably flat screens for the booth. Please contact Joachim Werner
at joe(a)iuveno.de if want to support the EuroZope SYSTEMS team with hardware
or help attending the booth. If you plan to come to the SYSTEMS, it would
be nice if you could also send an email to the EuroZope mailing list
at eurozope(a)comlounge.net.
All those who attend the booth will get a free ticket and we have sleeping
space for 3-4 people in the Munich area, because hotels would be rather
expensive. If you prefer to stay in a hotel, it could pay off to stay in
nearby Ingolstadt and come with the Iuveno guys to Munich each day.
For always up-to-date information on the SYSTEMS event, frequently check
the project homepage at:
- http://zdp.zope.org/projects/eurozope/events/systems
The Zope booth at the SYSTEMS is the second event organized by the EuroZope
initiative:
- http://zdp.zope.org/projects/eurozope
The EuroZope project was founded at the LinuxTag 2000 in Stuttgart:
- http://zdp.zope.org/projects/eurozope/events/linuxtag2000
We have just recently held the Zope Meeting with Paul Everitt in Paris:
- http://zdp.zope.org/projects/eurozope/events/pariszopemeeting
Many more events are planned for the future like the big ZopeCon
at the Linux Expo January 23-24 in Amsterdam.
- http://zdp.zope.org/projects/eurozope/events/linuxexpo2001 (soon!)
Best regards,
Maik Röder
--
Uzopia - Digging la vida Zopa - http://uzopia.editthispage.com
I and theKompany.com are pleased to announce the availability of PyQt
v2.0 - the Python bindings for the GPL'ed Qt GUI toolkit.
The package can be downloaded from
http://www.thekompany.com/projects/pykde/.
This represents a substantial upgrade to PyQt. New features include:
- Full support for all relevant Qt v2.2 classes (206 classes in all)
- pyuic converts QT Designer .ui files to Python code for PyQt
- Python and Qt Unicode support integrated
- Support for Python v1.6 and v2.0
- Support for Windows (binaries available, no Qt license required)
Phil <phil(a)river-bank.demon.co.uk>
Homepage: http://www.biopython.org/~dalke/lye/
Download: http://www.biopython.org/~dalke/lye/lye-0.1.zip
Lye - a COM to SOAP gateway
version 0.1
Lye is a Python program which converts COM requests into SOAP calls.
It uses win32com.server's DynamicPolicy to interpret the COM request
and Fredrick Lundh's soaplib to make the SOAP query.
Microsoft distributes a similar gateway (I think) but the download
page says it only runs on NT 4.0 SP 6 and Win2000. I don't have
access to either of those OSes, which is why I rolled my own.
There are many limitations to this gateway:
- I don't know much about COM (this is my first COM server)
- I don't know much about SOAP
- There's no support on the COM side for keyword arguments
- soaplib is incomplete and contains some bugs
Still, it does work for at least the simple case of "use a set of
scalar parameters and return a scalar result" and since the code is
quite short (about 100 lines) it should be easy to hack to fill in any
missing parts.
Lye is developed and placed into the public domain by Andrew Dalke,
Dalke Scientific Software, LLC. If you break it, you get to keep all
the pieces.
INSTALLATION:
Install Python with the win32 extensions, from www.python.org
Install soaplib, from www.secretlabs.com
- Don't forget to add soaplib to the PYTHONPATH registry entry!
(Python/PythonCore/1.5/PythonPath)
- I've included a couple of soaplib patches in "soaplib.diff"
which supports passing binary strings and allows soaplib to
exchange arrays of values with itself.
Start the default soaplib server with "python soaplib.py"
- this starts an echo server on the localhost, port 8000
Run "python lye.py" to register the COM server.
Example Python client:
from win32com.client import Dispatch
factory = Dispatch("Lye.Factory")
soap = factory("http://localhost:8000")
print soap.echo("Andrew")
Example VB client:
Sub TestSOAP()
Set factory = CreateObject("Lye.Factory")
Set soap = factory("http://localhost:8000")
MsgBox soap.echo("Andrew")
End Sub
Client API:
As you can see, it's pretty simple. There are two objects, the
SOAP Factory and the SOAP ServerProxy. The factory makes server
proxies when given the URL (okay, URI) for the SOAP server.
The proxy object can be called using any method name and arguments,
where "any" is defined as "supported by Python's COM interface."
WARNING: because VB doesn't understand case, all method names are
converted to lowercase before calling the SOAP server. To get around
that, call the proxy object as an indexed object with the method
name as the first parameter and the normal arguments following.
That is, the following fails:
soap.FindPrice("0-123-456")
if the SOAP server really implements a FindPrice, but
soap("FindPrice", "0-123-456")
will work.
This latter interface should be considered experimental, because there
may be a more appropriate way to handle that case using COM.
UNINSTALL:
To uninstall the Lye COM server, "python lye.py --unregister"
Andrew Dalke
dalke(a)acm.org
Sept. 14, 2000
pyscintilla
-----------
Python bindings for the gtk version of the scintilla source code editor
widget
Scintilla is a powerful source code editor written by Neil Hodgson and
many contributors (see www.scintilla.org[1]. PyScintilla provides Python
language bindings for the GTK-based version of Scintilla. Our release
includes a complete copy of Scintilla, as well as the Python bindings,
and may be useful to developers working with pygtk[2] and in need of a
better text editor widget.
Key features provided by Scintilla:
Standard text editing capabilities (with better multifont styling
support than that found in most source code editors).
Support for language-specific syntax styling for a wide variety of
languages.
Interactive brace and parenthesis matching.
Hooks for building code auto-completion hints and call tips.
Optional selection margin that can contain markers like those used in
debuggers to indicate breakpoints and the current line.
Optional line number display.
Built in forward and backward search, including incremental search.
Rectangular selection.
Keyboard macro support.
Structuring folding.
Hooks for building auto-indentation capabilities.
Indicator styles for indicating bad code, etc.
Rich scriptability and event notification callback interface.
Unrestrictive open source license, allowing use also in commercial
applications.
Details for the Python support portions of this release are available in
the README file[3] for the Python distribution.
URL: http://archaeopteryx.com/opensource/pyscintilla
License: Open Source
Platform: Linux
Requires: PyGTK
Gui: GTK
Categories: GUI, GTK widgets
Archaeopteryx Software, Inc (info(a)archaeopteryx.com)
archaeopteryx.com
--
<a href="http://archaeopteryx.com/opensource/pyscintilla">pyscintilla</a>
-- Python bindings for the gtk version of the scintilla source code
editor widget
Hello,
(I've changed employers; been very busy past 4 months.)
Snapshot #4 of M2Crypto 0.05 is now available:
http://www.post1.com/home/ngps/m2
This snapshot features the following (in no particular order):
- Fixed more memory leaks.
- SSL callback thread-safety improvements. Thanks to Ray Suorsa for insights
and patches.
- Renamed M2Crypto.M2Crypto to M2Crypto.m2 to prevent package/module
naming/loading confusion.
- SSL clients can now reuse SSL sessions; this boosts performance. A demo
program is included, see demo/ssl/sess.py.
- Bundles (parts of) the June 2000 unencumbered release of Medusa.
- demo/ssl/https_srv.py, a threading, directory-listing, https enhancement to
SimpleHTTPServer.py.
- Interface change: SMIME.load_pkcs7_bio() is renamed
SMIME.smime_load_pkcs7_bio(), similarly SMIME.load_pkcs7() to
SMIME.smime_load_pkcs7(); these load PKCS7 objects generated by S/MIME.
- Interface change: SMIME.load_pkcs7_bio() now loads a PKCS7 PEM file, i.e.,
a file of the format "-----BEGIN PKCS7-----". Can't do very much with the
resulting PKCS7 class instance, though. ;-)
- It's been a year since I began this: my demo certificates have expired. ;-)
A new set of certificates (with longer validity periods) are bundled.
I'm now working on improving SSL robustness and fixing yet more reported
memory leaks.
This snapshot has not been tested with Python 2.0b1. None of ZServerSSL,
ZSmime (and GuardedFile) has been tested with Zope 2.2.x.
As usual, feedback is very much appreciated.
--
Ng Pheng Siong <ngps(a)post1.com> * http://www.post1.com/home/ngps