Introduction to Django
======================
What: An hands-on introduction to Django
When: November 4 - 6, 2013
Where: Python Academy, Leipzig, Germany
Who: Markus Zapke-Gründemann
Details: http://www.python-academy.com/courses/django_course_introduction.html
Django is a very popular web framework for Python. This course offers
a structured introduction based on the experience from many Django
projects of the trainer. Do you want to get up to speed with Django
fast? Than this course is for you. Learn best practices and how to
use the rich tool sets Python and Django offer to develop professional,
performant and maintainable web applications.
If you already have good Django knowledge and would like to learn
even more, we recommend or "Advanced Django" training [1]
November 7 - 9, 2013. Since both courses are offered back-to-back,
you have the chance to attend a six-day Django immersion.
The course is offered in Leipzig, Germany. This city has about half
a million inhabitants and provides a very rich cultural life.
It was the home of the first two PyCon DE conferences in 2011 and 2012.
The teaching location can be easily reached via car or public
transportation. Leipzig is very well connected to the German Autobahn
and railway systems. The airport is only 15 taxi minutes away from the
training location. There are plenty of reasonably priced hotels nearby.
We offer this course also in German:
http://www.python-academy.de/Kurse/django_kurs_einstieg.html
[1] http://www.python-academy.com/courses/django_course_advanced.html

This announcement is in German because the training is offered
in German. We do offer an English version [1].
Django für Fortgeschrittene
===========================
Was: Tiefes Eintauschen in Django
Wann: 6. - 8. Juni 2013
Wo: Python Academy, Leipzig
Wer: Markus Zapke-Gründemann
Details: http://www.python-academy.de/Kurse/django_kurs_fortgeschrittene.html
Sie nutzen Django und wollen mehr darüber wissen? Dann können Sie
in diesem Kurs tief in fortgeschrittene Konzepte einsteigen. Der
Kurs wird Ihnen helfen bessere Anwendungen schneller zu entwickeln.
Wenn Sie Django noch nicht nutzen und mit den Grundlagen nicht
vertraut sind, empfehlen wir unseren Kurs "Einstieg in Django" [2].
Dieser Kurs vom 3. bis 5. Juni liegt direkt vor dem Kurs für
Fortgeschrittene, so dass Sie die Möglichkeit haben sechs Tage
Django-Total zu genießen.
Der Kurs findet in Leipzig statt, das ein sehr reiches kulturelles
Leben bietet. Leipzig war Gastgeber der ersten beiden PyCon DE
Konferenzen 2011 und 2012. Leipzig ist sehr gut mit dem Auto und
mit öffentlichen Verkehrsmitteln zu erreichen. Das Schulungszentrum
ist jeweils eine nur Viertelstunde vom Hauptbahnhof oder Flughafen
entfernt und von der Autobahnabfahrt sind es nur wenige Minuten
bis zu uns. Leipzig bietet reichlich gute Hotels zu sehr moderaten
Preisen.
Der gleiche Kurs ist auch in englischer Sprache verfügbar [1].
[1] http://www.python-academy.com/courses/django_course_advanced.html
[2] http://www.python-academy.de/Kurse/django_kurs_einstieg.html

This announcement is in German because the training is offered
in German. We do offer an English version [1].
Einstieg in Django
==================
Was: Praktischer Einstieg in die Entwicklung von Web-Anwendungen mit Django
Wann: 3. - 5. Juni 2013
Wo: Python Academy, Leipzig
Wer: Markus Zapke-Gründemann
Details: http://www.python-academy.de/Kurse/django_kurs_einstieg.html
Django ist ein sehr beliebtes Framework für die Entwicklung von
Webanwendungen mit Python. In diesem Kurs lernen die Teilnehmer alle
Grundlagen von Django von unserem erfahrenen Django-Trainer.
Möchten Sie schnell gute Django-Anwendungen schreiben? Dann ist
das der richtige Kurs für Sie. Erlernen Sie Best Practices und
wie Sie die vielen Werkzeuge rund um Python und Django effektiv
für die Entwicklung professioneller, performanter und wartbarer
Web-Anwendungen nutzen.
Wenn Sie Django schon nutzen und mit den Grundlagen vertraut sind,
empfehlen wir unseren Kurs "Django für Fortgeschrittene" [2].
Dieser schließt sich direkt vom 6. bis 8. Juni an, so dass Sie
die Möglichkeit haben sechs Tage Django-Total zu genießen.
Der Kurs findet in Leipzig statt, das ein sehr reiches kulturelles
Leben bietet. Leipzig war Gastgeber der ersten beiden PyCon DE
Konferenzen 2011 und 2012. Leipzig ist sehr gut mit dem Auto und
mit öffentlichen Verkehrsmitteln zu erreichen. Das Schulungszentrum
ist jeweils eine nur Viertelstunde vom Hauptbahnhof oder Flughafen
entfernt und von der Autobahnabfahrt sind es nur wenige Minuten
bis zu uns. Leipzig bietet reichlich gute Hotels zu sehr moderaten
Preisen.
Der gleiche Kurs ist auch in englischer Sprache verfügbar [1].
[1] http://www.python-academy.com/courses/django_course_introduction.html
[2] http://www.python-academy.de/Kurse/django_kurs_fortgeschrittene.html

