Hi,
I'm happy to announce release 0.68.0 of Task Coach. This release makes
it possible to open a task from its reminder dialog, adds a command
line option to facilitate the PortableApps.com Task Coach
distribution, makes starting and stopping effort tracking quicker and
fixes a number of bugs.
Bugs fixed:
* Start and stop tracking effort is faster for tasks that have a large
number of associated effort records.
* Task Coach now gives an error message if the file that it tries to
open doesn't exist.
* When selecting all text in a text control with '<cmd>a', indeed
select all text and not all tasks (Max OSX only).
* Attempt to prevent crashes on Fedora 8 that sometimes happen when
adding top level tasks.
Features added:
* It is possible to open a task from its reminder dialog.
* Task Coach has a --ini command line option that can be used to
specify where the ini file is located.
What is Task Coach?
Task Coach is a simple task manager that allows for hierarchical
tasks, i.e. tasks in tasks. Task Coach is open source (GPL) and is
developed using Python and wxPython. You can download Task Coach from:
http://www.taskcoach.org
In addition to the source distribution, packaged distributions are
available for Windows XP/Vista, Mac OSX, and Linux (Debian and RPM format).
Note that Task Coach is alpha software, meaning that it is wise to back
up your task file regularly, and especially when upgrading to a new release.
Cheers, Frank
Hello,
I would like to announce release 0.3 of PyCscope, a python script to
generate a cscope index from a Python source tree. PyCscope uses
Python's own parser and AST to generate the index, so it is a bit more
accurate than plain cscope.
PyCscope may be downloaded from the Cheeseshop
http://pypi.python.org/pypi/pycscope/0.3
!!Dean
I am pleased to announce GNUmed 0.2.8.0.
GNUmed is a comprehensive scalable software solution for electronic medical
practices with an emphasis on privacy protection, secure patient centric
record sharing, decision support, and ease of use. It is intended to become a
sophisticated decision support system that will elevate the quality of
medical care that can be delivered.
Release focus: Major feature enhancements
Changes:
A report generator to visualize query results with gnuplot has been added.
Exception handling has been improved. The Snellen Chart has been reactivated.
KVK handling has officially been included. More hooks and an improved example
hook script were added. Demographics handling has been extended to now really
support multiple names, addresses, comm channels, and external IDs.
Furthermore, there are lots of GUI-accessible configuration options that were
always there in the backend but didn't have a frontend to them. File format
handling in document management has seen improvements.
Information available at http://wiki.gnumed.de
packages are available for Debian, Ubuntu and OpenSUSE, Windows and Mac
packages will follow soon.
--
Sebastian Hilbert
Leipzig / Germany
[www.gnumed.de] -> PGP welcome, HTML ->/dev/null
Hi,
I've received some great feedback since the initial beta release of
the minimalistic STM code I discussed and released 2 weeks ago. I've
incorporated the feedback, and created a couple of examples based on
the canonical dining philosophers example. (One based on normal python
threads, one based on Kamaelia)
It turns out that there was a potential race hazard during "using"
and "usevar" which I'd missed - many thanks to Richard Taylor for
pointing out this issue.
Changelog
=========
1.0.1
* Improved locking. (fixed race hazards during copying for reading - the
last release was noted as probably OK for CPython, but maybe not for
Jython or IronPython. This version is more robust)
* Added Dining Philosophers examples (threading & Axon threading)
Getting it
==========
You can download this release version here:
http://thwackety.com/Axon.STM-1.0.1.tar.gz
Installing it
=============
tar zxf Axon.STM-1.0.1.tar.gz
cd Axon.STM-1.0.1/
sudo python setup.py install
What IS it?
===========
Software Transactional Memory (STM) is a technique for allowing multiple
threads to share data in such a way that they know when something has gone
wrong. It's been used in databases (just called transactions there really)
for some time and is also very similar to version control. Indeed, you can
think of STM as being like variable level version control.
Note: Because this is NOT intended to be persistent, this is not an ACID
store because it doesn't support the D - durability across a crash. (after
all, we don't save the state to disk) (The other aspects atomicity,
consistency & isolation are supported though)
I've written this to allow a part of Kamaelia to share & manage a dictionary
of atomic values between threads simply, and as a result this code is also
going into mainline Kamaelia. (Specifically into Axon Kamaelia's core)
However STM is something that should hopefully be of use to others doing
concurrent things whether or not they're using kamaelia, hence this stand
alone release.
This stand alone release should not be used alongside mainline Axon yet.
(Well you can, as long as you reinstall your Axon over the top, but that's
icky :-)
Why is it useful?
=================
[ please skip this (or correct me :) if you understand concurrency
already :-) ]
Why do you need it? Well, in normal code, Global variables are generally
shunned because it can make your code a pain to work with and a pain to be
certain if it works properly. Even with linear code, you can have 2 bits of
code manipulating a structure in surprising ways - but the results are
repeatable. Not-properly-managed-shared-data is to threaded systems as
not-properly-managed-globals are to normal code. (This code is one way of
helping manage shared data)
Well, with code where you have multiple threads active, having shared data
is like an even nastier version of globals. Why? Well, when you have 2 (or
more) running in parallel, the results of breakage can become hard to
repeat as two pieces of code "race" to update values.
With STM you make it explicit what the values are you want to update, and
only once you're happy with the updates do you publish them back to the
shared storage. The neat thing is, if someone else changed things since you
last looked, you get told (your commit fails), and you have to redo the
work. This may sound like extra work (you have to be prepared to redo the
work), but it's nicer than your code breaking :-)
The way you get that message is the .commit raises a ConcurrentUpdate
exception.
Also, it's designed to work happily in code that requires non-blocking
usage - which means you may also get a "BusyRetry" exception under load. If
you do, you should as the exception suggests retry the action that you just
tried. (With or without restarting the transaction)
Apologies if that sounds too noddy :)
Docs for it
===========
http://kamaelia.sourceforge.net/STM
Using It
========
# Initialising a Store
from Axon.STM import Store
S = Store()
# Single values
greeting = S.usevar("hello")
print repr(greeting.value)
greeting.set("Hello World")
greeting.commit()
S.dump()
# Groups of values
D = S.using("account_one", "account_two", "myaccount")
D["account_one"].set(50)
D["account_two"].set(100)
D.commit()
S.dump()
D = S.using("account_one", "account_two", "myaccount")
D["myaccount"].set(D["account_one"].value+D["account_two"].value)
D["account_one"].set(0)
D["account_two"].set(0)
D.commit()
S.dump()
Dining Philosophers
===================
Pure python version:
https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/branches/private_MPS_…
Kamaelia version:
import time
import Axon
from Axon.STM import Store
import random
def all(aList, value):
for i in aList:
if value != i:
return False
return True
class Philosopher(Axon.ThreadedComponent.threadedcomponent):
forks = ["fork.1", "fork.2"] # default for testing :-)
def main(self): # start here :-)
while 1:
X = self.getforks()
time.sleep(0.2)
self.releaseforks(X)
time.sleep(0.3+random.random())
def getforks(self):
gotforks = False
while not gotforks:
try:
X = self.store.using(*self.forks)
if all([ X[fork].value for fork in self.forks], None):
for fork in self.forks:
X[fork].value = self.name
X.commit()
gotforks = True
else:
time.sleep(random.random())
except Axon.STM.ConcurrentUpdate:
time.sleep(random.random())
print "Got forks!", self.name, self.forks
return X
def releaseforks(self,X):
print "releasing forks", self.name
for fork in self.forks:
X[fork].value = None
X.commit()
S = Store()
N = 5
for i in range(1,N):
Philosopher(store=S,forks=["fork.%d" % i ,"fork.%d" % (i+1)]).activate()
Philosopher(store=S,forks=["fork.%d" % N ,"fork.%d" % 1]).run()
Feedback
========
Feedback is very welcome, preferably via email to the Kamaelia List
* kamaelia-list(a)lists.sourceforge.net
Feedback especially regarding bugs and logical errors is particularly
welcome. (hopefully there aren't any - but it's always hard to spot your
own)
Thanks
======
Many thanks to Fuzzyman, Duncan Booth, John J Lee & Sylvain Hellegouarch for
feedback whilst I was prototyping this.
Further thanks go to Richard Taylor for detailed feedback and discussion
regarding locking and for pointing me at MASCOT which made me think of
doing the dining philosophers this way :-)
Future
======
This will be merged onto the mainline of Kamaelia with some auxillary
functions , as another feather aimed at making concurrency easy to
work with :-)
Best Regards,
Michael.
--
Michael Sparks, Kamaelia Project
http://kamaelia.sourceforge.net/Developers/http://yeoldeclue.com/blog
Greetings, program!
I'm happy to announce version 0.8 of Aspen, a Python webserver.
This version introduces "simplates," which bring Python and web
templating as close as possible without actually mixing them.
You'll find a 3-minute intro video plus docs and downloads here:
http://www.zetadev.com/software/aspen/
Thanks!
chad
It is a pleasure to announce this first public release of ExcelMailer.
ExcelMailer is a small os-independent command line business tool for
emailing personalized messages with attachments. Data and options are
specified via an Excel file and the message content via plain text or
HTML file templates. For each data row in the Excel file ExcelMailer
prepares and sends, when explicitly requested, a personalized MIME
email message and its attachments if any.
Highlights:
- The text message may be in plain text or in HTML or in both i.e. in
HTML with an alternative plain text version.
- May define any number of data columns (only to is required) that are
then all accessible in the message templates with ${ column heading }.
- Rich and flexible set of options, that may be conveniently saved in
the Excel file itself as well as be explicitly overridden on the
command line.
- Automatic recognition of input text encodings. Output text is always
encoded in UTF-8.
- Extensive data validation before sending any messages. No emails are
sent unless explicitly requested and all data checks pass. No error
goes silent.
- Data rows can be tagged, for test runs or selective re-runs.
- All actions, such as sending of an email, are logged to a file named
${ excel file }.log, placed alongside the Excel file.
Special thanks to John Machin, for the xlrd package, to Bryan
Niederberger, for his recipe making using xlrd even easier, and to Skip
Montanaro, for some sample code to facilitate handling of input
encodings.
ExcelMailer is GPL3-licensed, and is available from:
http://gizmojo.org/software/excelmailer/
Any and all comments, problem reports, suggestions welcome!
Thanks and all the best,
mario
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I'm happy to announce the setuptools_bzr 1.0 plugin (for Python's
setuptools). This allows setuptools to find your Python package files
kept under the Bazaar revision control system. This should be
compatible with Bazaar 1.0.
Please note: this package used to be called setuptoolsbzr, but it was
renamed to be more compatible with an emerging standard for other
revision control system plugins for setuptools. The project home page
was not renamed and the old PyPI package name was deleted.
The plugin is available on the Python Package Index (a.k.a.
Cheeseshop), here:
http://pypi.python.org/pypi?name=setuptools_bzr&version=1.0&:action=display
To use the plugin, just modify your setup() function in setup.py like
so:
setup(...
setup_requires = [
'setuptools_bzr',
],
...)
The project home page is on Launchpad:
https://launchpad.net/setuptoolsbzr
and more information about the Bazaar distributed revision control
system can be found here:
http://bazaar-vcs.org
Enjoy,
- -Barry
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
iQCVAwUBR2rsXHEjvBPtnXfVAQJP9wQAsh+t/XDwg1s85b11BmJifI3mIMnnGTDx
iY+wyAqMllI3S2nQWl8ZPwe4R7s/TuK7klLIkyHVmv86ZE4x3GO8UD183XeXOADj
nGcBe8L64SAT+EdVCoju1RrnCiV14xSTSF8JL5WdINakUy8yKI5ZiCfpwI3JK05p
TXtLW2aLhSU=
=MUct
-----END PGP SIGNATURE-----
itools is a Python library, it groups a number of packages into a single
meta-package for easier development and deployment:
itools.catalog itools.i18n itools.uri
itools.csv itools.ical itools.vfs
itools.datatypes itools.odf itools.web
itools.gettext itools.pdf itools.workflow
itools.git itools.rest itools.xliff
itools.handlers itools.rss itools.xml
itools.html itools.stl
itools.http itools.tmx
The most visible change in this major release is that "itools.cms" has
been moved out of itools and is now distributed as a separate package,
named "ikaaro".
Also in the code reorganization category: "itools.xhtml" has been merged
into "itools.html". And the "itools.schemas" package has been removed,
since we do the same thing in a different way.
The most important change is the architecture overhaul of the "handlers"
package. From a functional point of view, the big news is the database
layer that has been included, which provides atomic transactions for
the file system. But the changes go well beyond that, read the
documentation to learn how things work now.
Other packages that have seen more or less important API improvements
or changes include "itools.catalog", "itools.csv", "itools.datatypes",
"itools.rss", "itools.vfs" and "itools.web". There have been also many
naming normalizations. Check the upgrade notes for further details.
The numbering scheme has changed, we have jumped from the 0.16 to the
0.20 version, and future major releases will be numbered 0.30, 0.40,
0.50, etc. (This change is to define an implicit relationship with
the numbering scheme of "ikaaro".)
Resources
---------
Download
http://download.ikaaro.org/itools/itools-0.20.0.tar.gzhttp://download.ikaaro.org/itools/itools-0.20.0.win32-py2.5.exehttp://download.ikaaro.org/itools/itools-0.20.0.win32-py2.4.exe
Home
http://www.ikaaro.org/itools
Mailing list
http://mail.ikaaro.org/mailman/listinfo/itools
Bug Tracker
http://bugs.ikaaro.org/
--
J. David Ibáñez
Itaapy <http://www.itaapy.com> Tel +33 (0)1 42 23 67 45
9 rue Darwin, 75018 Paris Fax +33 (0)1 53 28 27 88
*** Workshop on Self-sustaining Systems (S3) 2008 ***
May 15-16, 2008
Potsdam, Germany
http://www.swa.hpi.uni-potsdam.de/s3/
-- Call for papers:
The Workshop on Self-sustaining Systems (S3) is a forum for discussion
of topics relating to computer systems and languages that are able to
bootstrap, implement, modify, and maintain themselves. One property of
these systems is that their implementation is based on small but
powerful abstractions; examples include (amongst others)
Squeak/Smalltalk, COLA, Klein/Self, PyPy/Python, Rubinius/Ruby, and
Lisp. Such systems are the engines of their own replacement, giving
researchers and developers great power to experiment with, and explore
future directions from within, their own small language kernels.
S3 will be take place May 15-16, 2008 at the Hasso-Plattner-Institute in
Potsdam, Germany. It is an exciting opportunity for researchers and
practitioners interested in self-sustaining systems to meet and share
their knowledge, experience, and ideas for future research and development.
-- Invited talk:
Ian Piumarta: Late-bound Object Lambda Architectures (Viewpoints
Research Institute, USA)
-- Submissions and proceedings:
S3 invites submissions of high-quality papers reporting original
research, or describing innovative contributions to, or experience with,
self-sustaining systems, their implementation, and their application.
Papers that depart significantly from established ideas and practices
are particularly welcome.
Submissions must not have been published previously and must not be
under review for any another refereed event or publication. The program
committee will evaluate each contributed paper based on its relevance,
significance, clarity, and originality. Revised papers will be published
as post-proceedings in the Springer LNCS series.
Papers should be submitted electronically via EasyChair at
http://www.easychair.org/conferences/?conf=s3 in PDF format. Submissions
must be written in English (the official language of the workshop) and
must not exceed 20 pages. They should use the LNCS format, templates for
which are available at http://www.springer.de/comp/lncs/authors.html.
-- Venue:
Hasso-Plattner-Institut (Potsdam, Germany)
-- Important dates:
Submission of papers: February 15, 2008
Author notification: April 11, 2008
Revised papers due: April 25, 2008
S3 workshop: May 15-16, 2008
Final papers for LNCS post-proceedings due: June 6, 2008
-- Chairs:
* Robert Hirschfeld (Hasso-Plattner-Institut Potsdam, Germany)
* Kim Rose (Viewpoints Research Institute, USA)
-- Program committee:
* Johan Brichau, Universite Catholique de Louvain, Belgium
* Pascal Costanza, Vrije Universiteit Brussel, Belgium
* Wolfgang De Meuter, Vrije Universiteit Brussel, Belgium
* Stephane Ducasse, INRIA Lille, France
* Michael Haupt, Hasso-Plattner-Institut, Germany
* Robert Hirschfeld, Hasso-Plattner-Institut, Germany
* Dan Ingalls, Sun Microsystems Laboratories, USA
* Martin von Lšwis, Hasso-Plattner-Institut, Germany
* Hidehiko Masuhara, University of Tokyo, Japan
* Ian Piumarta, Viewpoints Research Institute, USA
* David Ungar, IBM, USA
-- Registration fees:
Early (until April 18, 2008)
* Regular participants: EUR 160
* Students: EUR 80
Late (after April 18, 2008)
* Regular participants: EUR 170
* Students: EUR 90