We are pleased to introduce our final keynote speaker for EuroPython
2015: Mandy Waite. She will be giving her keynote on Friday, July 24.
About Mandy Waite
Mandy works at Google as a Developer Advocate for Google Cloud
Platform and to make the world a better place for developers building
applications for the Cloud:
“I came to Google from Sun Microsystems where I worked with partners
on performance and optimisation of large scale applications and
services before moving on to building an ecosystem of Open Source
applications for OpenSolaris. In my spare time I’m learning Japanese
and play the guitar.”
The Keynote: So, I have all these Docker containers, now what?
You’ve solved the issue of process-level reproducibility by packaging
up your apps and execution environments into a number of Docker
containers. But once you have a lot of containers running, you’ll
probably need to coordinate them across a cluster of machines while
keeping them healthy and making sure they can find each other. Trying
to do this imperatively can quickly turn into an unmanageable mess!
Wouldn’t it be helpful if you could declare to your cluster what you
want it to do, and then have the cluster assign the resources to get
it done and to recover from failures and scale on demand?
Kubernetes (http://kubernetes.io) is an open source, cross platform
cluster management and container orchestration platform that
simplifies the complex tasks of deploying and managing your
applications in Docker containers. You declare a desired state, and
Kubernetes does all the work needed to create and maintain it. In this
talk, we’ll look at the basics of Kubernetes and at how to map common
applications to these concepts. This will include a hands-on
demonstration and visualization of the steps involved in getting an
application up and running on Kubernetes.
EuroPython 2015 Team
We just released devpi-server-2.2.2, devpi-web-2.4.0 and devpi-client-2.3.0,
core parts of the private pypi package management and testing system.
Among the highlights are support for distributed testing with "devpi test --detox",
new status pages at "/+status" for replica and master sites and support for
configuring upload formats when running "devpi upload".
None of the changes require an export/import cycle on the server side if
you used devpi-server-2.2.X before. However, please read the respective
changelog entries below for some notes and potentially
backward-incompatible changes. See the home page for docs and tutorials:
Holger Krekel and Florian Schulze
- make replica thread more robust by catching more exceptions
- Remove duplicates in plugin version info
- track timestamps for event processing and replication and expose in /+status
- implement devpiweb_get_status_info hook for devpi-web >= 2.4.0 status messages
- UPGRADE NOTE: if devpi-web is installed, you have to request
``application/json`` for ``/+status``, or you might get a html page.
- address issue246: refuse uploading release files if they do not
contain the version that was transferred with the metadata of
the upload request.
- fix issue248: prevent change of index type after creation
- macros.pt: Add autofocus attribute to search field
- macros.pt and style.css: Moved "How to search?" to the right of the search
button and adjusted width of search field accordingly.
- fix issue244: server status info
- added support for status message plugin hook ``devpiweb_get_status_info``
- macros.pt: added macros ``status`` and ``statusbadge`` and placed them
below the search field.
- added status.pt: shows server status information
- toxresults.pt: fix missing closing ``div`` tag.
- fix issue247: possible password leakage to log in devpi-client
- new experimental "-d|--detox" option to run tests via the "detox" distributed testing
tool instead of "tox" which runs test environments one by one.
- address issue246: make sure we use vcs-export also for building docs (and
respect --no-vcs for all building activity)
- address issue246: copy VCS repo dir to temporary upload dir to help
with setuptools_scm. Warn if VCS other than hg/git are used because
we don't copy the repo in that case for now and thus cause incompatibility
- (new,experimental) read a "[devpi:upload]" section from a setup.cfg file
with a "formats" setting that will be taken if no "--formats" option
is specified to "devpi upload". This allows to specify the default
artefacts that should be created along with a project's setup.cfg file.
Also you can use a ``no-vcs = True`` setting to induce the ``--no-vcs``
I've just released version 0.2.1 of distlib on PyPI . For newcomers,
distlib is a library of packaging functionality which is intended to be
usable as the basis for third-party packaging tools.
The main changes in this release are as follows:
Fixed issue #58: Return a Distribution instance or None from locate().
Fixed issue #59: Skipped special keys when looking for versions.
Improved behaviour of PyPIJSONLocator to be analogous to that of other
Added resource iterator functionality.
Fixed issue #71: Updated launchers to decode shebangs using UTF-8.
This allows non-ASCII pathnames to be correctly handled.
Ensured that the executable written to shebangs is normcased.
Changed ScriptMaker to work better under Jython.
Changed the mode setting method to work better under Jython.
Changed get_executable() to return a normcased value.
Handled multiple-architecture wheel filenames correctly.
A more detailed change log is available at .
Please try it out, and if you find any problems or have any suggestions for
improvements, please give some feedback using the issue tracker! 
* New search page for Python contents
* Text-searches using a Lucene index allows for fast matches.
* Matches can be flattened and grouped by project, folders and modules.
* Results page allows additional filtering based on module name.
* Further improvements on code completion unpacking compound types.
* Not adding auto 'import' token in cython files (to accept cimport).
* PyDev Mylyn integration no longer depends on a specific PyDev release.
* Fixed halting condition when unable to create native file watches.
* Vertical indent guide no longer slows down the editor on Linux
What is PyDev?
PyDev is an open-source Python IDE on top of Eclipse for Python, Jython and
It comes with goodies such as code completion, syntax highlighting, syntax
analysis, code analysis, refactor, debug, interactive console, etc.
Details on PyDev: http://pydev.org
Details on its development: http://pydev.blogspot.com
What is LiClipse?
LiClipse is a PyDev standalone with goodies such as support for Multiple
cursors, theming, TextMate bundles and a number of other languages such as
It's also a commercial counterpart which helps supporting the development
Details on LiClipse: http://www.liclipse.com/
PyDev - Python Development Environment for Eclipse
PyVmMonitor - Python Profiler
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.20.tar.gz
$ sha1sum python-ldap-2.4.20.tar.gz
$ sha256sum python-ldap-2.4.20.tar.gz
Released 2.4.20 2015-07-07
Changes since 2.4.19:
* New wrapping of OpenLDAP's function ldap_sasl_bind_s() allows
to intercept the SASL handshake (thanks to René Kijewski)
* Added exceptions ldap.VLV_ERROR, ldap.X_PROXY_AUTHZ_FAILURE and
* Abandoned old syntax when raising ValueError in modules ldif and
ldapurl, more information in some exceptions.
New convenience methods for SASL GSSAPI or EXTERNAL binds
* Refactored parts in ldif.LDIFParser:
- New class attributes line_counter and byte_counter contain
amount of LDIF data read so far
- Renamed some internally used methods
- Added support for parsing change records currently limited to
- New separate methods parse_entry_records() (also called by parse())
- Stricter order checking of dn:, changetype:, etc.
- Removed non-existent 'AttrTypeandValueLDIF' from ldif.__all__
* New mix-in class ldap.controls.openldap.SearchNoOpMixIn
adds convience method noop_search_st() to LDAPObject class
* Added new modules which implement the control classes
for Virtual List View (see draft-ietf-ldapext-ldapv3-vlv) and
Server-side Sorting (see RFC 2891) (thanks to Benjamin Dauvergne)
Note: This is still experimental! Even the API can change later.
On behalf of the Bokeh team, I am excited to announce the release of
version 0.9.1 of Bokeh, an interactive web plotting library for Python...
and other languages!
This release focused on extending Bokeh’s new callback system by adding
more places where callbacks can be used, expanding and improving the new
User’s Guide, exposing better ways to embed Bokeh plots and widgets into
your own layouts, and providing validation error and warning feedback to
Some of the highlights are:
* New callbacks options for hover, selection, and range updates
* Documentation for widgets and new callbacks in the User’s Guide
* Much more flexible embed.components that can embed multiple objects
* Implemented a validation framework to provide errors and warnings
* More than 30 smaller bugfixes
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 Binstar main channel with:
*conda install -c bokeh bokeh*
Alternatively, you can also install it with pip:
*pip install bokeh*
available by CDN at:
Additionally, BokehJS is also installable with the Node Package Manager at
Issues, enhancement requests, and pull requests can be made on the Bokeh
Github page: https://github.com/bokeh/bokeh
Questions can be directed to the Bokeh mailing list: bokeh(a)continuum.io
On behalf of the Python development community and the Python 3.5 release
team, I'm relieved to announce the availability of Python 3.5.0b3.
Python 3.5 has now entered "feature freeze". By default new features
may no longer be added to Python 3.5.
This is a preview release, and its use is not recommended for production
An important reminder for Windows users about Python 3.5.0b3: if
installing Python 3.5.0b2 as a non-privileged user, you may need to
escalate to administrator privileges to install an update to your C
You can find Python 3.5.0b2 here:
PySkipList is a fast, pure Python implementation of an indexable skiplist. It
implements a SkipList data structure that provides an always sorted,
list-like data structure for (key, value) pairs. It efficiently supports the
* Insert a pair in the list, maintaining sorted order.
* Find the value of a given key.
* Remove a given pair based on a key.
* Iterate over all pairs in sorted order.
* Find the position of a given key.
* Access a pair at a certain position.
* Delete a pair at a certain position.
This implementation uses a novel (as far as I know) technique where it stores
just a single link width per node, and only in nodes with level > 0. The link
corresponds to the number of nodes skipped by the highest incoming link. Other
implementations that I've seen all store a width for every link. This approach
saves a lot of memory. The overhead should just be 1/e (0.37) integers per
node. It makes an indexable skiplist almost as memory efficient as its
Performance wise, it does around 77K searches per second on 100K nodes,
and has an overhead at this node count of about 106 bytes per node.
Available on PyPI as "pyskiplist" and Github at: