It is my pleasure to announce the first version of the *searchstringparser*
package (0.2.3) on pypi. It currently contains a PLY (Python Lex-Yacc) based
implementation of a general lexer and PostgreSQL specific parser. The parser
translates general search queries that users might expect to be able to
in a search form into strings that implement the correct logic for the
PostgreSQL full text search functions tsquery and to_tsquery.
The package is BSD licensed and you can get a full overview of the package
It is hosted on github and is fully integrated with Travis, AppVeyor, and
Coveralls using py.test and tox. Feedback, bug reports, parser suggestions,
forks of the project are welcome!
0.2.3</a> - Parse a more general search syntax to conform with a particular
SQL dialect. (29-Sep-15)</p>
Just 11 days after 2.8 hit PyPI we published pytest-2.8.1 which fixes a
host of regressions and bugs, see the changelog excerpt below. Docs are
also freshly generated at http://pytest.org including a streamlined PDF.
Note that the pytest team now follows more SEMVER style versioning
which currently means that you can expect bugfixes with 2.8.X and new
features with 2.9.0 and planned incompatibilities with 3.0.
Many thanks to the PR contributors and mergers of 2.8.1:
- fix #1034: Add missing nodeid on pytest_logwarning call in
addhook. Thanks Simon Gomizelj for the PR.
- 'deprecated_call' is now only satisfied with a DeprecationWarning or
PendingDeprecationWarning. Before 2.8.0, it accepted any warning, and 2.8.0
made it accept only DeprecationWarning (but not PendingDeprecationWarning).
Thanks Alex Gaynor for the issue and Eric Hunsberger for the PR.
- fix issue #1073: avoid calling __getattr__ on potential plugin objects.
This fixes an incompatibility with pytest-django. Thanks Andreas Pelme,
Bruno Oliveira and Ronny Pfannschmidt for contributing and Holger Krekel
for the fix.
- Fix issue #704: handle versionconflict during plugin loading more
gracefully. Thanks Bruno Oliveira for the PR.
- Fix issue #1064: ""--junitxml" regression when used with the
"pytest-xdist" plugin, with test reports being assigned to the wrong tests.
Thanks Daniel Grunwald for the report and Bruno Oliveira for the PR.
- (experimental) adapt more SEMVER style versioning and change meaning of
master branch in git repo: "master" branch now keeps the bugfixes, changes
aimed for micro releases. "features" branch will only be be released
with minor or major pytest releases.
- Fix issue #766 by removing documentation references to distutils.
Thanks Russel Winder.
- Fix issue #1030: now byte-strings are escaped to produce item node ids
to make them always serializable.
Thanks Andy Freeland for the report and Bruno Oliveira for the PR.
- Python 2: if unicode parametrized values are convertible to ascii, their
ascii representation is used for the node id.
- Fix issue #411: Add __eq__ method to assertion comparison example.
Thanks Ben Webb.
- fix issue 877: properly handle assertion explanations with non-ascii repr
Thanks Mathieu Agopian for the report and Ronny Pfannschmidt for the PR.
- fix issue 1029: transform errors when writing cache values into pytest-warnings
Pythenv runs a Python script creating a virtualenv on the fly. Requirements may be passed as a requirements file or embedded in the Python script in a dedicated comment:
# requirements: foo==1.2.3, bar
This project is on Github:
On behalf of the *Bokeh team*, I am excited to announce the release of
version *0.10.0* of *Bokeh*, an interactive web plotting library for
Python... and other languages!
This release was focused into provide several new features such as webgl
support, a new refactored and more powerful chart interface and responsive
plots. But we are also shipping a lot of bug-fixes and enhancements in our
documentation, testing and build machineries and examples.
Some of the highlights from this release are:
* Initial webgl support (check our new examples: maps city, iris blend,
scatter 10K, clustering.py)
* New charts interface supporting aggregation (see our new Bars, BoxPlot,
Histogram and Scatter examples)
* Responsive plots
* Lower-level jsresources & cssresources (allow more subtle uses of
* Several test machinery fixes
* Several build machinery enhancements
* More pytest-related fixes and enhancements
* More docs fixes and enhancements
* Now the glyph methods return the glyph renderer (not the plot)
* Gmap points moves consistently
* Added alpha control for imageurl objects
* Removed python33 testing and packaging
* Removed multiuserblazeserver
See the CHANGELOG <https://github.com/bokeh/bokeh/blob/master/CHANGELOG>
for full details.
If you are using Anaconda/miniconda, you can install it with conda:
*conda install bokeh*
or directly from our Anaconda Cloud main channel with:
*conda install -c bokeh bokeh*
Alternatively, you can also install it with pip:
*pip install bokeh*
is available by CDN at:
Additionally, *BokehJS* is also installable with the Node Package Manager
Issues, enhancement requests, and pull requests can be made on the *Bokeh*
Github page: https://github.com/bokeh/bokeh
Documentation is available at http://bokeh.pydata.org/en/0.10.0
Questions can be directed to the *Bokeh* mailing list: bokeh(a)continuum.io
We also have a new "*general*" channel available at Slack:
*Note*: This is an *unsupported* place where users can congregate and
self-support or share experiences.
The *supported* place by default is the Bokeh mailing list.
*+5492215345134 | cell (ARG)*
Thespian version 2.2.0 has been released.
This version contains initialization updates with better control of logging and the ability to specify a transientUnique ActorSystem startup. In addition, better control over logging output and multiple registrations for convention notifications are now supported.
Release notes are available at http://godaddy.github.io/Thespian/doc/releases.html.
I am happy to announce the availability of a new version of winpysetup
changes in this version:
- added 3.5 and VisualStudio 2015 Community edition. Both are for post
XP windows versions only. Be forewarned that VisualStudio can take a
long time downloading updates it needs on a clean Windows 7, all the
more reason to use winpysetup.
version 1.2 dd 2015-09-27
Winpysetup ( https://bitbucket.org/ruamel/winpysetup/ ) allows setting
up a clean testing environment on Windows for multiple python versions
without downloading and installing MSI installers, prerequisites,
yourself, all the time waiting for the last to finish in order to click
a few options to start the next install.
Winpysetup makes it trivial to install both 64- and 32-bit versions of
the same Python version. Because tox-globinterpreter is installed as
well, all these versions can be found and used on one machine.
- install Windows (or clone your clean Windows Virtual Machine)
- Download winpysetup.exe and start it.
( https://bitbucket.org/ruamel/winpysetup/downloads/winpysetup.exe )
- Once the program is done (now is a good time to make another snapshot
if you run Windows in a VM), open a new Command Prompt (to get the
change in PATH) and change to a directory without spaces in the path
- Run: hg clone --insecure https://email@example.com/ruamel/minimal
- Change to the directory "minimal" and run tox.
- Watch how tox invokes py.test succesfully against Python
2.7/3.5/3.4/3.3/2.6 and pypy (you can of course run tox immediately on
your own, more interesting, code as well).
Installed items include: pip (latest version even if older version is
included in the installed python version), easy_install, mercurial, tox,
detox, py.test and the Visual C compiler for Python 2.7 (e.g. needed for
mercurial) and the other Pythons versions.
Special hooks can change the behaviour of the installer. In particular:
- the list of python versions to install can be easily extended/reduced
- the list of default packages to install can be extended/reduced
- already downloaded packages (Python, VisualStudio) can be cached.
To both cache downloads, and install 32 bit versions on a 64 bit system,
create a file pre_winpysetup.py next to your winpysetup.exe file before
starting the latter:
def _download_url(self, url, path=None, base_name=None):
"""download a url if it is not yet in the cache """
print 'url', url
if cache and not os.path.exists(cache):
cache = None
if path is None:
path = self._msi_dir
if base_name is None:
base_name = os.path.basename(url)
full_name = os.path.join(cache, base_name)
full_name = os.path.join(path, base_name)
if not os.path.exists(full_name):
print 'retrieving', base_name, '...'
data = urllib2.urlopen(url).read()
fp = open(full_name, 'wb')
self.versions = self.versions[:-1] + [
] + [self.versions[-1]]
def main(verbose, installer):
print 'loading winpysetup_pre'
installer._download_url = _download_url
installer.pre_versions = pre_versions
Winpysetup has been used to setup the 2.3 environment to create
the winpysetup.exe (so it will run on a clean Windows XP install).
Winpysetup is used to generate the wheel files for ruamel.ordereddict
It has been tested on:
WinXP with Service Pack 2 (32 and 64 bit)
Windows 7 (32 and 64 bit)
Feedback (avdn(a)europython.eu or via bitbucket) is welcome, in particular
if tested on other Windows environments to which I currently don't have
vulture - Find dead code
Vulture finds unused classes, functions and variables in your code.
This helps you cleanup and find errors in your programs. If you run it
on both your library and test suite you can find untested code.
Due to Python's dynamic nature, static code analyzers like vulture are
likely to miss some dead code. Also, code that is only called
implicitly may be reported as unused. Nonetheless, vulture can be a
very helpful tool for achieving high code quality.
* fast: uses static code analysis
* lightweight: only one module
* tested: tests itself and has 100% test coverage
* complements *pyflakes* and has the same output syntax
* supports Python 2.6, 2.7 and 3.x
* Exit with exitcode 1 if path on commandline can't be found.
* Test vulture with vulture.
* Add tests that run vulture as a script.
* Add "python setup.py test" command for running tests.
* Add support for tox.
* Raise test coverage to 100%.
* Remove ez_setup.py.
A new version of the Python module which wraps GnuPG has been
This is an enhancement and bug-fix release, and all users are encouraged to upgrade.
See the project website  for more information.
* Fixed #22: handled PROGRESS messages during verification and signing.
* Fixed #26: handled PINENTRY_LAUNCHED messages during verification,
decryption and key generation.
* Fixed #28: Allowed a default Name-Email to be computed even when neither of
LOGNAME and USERNAME are in the environment.
* Fixed #29: Included test files missing from the tarball in previous versions.
* Fixed #39: On Python 3.x, passing a text instead of a binary stream caused
file decryption to hang due to a UnicodeDecodeError. This has now been
correctly handled: The decryption fails with a "no data" status.
* Fixed #41: Handled Unicode filenames correctly by encoding them on 2.x using
the file system encoding.
* Fixed #43: handled PINENTRY_LAUNCHED messages during key export. Thanks to
Ian Denhardt for looking into this.
* Hide the console window which appears on Windows when gpg is spawned.
Thanks to Kévin Bernard-Allies for the patch.
* Subkey fingerprints are now captured.
* The returned value from the list_keys method now has a new attribute,
key_map, which is a dictionary mapping key and subkey fingerprints to
the corresponding key's dictionary. With this change, you don't need to
iterate over the (potentially large) returned list to search for a key with
a given fingerprint - the key_map dict will take you straight to the key
info, whether the fingerprint you have is for a key or a subkey. Thanks to
Nick Daly for the initial suggestion.
This release  has been signed with my code signing key:
Vinay Sajip (CODE SIGNING KEY) <vina...(a)yahoo.co.uk>
Fingerprint: CA74 9061 914E AC13 8E66 EADB 9147 B477 339A 9B86
However, due to some error the signature for the source distribution (.tar.gz)
didn't get uploaded. To rectify this, I have pasted it into the PyPI page for
the release .
What Does It Do?
The gnupg module allows Python programs to make use of the
functionality provided by the Gnu Privacy Guard (abbreviated GPG or
GnuPG). Using this module, Python programs can encrypt and decrypt
data, digitally sign documents and verify digital signatures, manage
(generate, list and delete) encryption keys, using proven Public Key
Infrastructure (PKI) encryption technology based on OpenPGP.
This module is expected to be used with Python versions >= 2.4, as it
makes use of the subprocess module which appeared in that version of
Python. This module is a newer version derived from earlier work by
Andrew Kuchling, Richard Jones and Steve Traugott.
A test suite using unittest is included with the source distribution.
>>> import gnupg
>>> gpg = gnupg.GPG(gnupghome='/path/to/keyring/directory')
'uids': ['', 'Gary Gross (A test user) <gary.gr... at gamma.com>']},
'uids': ['', 'Danny Davis (A test user) <danny.da... at delta.com>']}]
>>> encrypted = gpg.encrypt("Hello, world!", ['0C5FEFA7A921FC4A'])
'-----BEGIN PGP MESSAGE-----\nVersion: GnuPG v1.4.9 (GNU/Linux)\n
-----END PGP MESSAGE-----\n'
>>> decrypted = gpg.decrypt(str(encrypted), passphrase='secret')
>>> signed = gpg.sign("Goodbye, world!", passphrase='secret')
>>> verified = gpg.verify(str(signed))
>>> print "Verified" if verified else "Not verified"
As always, your feedback is most welcome (especially bug reports ,
patches and suggestions for improvement, or any other points via the
mailing list/discussion group ).
Red Dove Consultants Ltd.
Find a new release of python-ldap:
python-ldap provides an object-oriented API to access LDAP directory
servers from Python programs. It mainly wraps the OpenLDAP 2.x libs for
that purpose. Additionally it contains modules for other LDAP-related
stuff (e.g. processing LDIF, LDAP URLs and LDAPv3 schema).
Project's web site:
$ md5sum python-ldap-2.4.21.tar.gz
$ sha1sum python-ldap-2.4.21.tar.gz
$ sha256sum python-ldap-2.4.21.tar.gz
Released 2.4.21 2015-09-25
Changes since 2.4.20:
* LDAPObject.read_s() now returns None instead of raising
ldap.NO_SUCH_OBJECT in case the search operation returned emtpy result.
* ldap.resiter.ResultProcessor.allresults() now takes new key-word
argument add_ctrls which is internally passed to LDAPObject.result4()
and lets the method also return response control along with the search
* Added ldap.controls.deref implementing support for dereference control
* Unit tests for module ldif (thanks to Petr Viktorin)