Professional Testing with pytest and tox
========================================
What: An in-depth pytest and tox course
When: June 24 - 26, 2013
Where: Python Academy, Leipzig, Germany
Who: Holger Krekel
Details:
http://www.python-academy.com/courses/specialtopics/python_course_testing.h…
You always write tests for your code, even before you write the
code itself, right? If yes, than you can learn how to do this with
the help of pytest [1] and tox [2]. These smart Python tools help you
to make your tests better. If you don't write tests yet, you can learn
how to do this on a professional level right from the beginning.
Join Holger Krekel, the author of pytest and tox, when he explains
how to integrate testing and deployment using real-world examples.
Learn what it means to do pythonic testing by taking advantage of
Python's philosophy to make simple things simple and complex things
possible. Bring your own problems to be discussed in the course.
The course is offered in Leipzig, Germany. This city has about half
a million inhabitants and provides a very rich cultural life.
It was the home of the first two PyCon DE conferences in 2011 and 2012.
The teaching location can be easily reached via car or public
transportation. Leipzig is very well connected to the German Autobahn
and railway systems. The airport is only 15 taxi minutes away from the
training location. There are plenty of reasonably priced hotels nearby.
[1] http://pytest.org/latest/
[2] http://codespeak.net/tox/

Twisted Training
================
What: An in-depth Twisted course
When: September 9 - 11, 2013
Where: Python Academy, Leipzig, Germany
Who: Laurens Van Houtven
Details:
http://www.python-academy.com/courses/specialtopics/python_course_twisted.h…
Twisted [1] is a powerful framework to develop network applications
of all kinds. Since the way it works is somewhat different from
the typical Python programming style, it might not be that easy to
take full advantage of all the power that comes with Twisted.
This course gives a solid introduction and takes you deep into the
land of deferreds, callbacks and events. Learn from the Twisted
committer Laurens Van Houtven how to integrate Twisted into
existing, non-Twisted applications. Inherited some Twisted code
and feel kind of lost? This training will help you to understand
what is going on.
The course is offered in Leipzig, Germany. This city has about half
a million inhabitants and provides a very rich cultural life.
It was the home of the first two PyCon DE conferences in 2011 and 2012.
The teaching location can be easily reached via car or public
transportation. Leipzig is very well connected to the German Autobahn
and railway systems. The airport is only 15 taxi minutes from the
training location. There are plenty of reasonably priced hotels nearby.
[1] http://twistedmatrix.com/

Hi,
I'm releasing my first attempt to cross compile python on android using
a simple makefile based build system:
https://bitbucket.org/cavallo71/android
As side effect it can also build on a gcc based system as (linux so far).
The attempt was started in order to simplify the build system and cross
compiling modules. In future the hope is to remove distutils package and
clear other modules (notably sysconfig.py and site.py).
Thanks
Antonio

Hello,
pyPEG 2.10 is a maintenance release. Now optional attributes are
supported by the XML backend. There are several bugfixes.
pyPEG 2 for Python 2.7 and 3.x
Python is a nice scripting language. It even gives you access to its own
parser and compiler. It also gives you access to different other parsers
for special purposes like XML and string templates.
But sometimes you may want to have your own parser. This is what's pyPEG
for. And pyPEG supports Unicode.
The source code for all you can find on bitbucket:
https://bitbucket.org/fdik/pypeg/
To build the documentation, you'll need YML 2. You can download YML
here:
Homepage: http://fdik.org/yml/ Toolchain: http://fdik.org/yml2.tar.bz2
pyPEG 2 depends on lxml, see http://lxml.de/
Yours,
VB.
--
“Wer also seinen Anwendern Übles will, sollte unbedingt die Einführung von
Windows 8 in Produktivumgebungen forcieren.”
Susanne Nolte in der iX

