From r1chardj0n3s at gmail.com Thu Jul 1 04:26:54 2010 From: r1chardj0n3s at gmail.com (Richard Jones) Date: Thu, 1 Jul 2010 12:26:54 +1000 Subject: Roundup Issue Tracker 1.4.14 released Message-ID: I'm proud to release version 1.4.14 of Roundup which includes a security fix and some other fixes: Features: - Preparations for getting 2to3 work, not completed yet. (Richard Jones) Fixed: - User input not escaped when a bad template name is supplied (thanks Benjamin Pollack) - The email for the first message on an issue was having its In-Reply-To set to itself (thanks Eric Kow) - Handle multiple @action values from broken trackers. - Accept single-character subject lines - xmlrpc handling of unicode characters and binary values, see http://thread.gmane.org/gmane.comp.bug-tracking.roundup.user/10040 thanks to Hauke Duden for reporting these. - frontends/roundup.cgi got out of sync with the roundup.cgi.Client API - Default to "text/plain" if no Content-Type header is present in email (thanks Hauke Duden) - Small documentation update regarding debugging aids (Bernhard Reiter) - Indexer Xapian, made Xapian 1.2 compatible. Needs at least Xapian 1.0.0 now. (Bernhard Reiter; Thanks to Olly Betts for providing the patch Issue2550647.) If you're upgrading from an older version of Roundup you *must* follow the "Software Upgrade" guidelines given in the maintenance documentation. Roundup requires python 2.3 or later (but not 3+) for correct operation. To give Roundup a try, just download (see below), unpack and run:: roundup-demo Release info and download page: http://cheeseshop.python.org/pypi/roundup Source and documentation is available at the website: http://roundup.sourceforge.net/ Mailing lists - the place to ask questions: http://sourceforge.net/mail/?group_id=31577 About Roundup ============= Roundup is a simple-to-use and -install issue-tracking system with command-line, web and e-mail interfaces. It is based on the winning design from Ka-Ping Yee in the Software Carpentry "Track" design competition. Note: Ping is not responsible for this project. The contact for this project is richard at users.sourceforge.net. Roundup manages a number of issues (with flexible properties such as "description", "priority", and so on) and provides the ability to: (a) submit new issues, (b) find and edit existing issues, and (c) discuss issues with other participants. The system will facilitate communication among the participants by managing discussions and notifying interested parties when issues are edited. One of the major design goals for Roundup that it be simple to get going. Roundup is therefore usable "out of the box" with any python 2.3+ (but not 3+) installation. It doesn't even need to be "installed" to be operational, though an install script is provided. It comes with two issue tracker templates (a classic bug/feature tracker and a minimal skeleton) and four database back-ends (anydbm, sqlite, mysql and postgresql). From alex at itaapy.com Thu Jul 1 17:06:11 2010 From: alex at itaapy.com (Alex Garel) Date: Thu, 01 Jul 2010 17:06:11 +0200 Subject: Official release of itws 1.0 Message-ID: <4C2CAEE3.6090503@itaapy.com> Hello, Itaapy's team is proud to announce first stable release of itws, a solution to create a website, an extranet or intranet. It features RSS integration, composite pages, tags cloud, twitter stream, configurable menu, etc... itws is based on ikaaro, an Open Source Python CMS. iKaaro may retain your attention for : - REST architecture - object database backed on the file systems with files in native or standard formats - Git for all content versionning This new version of itws enhance usability, providing a solution which is ready to meet a large public. This is the first version to be publicly advertised. Full announcement : http://www.itaapy.com/news/sortie-officielle-d-itws-1.0?language=en Project page : http://hforge.org/itws -- Alexandre Garel, http://itaapy.com ITAAPY, 9 rue Darwin, 75018 Paris Tel : +33(0)1 42 23 67 45 Mail: alex at itaapy.com Mob : +33(0)6 65 04 50 81 From faltet at pytables.org Thu Jul 1 21:19:07 2010 From: faltet at pytables.org (Francesc Alted) Date: Thu, 1 Jul 2010 21:19:07 +0200 Subject: PyTables 2.2 released: entering the multi-core age Message-ID: <201007012119.07363.faltet@pytables.org> ================================= Announcing PyTables 2.2 (final) ================================= I'm happy to announce PyTables 2.2 (final). After 18 months of continuous development and testing, this is, by far, the most powerful and well-tested release ever. I hope you like it too. What's new ========== The main new features in 2.2 series are: * A new compressor called Blosc, designed to read/write data to/from memory at speeds that can be faster than a system `memcpy()` call. With it, many internal PyTables operations that are currently bounded by CPU or I/O bandwith are speed-up. Some benchmarks: http://blosc.pytables.org/trac/wiki/SyntheticBenchmarks And a demonstration on how Blosc can improve PyTables performance: http://www.pytables.org/docs/manual/ch05.html#chunksizeFineTune * Support for HDF5 hard links, soft links and external links (kind of mounting external filesystems). A new tutorial about its usage has been added to the 'Tutorials' chapter of User's Manual. See: http://www.pytables.org/docs/manual/ch03.html#LinksTutorial * A new `tables.Expr` module (based on Numexpr) that allows to do persistent, on-disk computations on many algebraic operations. For a brief look on its performance, see: http://pytables.org/moin/ComputingKernel * Suport for 'fancy' indexing (i.e., ? la NumPy) in all the data containers in PyTables. Backported from the implementation in the h5py project. Thanks to Andrew Collette for his fine work on this! * Binaries for both Windows 32-bit and 64-bit are provided now. As always, a large amount of bugs have been addressed and squashed too. In case you want to know more in detail what has changed in this version, have a look at: http://www.pytables.org/moin/ReleaseNotes/Release_2.2 You can download a source package with generated PDF and HTML docs, as well as binaries for Windows, from: http://www.pytables.org/download/stable For an on-line version of the manual, visit: http://www.pytables.org/docs/manual-2.2 What it is? =========== PyTables is a library for managing hierarchical datasets and designed to efficiently cope with extremely large amounts of data with support for full 64-bit file addressing. PyTables runs on top of the HDF5 library and NumPy package for achieving maximum throughput and convenient use. Resources ========= About PyTables: http://www.pytables.org About the HDF5 library: http://hdfgroup.org/HDF5/ About NumPy: http://numpy.scipy.org/ Acknowledgments =============== Thanks to many users who provided feature improvements, patches, bug reports, support and suggestions. See the ``THANKS`` file in the distribution package for a (incomplete) list of contributors. Most specially, a lot of kudos go to the HDF5 and NumPy (and numarray!) makers. Without them, PyTables simply would not exist. Share your experience ===================== Let us know of any bugs, suggestions, gripes, kudos, etc. you may have. ---- **Enjoy data!** -- The PyTables Team -- Francesc Alted From david at silveregg.co.jp Fri Jul 2 04:38:45 2010 From: david at silveregg.co.jp (David) Date: Fri, 02 Jul 2010 11:38:45 +0900 Subject: Bento 0.0.3 (ex-toydist), a pythonic packaging solution Message-ID: <4C2D5135.5010909@silveregg.co.jp> Hi, I am pleased to announce the release 0.0.3 for Bento, the pythonic packaging solution. Bento aims at being an alternative to distutils/setuptools/distribute, based on a static metadata file format. Existing packages can be converted from setup.py to bento format automatically. http://cournape.github.com/Bento/ Wherease the 0.0.2 release was mostly about getting the simplest-still-useful subset of distutils features, this new release adds quite a few significant features: - Add hooks to customize arbitrary stages in bento (there is a hackish example which shows how to use waf to build a simple C extension). The API for this is still in flux, though - Parallel and reliable build of C extensions through yaku build library. - One file distribution: no need for your users to install any new packages, just include one single file into your package to build with bento - Improved documentation - 2.4 -> 2.7 support, tested on linux/windows/mac os x You can download bento on github: http://github.com/cournape/Bento, discussion on bento design/features happens on numpy mailing list cheers, David From askh at opera.com Fri Jul 2 15:59:51 2010 From: askh at opera.com (Ask Solem) Date: Fri, 2 Jul 2010 15:59:51 +0200 Subject: [Ann] Celery 2.0 released Message-ID: <02298112-C368-421B-AA86-406D36241BC0@opera.com> ============================ Celery 2.0 has been released ============================ We're happy to announce the release of Celery 2.0. Big thanks to all contributors, testers and users! What is it? =========== Celery is an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well. The execution units, called tasks, are executed concurrently on a single or more worker servers. Tasks can execute asynchronously (in the background) or synchronously (wait until ready). Celery is already used in production to process millions of tasks a day. Celery is written in Python, but the protocol can be implemented in any language. It can also operate with other languages using webhooks. The recommended message broker is RabbitMQ, but support for Redis and databases is also available. You may also be pleased to know that full Django integration exists, delivered by the django-celery package. What's new? =========== * Django dependency removed. Django integration has been moved to a separate package called django-celery. SQLAlchemy is now used instead of the Django ORM for the database result store. * A curses real-time monitor: celeryev. * Support for soft and hard time limits. --time-limit: The worker processing the task will be killed and replaced with a new process when this is exceeded. --soft-time-limit: The celery.exceptions.SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to clean up before the hard time limit terminates it. * Periodic tasks schedules can now be expressed using complex crontab-like expressions. For example, you can now use:: >>> crontab(minute="*/15") or even:: >>> crontab(minute="*/30", hour="8-17,1-2", ... day_of_week="thu-fri") * Built-in way to do task callbacks. http://celeryq.org/docs/userguide/tasksets.html * Simplified routing of tasks. http://celeryq.org/docs/userguide/routing.html * TaskSets can now contain several types of tasks. Tasksets has been refactored to use a new syntax, please see http://celeryq.org/docs/userguide/tasksets.html for more information. The previous syntax is still supported but deprecated, and will be completely removed in Celery 2.2. * AMQP result backend can now do polling of results. This means it supports ``result.ready()``, ``.successful()``, etc. * AMQP result backend now supports timeouts when waiting for results. * celeryd: --maxtasksperchild Defines the maximum number of tasks a pool worker can process before the process is terminated and replaced by a new one. * It's now possible to use the client side of Celery without configuration. And lots more! The Changelog contains upgrade instructions and a detailed list of all changes: http://celeryproject.org/docs/changelog.html Thank you for reading it. Resources ========= :Homepage: http://celeryproject.org :Download: http://pypi.python.org/pypi/celery :Documentation: http://celeryproject.org/docs/ :Changelog: http://celeryproject.org/docs/changelog.html :Code: http://github.com/ask/celery/ :FAQ: http://ask.github.com/celery/faq.html :Mailing list: http://groups.google.com/group/celery-users :IRC: #celery at irc.freenode.net. -- {Ask Solem, twitter.com/asksol | github.com/ask }. From detlev at die-offenbachs.de Sun Jul 4 10:54:49 2010 From: detlev at die-offenbachs.de (Detlev Offenbach) Date: Sun, 04 Jul 2010 10:54:49 +0200 Subject: [ANN] eric 5.0.0 released Message-ID: Hi, I just uploaded eric 5.0.0. This is the first official release. It is available via the eric web site. http://eric-ide.python-projects.org/index.html What is it? ----------- eric5 is the Python3 variant of the well know eric4 Python IDE and is the first development environment, that runs natively with Python3. It comes with all batteries included. The features are too much to be listed in this announcement. Please see the eric web site for details. Regards, Detlev -- Detlev Offenbach detlev at die-offenbachs.de From a.cavallo at cavallinux.eu Sun Jul 4 11:59:58 2010 From: a.cavallo at cavallinux.eu (Antonio Cavallo) Date: Sun, 4 Jul 2010 11:59:58 +0200 Subject: Pyvm - Continuous python integration Message-ID: ========= Pyvm beta ========= This project provides binary builds for the python 2.x subversion snapshots each installable under the /opt/opt-python-svnXXXXX tree. The benefits are: 1) multiple revisions installable at the same time 2) no need to alter the system wide python intepreter to test against different python revisions. 3) Automated support for testing (unittest based) The binaries provided are for (both x86 and x86_64): = CentOS_5 = Fedora 10, 11 and 12 = Mandriva 2008, 2009, 2009.1, 2010 = OpenSuSE 11.0, 11.1, 11.2 and Factory (the next 11.3) = RHEL 4 and 5 = SLES 9, 10 and 11 Highlights of this release ========================== - New website redesign and public relaunch. - Web based .spec file creator for python modules Planned for next release ======================== - release and publish pyquality runtime python testing - publish the underlying tools to manage the full build cycle (now hosted in sf.net) Help needed =========== - Debian packaging Have fun, Antonio Cavallo From benjamin at python.org Sun Jul 4 17:34:57 2010 From: benjamin at python.org (Benjamin Peterson) Date: Sun, 4 Jul 2010 10:34:57 -0500 Subject: [RELEASE] Python 2.7 released Message-ID: On behalf of the Python development team, I'm jocund to announce the second release candidate of Python 2.7. Python 2.7 will be the last major version in the 2.x series. However, it will also have an extended period of bugfix maintenance. 2.7 includes many features that were first released in Python 3.1. The faster io module, the new nested with statement syntax, improved float repr, set literals, dictionary views, and the memoryview object have been backported from 3.1. Other features include an ordered dictionary implementation, unittests improvements, a new sysconfig module, auto-numbering of fields in the str/unicode format method, and support for ttk Tile in Tkinter. For a more extensive list of changes in 2.7, see http://doc.python.org/dev/whatsnew/2.7.html or Misc/NEWS in the Python distribution. To download Python 2.7 visit: http://www.python.org/download/releases/2.7/ 2.7 documentation can be found at: http://docs.python.org/2.7/ This is a production release and should be suitable for all libraries and applications. Please report any bugs you find, so they can be fixed in the next maintenance releases. The bug tracker is at: http://bugs.python.org/ Enjoy! -- Benjamin Peterson Release Manager benjamin at python.org (on behalf of the entire python-dev team and 2.7's contributors) From jml at mumak.net Sun Jul 4 17:36:19 2010 From: jml at mumak.net (Jonathan Lange) Date: Sun, 4 Jul 2010 16:36:19 +0100 Subject: Twisted 10.1.0 released Message-ID: On behalf of Twisted Matrix Laboratories, I am honored to announce the release of Twisted 10.1.0. Highlights include: * Deferreds now support cancellation * A new "endpoint" interface which can abstractly describe stream transport endpoints such as TCP and SSL * inotify support for Linux, which allows monitoring of file system events. * AMP supports transferring timestamps Note also that this is the *last* supported release of Twisted for Python 2.4 on Windows. For more information, see the NEWS file. It's stable, backwards compatible, well tested and in every way an improvement. Download it now from: http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.tar.bz2 http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.winxp32-py2.5.msi http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.winxp32-py2.6.msi Many thanks to Glyph Lefkowitz, who helped do the release preparation, and the PyCon 2010 sprinters, who did so much of the work for this release. jml From benjamin at python.org Sun Jul 4 18:03:47 2010 From: benjamin at python.org (Benjamin Peterson) Date: Sun, 4 Jul 2010 11:03:47 -0500 Subject: [RELEASE] Python 2.7 released In-Reply-To: References: Message-ID: 2010/7/4 Benjamin Peterson : > On behalf of the Python development team, I'm jocund to announce the second > release candidate of Python 2.7. Arg!!! This should, of course, be "final release". -- Regards, Benjamin From rtfm.rtfm.rtfm at gmail.com Mon Jul 5 18:19:20 2010 From: rtfm.rtfm.rtfm at gmail.com (Daneel Yaitskov) Date: Mon, 05 Jul 2010 20:19:20 +0400 Subject: pafo 0.1 released Message-ID: <4C320608.50407@gmail.com> Hi All, pafo is a help debug library. it allows programmer to observer data fields' state of a complex object or a bundle of objects. Even if some objects in the bundle haven't __str__ or __repr__ methods. Such situation is very usual. Nobody want to writer code only that to print the state of an object two-three times. It provides one function - printObject. You can use it as follows: >>> from pafo import * >>> printObject( [ 1,2,3] ) [ 1 :: int, 2 :: int, 3 :: int ] >>> class A: ... field = 3 ... >>> printObject( [ 1,2,3, A()] ) [ 1 :: int, 2 :: int, 3 :: int, class A: field = 3 :: int ] >>> class B: ... field2 = A() ... listField = [ 1,2,2,4,A()] ... >>> printObject( [ 1,2,B(),3, A()] ) [ 1 :: int, 2 :: int, class B: field2 = class A: field = 3 :: int listField = [ 1 :: int, 2 :: int, 2 :: int, 4 :: int, class A: field = 3 :: int ] , 3 :: int, class A: field = 3 :: int ] >>> Module can be downloaded from: http://daneel0yaitskov.000space.com/pafo-0.1.tar.gz From whykay at gmail.com Mon Jul 5 18:52:44 2010 From: whykay at gmail.com (Vicky Twomey-Lee) Date: Mon, 5 Jul 2010 17:52:44 +0100 Subject: Python Ireland's pre-PyCon drinks - Wed, 14th July @ Trinity Capital Hotel Message-ID: Hi All, Join us for drinks and a chat (a warm-up session to PyCon Ireland ;-) ). When: Wed 14th July, from 7pm Where: Trinity Capital Hotel More details at: http://www.python.ie/meetup/2010/python_ireland_meetup_-_july_2010/ Cheers, /// Vicky ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ http://irishbornchinese.com ~~ ~~ http://www.python.ie ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ From mdipierro at cs.depaul.edu Tue Jul 6 01:56:12 2010 From: mdipierro at cs.depaul.edu (Massimo Di Pierro) Date: Mon, 5 Jul 2010 18:56:12 -0500 Subject: markmin 0.1 Message-ID: <4F0DB70E-0116-4335-AA40-691DD57D622A@cs.depaul.edu> Markmin is a wiki markup language implemented in less than 100 lines of code (one file, no dependencies) easy to read secure support table, ul, ol, code support html5 video and audio elements can align images and resize them CSS friendly (can specify class for tables and code elements) can add anchors anywhere does not use _ for markup (since it creates odd behavior) automatically links urls fast with tests Examples # section ## subsection ### subsubsection #### etc etc etc **bold** ''italic'' (two single quotes, not double quote) ``varbatim`` a link [[this is a title http://example.com]] an image [[this is a title http://example.com right 200px]] a video [[this is a title http://example.come video]] a audio [[this is a title http://example.come audio]] an anchor [[myanchor]] link to anchor [[this is a title #myancohr]] bold link [[**this is a title** http://example.com]] automatic links http://example.com `` def inex(): return "multiline code" ``:language - unordered - list + oredered + list table example ------------- 0 | 0 | 1 0 | X | 0 X | 0 | 0 ------------- From dave at dabeaz.com Tue Jul 6 23:59:19 2010 From: dave at dabeaz.com (David Beazley) Date: Tue, 6 Jul 2010 16:59:19 -0500 Subject: Introduction to Python, July 13-15, 2010 (Chicago) Message-ID: <51661.1278453559@dabeaz.com> Introduction to Python Programming with David Beazley, author "Python Essential Reference" http://www.dabeaz.com/chicago/index.html July 13-15, 2010 Chicago, Illinois Just a quick note to say that there are still a few slots available for my upcoming "Introduction to Python Programming" course. This is an intense no-bull course for programmers, sysadmins, scientists, and engineers who want to solve practical problems and improve their Python programming skills. This course is strictly limited to 6 people and is being held in the heart of Chicago's distinctive Andersonville neighborhood. Come hack some Python code while enjoying the summer sights, sounds, and tastes of the city. You won't be disappointed. Cheers, Dave From miki.tebeka at gmail.com Wed Jul 7 07:21:00 2010 From: miki.tebeka at gmail.com (Miki) Date: Tue, 6 Jul 2010 22:21:00 -0700 (PDT) Subject: ]ANN] Selenium Python bindings dev-9231 Message-ID: <790bf2c3-813b-44f6-8840-1914fe7bcf91@h40g2000pro.googlegroups.com> Hello All, The latest version of Selenium Python bindings (dev-9231 on PyPI) includes the "native" Firefox driver. You can now can do: from selenium import get_driver, FIREFOX driver = get_driver(FIREFOX) driver.get("http://www.google.com") ... To get the latest version, just run "easy_install -U selenium". Happy testing, -- Miki From holger at merlinux.eu Wed Jul 7 15:56:21 2010 From: holger at merlinux.eu (holger krekel) Date: Wed, 7 Jul 2010 15:56:21 +0200 Subject: execnet-1.0.7: new env-setting and keyboardinterrupt fixes Message-ID: <20100707135621.GO14601@trillke.net> execnet-1.0.7 is a backward compatible release avoiding a gateway termination race condition and adding the possibility to add env:NAME=value settings to gateway specifications, thanks to thanks Jakub Gustak. execnet is a small and stable pure-python library for automatically deploying and interacting with clusters of Python interpreters. It seamlessly instantiates remote interpreters through the 'ssh' command line tool or socket connections. It supports interactions between Python 2.4 through to 3.1, Jython-2.5.1 and pypy-c, therefore enabling generic Python-to-Python bridging. execnet-1.0.7 was successfully tested against Python2.7 as well as the usual armada of interpreters ranging from Python2.4 to Python3.1, Jython and PyPy. See http://codespeak.net/execnet for extensive documentation. From sridharr at activestate.com Thu Jul 8 03:08:07 2010 From: sridharr at activestate.com (Sridhar Ratnakumar) Date: Wed, 07 Jul 2010 18:08:07 -0700 Subject: ANN: ActivePython 2.7.0.1 is now available Message-ID: <4C3524F7.7030005@activestate.com> We are pleased to announce the availability of ActivePython 2.7.0.1. http://www.activestate.com/activepython This release corresponds to the recently released Python 2.7, and, like ActivePython 2.6, includes the Python Package Manager (PyPM) with essential packages such as Distribute (a compatible fork of setuptools), virtualenv, pip and SQLAlchemy. See the release notes for full details: http://docs.activestate.com/activepython/2.7/relnotes.html#changes For a high-level overview of this release, please see our blog post: http://www.activestate.com/blog/2010/07/activepython-27-released This is also the first ActivePython release with 64-bit support on MacOSX. What is ActivePython? --------------------- ActivePython is ActiveState's binary distribution of Python. Builds for Windows, Mac OS X, Linux are made freely available. Solaris, HP-UX and AIX builds, and access to older versions are available in ActivePython Business, Enterprise and OEM editions: http://www.activestate.com/python ActivePython includes the Python core and the many core extensions: zlib and bzip2 for data compression, the Berkeley DB (bsddb) and SQLite (sqlite3) database libraries, OpenSSL bindings for HTTPS support, the Tix GUI widgets for Tkinter, ElementTree for XML processing, ctypes (on supported platforms) for low-level library access, and others. The Windows distribution ships with PyWin32 -- a suite of Windows tools developed by Mark Hammond, including bindings to the Win32 API and Windows COM. ActivePython 2.6 and 2.7 also include a binary package manager for Python (PyPM) that can be used to install packages much easily. For example: C:\>pypm install mysql-python [...] C:\>python >>> import MySQLdb >>> See this page for full details: http://docs.activestate.com/activepython/2.7/whatsincluded.html As well, ActivePython ships with a wealth of documentation for both new and experienced Python programmers. In addition to the core Python docs, ActivePython includes the "What's New in Python" series, "Dive into Python", the Python FAQs & HOWTOs, and the Python Enhancement Proposals (PEPs). An online version of the docs can be found here: http://docs.activestate.com/activepython/2.7/ We would welcome any and all feedback to: activepython-feedback at activestate.com Please file bugs against ActivePython at: http://bugs.activestate.com/enter_bug.cgi?product=ActivePython On what platforms does ActivePython run? ---------------------------------------- ActivePython includes installers for the following platforms: - Windows/x86 - Windows/x64 (aka "AMD64") - Mac OS X - Linux/x86 - Linux/x86_64 (aka "AMD64") - Solaris/SPARC (Business, Enterprise or OEM edition only) - Solaris/x86 (Business, Enterprise or OEM edition only) - HP-UX/PA-RISC (Business, Enterprise or OEM edition only) - HP-UX/IA-64 (Enterprise or OEM edition only) - AIX/PowerPC (Business, Enterprise or OEM edition only) - AIX/PowerPC 64-bit (Business, Enterprise or OEM edition only) Custom builds are available in Enterprise Edition: http://www.activestate.com/enterprise-edition Thanks, and enjoy! The Python Team -- Sridhar Ratnakumar sridharr at activestate.com From holger at merlinux.eu Thu Jul 8 17:31:35 2010 From: holger at merlinux.eu (holger krekel) Date: Thu, 8 Jul 2010 17:31:35 +0200 Subject: py.test 1.3.2: API and reporting refinements & fixes Message-ID: <20100708153135.GQ14601@trillke.net> The pylib/py.test 1.3.2 release brings many bug fixes and some new features. It was refined for and tested against the recently released Python2.7 and remains compatibile to the usual armada of interpreters (Python2.4 through to Python3.1.2, Jython and PyPy). Note that for using distributed testing features you'll need to upgrade to the jointly released pytest-xdist-1.4 because of some internal refactorings. See http://pytest.org for general documentation and below for a inlined detailed CHANGELOG. cheers & particular thanks to Benjamin Peterson, Ronny Pfannschmidt and all issue and patch contributors, holger krekel Changes between 1.3.1 and 1.3.2 ================================================== New features ++++++++++++++++++ - fix issue103: introduce py.test.raises as context manager, examples:: with py.test.raises(ZeroDivisionError): x = 0 1 / x with py.test.raises(RuntimeError) as excinfo: call_something() # you may do extra checks on excinfo.value|type|traceback here (thanks Ronny Pfannschmidt) - Funcarg factories can now dynamically apply a marker to a test invocation. This is for example useful if a factory provides parameters to a test which are expected-to-fail:: def pytest_funcarg__arg(request): request.applymarker(py.test.mark.xfail(reason="flaky config")) ... def test_function(arg): ... - improved error reporting on collection and import errors. This makes use of a more general mechanism, namely that for custom test item/collect nodes ``node.repr_failure(excinfo)`` is now uniformly called so that you can override it to return a string error representation of your choice which is going to be reported as a (red) string. - introduce '--junitprefix=STR' option to prepend a prefix to all reports in the junitxml file. Bug fixes / Maintenance ++++++++++++++++++++++++++ - make tests and the ``pytest_recwarn`` plugin in particular fully compatible to Python2.7 (if you use the ``recwarn`` funcarg warnings will be enabled so that you can properly check for their existence in a cross-python manner). - refine --pdb: ignore xfailed tests, unify its TB-reporting and don't display failures again at the end. - fix assertion interpretation with the ** operator (thanks Benjamin Peterson) - fix issue105 assignment on the same line as a failing assertion (thanks Benjamin Peterson) - fix issue104 proper escaping for test names in junitxml plugin (thanks anonymous) - fix issue57 -f|--looponfail to work with xpassing tests (thanks Ronny) - fix issue92 collectonly reporter and --pastebin (thanks Benjamin Peterson) - fix py.code.compile(source) to generate unique filenames - fix assertion re-interp problems on PyPy, by defering code compilation to the (overridable) Frame.eval class. (thanks Amaury Forgeot) - fix py.path.local.pyimport() to work with directories - streamline py.path.local.mkdtemp implementation and usage - don't print empty lines when showing junitxml-filename - add optional boolean ignore_errors parameter to py.path.local.remove - fix terminal writing on win32/python2.4 - py.process.cmdexec() now tries harder to return properly encoded unicode objects on all python versions - install plain py.test/py.which scripts also for Jython, this helps to get canonical script paths in virtualenv situations - make path.bestrelpath(path) return ".", note that when calling X.bestrelpath the assumption is that X is a directory. - make initial conftest discovery ignore "--" prefixed arguments - fix resultlog plugin when used in an multicpu/multihost xdist situation (thanks Jakub Gustak) - perform distributed testing related reporting in the xdist-plugin rather than having dist-related code in the generic py.test distribution - fix homedir detection on Windows - ship distribute_setup.py version 0.6.13 Changes between 1.3.0 and 1.3.1 ================================================== New features ++++++++++++++++++ - issue91: introduce new py.test.xfail(reason) helper to imperatively mark a test as expected to fail. Can be used from within setup and test functions. This is useful especially for parametrized tests when certain configurations are expected-to-fail. In this case the declarative approach with the @py.test.mark.xfail cannot be used as it would mark all configurations as xfail. - issue102: introduce new --maxfail=NUM option to stop test runs after NUM failures. This is a generalization of the '-x' or '--exitfirst' option which is now equivalent to '--maxfail=1'. Both '-x' and '--maxfail' will now also print a line near the end indicating the Interruption. - issue89: allow py.test.mark decorators to be used on classes (class decorators were introduced with python2.6) and also allow to have multiple markers applied at class/module level by specifying a list. - improve and refine letter reporting in the progress bar: . pass f failed test s skipped tests (reminder: use for dependency/platform mismatch only) x xfailed test (test that was expected to fail) X xpassed test (test that was expected to fail but passed) You can use any combination of 'fsxX' with the '-r' extended reporting option. The xfail/xpass results will show up as skipped tests in the junitxml output - which also fixes issue99. - make py.test.cmdline.main() return the exitstatus instead of raising SystemExit and also allow it to be called multiple times. This of course requires that your application and tests are properly teared down and don't have global state. Fixes / Maintenance ++++++++++++++++++++++ - improved traceback presentation: - improved and unified reporting for "--tb=short" option - Errors during test module imports are much shorter, (using --tb=short style) - raises shows shorter more relevant tracebacks - --fulltrace now more systematically makes traces longer / inhibits cutting - improve support for raises and other dynamically compiled code by manipulating python's linecache.cache instead of the previous rather hacky way of creating custom code objects. This makes it seemlessly work on Jython and PyPy where it previously didn't. - fix issue96: make capturing more resilient against Control-C interruptions (involved somewhat substantial refactoring to the underlying capturing functionality to avoid race conditions). - fix chaining of conditional skipif/xfail decorators - so it works now as expected to use multiple @py.test.mark.skipif(condition) decorators, including specific reporting which of the conditions lead to skipping. - fix issue95: late-import zlib so that it's not required for general py.test startup. - fix issue94: make reporting more robust against bogus source code (and internally be more careful when presenting unexpected byte sequences) Changes between 1.2.1 and 1.3.0 ================================================== - deprecate --report option in favour of a new shorter and easier to remember -r option: it takes a string argument consisting of any combination of 'xfsX' characters. They relate to the single chars you see during the dotted progress printing and will print an extra line per test at the end of the test run. This extra line indicates the exact position or test ID that you directly paste to the py.test cmdline in order to re-run a particular test. - allow external plugins to register new hooks via the new pytest_addhooks(pluginmanager) hook. The new release of the pytest-xdist plugin for distributed and looponfailing testing requires this feature. - add a new pytest_ignore_collect(path, config) hook to allow projects and plugins to define exclusion behaviour for their directory structure - for example you may define in a conftest.py this method:: def pytest_ignore_collect(path): return path.check(link=1) to prevent even a collection try of any tests in symlinked dirs. - new pytest_pycollect_makemodule(path, parent) hook for allowing customization of the Module collection object for a matching test module. - extend and refine xfail mechanism: ``@py.test.mark.xfail(run=False)`` do not run the decorated test ``@py.test.mark.xfail(reason="...")`` prints the reason string in xfail summaries specifiying ``--runxfail`` on command line virtually ignores xfail markers - expose (previously internal) commonly useful methods: py.io.get_terminal_with() -> return terminal width py.io.ansi_print(...) -> print colored/bold text on linux/win32 py.io.saferepr(obj) -> return limited representation string - expose test outcome related exceptions as py.test.skip.Exception, py.test.raises.Exception etc., useful mostly for plugins doing special outcome interpretation/tweaking - (issue85) fix junitxml plugin to handle tests with non-ascii output - fix/refine python3 compatibility (thanks Benjamin Peterson) - fixes for making the jython/win32 combination work, note however: jython2.5.1/win32 does not provide a command line launcher, see http://bugs.jython.org/issue1491 . See pylib install documentation for how to work around. - fixes for handling of unicode exception values and unprintable objects - (issue87) fix unboundlocal error in assertionold code - (issue86) improve documentation for looponfailing - refine IO capturing: stdin-redirect pseudo-file now has a NOP close() method - ship distribute_setup.py version 0.6.10 - added links to the new capturelog and coverage plugins Changes between 1.2.1 and 1.2.0 ===================================== - refined usage and options for "py.cleanup":: py.cleanup # remove "*.pyc" and "*$py.class" (jython) files py.cleanup -e .swp -e .cache # also remove files with these extensions py.cleanup -s # remove "build" and "dist" directory next to setup.py files py.cleanup -d # also remove empty directories py.cleanup -a # synonym for "-s -d -e 'pip-log.txt'" py.cleanup -n # dry run, only show what would be removed - add a new option "py.test --funcargs" which shows available funcargs and their help strings (docstrings on their respective factory function) for a given test path - display a short and concise traceback if a funcarg lookup fails - early-load "conftest.py" files in non-dot first-level sub directories. allows to conveniently keep and access test-related options in a ``test`` subdir and still add command line options. - fix issue67: new super-short traceback-printing option: "--tb=line" will print a single line for each failing (python) test indicating its filename, lineno and the failure value - fix issue78: always call python-level teardown functions even if the according setup failed. This includes refinements for calling setup_module/class functions which will now only be called once instead of the previous behaviour where they'd be called multiple times if they raise an exception (including a Skipped exception). Any exception will be re-corded and associated with all tests in the according module/class scope. - fix issue63: assume <40 columns to be a bogus terminal width, default to 80 - fix pdb debugging to be in the correct frame on raises-related errors - update apipkg.py to fix an issue where recursive imports might unnecessarily break importing - fix plugin links Changes between 1.2 and 1.1.1 ===================================== - moved dist/looponfailing from py.test core into a new separately released pytest-xdist plugin. - new junitxml plugin: --junitxml=path will generate a junit style xml file which is processable e.g. by the Hudson CI system. - new option: --genscript=path will generate a standalone py.test script which will not need any libraries installed. thanks to Ralf Schmitt. - new option: --ignore will prevent specified path from collection. Can be specified multiple times. - new option: --confcutdir=dir will make py.test only consider conftest files that are relative to the specified dir. - new funcarg: "pytestconfig" is the pytest config object for access to command line args and can now be easily used in a test. - install 'py.test' and `py.which` with a ``-$VERSION`` suffix to disambiguate between Python3, python2.X, Jython and PyPy installed versions. - new "pytestconfig" funcarg allows access to test config object - new "pytest_report_header" hook can return additional lines to be displayed at the header of a test run. - (experimental) allow "py.test path::name1::name2::..." for pointing to a test within a test collection directly. This might eventually evolve as a full substitute to "-k" specifications. - streamlined plugin loading: order is now as documented in customize.html: setuptools, ENV, commandline, conftest. also setuptools entry point names are turned to canonical namees ("pytest_*") - automatically skip tests that need 'capfd' but have no os.dup - allow pytest_generate_tests to be defined in classes as well - deprecate usage of 'disabled' attribute in favour of pytestmark - deprecate definition of Directory, Module, Class and Function nodes in conftest.py files. Use pytest collect hooks instead. - collection/item node specific runtest/collect hooks are only called exactly on matching conftest.py files, i.e. ones which are exactly below the filesystem path of an item - change: the first pytest_collect_directory hook to return something will now prevent further hooks to be called. - change: figleaf plugin now requires --figleaf to run. Also change its long command line options to be a bit shorter (see py.test -h). - change: pytest doctest plugin is now enabled by default and has a new option --doctest-glob to set a pattern for file matches. - change: remove internal py._* helper vars, only keep py._pydir - robustify capturing to survive if custom pytest_runtest_setup code failed and prevented the capturing setup code from running. - make py.test.* helpers provided by default plugins visible early - works transparently both for pydoc and for interactive sessions which will regularly see e.g. py.test.mark and py.test.importorskip. - simplify internal plugin manager machinery - simplify internal collection tree by introducing a RootCollector node - fix assert reinterpreation that sees a call containing "keyword=..." - fix issue66: invoke pytest_sessionstart and pytest_sessionfinish hooks on slaves during dist-testing, report module/session teardown hooks correctly. - fix issue65: properly handle dist-testing if no execnet/py lib installed remotely. - skip some install-tests if no execnet is available - fix docs, fix internal bin/ script generation Changes between 1.1.1 and 1.1.0 ===================================== - introduce automatic plugin registration via 'pytest11' entrypoints via setuptools' pkg_resources.iter_entry_points - fix py.test dist-testing to work with execnet >= 1.0.0b4 - re-introduce py.test.cmdline.main() for better backward compatibility - svn paths: fix a bug with path.check(versioned=True) for svn paths, allow '%' in svn paths, make svnwc.update() default to interactive mode like in 1.0.x and add svnwc.update(interactive=False) to inhibit interaction. - refine distributed tarball to contain test and no pyc files - try harder to have deprecation warnings for py.compat.* accesses report a correct location Changes between 1.1.0 and 1.0.2 ===================================== * adjust and improve docs * remove py.rest tool and internal namespace - it was never really advertised and can still be used with the old release if needed. If there is interest it could be revived into its own tool i guess. * fix issue48 and issue59: raise an Error if the module from an imported test file does not seem to come from the filepath - avoids "same-name" confusion that has been reported repeatedly * merged Ronny's nose-compatibility hacks: now nose-style setup_module() and setup() functions are supported * introduce generalized py.test.mark function marking * reshuffle / refine command line grouping * deprecate parser.addgroup in favour of getgroup which creates option group * add --report command line option that allows to control showing of skipped/xfailed sections * generalized skipping: a new way to mark python functions with skipif or xfail at function, class and modules level based on platform or sys-module attributes. * extend py.test.mark decorator to allow for positional args * introduce and test "py.cleanup -d" to remove empty directories * fix issue #59 - robustify unittest test collection * make bpython/help interaction work by adding an __all__ attribute to ApiModule, cleanup initpkg * use MIT license for pylib, add some contributors * remove py.execnet code and substitute all usages with 'execnet' proper * fix issue50 - cached_setup now caches more to expectations for test functions with multiple arguments. * merge Jarko's fixes, issue #45 and #46 * add the ability to specify a path for py.lookup to search in * fix a funcarg cached_setup bug probably only occuring in distributed testing and "module" scope with teardown. * many fixes and changes for making the code base python3 compatible, many thanks to Benjamin Peterson for helping with this. * consolidate builtins implementation to be compatible with >=2.3, add helpers to ease keeping 2 and 3k compatible code * deprecate py.compat.doctest|subprocess|textwrap|optparse * deprecate py.magic.autopath, remove py/magic directory * move pytest assertion handling to py/code and a pytest_assertion plugin, add "--no-assert" option, deprecate py.magic namespaces in favour of (less) py.code ones. * consolidate and cleanup py/code classes and files * cleanup py/misc, move tests to bin-for-dist * introduce delattr/delitem/delenv methods to py.test's monkeypatch funcarg * consolidate py.log implementation, remove old approach. * introduce py.io.TextIO and py.io.BytesIO for distinguishing between text/unicode and byte-streams (uses underlying standard lib io.* if available) * make py.unittest_convert helper script available which converts "unittest.py" style files into the simpler assert/direct-test-classes py.test/nosetests style. The script was written by Laura Creighton. * simplified internal localpath implementation Changes between 1.0.1 and 1.0.2 ===================================== * fixing packaging issues, triggered by fedora redhat packaging, also added doc, examples and contrib dirs to the tarball. * added a documentation link to the new django plugin. Changes between 1.0.0 and 1.0.1 ===================================== * added a 'pytest_nose' plugin which handles nose.SkipTest, nose-style function/method/generator setup/teardown and tries to report functions correctly. * capturing of unicode writes or encoded strings to sys.stdout/err work better, also terminalwriting was adapted and somewhat unified between windows and linux. * improved documentation layout and content a lot * added a "--help-config" option to show conftest.py / ENV-var names for all longopt cmdline options, and some special conftest.py variables. renamed 'conf_capture' conftest setting to 'option_capture' accordingly. * fix issue #27: better reporting on non-collectable items given on commandline (e.g. pyc files) * fix issue #33: added --version flag (thanks Benjamin Peterson) * fix issue #32: adding support for "incomplete" paths to wcpath.status() * "Test" prefixed classes are *not* collected by default anymore if they have an __init__ method * monkeypatch setenv() now accepts a "prepend" parameter * improved reporting of collection error tracebacks * simplified multicall mechanism and plugin architecture, renamed some internal methods and argnames Changes between 1.0.0b9 and 1.0.0 ===================================== * more terse reporting try to show filesystem path relatively to current dir * improve xfail output a bit Changes between 1.0.0b8 and 1.0.0b9 ===================================== * cleanly handle and report final teardown of test setup * fix svn-1.6 compat issue with py.path.svnwc().versioned() (thanks Wouter Vanden Hove) * setup/teardown or collection problems now show as ERRORs or with big "E"'s in the progress lines. they are reported and counted separately. * dist-testing: properly handle test items that get locally collected but cannot be collected on the remote side - often due to platform/dependency reasons * simplified py.test.mark API - see keyword plugin documentation * integrate better with logging: capturing now by default captures test functions and their immediate setup/teardown in a single stream * capsys and capfd funcargs now have a readouterr() and a close() method (underlyingly py.io.StdCapture/FD objects are used which grew a readouterr() method as well to return snapshots of captured out/err) * make assert-reinterpretation work better with comparisons not returning bools (reported with numpy from thanks maciej fijalkowski) * reworked per-test output capturing into the pytest_iocapture.py plugin and thus removed capturing code from config object * item.repr_failure(excinfo) instead of item.repr_failure(excinfo, outerr) Changes between 1.0.0b7 and 1.0.0b8 ===================================== * pytest_unittest-plugin is now enabled by default * introduced pytest_keyboardinterrupt hook and refined pytest_sessionfinish hooked, added tests. * workaround a buggy logging module interaction ("closing already closed files"). Thanks to Sridhar Ratnakumar for triggering. * if plugins use "py.test.importorskip" for importing a dependency only a warning will be issued instead of exiting the testing process. * many improvements to docs: - refined funcargs doc , use the term "factory" instead of "provider" - added a new talk/tutorial doc page - better download page - better plugin docstrings - added new plugins page and automatic doc generation script * fixed teardown problem related to partially failing funcarg setups (thanks MrTopf for reporting), "pytest_runtest_teardown" is now always invoked even if the "pytest_runtest_setup" failed. * tweaked doctest output for docstrings in py modules, thanks Radomir. Changes between 1.0.0b3 and 1.0.0b7 ============================================= * renamed py.test.xfail back to py.test.mark.xfail to avoid two ways to decorate for xfail * re-added py.test.mark decorator for setting keywords on functions (it was actually documented so removing it was not nice) * remove scope-argument from request.addfinalizer() because request.cached_setup has the scope arg. TOOWTDI. * perform setup finalization before reporting failures * apply modified patches from Andreas Kloeckner to allow test functions to have no func_code (#22) and to make "-k" and function keywords work (#20) * apply patch from Daniel Peolzleithner (issue #23) * resolve issue #18, multiprocessing.Manager() and redirection clash * make __name__ == "__channelexec__" for remote_exec code Changes between 1.0.0b1 and 1.0.0b3 ============================================= * plugin classes are removed: one now defines hooks directly in conftest.py or global pytest_*.py files. * added new pytest_namespace(config) hook that allows to inject helpers directly to the py.test.* namespace. * documented and refined many hooks * added new style of generative tests via pytest_generate_tests hook that integrates well with function arguments. Changes between 0.9.2 and 1.0.0b1 ============================================= * introduced new "funcarg" setup method, see doc/test/funcarg.txt * introduced plugin architecuture and many new py.test plugins, see doc/test/plugins.txt * teardown_method is now guaranteed to get called after a test method has run. * new method: py.test.importorskip(mod,minversion) will either import or call py.test.skip() * completely revised internal py.test architecture * new py.process.ForkedFunc object allowing to fork execution of a function to a sub process and getting a result back. XXX lots of things missing here XXX Changes between 0.9.1 and 0.9.2 =============================== * refined installation and metadata, created new setup.py, now based on setuptools/ez_setup (thanks to Ralf Schmitt for his support). * improved the way of making py.* scripts available in windows environments, they are now added to the Scripts directory as ".cmd" files. * py.path.svnwc.status() now is more complete and uses xml output from the 'svn' command if available (Guido Wesdorp) * fix for py.path.svn* to work with svn 1.5 (Chris Lamb) * fix path.relto(otherpath) method on windows to use normcase for checking if a path is relative. * py.test's traceback is better parseable from editors (follows the filenames:LINENO: MSG convention) (thanks to Osmo Salomaa) * fix to javascript-generation, "py.test --runbrowser" should work more reliably now * removed previously accidentally added py.test.broken and py.test.notimplemented helpers. * there now is a py.__version__ attribute Changes between 0.9.0 and 0.9.1 =============================== This is a fairly complete list of changes between 0.9 and 0.9.1, which can serve as a reference for developers. * allowing + signs in py.path.svn urls [39106] * fixed support for Failed exceptions without excinfo in py.test [39340] * added support for killing processes for Windows (as well as platforms that support os.kill) in py.misc.killproc [39655] * added setup/teardown for generative tests to py.test [40702] * added detection of FAILED TO LOAD MODULE to py.test [40703, 40738, 40739] * fixed problem with calling .remove() on wcpaths of non-versioned files in py.path [44248] * fixed some import and inheritance issues in py.test [41480, 44648, 44655] * fail to run greenlet tests when pypy is available, but without stackless [45294] * small fixes in rsession tests [45295] * fixed issue with 2.5 type representations in py.test [45483, 45484] * made that internal reporting issues displaying is done atomically in py.test [45518] * made that non-existing files are igored by the py.lookup script [45519] * improved exception name creation in py.test [45535] * made that less threads are used in execnet [merge in 45539] * removed lock required for atomical reporting issue displaying in py.test [45545] * removed globals from execnet [45541, 45547] * refactored cleanup mechanics, made that setDaemon is set to 1 to make atexit get called in 2.5 (py.execnet) [45548] * fixed bug in joining threads in py.execnet's servemain [45549] * refactored py.test.rsession tests to not rely on exact output format anymore [45646] * using repr() on test outcome [45647] * added 'Reason' classes for py.test.skip() [45648, 45649] * killed some unnecessary sanity check in py.test.collect [45655] * avoid using os.tmpfile() in py.io.fdcapture because on Windows it's only usable by Administrators [45901] * added support for locking and non-recursive commits to py.path.svnwc [45994] * locking files in py.execnet to prevent CPython from segfaulting [46010] * added export() method to py.path.svnurl * fixed -d -x in py.test [47277] * fixed argument concatenation problem in py.path.svnwc [49423] * restore py.test behaviour that it exits with code 1 when there are failures [49974] * don't fail on html files that don't have an accompanying .txt file [50606] * fixed 'utestconvert.py < input' [50645] * small fix for code indentation in py.code.source [50755] * fix _docgen.py documentation building [51285] * improved checks for source representation of code blocks in py.test [51292] * added support for passing authentication to py.path.svn* objects [52000, 52001] * removed sorted() call for py.apigen tests in favour of [].sort() to support Python 2.3 [52481] From sridharr at activestate.com Thu Jul 8 19:28:43 2010 From: sridharr at activestate.com (Sridhar Ratnakumar) Date: Thu, 8 Jul 2010 10:28:43 -0700 Subject: ANN: ActivePython 2.6.5.14 is now available Message-ID: <4B67B387-6AFE-4A5E-9F0D-0E9E070D4FC7@activestate.com> We are pleased to announce the availability of ActivePython 2.6.5.14. http://www.activestate.com/activepython This is a minor release with several bug fixes. As usual, it includes an updated Python Package Manager (PyPM) with updates to essential packages such as Distribute (a compatible fork of setuptools), virtualenv, pip and SQLAlchemy. See the release notes for full details: http://docs.activestate.com/activepython/2.6/relnotes.html#changes What is ActivePython? --------------------- ActivePython is ActiveState's binary distribution of Python. Builds for Windows, Mac OS X, Linux are made freely available. Solaris, HP-UX and AIX builds, and access to older versions are available in ActivePython Business, Enterprise and OEM editions: http://www.activestate.com/python ActivePython includes the Python core and the many core extensions: zlib and bzip2 for data compression, the Berkeley DB (bsddb) and SQLite (sqlite3) database libraries, OpenSSL bindings for HTTPS support, the Tix GUI widgets for Tkinter, ElementTree for XML processing, ctypes (on supported platforms) for low-level library access, and others. The Windows distribution ships with PyWin32 -- a suite of Windows tools developed by Mark Hammond, including bindings to the Win32 API and Windows COM. ActivePython 2.6 and 2.7 also include a binary package manager for Python (PyPM) that can be used to install packages much easily. For example: C:\>pypm install mysql-python [...] C:\>python >>> import MySQLdb >>> See this page for full details: http://docs.activestate.com/activepython/2.6/whatsincluded.html As well, ActivePython ships with a wealth of documentation for both new and experienced Python programmers. In addition to the core Python docs, ActivePython includes the "What's New in Python" series, "Dive into Python", the Python FAQs & HOWTOs, and the Python Enhancement Proposals (PEPs). An online version of the docs can be found here: http://docs.activestate.com/activepython/2.6/ We would welcome any and all feedback to: activepython-feedback at activestate.com Please file bugs against ActivePython at: http://bugs.activestate.com/enter_bug.cgi?product=ActivePython On what platforms does ActivePython run? ---------------------------------------- ActivePython includes installers for the following platforms: - Windows/x86 - Windows/x64 (aka "AMD64") - Mac OS X - Linux/x86 - Linux/x86_64 (aka "AMD64") - Solaris/SPARC (Business, Enterprise or OEM edition only) - Solaris/x86 (Business, Enterprise or OEM edition only) - HP-UX/PA-RISC (Business, Enterprise or OEM edition only) - HP-UX/IA-64 (Enterprise or OEM edition only) - AIX/PowerPC (Business, Enterprise or OEM edition only) - AIX/PowerPC 64-bit (Business, Enterprise or OEM edition only) Custom builds are available in Enterprise Edition: http://www.activestate.com/enterprise-edition Thanks, and enjoy! The Python Team -- Sridhar Ratnakumar sridharr at activestate.com From jnoller at gmail.com Thu Jul 8 22:39:08 2010 From: jnoller at gmail.com (Jesse Noller) Date: Thu, 8 Jul 2010 16:39:08 -0400 Subject: Call for Applications - PSF Sponsored Sprints Message-ID: The PSF is happy to open our first call for applications for sprint funding! Have you ever had a group of people together to hack towards a common goal? You've hosted a sprint! Have you ever wanted to get a group of like minded Pythonistas together to hack for a day? You're going to want to hold a sprint! Whether you call them Sprints, Hackfests, Hack-a-thons, or any other name, they're a great way to hang out with like-minded developers and work on common code. Sprints are an unbeatable way to build friendships and contacts that will last for years to come, and they're a great way to learn about something new if you're just starting out. The Python Software Foundation has set aside funds to be distributed to world-wide sprint efforts. We're anticipating 2-3 events per month focused on covering topics to help the entire community: - Python Core bug triage and patch submission (on-boarding new contributors) - Python Core documentation (including process documentation) improvements - Porting libraries/applications to Python 3 - Python website/wiki content improvements - PyPI packaging hosting site improvements - Contribution to other "core" projects, such as packaging related issues. If you are interested in holding a sprint on any of the topics above and you're looking for some money to help out with sprint costs, we can help (up to a max of $250 USD). Prepare an application including the following information: - Date and Location: Where will the event be? What day and time? - Organizers: Who are the event organizers and sprint coach? Is the sprint being run by a Python user group? - Attendees: How many participants do you expect? - Goal: What is the focus and goal of the sprint? - Budget: How much funding you are requesting, and what will you use it for? - Applications should be sent to: sprints at python.org with the subject "Sprint Funding Application - " We encourage anyone - even those who have never held, or been to a sprint - to consider holding one. We will help you as much as we can with welcome packets, advertising, and hooking you up with required resources - anything to make it possible. As part of being approved, the you will need to agree to deliver a report (hopefully, with pictures!) of the sprint to the Sprint Committee, so we can post it on the sprint blog and site: http://www.pythonsprints.com If you have any questions or need more information, contact us by email at sprints at python.org. More information is up on our blog: http://pythonsprints.com/2010/07/8/call-applications-now-open/ From daniel at stutzbachenterprises.com Thu Jul 8 23:14:01 2010 From: daniel at stutzbachenterprises.com (Daniel Stutzbach) Date: Thu, 8 Jul 2010 16:14:01 -0500 Subject: ANN: winreg_unicode 0.5.0 Message-ID: I'm pleased to announce the release of winreg_unicode 0.5.0, the first release of winreg_unicode. The winreg_unicode package aims to be a drop-in replacement for Python 2's _winreg module. However, it returns unicode values where possible, similar to Python 3's winreg module. To illustrate the need for the winreg_unicode package, suppose an application must query the registry to discover a filename and the registry contains the string "me?uresorna.txt". Python 2's _winreg module will return "meduresorna.txt" instead, which is not the actual name of the file. The winreg_unicode package does not yet contain all of _winreg's functions. In particular, functions that write to the registry are not yet included. Code contributions are welcome. PyPi: http://pypi.python.org/pypi/winreg_unicode Bug tracker: http://github.com/DanielStutzbach/winreg_unicode/issues Source code: http://github.com/DanielStutzbach/winreg_unicode -- Daniel Stutzbach, Ph.D. President, Stutzbach Enterprises, LLC From tim at emergetec.com Fri Jul 9 01:07:00 2010 From: tim at emergetec.com (Tim Knapp - Emerge Technology) Date: Fri, 09 Jul 2010 11:07:00 +1200 Subject: Kiwi PyCon 2010 Call for Participation Message-ID: <1278630420.4679.2.camel@monty> Hi, We have another Kiwi PyCon lined up, and we're all expecting it to be as good as last year's event. This year it will be staged in lovely Paihia/Waitangi in the sunny Bay of Islands. It is on the weekend 20-21 November. Find a link below to the "Call for Participation". We are encouraging everybody to come and to participate. Do not feel intimidated, this is a community conference, and we are hosting talks and sessions for all knowledge levels. Be it a tiny demo or show and tell (by doing a 5 minute Lightning Talk), or up to running an hour long tutorial. Or are you interested in the dynamic evolution of a session? Then the unconference like Open Spaces will give you just the platform for interaction. Also ... make sure to spread the word. Tell everybody else about it. Blog about it, post it on Twitter/Identi.ca, etc. http://nz.pycon.org/2010/talks-cfp/call-for-papers/ ... Code and enjoy, The Kiwi PyCon Committee From opossumnano at gmail.com Fri Jul 9 15:00:42 2010 From: opossumnano at gmail.com (Tiziano Zito) Date: Fri, 9 Jul 2010 15:00:42 +0200 (CEST) Subject: =?utf-8?q?=5BANN=5D_Autumn_School_=22Advanced_Scientific_Programming_in_P?= =?utf-8?q?ython=22_in_Trento=2C_Italy?= Message-ID: <20100709130042.602E62494DF@mail.bccn-berlin> Advanced Scientific Programming in Python ========================================= an Autumn School by the G-Node, the Center for Mind/Brain Sciences and the Fondazione Bruno Kessler Scientists spend more and more time writing, maintaining, and debugging software. While techniques for doing this efficiently have evolved, only few scientists actually use them. As a result, instead of doing their research, they spend far too much time writing deficient code and reinventing the wheel. In this course we will present a selection of advanced programming techniques with theoretical lectures and practical exercises tailored to the needs of a programming scientist. New skills will be tested in a real programming project: we will team up to develop an entertaining scientific computer game. We'll use the Python programming language for the entire course. Python works as a simple programming language for beginners, but more importantly, it also works great in scientific simulations and data analysis. Clean language design and easy extensibility are driving Python to become a standard tool for scientific computing. Some of the most useful open source libraries for scientific computing and visualization will be presented. This school is targeted at Post-docs and PhD students from all areas of science. Competence in Python or in another language such as Java, C/C++, MATLAB, or Mathematica is absolutely required. A basic knowledge of the Python language is assumed. Participants without prior experience with Python should work through the proposed introductory materials. Date and Location ================= October 4th?8th, 2010. Trento, Italy. Preliminary Program =================== Day 0 (Mon Oct 4) ? Software Carpentry & Advanced Python ? Documenting code and using version control ? Object-oriented programming, design patterns, and agile programming ? Exception handling, lambdas, decorators, context managers, metaclasses Day 1 (Tue Oct 5) ? Software Carpentry ? Test-driven development, unit testing & Quality Assurance ? Debugging, profiling and benchmarking techniques ? Data serialization: from pickle to databases Day 2 (Wed Oct 6) ? Scientific Tools for Python ? Advanced NumPy ? The Quest for Speed (intro): Interfacing to C ? Programming project Day 3 (Thu Oct 7) ? The Quest for Speed ? Writing parallel applications in Python ? When parallelization does not help: the starving CPUs problem ? Programming project Day 4 (Fri Oct 8) ? Practical Software Development ? Efficient programming in teams ? Programming project ? The Pac-Man Tournament Every evening we will have the tutors' consultation hour: Tutors will answer your questions and give suggestions for your own projects Applications ============ You can apply on-line at http://www.g-node.org/python-autumnschool Applications must be submitted before August 31th, 2010. Notifications of acceptance will be sent by September 4th, 2010. No fee is charged but participants should take care of travel, living, and accommodation expenses. Candidates will be selected on the basis of their profile. Places are limited: acceptance rate in past editions was around 30%. Prerequisites ============= You are supposed to know the basics of Python to participate in the lectures! Look on the website for a list of introductory material. Faculty ======= ? Francesc Alted, author of PyTables, Castell? de la Plana, Spain ? Pietro Berkes, Volen Center for Complex Systems, Brandeis University, USA ? Valentin Haenel, Berlin Institute of Technology and Bernstein Center for Computational Neuroscience Berlin, Germany ? Zbigniew J?drzejewski-Szmek, Faculty of Physics, University of Warsaw, Poland ? Eilif Muller, The Blue Brain Project, Ecole Polytechnique F?d?rale de Lausanne, Switzerland ? Emanuele Olivetti, NeuroInformatics Laboratory, Fondazione Bruno Kessler and University of Trento, Italy ? Rike-Benjamin Schuppner, Bernstein Center for Computational Neuroscience Berlin, Germany ? Bartosz Tele?czuk, Institute for Theoretical Biology, Humboldt-Universit?t zu Berlin, Germany ? Bastian Venthur, Berlin Institute of Technology and Bernstein Focus: Neurotechnology, Germany ? St?fan van der Walt, Applied Mathematics, University of Stellenbosch, South Africa ? Tiziano Zito, Berlin Institute of Technology and Bernstein Center for Computational Neuroscience Berlin, Germany Organized by Paolo Avesani for the Center for Mind/Brain Sciences and the Fondazione Bruno Kessler , and by Zbigniew J?drzejewscySzmek and Tiziano Zito for the German Neuroinformatics Node of the INCF. Website: http://www.g-node.org/python-autumnschool Contact: python-info at g-node.org From Marcin.Kasperski at mekk.waw.pl Sat Jul 10 00:56:22 2010 From: Marcin.Kasperski at mekk.waw.pl (Marcin Kasperski) Date: Sat, 10 Jul 2010 00:56:22 +0200 Subject: mekk.xmind 0.4.0 released Message-ID: <87ocegi7s9.fsf@platon.mekk.waw.pl> mekk.xmind 0.4.0 has just been released What it is? =========== mekk.xmind is a pure-Python handler for XMind mind-map files. It can be used to: - generate XMind mind-maps from scratch (for example to visualize some data as a mind-map), - modify existing .xmind files, - parse existing .xmind files and analyze their content. Mind-map creation example:: from mekk.xmind import XMindDocument OUTPUT = "test.xmind" xmind = XMindDocument.create(u"First sheet title", u"Root subject") first_sheet = xmind.get_first_sheet() root_topic = first_sheet.get_root_topic() root_topic.add_subtopic(u"First item") root_topic.add_subtopic(u"Second item") t = root_topic.add_subtopic(u"Third item") t.add_subtopic(u"Second level - 1") t.add_subtopic(u"Second level - 2") root_topic.add_subtopic(u"Detached topic", detached = True) t.add_subtopic(u"Another detached", detached = True) t.add_marker("flag-red") root_topic.add_subtopic(u"Link example").set_link("http://mekk.waw.pl") root_topic.add_subtopic(u"Attachment example").set_attachment( file("map_creator.py").read(), ".txt") root_topic.add_subtopic(u"With note").set_note( u"""This is just some dummy note.""") xmind.save(OUTPUT) Mind-map parsing:: from mekk.xmind import XMindDocument xmind = XMindDocument.open("test.xmind") sheet = xmind.get_first_sheet() print "Sheet title: ", sheet.get_title() root = sheet.get_root_topic() print "Root title: ", root.get_title() print "Root note: ", root.get_note() for topic in root.get_subtopics(): print "* ", topic.get_title() print " label: ", topic.get_label() print " link: ", topic.get_link() print " markers: ", list(topic.get_markers()) # topic.get_subtopics() etc What has changed? ================= All docstrings were translated to English, plenty of undocumented methods got their documentation. A bug which caused failures while opening some XMind 3.1.1 - saved files has been fixed. Resources ========= :Source repository and issue tracker: http://bitbucket.org/Mekk/mekk.xmind/ :Download: http://pypi.python.org/pypi/mekk.xmind/0.4.0 :XMind home: http://xmind.net -- ---------------------------------------------------------------------- | Marcin Kasperski | If we are to be successful, we must still have | http://mekk.waw.pl | the courage to put our faith in people as | | opposed to a process. (Booch,Martin,Newkirk) From dsuch at gefira.pl Sun Jul 11 01:10:08 2010 From: dsuch at gefira.pl (Dariusz Suchojad) Date: Sun, 11 Jul 2010 01:10:08 +0200 Subject: ANN: PyMQI 1.1 - Python interface to WebSphere MQ Message-ID: <4C38FDD0.9070808@gefira.pl> Hi, I'm happy to announce the release of PyMQI 1.1. *INTRODUCTION* PyMQI allows users to connect Python applications to WebSphere MQ queue managers. It can be used to develop test harnesses for WebSphere MQ based systems, for rapid prototyping of WebSphere MQ applications, for development of administrative GUIs or for mainstream MQ application development. PyMQI has been used in production environments for several years on Linux, Windows, Solaris and AIX with queue managers running on Linux, Windows, Solarix, AIX and z/OS mainframe. Supported WebSphere MQ versions are 5.0, 5.1, 5.3, 6.0 and 7.0. *What's new* * Added support for Windows AMD64, * Fixed several bugs related to PCF processing, * Added 20+ usage examples to documentation, * Created a PyMQI mailing list at http://mailman-mail5.webfaction.com/listinfo/pymqi-list. It's a good place to join if you'd like to be informed of upcoming releases and new planned features. *Hello world with PyMQI* Here's an example showing how easy it is to connect to WebSphere MQ and put a message on a queue. import pymqi qmgr = pymqi.QueueManager(None) qmgr.connectTCPClient("QM.1", pymqi.cd(), "SVRCONN.CHANNEL.1", "192.168.1.121(1434)") q = pymqi.Queue(qmgr, "TEST.QUEUE.1") q.put("Hello from Python") *Links* Project's homepage: http://packages.python.org/pymqi/ Download URL: https://launchpad.net/pymqi/+download Usage examples: http://packages.python.org/pymqi/examples.html Twitter: https://twitter.com/fourthrealm cheers, -- Dariusz Suchojad From luke.leighton at gmail.com Sun Jul 11 05:59:50 2010 From: luke.leighton at gmail.com (Luke Kenneth Casson Leighton) Date: Sun, 11 Jul 2010 03:59:50 +0000 Subject: grailbrowser now running under python 2.5 (probably above too) Message-ID: source at: http://github.com/lkcl/grailbrowser $ python grail.py (note the lack of "python1.5" or "python2.4") conversion of the 80 or so regex's to re has been carried out. entirely successfully or not is a matter yet to be determined. always a hoot to try browsing http://www.bbc.co.uk or http://www.youtube.com with a browser from 11+ years ago, it still cannot be resisted as grail is the only working graphical web browser in the world written in pure python [pybrowser is still in development, stalled]. l. From sschwarzer at sschwarzer.net Sun Jul 11 14:40:21 2010 From: sschwarzer at sschwarzer.net (Stefan Schwarzer) Date: Sun, 11 Jul 2010 14:40:21 +0200 Subject: [ANN] Leipzig Python User Group - Meeting, July 13, 2010, 08:00pm Message-ID: <4C39BBB5.7070901@sschwarzer.net> === Leipzig Python User Group === We will meet on Tuesday, July 13th, 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 info at python-academy.de, 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 . Stefan == Leipzig Python User Group === Wir treffen uns am Dienstag, 13.07.2010 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 info at python-academy.de 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 Stefan From michael at voidspace.org.uk Sun Jul 11 23:22:14 2010 From: michael at voidspace.org.uk (Michael Foord) Date: Sun, 11 Jul 2010 22:22:14 +0100 Subject: unittest2 0.5.0: setuptools compatible test collector and Python 2.3 distribution Message-ID: <4C3A3606.6090509@voidspace.org.uk> unittest2 0.5.0 has just been released. This version of unittest2 has "feature parity" with the version of unittest in Python 2.7: * unittest2 on PyPI http://pypi.python.org/pypi/unittest2 If you want to ensure that your tests run identically under unittest2 and unittest in Python 2.7 you should use unittest2 0.5.0. Later versions of unittest2 will include changes in unittest made in Python 3.2 and onwards after the release of Python 2.7. unittest2 is a backport of the recent enhancements in the Python unittest testing library in Python 2.7. * New and Improved: unittest2 article http://www.voidspace.org.uk/python/articles/unittest2.shtml * unittest2 issue tracker http://code.google.com/p/unittest-ext/issues/list * Mercurial Development Repository: http://hg.python.org/unittest2 Improvements in unittest2 over standard unittest in Python 2.6 and earlier include: * automatic test discovery from the command line * failfast, catch and buffer command line options * class and module level setup and teardowns * ``addCleanup`` for better resource handling * test skipping and expected failures * improvements to ``assertRaises`` and ``assertAlmostEqual`` * *many* new assert methods, plus better failure messages * ``load_tests`` protocol for customizing test loading * various other API improvements and fixes unittest2 is tested with Python 2.4 - 2.7. New in 0.5.0 is a distribution for Python 2.3 contributed by Mark Roddy. Also new in 0.5.0 is a setuptools compatible test collector. If you put ``test_suite = 'unittest2.collector'`` in setup.py you can then find and run your tests (using test discovery) with: ``python setup.py test`` This starts test discovery with the default parameters from the directory containing setup.py, so it is perhaps most useful as an example (see unittest2/collector.py). All Changes in 0.5.0 ==================== Addition of a setuptools compatible test collector (very basic). Specify ``test_suite = 'unittest2.collector'`` in your setup.py. ``TestSuite.debug()`` and ``TestCase.debug()`` now execute cleanup functions and class and module level setups and teardowns. No longer monkey-patch os.path.relpath for Python 2.4 / 2.5 so that projects don't accidentally depend on our patching. Contributed by Konrad Delong. Added a Python version specific unit2 entrypoint. This will, for example, create a ``unit2-2.6`` script if unittest2 is installed with Python 2.6. (Requires setuptools or distribute.) Python 2.3 compatibility (in the python2.3 branch of the repository), contributed by Mark Roddy. setuptools console script entry points are created as '.py' scripts on Windows. Feature parity with the Python 2.7 final release. -- http://www.ironpythoninaction.com/ http://www.voidspace.org.uk/blog From r1chardj0n3s at gmail.com Mon Jul 12 06:25:42 2010 From: r1chardj0n3s at gmail.com (Richard Jones) Date: Mon, 12 Jul 2010 14:25:42 +1000 Subject: Roundup Issue Tracker 1.4.15 released Message-ID: I'm proud to release version 1.4.15 of Roundup which mostly fixes some regressions in the last release: Fixed: - A bunch of regressions were introduced in the last release making Roundup no longer work in Python releases prior to 2.6 - make URL detection a little smarter about brackets per issue2550657 (thanks Ezio Melotti) If you're upgrading from an older version of Roundup you *must* follow the "Software Upgrade" guidelines given in the maintenance documentation. Roundup requires python 2.3 or later (but not 3+) for correct operation. To give Roundup a try, just download (see below), unpack and run:: roundup-demo Release info and download page: http://cheeseshop.python.org/pypi/roundup Source and documentation is available at the website: http://roundup.sourceforge.net/ Mailing lists - the place to ask questions: http://sourceforge.net/mail/?group_id=31577 About Roundup ============= Roundup is a simple-to-use and -install issue-tracking system with command-line, web and e-mail interfaces. It is based on the winning design from Ka-Ping Yee in the Software Carpentry "Track" design competition. Note: Ping is not responsible for this project. The contact for this project is richard at users.sourceforge.net. Roundup manages a number of issues (with flexible properties such as "description", "priority", and so on) and provides the ability to: (a) submit new issues, (b) find and edit existing issues, and (c) discuss issues with other participants. The system will facilitate communication among the participants by managing discussions and notifying interested parties when issues are edited. One of the major design goals for Roundup that it be simple to get going. Roundup is therefore usable "out of the box" with any python 2.3+ (but not 3+) installation. It doesn't even need to be "installed" to be operational, though an install script is provided. It comes with two issue tracker templates (a classic bug/feature tracker and a minimal skeleton) and four database back-ends (anydbm, sqlite, mysql and postgresql). From holger at merlinux.eu Mon Jul 12 13:31:37 2010 From: holger at merlinux.eu (holger krekel) Date: Mon, 12 Jul 2010 13:31:37 +0200 Subject: tox, a new generic virtualenv/test management tool Message-ID: <20100712113136.GA14601@trillke.net> I have been talking about it with various people lately and am now happy announce the first release of "tox". tox aims to automate tedious Python related test activities driven from a simple ``tox.ini`` file, including: * creation and management of virtualenv environments * installing your Python package into each of them * run your test tool of choice (nose, py.test, unittests, you name it) * testing packages against each other without needing to upload to PyPI tox runs well on Python2.4 up until Python3.1 and integrates well with Continous Integration servers like Hudson. There are many real-life examples and a fair amount of docs. Read up on http://codespeak.net/tox and please report any issues. This is a fresh project and i'd like to drive further improvements from real world needs and feedback. thanks & cheers, holger krekel From holger at merlinux.eu Mon Jul 12 15:39:11 2010 From: holger at merlinux.eu (holger krekel) Date: Mon, 12 Jul 2010 15:39:11 +0200 Subject: [py-dev] tox, a new generic virtualenv/test management tool In-Reply-To: <20100712113136.GA14601@trillke.net> References: <20100712113136.GA14601@trillke.net> Message-ID: <20100712133911.GC14601@trillke.net> note: it might be that there are crucial issues with tox-0.5 on OSX - Michael reported one which i am investigating. It could break your environment so please use things with care on OSX for now. holger On Mon, Jul 12, 2010 at 13:31 +0200, holger krekel wrote: > > I have been talking about it with various people lately and > am now happy announce the first release of "tox". > > tox aims to automate tedious Python related test activities driven > from a simple ``tox.ini`` file, including: > > * creation and management of virtualenv environments > * installing your Python package into each of them > * run your test tool of choice (nose, py.test, unittests, you name it) > * testing packages against each other without needing to upload to PyPI > > tox runs well on Python2.4 up until Python3.1 and integrates > well with Continous Integration servers like Hudson. There are many > real-life examples and a fair amount of docs. Read up on > > http://codespeak.net/tox > > and please report any issues. This is a fresh project and > i'd like to drive further improvements from real world needs > and feedback. > > thanks & cheers, > holger krekel > _______________________________________________ > py-dev mailing list > py-dev at codespeak.net > http://codespeak.net/mailman/listinfo/py-dev > -- From holger at merlinux.eu Mon Jul 12 20:29:10 2010 From: holger at merlinux.eu (holger krekel) Date: Mon, 12 Jul 2010 20:29:10 +0200 Subject: tox-0.6: virtualenv-creation fixes on OSX In-Reply-To: <20100712113136.GA14601@trillke.net> References: <20100712113136.GA14601@trillke.net> Message-ID: <20100712182910.GD14601@trillke.net> Hi all, thanks to Michael Foord's help i just released a tox-0.6 to PYPI which should fix some crucial issues wrt to virtualenv creation on OSX. best, holger On Mon, Jul 12, 2010 at 13:31 +0200, holger krekel wrote: > I have been talking about it with various people lately and > am now happy announce the first release of "tox". > > tox aims to automate tedious Python related test activities driven > from a simple ``tox.ini`` file, including: > > * creation and management of virtualenv environments > * installing your Python package into each of them > * run your test tool of choice (nose, py.test, unittests, you name it) > * testing packages against each other without needing to upload to PyPI > > tox runs well on Python2.4 up until Python3.1 and integrates > well with Continous Integration servers like Hudson. There are many > real-life examples and a fair amount of docs. Read up on > > http://codespeak.net/tox > > and please report any issues. This is a fresh project and > i'd like to drive further improvements from real world needs > and feedback. > > thanks & cheers, > holger krekel > > _______________________________________________ > testing-in-python mailing list > testing-in-python at lists.idyll.org > http://lists.idyll.org/listinfo/testing-in-python > -- From tomeu.vizoso at collabora.co.uk Mon Jul 12 20:31:47 2010 From: tomeu.vizoso at collabora.co.uk (Tomeu Vizoso) Date: Mon, 12 Jul 2010 20:31:47 +0200 Subject: [ANNOUNCE] PyGObject 2.21.5 - unstable Message-ID: Hi, I am pleased to announce version 2.21.5 of the Python bindings for GObject. The new release is available from ftp.gnome.org as and its mirrors as soon as its synced correctly: http://download.gnome.org/sources/pygobject/2.21/ What's new since PyGObject 2.21.4? - Shut up some compiler warnings (Florian M?llner) - Adjust to API break in GObject-Introspection (Florian M?llner) - pass in the demo app so demos can use utility methods like requesting file paths (John (J5) Palmieri) - demo fixes to keep up with Gtk+ (John (J5) Palmieri) - override test fixes for new GTK+ annotations (John (J5) Palmieri) - Fix warning. (Ignacio Casal Quinteiro) - fix up treeiter usage due to caller-allocates annotations in gtk+ (John (J5) Palmieri) - add entry completion demo (John (J5) Palmieri) - string changes (John (J5) Palmieri) - add the Entry demo directory and the entry_buffer demo (John (J5) Palmieri) - fix loading of demo modules to support sub modules (John (J5) Palmieri) - add the ability to have demos in sub catagories (John (J5) Palmieri) - Add __name__ to DynamicModule class. (Jose Aliste) - Do not override GdkRectangle. (Ignacio Casal Quinteiro) - Add override for TreeModel implementing __len__() (Philip Withnall) Note to packagers: This release adds compatibility with the latest gobject-introspection release and updates its dependency to 0.9.2. Please note that more API changes are coming in gobject-introspection so it may be better to only package releases (not git snapshots). Blurb: GObject is an object system library used by GTK+ and GStreamer. PyGObject provides a convenient wrapper for the GObject library for use in Python programs, and takes care of many of the boring details such as managing memory and type casting. When combined with PyGTK, and gnome-python, it can be used to write full featured Gnome applications. Like the GObject library itself PyGObject is licensed under the GNU LGPL, so is suitable for use in both free software and proprietary applications. It is already in use in many applications ranging from small single purpose scripts up to large full featured applications. PyGObject requires glib >= 2.22.4 and Python >= 2.3.5 to build. GIO bindings require glib >= 2.22.4. Please remember that this is an unstable release and shouldn't be used in production. Regards, The PyGObject team From albrecht.andi at googlemail.com Tue Jul 13 14:03:30 2010 From: albrecht.andi at googlemail.com (Andi Albrecht) Date: Tue, 13 Jul 2010 05:03:30 -0700 (PDT) Subject: pyCologne Python User Group Cologne - Meeting, July 14, 2010, 6.30pm Message-ID: <9df39814-aa0b-4ed7-ad42-2ae73329b2c2@b35g2000yqi.googlegroups.com> Hello, The next meeting of pyCologne will take place: Wednesday, July, 14th starting about 6.30 pm - 6.45 pm at Room 0.14, Benutzerrechenzentrum (RRZK-B) University of Cologne, Berrenrather Str. 136, 50937 K?ln, Germany Agenda: - Text Indexing and Searching with PyLucene (Thomas Koch) Further discussion topics, news, book-presentations etc. are welcome on each of our meetings! At about 8.30 pm we will as usual enjoy the rest of the evening in a nearby restaurant. Further information including directions how to get to the location can be found at: http://www.pycologne.de (Sorry, the web-links are in German only.) Best Wishes , Andi From pp at pp.com.mx Wed Jul 14 08:40:41 2010 From: pp at pp.com.mx (Patricio Paez) Date: Wed, 14 Jul 2010 01:40:41 -0500 Subject: arithmetic 0.1 Message-ID: <20100714064041.GI3401@pre.pp.com.mx> Hi all, The first version of module arithmetic has been released. *arithmetic* is a Python module that allows mixing arithmetic operations and text. A sample Tk-based editor that uses the module is provided as a starting point. Tutorial documents are included, they will quickly show all the features of arithmetic. It is licensed under the Gnu GPL license version 2 or later. Home http://pp.com.mx/python/arithmetic Download http://pp.com.mx/python/arithmetic/arithmetic-0.1.tar.gz Regards, Patricio P?ez From holger at merlinux.eu Wed Jul 14 22:58:04 2010 From: holger at merlinux.eu (holger krekel) Date: Wed, 14 Jul 2010 22:58:04 +0200 Subject: tox-0.7: fixes, python3-compat, site-packages Message-ID: <20100714205804.GT14601@trillke.net> Hi all, thanks to feedback and help from Michael Foord, Sridhar Ratnakumar, Kumar McMillan, Ronny Pfannschmidt and Ralf Schmitt i just released tox-0.7 which includes a couple of fixes, improved Python3 virtualenv support (on non-windows platforms), and a new sitepackages config option that let's you use globally installed packages. See the more detailed changelog below. The web page is here: http://codespeak.net/tox have fun, holger What is Tox? ---------------- TOX as is a virtualenv management and generic test command line tool you can use for: * checking your package installs correctly with different Python versions and interpreters * running your tests in each of the environments, configuring your test tool of choice * acting as a frontend to Continous Integration servers, greatly reducing boilerplate and merging CI and shell-based testing. Changes 0.7 ---------------------- - use virtualenv5 (my own fork of virtualenv3) for now to create python3 environments, fixes a couple of issues and makes tox more likely to work with Python3 (on non-windows environments) - add ``sitepackages`` option for testenv sections so that environments can be created with access to globals (default is not to have access, i.e. create environments with ``--no-site-packages``. - addressing issue4: always prepend venv-path to PATH variable when calling subprocesses - fix issue2: exit with proper non-zero return code if there were errors or test failures. - added unittest2 examples contributed by Michael Foord - only allow 'True' or 'False' for boolean config values (lowercase / uppercase is irrelevant) - recreate virtualenv on changed configurations 0.6 ----------------- - fix OSX related bugs that could cause the caller's environment to get screwed (sorry). tox was using the same file as virtualenv for tracking the Python executable dependency and there also was confusion wrt links. this should be fixed now. - fix long description, thanks Michael Foord 0.5 ----------------- - initial release From pwdyson at yahoo.com Thu Jul 15 13:00:53 2010 From: pwdyson at yahoo.com (Paul) Date: Thu, 15 Jul 2010 04:00:53 -0700 (PDT) Subject: [ANN] inflect.py: generate plurals, ordinals, numbers to words... Message-ID: <299733.71288.qm@web53601.mail.re2.yahoo.com> I'm pleased to announce the release of inflect.py v0.1.8, a module that correctly generates: * the plural of singular nouns and verbs * the singular of plural nouns * ordinals * indefinite articles * present participles * and converts numbers to words Examples: >>> import inflect >>> p = inflect.engine() >>> p.pl('cat') 'cats' >>> p.pl('sheep') 'sheep' >>> p.pl('bacterium') 'bacteria' plural of singular verbs: it walks -> they walk >>> p.pl('walks') 'walk' singular of plural nouns: >>> p.sinoun('bacteria') 'bacterium' >>> p.sinoun('knives') 'knife' ordinals: >>> p.ordinal(31) '31st' >>> p.ordinal('twenty-five') 'twenty-fifth' indefinite articles: >>> p.a('horse') 'a horse' >>> p.a('ant') 'an ant' >>> p.a('hour') 'an hour' present participles: >>> p.prespart('drinks') 'drinking' >>> p.prespart('runs') 'running' >>> p.prespart('flies') 'flying' numbers to words: >>> p.numwords(1234567) 'one million, two hundred and thirty-four thousand, five hundred and sixty-seven' Installation: "pip install inflect" or "easy_install inflect" PyPi: http://pypi.python.org/pypi/inflect Bug Tracker: http://github.com/pwdyson/inflect.py/issues Source Code: http://github.com/pwdyson/inflect.py Cheers, Paul Dyson From axwalk at gmail.com Thu Jul 15 15:45:14 2010 From: axwalk at gmail.com (axwalk) Date: Thu, 15 Jul 2010 06:45:14 -0700 (PDT) Subject: Announcing Pushy 0.3 Message-ID: <65cb3306-a5c8-4351-9b5f-6cd665d1c55b@t5g2000prd.googlegroups.com> Greetings, I am pleased to announce the release of Pushy 0.3. This is the first announcement for the Pushy project. Cheers, Andrew Wilkins. What is Pushy? ============================================================================= Pushy is a Python package for connecting Python interpreters, providing each one access to objects in the other. Pushy provides the novel ability to spawn and connect to Python interpreters not only on the local host, but also on remote hosts via SSH, requiring nothing but Python and a running SSH daemon on the remote host. Pushy also provides a simple Java API, which Java applications can use to spawn and connect to Python processes and access objects within them. Python support is currently limited to Python 2.4+, and not the 3.x series. The Pushy Java API supports Java 1.4+. License ============================================================================= Pushy is released exclusively under the MIT License. Resources ============================================================================= - Source Repository and Issue Tracker: http://launchpad.net/pushy - PyPI: http://pypi.python.org/pypi/pushy/0.3 - Homepage (work in progress): http://ii.net/~maxwalk/pushy - Blog: http://axwalk.blogspot.com From martien.friedeman at gmail.com Fri Jul 16 01:32:08 2010 From: martien.friedeman at gmail.com (hans moleman) Date: Thu, 15 Jul 2010 16:32:08 -0700 (PDT) Subject: New version of CodeInvestigator Message-ID: <0ac816e9-ad89-497a-985d-002b076cafc6@c36g2000prf.googlegroups.com> CodeInvestigator version 1.2.0 was released on July 15. Changes: Added a search by line function: Specify a line number in a program and you are shown where and when it is executed. Changes to how debug information is displayed and removed: You don't need to click the identifier or keyword again to remove the debug information. If you don't move your cursor when you click to open, the next click will close it for you. When you search: A match shows the identifier and the identifier's value. Cosmetic changes: Colored blocks of coding don't span the entire screen anymore. CodeInvestigator is a tracing tool for Python programs. Running a program through 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 From cbc at unc.edu Fri Jul 16 02:39:52 2010 From: cbc at unc.edu (Chris Calloway) Date: Thu, 15 Jul 2010 20:39:52 -0400 Subject: Toronto PyCamp 2010 Message-ID: <4C3FAA58.2050702@unc.edu> The University of Toronto Department of Physics brings PyCamp to Toronto on Monday, August 30 through Friday, September 3, 2010. Register today at http://trizpug.org/boot-camp/torpy10/ For beginners, this ultra-low-cost Python Boot Camp makes you productive so you can get your work done quickly. PyCamp emphasizes the features which make Python a simpler and more efficient language. Following along with example Python PushUps? speeds your learning process in a modern high-tech classroom. Become a self-sufficient Python developer in just five days at PyCamp! Conducted on the campus of the University of Toronto, PyCamp comes with your own single OS/single developer copy of Wing Professional Python IDE. -- Sincerely, Chris Calloway office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From ryan at rfk.id.au Fri Jul 16 16:28:41 2010 From: ryan at rfk.id.au (Ryan Kelly) Date: Sat, 17 Jul 2010 00:28:41 +1000 Subject: [ANN] signedimp 0.1.3 Message-ID: <1279290521.14197.19.camel@durian> Hi Everyone, I'm pleased to announce the latest release of "signedimp", an import wrapper and related machinery for verified loading of python modules. Details and downloads at the cheeseshop, or read on for more: http://pypi.python.org/pypi/signedimp/ http://github.com/cloudmatrix/signedimp/ Cheers, Ryan Description: ------------ The "signedimp" module implements an import hook for verifying Python modules before they are loaded, by means of cryptographically-signed hashes. It is compatible with PEP 302 and designed to complement the code-signing functionality of your host OS (e.g. Microsoft Authenticode, Apple OSX Code Signing) which may be able to verify the Python executable itself but not the code that is dynamically loaded at runtime. It will mostly be useful for frozen Python applications, or other situations where code is not expected to change. It will be almost useless with a standard Python interpreter. Example: -------- As a quick example, suppose you've got a private signing key stored in the file "mykey". You build a new frozen app with py2exe, then do: from signedimp.crypto.rsa import RSAKeyWithPSS key = RSAKeyWithPSS.load_from_file(open("mykey"),"password") import signedimp.tools signedimp.tools.sign_py2exe_app("/path/to/app/dir",key) This generates a signed manifest of hashes for all the modules included in the frozen app directory, and embeds the public key into the frozen executable. Your frozen application will now verify each module before it is loaded, and any tampering (malicious or otherwise) will cause the application to fail with an "IntegrityCheckError". Of course, you'll also need to sign the executable itself with something like Microsoft Authenticode or the whole scheme is worthless. Currently there is support for signing apps frozen with py2exe, py2app and cxfreeze. Why? ---- This is *not* a DRM-type solution. It's not designed to protect your code from your users. It would be trivial for a knowledgeable user to remove the signature checking from your frozen application. Rather, it's designed to protect your users from malicious tampering by a third party. You might find it especially useful if your app has a plugin system that means it may be running code from untrusted sources (and yes, it's possible to embed a signed manifest inside an egg). Are you a crypto expert? ------------------------ No. No no no. You have been warned. -- Ryan Kelly http://www.rfk.id.au | This message is digitally signed. Please visit ryan at rfk.id.au | http://www.rfk.id.au/ramblings/gpg/ for details -------------- next part -------------- -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html From dfugate at microsoft.com Fri Jul 16 22:38:19 2010 From: dfugate at microsoft.com (Dave Fugate) Date: Fri, 16 Jul 2010 20:38:19 +0000 Subject: Announcing IronPython 2.7 Alpha 1 Message-ID: <299545F35D442642800736DBA0C3AA28030135@TK5EX14MBXC201.redmond.corp.microsoft.com> Hello Python Community, We're pleased to announce the Alpha release of IronPython 2.7 which can be downloaded at http://ironpython.codeplex.com/releases/view/42434. This is a major new version of IronPython with a number of significant updates. Because this is an Alpha release it is not yet feature complete nor fully compatible with CPython 2.7. Changes thus far include: * Updates the language to be compatible with CPython 2.7 * Adds integrated Visual Studio support (IronPython Tools for Visual Studio) * Extends CPython 2.7's documentation with useful information pertaining to IronPython * Adds the mmap and signal modules * Includes a number of performance updates and bug fixes * Switches the license to Apache License, Version 2.0 * Requires .NET 4.0 and Silverlight 4.0 Python 2.7 includes a number of features backported from the Python 3.0 series. This release implements the new builtin _io module, includes dictionary and set comprehensions, set literals, supports multiple context managers in the with statement, and adds several new functions to the itertools methods, and auto indexing for the new string formatting. There are also numerous updates to the standard library such as ordered dictionaries and the new argparse module. This release also includes a "IronPython Tools for Visual Studio" option within the IronPython installer. This enables one install to get both IronPython and IronPython Visual Studio support assuming you have an existing installation of Visual Studio 2010. This version of IronPython Tools includes a number of bug fixes as well as the start of improved WPF designer support. We discovered very late that the WPF designer support may crash VS when not running under the debugger. If you'd like to try the WPF designer support and give us feedback, just launch another Visual Studio instance and attach to the instance in which you are using the WPF designer support. We've also updated the IronPython installer to include documentation based upon the CPython documentation. This new .chm file includes documentation on the Python language and standard library. It's been extended from the normal Python documentation to include IronPython specific topics such as the DLR hosting APIs and extending IronPython from statically typed .NET languages. We flushed out more support for missing built-in modules which CPython includes. This release includes the mmap and signal modules bringing better support for interoperating with unmanaged code. As usual there are a number of bug fixes and performance improvements. This release includes major performance improvements in cPickle, the sum built-in function, and includes support for fast exceptions which do not use the .NET exception mechanism. There have also been improvements to significantly reduce memory usage of the IronPython ASTs. One of the end results of these numerous improvements is that IronPython's startup time has decreased by 10% when compared to IronPython 2.6.1. Finally, with this release we have changed the license from the Microsoft Public License to the Apache License, Version 2.0. We've made this change based upon continual feedback and questions from the community. The Apache License will be more familiar while remaining an open source license. - The IronPython Team From miki.tebeka at gmail.com Sat Jul 17 01:39:48 2010 From: miki.tebeka at gmail.com (Miki) Date: Fri, 16 Jul 2010 16:39:48 -0700 (PDT) Subject: [ANN] Selenium Bindings - IE is here! Message-ID: Hello All, The latest version of the Selenium Python bindings (9341) includes the "native" IE bindings. This marks a "complete" release with remote, firefox, ie and chrome bindings. I consider this an "alpha" release (except for the 1.0 bindings which have been around for a while). Please report bugs to http://code.google.com/p/selenium/issues/list (don't forget to label Lang-Python). Happy testing, -- Miki From nathan.alexander.rice at gmail.com Sat Jul 17 07:29:35 2010 From: nathan.alexander.rice at gmail.com (Nathan Rice) Date: Sat, 17 Jul 2010 01:29:35 -0400 Subject: [ANN] Struqtural: High level database interface library Message-ID: Struqtural makes it easy to get data into a database, and easy to work with it once it's there. Some of the big features include: * Automatically generate all tables and relations needed to represent XML in a database, including one to one, one to many, many to one and many to many relationships (JSON and YAML support is planned for a future release), returning mapped objects. * Automatically generate python objects for a specified table in a database, with support for discovery of all types of relationships (sort of like SQL Soup on 4 different kinds of steroids). * Automatically create persisted representations of python objects in a database, along with a persistent version of the object class. * Automatically infer SQL data types and create table representations for delimited text files (i.e. CSV/TSV), returning mapped objects. * Easily generate and query EAV/vertical attribute tables. * Easily generate and query graphs/trees/directed acyclic graphs. * Easily manage session configuration and creation for multiple databases. * Easily override almost all behavior with custom code or configuration variables * And much more... Once you're up and running, it's SQL Alchemy under the hood, with a few tune-ups that you are free to bypass if you don't like them. Home page:?http://www.turnkey-analytics.com/struqtural/ PyPI:?http://pypi.python.org/pypi/Struqtural Source:?https://code.launchpad.net/pydatastep Bugs:?https://bugs.launchpad.net/pydatastep To see Struqtural in action, take a look at the tutorial... ================================================= Struqtural has been designed to be as smart as possible. Because of that, most common use cases are retardedly simple. Let?s take a look, shall we? First, let?s just examine the most basic use case: >>> from struqtural.structures.structure import Structure >>> from struqtural.loaders import loader >>> data = [{"A":True, "B":1, "C":1.5, "D":"a"}, ... {"A":False, "B":2, "C":2.5, "D":"b"}, ... {"A":True, "B":3, "C":3.5, "D":"c"}, ... {"A":False, "B":4, "C":4.5, "D":"d"}] >>> example_structure = Structure(loader.CollectionLoader, data, "B", "SimpleInstance") >>> print "primary keys:", example_structure.primary_keys primary keys: ['B'] # Note that you could have also specified the primary key using an iterable >>> print "table name:", example_structure.table table name: SimpleInstances >>> print "table columns:", example_structure.columns table columns: ['SimpleInstances.A', 'SimpleInstances.C', 'SimpleInstances.B', 'SimpleInstances.D'] >>> for true_instance in example_structure.filter("B>2"): ... print true_instance SimpleInstance(A=True, C=3.5, B=3, D="c") SimpleInstance(A=False, C=4.5, B=4, D="d") >>> for small_true_instance in example_structure.query().filter("A", "C<3"): ... print small_true_instance SimpleInstance(A=True, C=1.5, B=1, D="a") Another nice feature is that Struqtural is pretty flexible about how you pass it data: >>> from struqtural.structures.structure import Structure >>> from struqtural.loaders import loader >>> more_data = [["T", "1", "1.0"], ... ["FALSE", "2", "2.0"], ... ["true", "3", "3.0"], ... ["False", "4", "4.0"]] # Note that more_data is strings, which isn't uncommon in the real world >>> data_headers = ["A", "B", "E"] >>> categories = Structure(loader.CollectionLoader, (data_headers, more_data), ["B", "E"], "Category") # Just a quick aside to demonstrate that Struqtural gets your table names right >>> print "table name:", categories.table table name: Categories >>> for category in categories: ... print category ... Category(A=True, B=1, E=1.0) Category(A=False, B=2, E=2.0) Category(A=True, B=3, E=3.0) Category(A=False, B=4, E=4.0) As you can see the strings have been handled elegantly. Type conversion is completely controllable and extensible. A small collection of useful type inference and conversion functions have been included. How about if we want to create a new structure out of multiple previously existing ones: >>> example_structure = Structure(loader.CollectionLoader, data, "B", "SimpleInstance") >>> connector = example_structure.connector >>> categories = Structure(loader.CollectionLoader, (data_headers, more_data), ["B", "E"], "Category", connector) >>> joint_structure = Structure(loader.JoinLoader, categories, example_structure) >>> for instance in joint_structure: ... print instance Category(A=True, B=1, E=1.0, C=1.5, D="a") Category(A=False, B=2, E=2.0, C=2.5, D="b") Category(A=True, B=3, E=3.0, C=3.5, D="c") Category(A=False, B=4, E=4.0, C=4.5, D="d") Note that we took advantage of some intelligence on the join we did there, since we have identically named, identically typed columns in the two tables. If you needed to be explicit about it you could just as easily have called structure like so (where the dictionary key is the column on the left table, in this case categories, and the value is the column on the joined table): >>> joined_with = (example_structure, {'A':'A', 'B':'B'}) >>> joint_structure = Structure(loader.JoinLoader, categories, joined_with) Next, let?s create persisted versions of pre-existing objects: >>> from struqtural.structures.structure import Structure >>> from struqtural.loaders import loader >>> class Mock(object): ... def __init__(self, a, b, c): ... self.a = a ... self.b = b ... self.c = c >>> mocks = [Mock(1, 2, 3), Mock(4, 5, 6), Mock(7, 8, 9)] >>> another_example_structure = Structure(loader.ObjectLoader, mocks, "a") >>> for mock in another_example_structure.query(): ... print mock Mock(a=1, c=3, b=2) Mock(a=4, c=6, b=5) Mock(a=7, c=9, b=8) Pretty easy, right? Notice that you got a nice __repr__ for free there, too. Any type which can be converted to a known SQL primitive will be mapped automatically by default, though this is easily configurable. If a variable cannot be directly mapped, or more than one type occurs on for a given variable name, by default it will be pickled so that what comes off the database is identical to what went in, though this can also be easily disabled. Note This does not directly instrument pre-existing objects. It populates the database with the data of the objects. Any changes made to the original Mock objects in the above example will not be persisted. I suggest replacing the original objects with the new objects from the session immediately. Also, rather than modify the original class, a modified subclass is created, so it is advisable to save the modified class as well. This was a design decision, however it would be trivial to switch, so the behavior may change depending on user feedback. Now on to something a little bit more complicated... Struqtural can automatically generate a schema from XML. As a basic example, let?s use the following document: 123 10/29/00 007 Bond, Inc. 1 3 ABC 12.95 What happens when you give this document to Struqtural? Let?s take a look: >>> from struqtural.structures.structure import MultiStructure >>> from struqtural.loaders import loader, file as file_ >>> multi = MultiStructure(file_.XmlMultiLoader, fake_file_1) >>> order_structure = multi.properties["Order"] >>> for order in order_structure.query(): ... print "Order number:", order.number ... print "Order date:", order.date ... print "Order customer count:", len(order.customers) ... for customer in order.customers: ... print "Order customer:", customer ... print "Order line count:", len(order.lines) ... for line in order.lines: ... print "Order line:", line ... print "Order line part count:", len(line.parts) ... for part in line.parts: ... print "Order line part:", part ... Order number: 123 Order date: 2000-10-29 Order customer count: 1 Order customer: Customer(order_id=1, custnum=7, name="Bond, Inc.", id=1) Order line count: 1 Order line: Line(order_id=1, linenum=1, id=1, quantity=3) Order line part count: 1 Order line part: Part(line_id=1, price=12.95, id=1, partnum="ABC") Ok, Struqtural automatically figured out all the relations and properties from the XML file, that?s pretty neat. Because we didn?t set any tag primary keys or provide a SchemaFormatter object with a primary key identification engine, an id key is automatically added. Since this behavior is typically not desirable, it is very easy to override. Note You will probably notice that our customer has an order_id... In this case, that customer appears only on the one Order, so that is not too odd. Had the customer appeared on multiple orders, the order would have had a customer_id. Even better, if multiple customers appeared on any order, a secondary table would be automatically created to handle the relationship, as we?ll demonstrate in a minute. So Struqtural can get data into a database easily, you say. What if my data is already in the database? What can you do for me? No problem, check it out: >>> from struqtural.structures.structure import MultiStructure >>> from struqtural.loaders import loader, file as file_ >>> multi = MultiStructure(file_.XmlMultiLoader, fake_file_1) >>> order_structure = multi.properties["Order"] >>> connector = order_structure.connector # This isn't strictly needed, but gives us nice, informative names. # The key in names is the table name, the value is the name you would like to give # the instance you are creating to represent that table. >>> names = {"Customers":"Customer", "Lines":"Line", "Parts":"Part"} >>> multi = MultiStructure(loader.DatabaseMultiLoader, "Orders", connector, names) >>> order_structure = multi.properties["Orders"] >>> for order in order_structure.query(): ... print "Order number:", order.number ... print "Order date:", order.date ... print "Order customer count:", len(order.customers) ... for customer in order.customers: ... print "Order customer:", customer ... print "Order line count:", len(order.lines) ... for line in order.lines: ... print "Order line:", line ... print "Order line part count:", len(line.parts) ... for part in line.parts: ... print "Order line part:", part Order number: 123 Order date: 2000-10-29 Order customer count: 1 Order customer: Customer(order_id=1, custnum=7, name="Bond, Inc.", id=1) Order line count: 1 Order line: Line(order_id=1, linenum=1, id=1, quantity=3) Order line part count: 1 Order line part: Part(line_id=1, price=12.95, partnum="ABC", id=1) You just got the ?Orders? table and everything connected with it (including stuff that points to it as well as stuff it points to) loaded and mapped, and it took almost no work! You?re free to do interesting stuff! Pretty awesome, huh? Let?s push things to the edge now with a quick demo of many to many relationship support. For this example we?re going to be using the following XML: 123 Sales 143 Raul Lopez 687 John Smith 947 Ming Chu 456 Marketing 157 Jim Jones 687 John Smith 947 Ming Chu Note that we?re also going to be passing tag primary keys here, so that things work properly: >>> from struqtural.structures.structure import MultiStructure >>> from struqtural.loaders import loader, file as file_ >>> primary_keys = {"Department":"DeptNum", "Employee":"Number"} >>> multi = MultiStructure(file_.XmlMultiLoader, fake_file_2, ... primary_keys=primary_keys) >>> department_structure = multi.properties["Department"] >>> for department in department_structure.query(): ... print "Department number:", department.deptnum ... print "Employee count:", len(department.employees) ... for employee in department.employees: ... print "Employee name:", employee.name ... print "Employee number:", employee.number ... Department number: 123 Employee count: 3 Employee name: Raul Lopez Employee number: 143 Employee name: John Smith Employee number: 687 Employee name: Ming Chu Employee number: 947 Department number: 456 Employee count: 3 Employee name: Jim Jones Employee number: 157 Employee name: John Smith Employee number: 687 Employee name: Ming Chu Employee number: 947 If you already have a database with many to many relationships, that is no problem. As long as the secondary tables for the relationship don?t contain any non-foreign key columns or foreign keys for more than two tables, you?re in good shape. For example: >>> from struqtural.structures.structure import MultiStructure >>> from struqtural.loaders import loader, file as file_ >>> primary_keys = {"Department":"DeptNum", "Employee":"Number"} >>> multi = MultiStructure(file_.XmlMultiLoader, fake_file_2, ... primary_keys=primary_keys) >>> department_structure = multi.properties["Department"] >>> connector = department_structure.connector >>> names = {"Departments":"Department", "Employees":"Employee"} >>> multi = MultiStructure(loader.DatabaseMultiLoader, "Departments", connector, ... names, backref_by_default=True) >>> departments = multi.properties["Departments"] >>> for department in department_structure.query(): ... print "Department number:", department.deptnum ... print "Employee count:", len(department.employees) ... for employee in department.employees: ... print "Employee name:", employee.name ... print "Employee number:", employee.number ... Department number: 123 Employee count: 3 Employee name: Raul Lopez Employee number: 143 Employee name: John Smith Employee number: 687 Employee name: Ming Chu Employee number: 947 Department number: 456 Employee count: 3 Employee name: Jim Jones Employee number: 157 Employee name: John Smith Employee number: 687 Employee name: Ming Chu Employee number: 947 You will note that in all these examples we used a memory resident SQLite database. If you want to use a real database, you will need to pass a connector to your structure. You create one like so: >>> from struqtural.database import DatabaseConnector >>> connector = DatabaseConnector("my_database_config.cfg") That?s it! In fact, Struqtural will even automatically look in a few logical places for your configuration information, so you can set it up once and you?ll never have to pass it the location of a configuration file again. Just to give you an example of the format for the configuration file (this is included in the resources subdirectory): [current engine] engine= [parameter values] user= pass= host= db= [parameter lists] mysql=mysql://{user}:{pass}@{host}/{db} postgresql=postgresql://{user}:{pass}@{host}/{db} Note The configuration file shown here does not include driver, port or other information that you would probably want to be able to specify in a real case. Those parameters are supported, so if you modify the configuration to include them, the struqtural.database.connector.Databaseconnector will work as expected. From stefan_ml at behnel.de Sun Jul 18 19:51:39 2010 From: stefan_ml at behnel.de (Stefan Behnel) Date: Sun, 18 Jul 2010 19:51:39 +0200 Subject: [ANN] Lupa 0.6 - Lua in Python Message-ID: <4C433F2B.8050706@behnel.de> Hi all, I'm happy to announce the release of Lupa 0.6. http://pypi.python.org/pypi/lupa/0.6 What is Lupa? -------------- Lupa integrates the LuaJIT2 runtime [1] into CPython. It is a rewrite of LunaticPython in Cython. Features --------- * separate Lua runtime states through a LuaRuntime class * frees the GIL and supports threading in separate runtimes when calling into Lua * proper encoding and decoding of strings (configurable, UTF-8 by default) * supports Python 2.x and 3.x, potentially starting with Python 2.3 (currently untested) * written for LuaJIT2, as opposed to the Lua interpreter (tested with LuaJIT 2.0.0-beta4) * easy to hack on and extend as it is written in Cython, not C The major new feature in this release is iteration support for Lua objects, such as tables. Examples --------- >>> from lupa import LuaRuntime >>> lua = LuaRuntime() >>> lua.eval('1+1') 2 >>> lua_func = lua.eval('function(f, n) return f(n) end') >>> def py_add1(n): return n+1 >>> lua_func(py_add1, 2) 3 Why use it? ------------ It complements Python very well. Lua is a language as dynamic as Python, but LuaJIT compiles it to very fast machine code, sometimes faster than many other compiled languages [2]. The language runtime is extremely small and carefully designed for embedding. The complete binary module of Lupa, including a statically linked LuaJIT2 runtime, is only some 400KB on a 64 bit machine. However, Lua code is harder to write than Python code as the language lacks most of the batteries that Python includes. Writing large programs in Lua is rather futile, but it provides a perfect backup language when raw speed is more important than simplicity. Lupa is a very fast and thin wrapper around LuaJIT. It makes it easy to write dynamic Lua code that accompanies dynamic Python code by switching between the two languages at runtime, based on the tradeoff between simplicity and speed. [1] LuaJIT2: http://luajit.org/ [2] http://shootout.alioth.debian.org/u64/performance.php?test=mandelbrot From ken at picloud.com Mon Jul 19 21:49:40 2010 From: ken at picloud.com (Ken Elkabany) Date: Mon, 19 Jul 2010 12:49:40 -0700 Subject: ANN: PiCloud's Python Platform is now open to the Public! Message-ID: After 5 months in private beta, PiCloud, a cloud computing platform for the Python Programming Language, is now open to the general public. PiCloud enables Python users to leverage the power of an on-demand, high performance, and auto scaling compute cluster with as few as two lines of code! No server management necessary. All new users receive 5 free compute hours of computation. You can find out more here: http://www.picloud.com Full service description: PiCloud is a cloud computing platform that integrates into the Python Programming Language. It enables you to leverage the compute power of Amazon Web Services without having to manage, maintain, or configure virtual servers. PiCloud integrates seamlessly into your existing code base through a custom Python library, cloud. To offload the execution of a function to the cloud, all you must do is pass your desired function into the cloud library. PiCloud will then run the function on its high-performance and automatically-scaling cluster. We quickly scale our server capacity to meet your computational needs, and only charge you for the resources you actually consume. Getting on the cloud has never been this easy! PiCloud improves the full cycle of software development and deployment. Functions that are run on PiCloud have their resource usage monitored, performance analyzed, and errors traced; we further aggregate all your functions to give you a bird's eye view of your service. Through these introspective capabilities, PiCloud enables you to develop faster, easier, and smarter. Common use cases for our platform: * Scientific computing * Simulations * Video and image encoding * Statistical analysis of data sets * Real-time data processing * Charts and graphs generation Cheers, Ken Elkabany PiCloud, Inc. From anthony.tuininga at gmail.com Tue Jul 20 03:51:15 2010 From: anthony.tuininga at gmail.com (Anthony Tuininga) Date: Mon, 19 Jul 2010 19:51:15 -0600 Subject: cx_Freeze 4.2 Message-ID: What is cx_Freeze? cx_Freeze is a set of scripts and modules for freezing Python scripts into executables in much the same way that py2exe and py2app do. It requires Python 2.3 or higher since it makes use of the zip import facility which was introduced in that version. Where do I get it? http://cx-freeze.sourceforge.net What's new? Changes from 4.1.2 to 4.2 1) Added support for Python 2.7. 2) Improved support for Python 3.x. 3) Improved support for Mac OS X based on feedback from some Mac users. 4) Improved hooks for the following modules: postgresql, matplotlib, twisted, zope, PyQt4. 5) Improved packaging of MSI files by enabling support for creating shortcuts for the executables, for specifying the initial target directory and for adding other arbitrary configuration to the MSI. 6) Added support for namespace packages such as those distributed for zope. 7) The name of the generated MSI packages now includes the architecture in order to differentiate between 32-bit and 64-bit builds. 8) Removed use of LINKFORSHARED on the Mac which is not necessary and for Python 2.6 at least causes an error to be raised. 9) Turn off filename globbing on Windows as requested by Craig McQueen. 10) Fixed bug that prevented hooks from successfully including files in the build (as is done for the matplotlib sample). 11) Fixed bug that prevented submodules from being included in the build if the format of the import statement was from . import . 12) Reverted bug fix for threading shutdown support which has been fixed differently and is no longer required in Python 2.6.5 and up (in fact an error is raised if the threading module is used in a frozen executable and this code is retained). 13) Fixed bug which resulted in attempts to compile .pyc and .pyo files from the initscripts directory. 14) Fixed selection of "Program Files" directory on Windows in 64-bit MSI packages built by cx_Freeze. From cedric.krier at b2ck.com Tue Jul 20 14:28:09 2010 From: cedric.krier at b2ck.com (ced) Date: Tue, 20 Jul 2010 05:28:09 -0700 (PDT) Subject: relatorio 0.5.5 released Message-ID: Relatorio is a project to easily create reports in a variety of formats (openoffice text, PDF, XHTML) from python objects. A new minor release of relatorio has been published. It only fixes the namespace in opendocument manifest which is required for OpenOffice 3.2. relatorio is available on PyPI: http://pypi.python.org/pypi/relatorio/0.5.5 From itamar at itamarst.org Tue Jul 20 15:43:04 2010 From: itamar at itamarst.org (Itamar Turner-Trauring) Date: Tue, 20 Jul 2010 09:43:04 -0400 Subject: giljoy 0.1: Find which C functions are holding the global interpreter lock (GIL) Message-ID: <1279633384.1540.15.camel@blake> Ever wondered which C extension functions ought to be releasing the global interpreter lock? giljoy might be able to help. http://itamarst.org/software/giljoy-0.1.tar.gz Giljoy helps you find C functions that are holding the GIL; in some cases they could release the GIL, thus making your program more concurrent. The program uses sampling, so it finds the functions that most frequently hold the GIL, and may miss infrequently called functions. Theory of operation: a preloaded module sets a C variable indicating which thread has GIL. A separate program attaches gdb and then inspects the C variable. = Supported Platforms = The program was only tested on Ubuntu 10.4 with Python 2.6; it will probably only run on modern versions of Linux. Since it involves large amounts of duct tape and magic pixie dust, it may not work without some tweaking -- please let me know if you have any problems! = Requirements = pygdb 0.2: http://code.google.com/p/pygdb/ Python with debug symbols (e.g. "apt-get install python2.6-dbg" on Ubuntu). = Sample Output = Here you can see a large chunk of the time the GIL is held by a C function that ought to release the GIL (nogil_sleep, which calls usleep which calls nanosleep). The rest of the time the GIL is held by internal Python functions that cannot be changed. $ ./giljoy example.py Functions that held GIL, by percentage seen (194 samples): 37%: nanosleep(/lib/libc.so.6) < usleep(/lib/libc.so.6) < nogil_sleep(nogilexample.c) < call_function(../Python/ceval.c) < PyEval_EvalFrameEx(../Python/ceval.c) 24%: PyEval_EvalFrameEx(../Python/ceval.c) 3%: frame_dealloc(../Objects/frameobject.c) < fast_function(../Python/ceval.c) < call_function(../Python/ceval.c) < PyEval_EvalFrameEx(../Python/ceval.c) ... etc. ... From michael at stroeder.com Tue Jul 20 23:18:33 2010 From: michael at stroeder.com (=?ISO-8859-1?Q?Michael_Str=F6der?=) Date: Tue, 20 Jul 2010 23:18:33 +0200 Subject: python-crypto list has a new home Message-ID: HI! The python-crypto mailing list had to move to a new mailing list service. The natural choice was to move under the umbrella of python.org. The new list address is: python-crypto at python.org My archive of the old postings was imported to the new list service: http://mail.python.org/pipermail/python-crypto/ For various reasons I will *not* migrate the subscriptions of the old PYTHON-CRYPTO list at SURFnet#s LISTSERV! So you have to manually subscribe to this new list: http://mail.python.org/mailman/listinfo/python-crypto Hope to see you all there soon. Ciao, Michael. From fabiofz at gmail.com Wed Jul 21 03:09:51 2010 From: fabiofz at gmail.com (Fabio Zadrozny) Date: Tue, 20 Jul 2010 22:09:51 -0300 Subject: Pydev 1.6.0 Released Message-ID: Hi All, Pydev 1.6.0 has been released Details on Pydev: http://pydev.org Details on its development: http://pydev.blogspot.com Release Highlights: ------------------------------- * Debugger o Code-completion added to the debug console o Entries in the debug console are evaluated on a line-by-line basis (previously an empty line was needed) o Threads started with thread.start_new_thread are now properly traced in the debugger o Added method -- pydevd.set_pm_excepthook() -- which clients may use to debug uncaught exceptions o Printing exception when unable to connect in the debugger * General o Interactive console may be created using the eclipse vm (which may be used for experimenting with Eclipse) o Apply patch working (Fixed NPE when opening compare editor in a dialog) o Added compatibility to Aptana Studio 3 (Beta) -- release from July 12th What is PyDev? --------------------------- PyDev is a plugin that enables users to use Eclipse for Python, Jython and IronPython development -- making Eclipse a first class Python IDE -- It comes with many goodies such as code completion, syntax highlighting, syntax analysis, refactor, debug and many others. Cheers, -- Fabio Zadrozny ------------------------------------------------------ Software Developer Aptana http://aptana.com/ Pydev - Python Development Environment for Eclipse http://pydev.org http://pydev.blogspot.com From anthony.tuininga at gmail.com Wed Jul 21 06:05:13 2010 From: anthony.tuininga at gmail.com (Anthony Tuininga) Date: Tue, 20 Jul 2010 22:05:13 -0600 Subject: cx_Oracle 5.0.4 Message-ID: What is cx_Oracle? cx_Oracle is a Python extension module that allows access to Oracle and conforms to the Python database API 2.0 specifications with a few exceptions. Where do I get it? http://cx-oracle.sourceforge.net What's new? 1) Added support for Python 2.7. 2) Added support for new parameter (port) for subscription() call which allows the client to specify the listening port for callback notifications from the database server. Thanks to Geoffrey Weber for the initial patch. 3) Fixed compilation under Oracle 9i. 4) Fixed a few error messages. From sheep at sheep.art.pl Wed Jul 21 10:01:54 2010 From: sheep at sheep.art.pl (Radomir Dopieralski) Date: Wed, 21 Jul 2010 10:01:54 +0200 Subject: [ann] Hatta 1.4.0 wiki engine released Message-ID: I'm proud to announce release 1.4.0 of Hatta wiki engine. http://hatta.sheep.art.pl/ What is Hatta? -------------- Hatta is a small wiki engine designed to run locally or via WSGI inside a directory in a Mercurial repository. All the pages are normal text or binary (for images and such) files, also editable from outside of the wiki -- the page history is taken from the repository. Who is it for? -------------- It's mostly for small development teams to use for documentation of the project right in the repository. It's mostly a plain, traditional wiki, without fancy features to distract from doing real work. Features -------- * single python script file * no installation necessary, just run it in your repository * can also run on the server as WSGI application * fast indexed search and backlinks * lives inside a repository, so can be cloned, merged, etc. * customizable by creating wiki pages with styles, logo, menu, etc. This version ------------ * image thumbnails * changed how URLs are built * markup for monospace * compatibility with Mercurial 1.6 * orphaned and wanted pages index * a lot of bugfixes Enjoy! -- Radomir Dopieralski, http://sheep.art.pl From daniel at stutzbachenterprises.com Wed Jul 21 16:47:08 2010 From: daniel at stutzbachenterprises.com (Daniel Stutzbach) Date: Wed, 21 Jul 2010 09:47:08 -0500 Subject: ANN: blist 1.2.0 Message-ID: The blist package contains several container types to supplement those built-in to Python. These types closely mirror the built-in types' methods, so the learning curve is close to zero. The package includes: - blist: a list type with O(log n) insertions, deletes, and slices and other performance enhancements - btuple: a tuple type with O(log) slices - sorteddict: a dict type that efficiently keeps keys in sorted order - sortedlist: a list type that efficiently keeps the items sorted order - sortedset: an indexable set type that efficiently keeps the items sorted order - weaksortedlist, weaksortedset: weak reference versions of sortedlist and sortedset What's new? ----------- - blist.sort() is now *substantially* faster than list.sort() when using int or float keys (O(n) vs. O(n log n)) - The sortedset, sortedlist, and sorteddict types have been revamped for better compatibility with the standard library's types. - Comprehensive reference documentation is now available at http://stutzbachenterprises.com/blist/ - Numerous other speed improvements Links ----- - blist vs. list performance comparison: http://stutzbachenterprises.com/performance-blist - Documentation: http://stutzbachenterprises.com/blist/ - Download: http://pypi.python.org/pypi/blist/ - Source repository: http://github.com/DanielStutzbach/blist - Issue tracker: http://github.com/DanielStutzbach/blist/issues -- Daniel Stutzbach, Ph.D. President, Stutzbach Enterprises, LLC From anthony.tuininga at gmail.com Fri Jul 23 06:55:25 2010 From: anthony.tuininga at gmail.com (Anthony Tuininga) Date: Thu, 22 Jul 2010 22:55:25 -0600 Subject: cx_OracleDBATools 3.0 Message-ID: What is cx_OracleDBATools? cx_OracleDBATools is a set of Python scripts that handle Oracle DBA tasks in a cross platform manner. These scripts are intended to work the same way on all platforms and hide the complexities involved in managing Oracle databases, especially on Windows. Binaries are provided for those who do not have a Python installation. Where do I get it? http://cx-oradbatools.sourceforge.net What's new? 1) Added support for Oracle 11.x. 2) Removed direct support for Oracle 8.x and Oracle 9.x which are no longer supported by Oracle. 3) Write all SQL used for creating or restoring the database to the file system to allow for manual recovery in case of failures. 4) Added new script for exporting the parameter file as a means of testing the contents of the generated parameter file or for seeing the contents of the stored parameter file if one is being used. 5) Fixed handling of parameter log_archive_duplex_dest. 6) Fixed hanlding of parameters with a blank value. 7) Workaround bug in Python on Linux where os.waitpid() results in an OS error about no child processes. 8) Make source compatible with Python 3.x without losing compatibility with Python 2.x. 9) Changed backup and restore to use RMAN which allows for backups while the database is running. The backup utility can now create directories, uncompressed tar files or tar files compressed with either gzip or bzip2 as desired. Server parameter files (spfiles) and password files are now backed up correctly. 10) On Windows, configuration is now read from the service directly and the situation where the database is configured to start when the service starts is now handled correctly. 11) Created build configuration script using the new version of cx_Freeze which allows for building installer images on Windows and RPM packages on Linux. 12) Added documentation. 13) The cx_Logging module is now used for all logging instead of simply being printed to stdout or stderr. From stefan_ml at behnel.de Fri Jul 23 23:12:53 2010 From: stefan_ml at behnel.de (Stefan Behnel) Date: Fri, 23 Jul 2010 23:12:53 +0200 Subject: [ANN] Lupa 0.9 - Lua in Python Message-ID: <4C4A05D5.60301@behnel.de> Hi all, I'm happy to announce the release of Lupa 0.9. http://pypi.python.org/pypi/lupa/0.9 What is Lupa? -------------- Lupa integrates the LuaJIT2 runtime [1] into CPython. It is a rewrite of LunaticPython in Cython with a couple of additional features. The major new feature in this release is coroutine support for Lua functions that follows the Python coroutine protocol (next/send). Examples --------- >>> from lupa import LuaRuntime >>> lua = LuaRuntime() >>> lua.eval('1+1') 2 >>> lua_func = lua.eval('function(f, n) return f(n) end') >>> def py_add1(n): return n+1 >>> lua_func(py_add1, 2) 3 >>> lua_func = lua.eval(''' ... function(N) ... for i=0,N do coroutine.yield(i%2) end ... end ... ''') >>> co = lua_func.coroutine(3) >>> list(co) [0,1,0,1] Why use it? ------------ It complements Python very well. Lua is a language as dynamic as Python, but LuaJIT compiles it to very fast machine code, sometimes faster than many other compiled languages [2]. The language runtime is extremely small, has a small memory footprint and is carefully designed for embedding. The complete binary module of Lupa, including a statically linked LuaJIT2 runtime, is only some 500KB on a 64 bit machine. However, Lua code is harder to write than Python code as the language lacks most of the batteries that Python includes. Writing large programs in Lua is rather futile, but it provides a perfect backup language when raw speed is more important than simplicity. Lupa is a very fast and thin wrapper around LuaJIT. It makes it easy to write dynamic Lua code that accompanies dynamic Python code by switching between the two languages at runtime, based on the tradeoff between simplicity and speed. [1] LuaJIT2: http://luajit.org/ [2] http://shootout.alioth.debian.org/u64/performance.php?test=mandelbrot From georg at python.org Sat Jul 24 10:46:24 2010 From: georg at python.org (Georg Brandl) Date: Sat, 24 Jul 2010 09:46:24 +0100 Subject: Sphinx 1.0 final released Message-ID: <4C4AA860.3050200@python.org> Hi all, I'm happy to announce the release of Sphinx 1.0, a new feature-laden release of the Sphinx documentation tool. What is it? =========== Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of multiple reStructuredText source files). Website: http://sphinx.pocoo.org/ What's new in 1.0 (very short version)? ======================================= Lots of stuff; most important of all domains support (see blog post at http://pythonic.pocoo.org/2009/9/12/new-in-sphinx-1-0-domains), new HTML themes, new output formats (manpage, epub). The full list is at . cheers, Georg From whykay at gmail.com Sat Jul 24 12:12:36 2010 From: whykay at gmail.com (Vicky Twomey-Lee) Date: Sat, 24 Jul 2010 11:12:36 +0100 Subject: [Python Ireland presents] August Talks at The Science Gallery (Wed 11th Aug, 19:00) Message-ID: Hi All, When: Wed 11th Aug, 19:00 Where: The Science Gallery, Pearse Street. What: Distributed profiling using Redis (Michael Twomey) ------------------------------------------------------------------------- Mick moved his Redis talk from PyCon Ireland main tracks, so he decided to give a talk one of our regular meetups. Redis is a shared data structure server which offers an interesting opportunity to collect distributed profiling data from multiple Python processes. The Python cProfile module can be used to profile individual function calls. Combine the profiler and Redis together and you get a distributed application profiling collection service. Community building & PyCon & Python (Kevin Gill) --------------------------------------------------------------------------- "What do you want from Python?" -- Some background on what this is about, and building on the successful openspaces sessions from PyCon Ireland 2010. Pub TBD on the day (as always). :-) More details: http://www.python.ie/meetup/2010/aug_2010_talks__the_science_gallery/ All are welcome and it's free. Cheers, /// Vicky ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ http://irishbornchinese.com ~~ ~~ http://www.python.ie ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ From rodrigo.moraes at gmail.com Sun Jul 25 21:29:35 2010 From: rodrigo.moraes at gmail.com (Rodrigo Moraes) Date: Sun, 25 Jul 2010 12:29:35 -0700 (PDT) Subject: Tipfy 0.6 released (a framework for App Engine) Message-ID: Hi everybody, We just released version 0.6 of tipfy, a small framework made for Google App Engine. These are the most important achievements in this release: * Added support for single-file apps, which are much like we see in App Engine's webapp. Example of a single-file app: http://www.tipfy.org/paste/view/648817 * This also makes unit testing easier in several situations. App and URLs can be defined and executed in a single function. Example of a redirect test: http://www.tipfy.org/paste/view/685812 * We no longer use thread locals and removed all global variables from the core and extensions (deprecated since the 0.5.x series). More about tipfy: * Website: http://www.tipfy.org/ * Extensions repository: http://www.tipfy.org/wiki/extensions/ * Discussion group: http://groups.google.com/group/tipfy regards, rodrigo moraes From mmueller at python-academy.de Tue Jul 27 19:04:45 2010 From: mmueller at python-academy.de (=?ISO-8859-15?Q?Mike_M=FCller?=) Date: Tue, 27 Jul 2010 19:04:45 +0200 Subject: [ANN] Python Summer Course in Germany, August 2010 Message-ID: <4C4F11AD.3040108@python-academy.de> We offer a 6-day "Python Summer Course" in Leipzig, Germany from August 16 to August 21, 2010: http://www.python-academy.com/courses/python_summer_course.html The course consists of three days of "Python for Programmers": http://www.python-academy.com/courses/python_course_programmers.html August 16 to 18 and three days of "Python for Scientists and Engineers": http://www.python-academy.com/courses/python_course_scientists.html August 19 to 21 Both courses may be booked separately. Combining both gives you 6 course days for the price of 5. Please register here: http://www.python-academy.com/courses/dates.html From stefan_ml at behnel.de Tue Jul 27 22:30:00 2010 From: stefan_ml at behnel.de (Stefan Behnel) Date: Tue, 27 Jul 2010 22:30:00 +0200 Subject: [ANN] Lupa 0.10 - Lua in Python Message-ID: <4C4F41C8.4000508@behnel.de> Hi all, I'm happy to announce the release of Lupa 0.10. http://pypi.python.org/pypi/lupa/0.10 What is Lupa? -------------- Lupa integrates the LuaJIT2 runtime [1] into CPython. It is a rewrite of LunaticPython in Cython. Features --------- * separate Lua runtime states through a LuaRuntime class * frees the GIL and supports threading in separate runtimes when calling into Lua * Python compatible coroutine wrapper for Lua coroutines * proper encoding and decoding of strings (configurable per runtime, UTF-8 by default) * supports Python 2.x and 3.x, potentially starting with Python 2.3 (currently untested) * written for LuaJIT2, as opposed to the Lua interpreter (tested with LuaJIT 2.0.0-beta4) * easy to hack on and extend as it is written in Cython, not C This release features much faster locking of the LuaRuntime instance, especially in the single threaded case. It uses the FastRLock class that I posted as a Python Cookbook recipe [2]. Lupa 0.10 also fixes several issues in error handling cases when calling back into Python from Lua. Updating is recommended. Examples --------- >>> from lupa import LuaRuntime >>> lua = LuaRuntime() >>> lua.eval('1+1') 2 >>> lua_func = lua.eval('function(f, n) return f(n) end') >>> def py_add1(n): return n+1 >>> lua_func(py_add1, 2) 3 >>> lua_code = '''\ ... function(N) ... for i=0,N do ... coroutine.yield( i%2 ) ... end ... end ... ''' >>> lua = LuaRuntime() >>> f = lua.eval(lua_code) >>> gen = f.coroutine(4) >>> list(enumerate(gen)) [(0, 0), (1, 1), (2, 0), (3, 1), (4, 0)] Why use it? ------------ It complements Python very well. Lua is a language as dynamic as Python, but LuaJIT compiles it to very fast machine code, sometimes faster than many other compiled languages [3]. The language runtime is extremely small and carefully designed for embedding. The complete binary module of Lupa, including a statically linked LuaJIT2 runtime, is only some 500KB on a 64 bit machine. However, Lua code is harder to write than Python code as the language lacks most of the batteries that Python includes. Writing large programs in Lua is rather futile, but it provides a perfect backup language when raw speed is more important than simplicity. Lupa is a very fast and thin wrapper around LuaJIT. It makes it easy to write dynamic Lua code that accompanies dynamic Python code by switching between the two languages at runtime, based on the tradeoff between simplicity and speed. [1] LuaJIT2: http://luajit.org/ [2] http://code.activestate.com/recipes/577336-fast-re-entrant-optimistic-lock-implemented-in-cyt/ [3] http://shootout.alioth.debian.org/u64/performance.php?test=mandelbrot From dr.scottgriffiths at gmail.com Wed Jul 28 22:54:44 2010 From: dr.scottgriffiths at gmail.com (Scott Griffiths) Date: Wed, 28 Jul 2010 13:54:44 -0700 (PDT) Subject: bitstring 2.0 released Message-ID: <66b0b1b2-7f7a-4fbe-a189-a377f1220a70@5g2000yqz.googlegroups.com> I'm pleased to announce the release of version 2.0 of the bitstring module. What is it? ----------- bitstring helps to make creating, manipulating and deconstructing binary data as easy as possible. It allows arbitrary (and very large) bit patterns to be used without worrying about bit shifting and masking operations. The comprehensive API covers packing, reading, searching, replacing and slicing as well as bit setting and checking, a host of different binary interpretations and all the standard bit-wise operators. The module is pure Python and is available for Python 2.6 and later, including Python 3. What's new in version 2? ------------------------ The main change is a more powerful and streamlined API. Too much to go into here (see the release notes), but here are some simple examples: >>> s = BitString('0x000001b3') # create a 32-bit bitstring from hexadecimal >>> s += 'uint:12=352, uint:12=288' # append two 12-bit integers >>> s += bitstring.pack('<2f, 0b1, >> s.unpack('hex:32, 2*uint:12, <2f, bool, >> s.tobytes() # convert to bytes b'\x00\x00\x01\xb3\x16\x01 \xcd\xcc\xcc=\xcd\xccl@\x96\x00\x00' >>> t = s[32:41]. # slicing >>> t.bin # the binary interpretation '0b000101100' >>> list(t.findall('0b10')) # finding bit patterns [3, 6] Where can I find out more? -------------------------- The project's homepage is at http://python-bitstring.googlecode.com/ Documentation is hosted at http://packages.python.org/bitstring/ Release note for all versions: http://code.google.com/p/python-bitstring/wiki/ReleaseNotes -- Thanks, Scott Griffiths From holger at merlinux.eu Sat Jul 31 00:34:04 2010 From: holger at merlinux.eu (holger krekel) Date: Sat, 31 Jul 2010 00:34:04 +0200 Subject: execnet-1.0.8 and a green experiment Message-ID: <20100730223404.GH1914@trillke.net> I just released execnet-1.0.8, see the Changelog for details, below. What is execnet? --------------------- execnet is a small pure python library that manages distributed code execution across Python versions and host boundaries. It provides a self-bootstrapping share-nothing model with channels to send/receive data messages. It also helps with managing a cluster of (local or remote) processes and comes with tons of examples and API docs: http://codespeak.net/execnet green version of execnet -------------------------------- For those interested i hacked up a green version of execnet which is API-compatible (and less stable) than the "main" version. It requires the eventlet library and is thus not fully self-bootstrapping (you need to install eventlet on all remote nodes you want to execute code on). There is no release but you can peruse http://code.google.com/p/execnet-green/source/checkout and "python setup.py develop" to play with it. It will never spawn any operating system threads. Rather remote_exec() will spawn greenlets/micro-threads of which you can easily have a few thousand. It probably only is stable enough for simple scenarios at this point. best, holger Changelog 1.0.8 (compared to 1.0.7): - new ``gateway.remote_exec(func, **kwargs)`` style fo executing a pure function with parameters. The function on the remote side also needs to accept a ``channel`` which allows it to communicate back and forth. Thanks to Ronny Pfannschmidt for implementing it with special kudos to Maciej Fijalkowski for writing a "pure-function" checker so that on Python2.6 onwards non-pure functions will be rejected. - enhance rsyncing to also sync permissions (stat().st_mode) of directories and files. (should also resolve http://bitbucket.org/hpk42/py-trunk/issue/68/) - fix rsyncing of symlinks, thanks to Charles Solar (should also resolve http://bitbucket.org/hpk42/py-trunk/issue/70/) - update internal usage of apipkg to 1.0b6 - remote_exec(module) now makes sure that the linecache is updated before reading and sending the source. thanks Ronny, Matt. - removed all trailing whitespace from source files From holger at merlinux.eu Sat Jul 31 02:22:04 2010 From: holger at merlinux.eu (holger krekel) Date: Sat, 31 Jul 2010 02:22:04 +0200 Subject: tox-0.8 and py.test-1.3.3 released Message-ID: <20100731002204.GJ1914@trillke.net> Hi, just did a two test tool releases, one for tox and one for py.test. The tox-0.8 release provides fixes and workarounds, see changelog below. The py-1.3.3 release mainly provides fixes for terminal output. best & thanks to the respective feedbackers/helpers, holger What is tox? ---------------------- Tox is a generic test runner, creating virtualenv environments on the fly and executing your test tool of choice. It works conveniently from a developer's terminal as well as from a Continous Integration Server. See http://codespeak.net/tox What is py.test? ---------------------- py.test is an easy-to-learn testing tool with many plugins and features for integration and functional tests in Python. See http://pytest.org for more info. CHANGES tox-0.8 ----------------- - work around a virtualenv limitation which crashes if PYTHONDONTWRITEBYTECODE is set. - run pip/easy installs from the environment log directory, avoids naming clashes between env names and dependencies (thanks ronny) - require a more recent version of py lib - refactor and refine config detection to work from a single file and to detect the case where a python installation overwrote an old one and resulted in a new executable. This invalidates the existing virtualenvironment now. - change all internal source to strip trailing whitespaces Changes py-1.3.3 ---------------------- - fix issue113: assertion representation problem with triple-quoted strings (and possibly other cases) - make conftest loading detect that a conftest file with the same content was already loaded, avoids surprises in nested directory structures which can be produced e.g. by Hudson. It probably removes the need to use --confcutdir in most cases. - fix terminal coloring for win32 (thanks Michael Foord for reporting) - fix weirdness: make terminal width detection work on stdout instead of stdin (thanks Armin Ronacher for reporting) - remove trailing whitespace in all py/text distribution files From cfbolz at gmx.de Sat Jul 31 08:35:35 2010 From: cfbolz at gmx.de (Carl Friedrich Bolz) Date: Sat, 31 Jul 2010 08:35:35 +0200 Subject: S3 2010 deadline extension Message-ID: <4C53C437.6060104@gmx.de> The S3 2010 Paper deadline was moved forward by two weeks, and is now August 13, 2010. *** Workshop on Self-sustaining Systems (S3) 2010 *** September 27-28, 2010 The University of Tokyo, Japan http://www.hpi.uni-potsdam.de/swa/s3/s3-10/ In cooperation with ACM SIGPLAN === 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 September 27-28, 2010 at The University of Tokyo, Japan. 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. --- 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 ACM Digital Library. Papers should be submitted electronically via EasyChair at http://www.easychair.org/conferences/?conf=s32010 in PDF format. Submissions must be written in English (the official language of the workshop) and must not exceed 10 pages. They should use the ACM SIGPLAN 10 point format, templates for which are available at http://www.acm.org/sigs/sigplan/authorInformation.htm. --- Venue --- The University of Tokyo, Komaba Campus, Japan --- Important dates --- Submission of papers: *EXTENDED* August 13, 2010 Author notification: August 27, 2010 Early registration: September 3, 2010 Revised papers: September 10, 2010 S3 workshop: September 27-28, 2010 Final papers for ACM-DL post-proceedings: October 15, 2010 --- Invited talks --- Yukihiro Matsumoto: "From Lisp to Ruby to Rubinius" Takashi Ikegami: "Sustainable Autonomy and Designing Mind Time" --- Chairs --- Robert Hirschfeld (Hasso-Plattner-Institut Potsdam, Germany) hirschfeld at hpi.uni-potsdam.de Hidehiko Masuhara (The University of Tokyo, Japan) masuhara at graco.c.u-tokyo.ac.jp Kim Rose (Viewpoints Research Institute, USA) kim.rose at vpri.org --- Program committee --- Carl Friedrich Bolz, University of Duesseldorf, Germany Johan Brichau, Universite Catholique de Louvain, Belgium Shigeru Chiba, Tokyo Institute of Technology, Japan Brian Demsky, University of California, Irvine, USA Marcus Denker, INRIA Lille, France Richard P. Gabriel, IBM Research, USA Michael Haupt, Hasso-Plattner-Institut, Germany Robert Hirschfeld, Hasso-Plattner-Institut, Germany (co-chair) Atsushi Igarashi, University of Kyoto, Japan David Lorenz, The Open University, Israel Hidehiko Masuhara, University of Tokyo, Japan (co-chair) Eliot Miranda, Teleplace, USA Ian Piumarta, Viewpoints Research Institute, USA Martin Rinard, MIT, USA Antero Taivalsaari, Nokia, Finland David Ungar, IBM, USA _______________________________________________ fonc mailing list fonc at vpri.org http://vpri.org/mailman/listinfo/fonc