Hi All,
I'm pleased to announce the release of PyEnchant version 1.2.0. This
version includes some important updates in the underlying enchant
library, and implements basic "filters" to allow skipping of email
addresses, WikiWords, URLs, etc during a spellchecking session.
Cheers,
Ryan
About:
------
Enchant (http://www.abisource.com/enchant/) is the spellchecking
package behind the AbiWord word processor, is being considered for
inclusion in the KDE office suite, and is proposed as a
FreeDesktop.org standard. It's completely cross-platform because
it wraps the native spellchecking engine to provide a uniform
interface.
PyEnchant brings this simple, powerful and flexible spellchecking
engine to Python:
http://pyenchant.sourceforge.net/
It also provides extended functionality including classes for tokenizing
text and iterating over the spelling errors in it, as well as a
ready-to-use text interface and wxPython dialog.
Current Version: 1.2.0
Licence: LGPL with exemptions, as per Enchant itself
ChangeLog for 1.2.0:
--------------------
* Implemented "filters" that allow tokenization to skip common word
forms such as URLs, WikiWords, email addresses etc.
* Now ships with enchant-1.3.0, meaning:
* PWLs can return a useful list of suggestions rather than
the empty list
* Hunspell replaces MySpell as the default Windows backend
* Tokenization doesnt split words at non-alpha characters by default
* GtkSpellCheckerDialog contributed by Fredrik Corneliusson
* Removed deprecated functionality:
* Dict.add_to_personal
* All registry handling functionality from enchant.utils
* enchant.utils.SpellChecker (use enchant.checker.SpellChecker)
* Removed PyPWL, as native enchant PWLs can now suggest corrections
--
Ryan Kelly
http://www.rfk.id.au | This message is digitally signed. Please visit
ryan(a)rfk.id.au | http://www.rfk.id.au/ramblings/gpg/ for details
Hi,
I'm pleased to announce release 0.64.2 of Task Coach. This is a bug
fix release that should fix the following bugs:
* Don't take child task priority into account when sorting by priority
in the task tree view.
* Don't block OS shutdown on Windows.
What is Task Coach?
Task Coach is a simple task manager that allows for hierarchical
tasks, i.e. tasks in tasks. Task Coach is open source (GPL) and is
developed using Python and wxPython. You can download Task Coach from:
http://www.taskcoach.orghttps://sourceforge.net/projects/taskcoach/
In addition to the source distribution, packaged distributions are
available for Windows XP, Mac OSX, and Linux (Debian and RPM format).
Note that Task Coach is alpha software, meaning that it is wise to back
up your task file regularly, and especially when upgrading to a new release.
Cheers, Frank
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I'm pleased to announce the release of munepy 1.3. munepy is yet
another Python enumeration package. It is compatible with Python 2.4
and 2.5. It's not called 'enum' because that's already taken by an
alternative enum package. From the README.txt file:
Introduction
============
This package is called `munepy`. It is yet another Python enum
package, but
with a slightly different take on syntax and semantics than earlier such
packages.
The goals of munepy were to produce simple, specific, concise
semantics in an
easy to read and write syntax. munepy has just enough of the
features needed
to make Enums useful, but without a lot of extra baggage to weigh
them down.
This work grew out of the Mailman 3.0 project and it is the enum
package used
there.
The name `munepy` is a play on words. *mune* is *enum* backwards,
and *py* is
a common suffix for Python code. *munepy* is pronounced exactly the
same as
the delicious round chocolaty (if appearance indicates) pastry Moon
Pie, which
is best when consumed with an RC cola.
Why another Python enum implementation? 'Cause I like mine better. :)
Here's just a small example, from the documentation:
>>> from munepy import Enum
>>> class Colors(Enum):
... red = 1
... green = 2
... blue = 3
>>> print Colors.red
Colors.red
>>> Colors.red is Colors.red
True
>>> Colors.blue is Colors.blue
True
>>> Colors.red is not Colors.blue
True
>>> Colors.blue is Colors.red
False
>>> int(Colors.red)
1
>>> int(Colors.green)
2
>>> int(Colors.blue)
3
Download the package from the Cheeseshop:
http://cheeseshop.python.org/pypi/munepy
The source code is maintained under the Bazaar version control
system. You can access the code from here:
https://code.launchpad.net/munepy/
The project home is here:
https://launchpad.net/munepy/
Enjoy,
- -Barry
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
iQCVAwUBRoaJ3nEjvBPtnXfVAQLOnwQAshlhRB9+xSCeSxST2Qvj5lOmxNrBaAdX
Q7KbnChJxcIajoKTv0eQhT1cyNDmLriLkE0D1Wpv5T47PyXi0Li1D/SXDUvyubN+
mGFAh5KvlhBCzC+lBh31xvoxrGaHQM+3KTn3BmoBaVovsw7xzEzlWx2foAR5HvOz
QjAZEkZFEA0=
=PQu2
-----END PGP SIGNATURE-----
Hi All,
Pydev and Pydev Extensions 1.3.6 have been released
Details on Pydev Extensions: http://www.fabioz.com/pydev
Details on Pydev: http://pydev.sf.net
Details on its development: http://pydev.blogspot.com
Release Highlights in Pydev Extensions:
-----------------------------------------------------------------
* Bug-Fixes
Release Highlights in Pydev:
----------------------------------------------
* Bug Fix: Builtins were not correctly used after specifying interpreter
(so, the builtins would not be available in completions/code-analysis).
* Patch (from Carl Robinson): PyLint severities can now be specified.
What is PyDev?
---------------------------
PyDev is a plugin that enables users to use Eclipse for Python and Jython
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
ESSS - Engineering Simulation and Scientific Software
http://www.esss.com.br
Pydev Extensions
http://www.fabioz.com/pydev
Pydev - Python Development Enviroment for Eclipse
http://pydev.sf.nethttp://pydev.blogspot.com
Hi all,
It's been a few months since the previous release, but here goes Shed
Skin 0.0.22. The main focus of this release has been to add basic
support for building extension modules. To build an extension module,
simply use 'ss -e .. && make'.
A more complete changelog:
-support for generating simple extension modules (linux/windows; see README)
-dos text format fix (long overdue)
-improved detection of dynamic types (avoid hanging on them)
-improved overloading (__nonzero__, __int__, __abs__ etc.)
-add str(ing).{capitalize, capwords, swapcase, center, ato*)
-fix string.maketrans
-several other minor bug fixes
Please try out the new release and let me know if there are any problems,
Thanks,
Mark Dufour.
--
"One of my most productive days was throwing away 1000 lines of code"
- Ken Thompson
Hi all,
I've just uploaded bbfreeze 0.94.1 to python's cheeseshop.
bbfreeze creates standalone executables from python scripts. It's similar
in functionality to py2exe or cx_Freeze.
This version fixes a problem with the setup.py script and now installs the
patched modulegraph.
It offers the following features:
easy installation
bbfreeze can be installed with setuptools' easy_install command.
zip/egg file import tracking
bbfreeze tracks imports from zip files. Note that calls to setuptools'
pkg_resources.require will be replaced with a dummy implementation.
Calls to resource handling functions are *not* implemented, and
freezing packages using these features of pkg_resources will not be
possible without further work.
multiple script freezing
bbfreeze can freeze multiple scripts at once.
python interpreter included
bbfreeze will create an extra executable named 'py', which might be
used like the python executable itself.
bbfreeze works on windows and UNIX-like operating systems. It
currently does not work on OS X. bbfreeze has been tested with python
2.4 and 2.5. bbfreeze will not work with python versions prior to 2.3
as it uses the zipimport feature introduced with python 2.3.
Links
--------
cheese shop entry:
http://cheeseshop.python.org/pypi/
bbfreeze/<http://cheeseshop.python.org/pypi/bbfreeze/>
homepage:
http://systemexit.de/bbfreeze/
mercurial repository:
http://systemexit.de/repo/bbfreeze
Regards,
- Ralf
hachoir-regex is a Python library for regular expression (regex or
regexp) manupulation. You can use a|b (or) and a+b (and) operators.
Expressions are optimized during the construction: merge ranges,
simplify repetitions, etc. It also contains a class for pattern
matching allowing to search multiple strings and regex at the same
time.
Website: http://hachoir.org/wiki/hachoir-regex
Regex examples
==============
Different methods to create regex:
>>> from hachoir_regex import parse, createRange, createString
>>> createString("bike") + createString("motor")
<RegexString 'bikemotor'>
>>> parse('(foo|fooo|foot|football)')
<RegexAnd 'foo(|[ot]|tball)'>
>>> regex = createString("1") | createString("3"); regex
<RegexRange '[13]'>
>>> regex |= createRange("2", "4"); regex
<RegexRange '[1-4]'>
As you can see, you can use classic "a|b" (or) and "a+b" (and) Python
operators, and expressions are optimized for fast pattern matching.
Regex using repetition:
>>> parse("(a{2,}){3,4}")
<RegexRepeat 'a{6,}'>
>>> parse("(a*|b)*")
<RegexRepeat '[ab]*'>
>>> parse("(a*|b|){4,5}")
<RegexRepeat '(a+|b){0,5}'>
Compute minimum and maximum length of matched pattern:
>>> r=parse('(cat|horse)')
>>> r.minLength(), r.maxLength()
(3, 5)
>>> r=parse('(a{2,}|b+)')
>>> r.minLength(), r.maxLength()
(1, None)
Pattern maching
===============
Use PatternMaching if you would like to match multiple strings and
regex at the same time:
>>> from hachoir_regex import PatternMatching
>>> p = PatternMatching()
>>> p.addString("a")
>>> p.addString("b")
>>> p.addRegex("[cd]")
>>> for start, end, item in p.search("a b c d"):
... print "%s..%s: %s" % (start, end, item)
...
0..1: a
2..3: b
4..5: [cd]
6..7: [cd]
You can also attach user data to a pattern:
>>> p = PatternMatching()
>>> p.addString("un", 1)
>>> p.addString("deux", 2)
>>> for start, end, item in p.search("un deux"):
... print "%r at %s: userdata=%r" % (item, start, item.user)
...
<StringPattern 'un'> at 0: userdata=1
<StringPattern 'deux'> at 3: userdata=2
Download hachoir-regex on Python cheeseshop, it's distributed under
GNU GPL license.
Victor Stinner aka haypo
http://hachoir.org/
itools is a Python library, it groups a number of packages into a single
meta-package for easier development and deployment:
itools.catalog itools.i18n itools.tmx
itools.cms itools.ical itools.uri
itools.csv itools.odf itools.vfs
itools.datatypes itools.pdf itools.web
itools.gettext itools.rest itools.workflow
itools.handlers itools.rss itools.xhtml
itools.html itools.schemas itools.xliff
itools.http itools.stl itools.xml
The main focus of this release has been quality:
- The whole documentation has been updated and reviewed. Now we have a
+200 pages PDF, and the code behaves as it is documented.
- For the first time all unit tests are up-to-date. Check the README
file to learn how to run them.
- We have made a little round through the coding style, all modules are
lowercase now.
- The API has been flatten. This means that all functions, constants,
classes and exceptions of a package are available at the package's
root level (no need to go search a function in some module). Only
exception is "itools.cms", which is too big to have a flat API.
But this release brings also some big new features.
The new top-level package "itools.rest" provides a partial
implementation of ReStructured Text [1].
Another new top-level package, "itools.odf", provides support for the
Open Document Format [2]. Specifically the scripts igettext-extract and
igettext-build are able to work with ODF files, so they can be used to
assist a translator to translate a ODF document.
The index & search engine (package "itools.catalog") has been re-worked.
With some new features (like the possibility to define custom fields),
and a much friendlier programming interface. Check the documentation.
The implementation of the XML file handler has been radically changed.
It does not use anymore an element-tree to represent the handler's
state, but a list of events: start tag, end tag, text node, etc. (this
change has been inspired by Genshi [3]).
Other packages have seen minor changes either to the programming
interface or to the user interface. Most notably: itools.uri,
itools.vfs, itools.handlers, itools.gettext, itools.csv, itools.ical
and itools.cms.
Check the UPGRADE file for the details on how to update your code.
[1] http://docutils.sourceforge.net/rst.html
[2] http://en.wikipedia.org/wiki/OpenDocument
[3] http://genshi.edgewall.org/
Credits:
- Hervé Cauwelier implemented itools.rest and worked on itools.cms;
- Nicolas Deram refactored itools.ical and itools.cms.ical;
- J. David Ibáñez did about everything else;
- Henry Obein fixed a few bugs;
- Sylvain Taverne implemented itools.odf, fixed many bugs, updated
the French translation, and reviewed the documentation;
Resources
---------
Download
http://download.ikaaro.org/itools/itools-0.16.0.tar.gz
Home
http://www.ikaaro.org/itools
Mailing list
http://mail.ikaaro.org/mailman/listinfo/itools
Bug Tracker
http://bugs.ikaaro.org/
--
J. David Ibáñez
Itaapy <http://www.itaapy.com> Tel +33 (0)1 42 23 67 45
9 rue Darwin, 75018 Paris Fax +33 (0)1 53 28 27 88
I am pleased to announce the 0.2.0 version of PySWIP.
PySWIP is a GPL'd Python - SWI-Prolog bridge enabling to query SWI-
Prolog in your Python programs. It features an (incomplete) SWI-Prolog
foreign language interface, a utility class that makes it easy
querying with Prolog and also a Pythonic interface.
Since PySWIP uses SWI-Prolog as a shared library and ctypes to access
it, it doesn't require compilation to be installed.
Note that this version of PySWIP is slightly incompatible with prior
versions.
== Requirements ==
* Python 2.3 and higher.
* ctypes 1.0 and higher.
* SWI-Prolog 5.6.x and higher (most probably other versions will also
work).
* libpl as a shared library.
* Works on Linux and Win32, should work for all POSIX.
== News ==
* Prolog.query returns real Python datatypes.
* New Pythonic interface (See the last example).
* Several new examples, including Markus Triska's *Sudoku Solver*.
* Prolog module support.
* Foreign functions retrieve Python datatypes.
== Example (Using Prolog) ==
>>> from pyswip import Prolog
>>> prolog = Prolog()
>>> prolog.assertz("father(michael,john)")
>>> prolog.assertz("father(michael,gina)")
>>> list(prolog.query("father(michael,X)"))
[{'X': 'john'}, {'X': 'gina'}]
>>> for soln in prolog.query("father(X,Y)"):
... print soln["X"], "is the father of", soln["Y"]
...
michael is the father of john
michael is the father of gina
Since version 0.1.3 of PySWIP, it is possible to register a Python
function as a Prolog predicate through SWI-Prolog's foreign language
interface.
== Example (Foreign Functions) ==
from pyswip import Prolog, registerForeign
def hello(t):
print "Hello,", t
hello.arity = 1
registerForeign(hello)
prolog = Prolog()
prolog.assertz("father(michael,john)")
prolog.assertz("father(michael,gina)")
list(prolog.query("father(michael,X), hello(X)"))
Outputs:
Hello, john
Hello, gina
Since version 0.2, PySWIP contains a 'Pythonic' interface which allows
writing predicates in pure Python.
== Example (Pythonic interface) ==
from pyswip import Prolog, Functor, Variable, Query
assertz = Functor("assertz", 2)
father = Functor("father", 2)
call(assertz(father("michael","john")))
call(assertz(father("michael","gina")))
X = Variable()
q = Query(father("michael",X))
while q.nextSolution():
print "Hello,", X.value
Outputs:
Hello, john
Hello, gina
PySWIP homepage: http://code.google.com/p/pyswip
Downloads: http://code.google.com/p/pyswip/downloads/list
Subversion repo: http://pyswip.googlecode.com/svn/trunk
Discussion Group: http://groups.google.com/group/pyswip
Regards,
Yuce Tekol yucetekol [at] gmail [dot] com>
PyDAO is very thin object-relational mapper similar to Hibernate (but
much simpler). It's created to speed-up application development. It's
very simple, but powerful, based on POPO (Plain Old Python Objects).
http://aplikacja.info/PyDAO.html
Main features:
- can use any database that has DB-API interface (MySQLdb, psycopg
tested)
- can work without database at all (useful for early phases of
development)
- speeds up unit testing (dedicated in memory database)
What is not handled:
- automatic scheme generation
- separate query language
- automated handling of associations (replaced by filtering by
foreign keys)
Here's an example how to use PyDAO:
class User:
def __init__(self):
self.id = None
self.login = None
self.password = None
dao = pydao.InMemoryDao()
# filling database
user = User()
user.login = "user1"
user.password = "roh8OoPh"
dao.save(user)
# filtering based on example
userSearch = User()
userSearch.login = "user1"
userList = dao.list(userSearch)
# updating
user.password = "eew8Me8g"
dao.update(user)
Enjoy!
--
Dariusz Cieslak
http://aplikacja.info - custom software systems