Hi,
I'm pleased to announce the availability of the final release of
NumPy 1.7.0.
Sources and binary installers can be found at
https://sourceforge.net/projects/numpy/files/NumPy/1.7.0/
This release is equivalent to the 1.7.0rc2 release, since no more problems
were found. For release notes see below.
I would like to thank everybody who contributed to this release.
Cheers,
Ondrej
=========================
NumPy 1.7.0 Release Notes
=========================
This release includes several new features as well as numerous bug fixes and
refactorings. It supports Python 2.4 - 2.7 and 3.1 - 3.3 and is the last
release that supports Python 2.4 - 2.5.
Highlights
==========
* ``where=`` parameter to ufuncs (allows the use of boolean arrays to choose
where a computation should be done)
* ``vectorize`` improvements (added 'excluded' and 'cache' keyword, general
cleanup and bug fixes)
* ``numpy.random.choice`` (random sample generating function)
Compatibility notes
===================
In a future version of numpy, the functions np.diag, np.diagonal, and the
diagonal method of ndarrays will return a view onto the original array,
instead of producing a copy as they do now. This makes a difference if you
write to the array returned by any of these functions. To facilitate this
transition, numpy 1.7 produces a FutureWarning if it detects that you may
be attempting to write to such an array. See the documentation for
np.diagonal for details.
Similar to np.diagonal above, in a future version of numpy, indexing a
record array by a list of field names will return a view onto the original
array, instead of producing a copy as they do now. As with np.diagonal,
numpy 1.7 produces a FutureWarning if it detects that you may be attempting
to write to such an array. See the documentation for array indexing for
details.
In a future version of numpy, the default casting rule for UFunc out=
parameters will be changed from 'unsafe' to 'same_kind'. (This also applies
to in-place operations like a += b, which is equivalent to np.add(a, b,
out=a).) Most usages which violate the 'same_kind' rule are likely bugs, so
this change may expose previously undetected errors in projects that depend
on NumPy. In this version of numpy, such usages will continue to succeed,
but will raise a DeprecationWarning.
Full-array boolean indexing has been optimized to use a different,
optimized code path. This code path should produce the same results,
but any feedback about changes to your code would be appreciated.
Attempting to write to a read-only array (one with ``arr.flags.writeable``
set to ``False``) used to raise either a RuntimeError, ValueError, or
TypeError inconsistently, depending on which code path was taken. It now
consistently raises a ValueError.
The <ufunc>.reduce functions evaluate some reductions in a different order
than in previous versions of NumPy, generally providing higher performance.
Because of the nature of floating-point arithmetic, this may subtly change
some results, just as linking NumPy to a different BLAS implementations
such as MKL can.
If upgrading from 1.5, then generally in 1.6 and 1.7 there have been
substantial code added and some code paths altered, particularly in the
areas of type resolution and buffered iteration over universal functions.
This might have an impact on your code particularly if you relied on
accidental behavior in the past.
New features
============
Reduction UFuncs Generalize axis= Parameter
-------------------------------------------
Any ufunc.reduce function call, as well as other reductions like sum, prod,
any, all, max and min support the ability to choose a subset of the axes to
reduce over. Previously, one could say axis=None to mean all the axes or
axis=# to pick a single axis. Now, one can also say axis=(#,#) to pick a
list of axes for reduction.
Reduction UFuncs New keepdims= Parameter
----------------------------------------
There is a new keepdims= parameter, which if set to True, doesn't throw
away the reduction axes but instead sets them to have size one. When this
option is set, the reduction result will broadcast correctly to the
original operand which was reduced.
Datetime support
----------------
.. note:: The datetime API is *experimental* in 1.7.0, and may undergo changes
in future versions of NumPy.
There have been a lot of fixes and enhancements to datetime64 compared
to NumPy 1.6:
* the parser is quite strict about only accepting ISO 8601 dates, with a few
convenience extensions
* converts between units correctly
* datetime arithmetic works correctly
* business day functionality (allows the datetime to be used in contexts where
only certain days of the week are valid)
The notes in `doc/source/reference/arrays.datetime.rst
<https://github.com/numpy/numpy/blob/maintenance/1.7.x/doc/source/reference/…>`_
(also available in the online docs at `arrays.datetime.html
<http://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_) should be
consulted for more details.
Custom formatter for printing arrays
------------------------------------
See the new ``formatter`` parameter of the ``numpy.set_printoptions``
function.
New function numpy.random.choice
---------------------------------
A generic sampling function has been added which will generate samples from
a given array-like. The samples can be with or without replacement, and
with uniform or given non-uniform probabilities.
New function isclose
--------------------
Returns a boolean array where two arrays are element-wise equal within a
tolerance. Both relative and absolute tolerance can be specified.
Preliminary multi-dimensional support in the polynomial package
---------------------------------------------------------------
Axis keywords have been added to the integration and differentiation
functions and a tensor keyword was added to the evaluation functions.
These additions allow multi-dimensional coefficient arrays to be used in
those functions. New functions for evaluating 2-D and 3-D coefficient
arrays on grids or sets of points were added together with 2-D and 3-D
pseudo-Vandermonde matrices that can be used for fitting.
Ability to pad rank-n arrays
----------------------------
A pad module containing functions for padding n-dimensional arrays has been
added. The various private padding functions are exposed as options to a
public 'pad' function. Example::
pad(a, 5, mode='mean')
Current modes are ``constant``, ``edge``, ``linear_ramp``, ``maximum``,
``mean``, ``median``, ``minimum``, ``reflect``, ``symmetric``, ``wrap``, and
``<function>``.
New argument to searchsorted
----------------------------
The function searchsorted now accepts a 'sorter' argument that is a
permutation array that sorts the array to search.
Build system
------------
Added experimental support for the AArch64 architecture.
C API
-----
New function ``PyArray_RequireWriteable`` provides a consistent interface
for checking array writeability -- any C code which works with arrays whose
WRITEABLE flag is not known to be True a priori, should make sure to call
this function before writing.
NumPy C Style Guide added (``doc/C_STYLE_GUIDE.rst.txt``).
Changes
=======
General
-------
The function np.concatenate tries to match the layout of its input arrays.
Previously, the layout did not follow any particular reason, and depended
in an undesirable way on the particular axis chosen for concatenation. A
bug was also fixed which silently allowed out of bounds axis arguments.
The ufuncs logical_or, logical_and, and logical_not now follow Python's
behavior with object arrays, instead of trying to call methods on the
objects. For example the expression (3 and 'test') produces the string
'test', and now np.logical_and(np.array(3, 'O'), np.array('test', 'O'))
produces 'test' as well.
The ``.base`` attribute on ndarrays, which is used on views to ensure that the
underlying array owning the memory is not deallocated prematurely, now
collapses out references when you have a view-of-a-view. For example::
a = np.arange(10)
b = a[1:]
c = b[1:]
In numpy 1.6, ``c.base`` is ``b``, and ``c.base.base`` is ``a``. In numpy 1.7,
``c.base`` is ``a``.
To increase backwards compatibility for software which relies on the old
behaviour of ``.base``, we only 'skip over' objects which have exactly the same
type as the newly created view. This makes a difference if you use ``ndarray``
subclasses. For example, if we have a mix of ``ndarray`` and ``matrix`` objects
which are all views on the same original ``ndarray``::
a = np.arange(10)
b = np.asmatrix(a)
c = b[0, 1:]
d = c[0, 1:]
then ``d.base`` will be ``b``. This is because ``d`` is a ``matrix`` object,
and so the collapsing process only continues so long as it encounters other
``matrix`` objects. It considers ``c``, ``b``, and ``a`` in that order, and
``b`` is the last entry in that list which is a ``matrix`` object.
Casting Rules
-------------
Casting rules have undergone some changes in corner cases, due to the
NA-related work. In particular for combinations of scalar+scalar:
* the `longlong` type (`q`) now stays `longlong` for operations with any other
number (`? b h i l q p B H I`), previously it was cast as `int_` (`l`). The
`ulonglong` type (`Q`) now stays as `ulonglong` instead of `uint` (`L`).
* the `timedelta64` type (`m`) can now be mixed with any integer type (`b h i l
q p B H I L Q P`), previously it raised `TypeError`.
For array + scalar, the above rules just broadcast except the case when
the array and scalars are unsigned/signed integers, then the result gets
converted to the array type (of possibly larger size) as illustrated by the
following examples::
>>> (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
dtype('uint16')
>>> (np.zeros((2,), dtype=np.int8) + np.uint16(257)).dtype
dtype('int16')
>>> (np.zeros((2,), dtype=np.int16) + np.uint32(2**17)).dtype
dtype('int32')
Whether the size gets increased depends on the size of the scalar, for
example::
>>> (np.zeros((2,), dtype=np.uint8) + np.int16(255)).dtype
dtype('uint8')
>>> (np.zeros((2,), dtype=np.uint8) + np.int16(256)).dtype
dtype('uint16')
Also a ``complex128`` scalar + ``float32`` array is cast to ``complex64``.
In NumPy 1.7 the `datetime64` type (`M`) must be constructed by explicitly
specifying the type as the second argument (e.g. ``np.datetime64(2000, 'Y')``).
Deprecations
============
General
-------
Specifying a custom string formatter with a `_format` array attribute is
deprecated. The new `formatter` keyword in ``numpy.set_printoptions`` or
``numpy.array2string`` can be used instead.
The deprecated imports in the polynomial package have been removed.
``concatenate`` now raises DepractionWarning for 1D arrays if ``axis != 0``.
Versions of numpy < 1.7.0 ignored axis argument value for 1D arrays. We
allow this for now, but in due course we will raise an error.
C-API
-----
Direct access to the fields of PyArrayObject* has been deprecated. Direct
access has been recommended against for many releases. Expect similar
deprecations for PyArray_Descr* and other core objects in the future as
preparation for NumPy 2.0.
The macros in old_defines.h are deprecated and will be removed in the next
major release (>= 2.0). The sed script tools/replace_old_macros.sed can be
used to replace these macros with the newer versions.
You can test your code against the deprecated C API by #defining
NPY_NO_DEPRECATED_API to the target version number, for example
NPY_1_7_API_VERSION, before including any NumPy headers.
The ``NPY_CHAR`` member of the ``NPY_TYPES`` enum is deprecated and will be
removed in NumPy 1.8. See the discussion at
`gh-2801 <https://github.com/numpy/numpy/issues/2801>`_ for more details.
Checksums
=========
7b72cc17b6a9043f6d46af4e71cd3dbe
release/installers/numpy-1.7.0-win32-superpack-python3.3.exe
4fa54e40b6a243416f0248123b6ec332 release/installers/numpy-1.7.0.tar.gz
9ef1688bb9f8deb058a8022b4788686c
release/installers/numpy-1.7.0-win32-superpack-python2.7.exe
909fe47da05d2a35edd6909ba0152213
release/installers/numpy-1.7.0-win32-superpack-python3.2.exe
5d4318b722d0098f78b49c0030d47026
release/installers/numpy-1.7.0-win32-superpack-python2.6.exe
92b61d6f278a81cf9a5033b0c8e7b53e
release/installers/numpy-1.7.0-win32-superpack-python3.1.exe
51d6f4f854cdca224fa56a327ad7c620
release/installers/numpy-1.7.0-win32-superpack-python2.5.exe
ca27913c59393940e880fab420f985b4 release/installers/numpy-1.7.0.zip
3f20becbb80da09412d94815ad3b586b
release/installers/numpy-1.7.0-py2.5-python.org-macosx10.3.dmg
600dfa4dab31db5dc2ed9655521cfa9e
release/installers/numpy-1.7.0-py2.6-python.org-macosx10.3.dmg
a907a37416163b3245a30cfd160506ab
release/installers/numpy-1.7.0-py2.7-python.org-macosx10.3.dmg

=== Leipzig Python User Group ===
We will meet on Tuesday, February 12 at 8:00 p.m. at the training
center of Python Academy in Leipzig, Germany
( http://www.python-academy.com/center/find.html ).
Mike Müller (me ;)) will talk about IPython [1] and especially the
new IPython notebook. IPython is a greatly enhanced alternative to
the interactive Python prompt. The notebook allows to create
interactive documents in a browser with markdown, Python code and
matplotlib graphics. Even though IPython is traditionally only widely
used among scientists, it offers interesting opportunities for all
Python users.
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.
Food and soft drinks are provided. Please send a short
confirmation mail to info(a)python-academy.de, so we can prepare
appropriately.
Current information about the meetings are at
http://www.python-academy.com/user-group .
Mike
== Leipzig Python User Group ===
Wir treffen uns am Dienstag, 12.02.2013 um 20:00 Uhr
im Schulungszentrum der Python Academy in Leipzig
( http://www.python-academy.de/Schulungszentrum/anfahrt.html ).
Mike Müller (das bin ich ;)) stellt IPython [1] und insbesondere
das neue IPython-Notebook vor. IPython bietet eine stark erweiterte
Alternative zum interaktiven Python-Prompt. Mit dem neuen Notebook
lassen sich im Browser interaktive Dokumente mit Markdown, Python-Code
und Matplotlib-Grafiken anlegen. Obwohl IPython vor allem im
wissenschaftlichen Umfeld verbreitet ist, bietet es interessante
Möglichkeiten für alle Python-Nutzer.
Weitere Infos:
http://www.python-academy.de/User-Group/index.html
Willkommen ist jeder, der Interesse an Python hat, die Sprache
bereits nutzt oder nutzen möchte.
Für das leibliche Wohl wird gesorgt. Eine Anmeldung unter
info(a)python-academy.de wäre nett, damit wir genug Essen
besorgen können.
Aktuelle Informationen zu den Treffen sind unter
http://www.python-academy.de/User-Group zu finden.
Viele Grüße
Mike
[1] http://ipython.org/