bsddb185 v1.0 for Python 2.6 and 3.0
Python 3.0 will dispense with the rarely used, but occasionally indispensible, bsddb185 module. I extracted the source code and unit tests from the current Python trunk, wrote a setup.py, made a couple slight mods so it would build and pass tests under both Python 2.6 and 3.0. It's available from the Python Package Index: http://pypi.python.org/pypi/bsddb185 Cheers, -- Skip Montanaro - [EMAIL PROTECTED] - http://www.webfast.com/~skip/ -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
Elixir 0.5.0 released!
I am very pleased to announce that version 0.5.0 of Elixir (http://elixir.ematia.de) is now available. As always, feedback is very welcome, preferably on Elixir mailing list. This is mostly a bug fixes release, but we have also had some pretty important changes to the default values for options. Please look at http://elixir.ematia.de/trac/wiki/Migrate04to05 for detailed upgrade notes. The full list of changes can be seen at: http://elixir.ematia.de/trac/browser/elixir/tags/0.5.0/CHANGES What is Elixir? - Elixir is a declarative layer on top of the SQLAlchemy library. It is a fairly thin wrapper, which provides the ability to create simple Python classes that map directly to relational database tables (this pattern is often referred to as the Active Record design pattern), providing many of the benefits of traditional databases without losing the convenience of Python objects. Elixir is intended to replace the ActiveMapper SQLAlchemy extension, and the TurboEntity project but does not intend to replace SQLAlchemy's core features, and instead focuses on providing a simpler syntax for defining model objects when you do not need the full expressiveness of SQLAlchemy's manual mapper definitions. Mailing list http://groups.google.com/group/sqlelixir/about -- Gaëtan de Menten http://openhex.org -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
PSSC: Phone Screen Sequential Capture
Hi group, PSSC allow to see the Symbian S60 phone's display on a window of your Linux PC , using bluetooth connections. Here is the webpage and a video showing the standard scenario: http://mulinux.sunsite.dk/python/pssc.html Best regards, Michele Andreoli -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
ANN: Axon.STM 1.0.0 (beta) Minimalistic Software Transactional Memory
Hi, I've packaged up the minimal STM discussed over the past couple of days as a standalone package which I've now uploaded Getting it == You can download a beta test version here: http://thwackety.com/Axon.STM-1.0.0.tar.gz Previewing it = You can look at the sourcecode online here: https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/branches/private_MPS_Scratch/Bindings/STM/Axon/STM.py Installing it = ~ > tar zxf Axon.STM-1.0.0.tar.gz ~ > cd Axon.STM-1.0.0/ ~ > 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() License === Take your pick of MPL V1.1, GPL 2.0, LGPL 2.1 :-) Feedback Feedback is very welcome, preferably via email to the Kamaelia List * [EMAIL PROTECTED] 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. Best Regards, Michael. -- Michael Sparks, Kamaelia Project http://kamaelia.sourceforge.net/Developers/ http://yeoldeclue.com/blog -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
CodeInvestigator version 0.6.2 released.
CodeInvestigator version 0.6.2 was released on December 10. This version catches generate exceptions: Runs did not show when the generate failed. And a bug was fixed where variables did not underline when another iteration was selected. CodeInvestigator is a tracing tool for Python programs. Running a program trough CodeInvestigator creates a recording. Program flow, function calls, variable values and conditions are all stored for every line the program executes. The recording is then viewed with an interface consisting of the code. The code can be clicked: A clicked variable displays its value, a clicked loop displays its iterations. You read code, and have at your disposal all the run time details of that code. A computerized desk check tool and another way to learn about your program. http://sourceforge.net/project/showfiles.php?group_id=183942 -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
[ANN] Leipzig Python User Group - Meeting, December 11, 2007, 08:00pm
=== Leipzig Python User Group === We will meet on Tuesday, December 11 at 8:00 pm at the training center of Python Academy in Leipzig, Germany ( http://www.python-academy.com/center/find.html ). Food and soft drinks are provided. Please send a short confirmation mail to [EMAIL PROTECTED], so we can prepare appropriately. Everybody who uses Python, plans to do so or is interested in learning more about the language is encouraged to participate. While the meeting language will be mainly German, we will provide English translation if needed. Current information about the meetings are at http://www.python-academy.com/user-group . Mike == Leipzig Python User Group === Wir treffen uns am Dienstag, 11.12.2007 um 20:00 Uhr im Schulungszentrum der Python Academy in Leipzig ( http://www.python-academy.de/Schulungszentrum/anfahrt.html ). Für das leibliche Wohl wird gesorgt. Eine Anmeldung unter [EMAIL PROTECTED] wäre nett, damit wir genug Essen besorgen können. Willkommen ist jeder, der Interesse an Python hat, die Sprache bereits nutzt oder nutzen möchte. Aktuelle Informationen zu den Treffen sind unter http://www.python-academy.de/User-Group zu finden. Viele Grüße Mike -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html