<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3471935676803943863</id><updated>2024-11-01T08:37:19.800+01:00</updated><title type='text'>Python Insider DE</title><subtitle type='html'>Neuigkeiten und Informationen zur Python Kern-Entwicklung.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog-de.python.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-6062271631912881754</id><published>2011-10-09T15:06:00.000+02:00</published><updated>2011-10-09T15:06:29.782+02:00</updated><title type='text'>Meet the Team: Brett Cannon</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;meet-the-team-brett-cannon&quot;&gt;

&lt;p&gt;&lt;em&gt;Dieser Post ist Teil der &amp;quot;Meet the Team&amp;quot; Serie, die kurz das
Python-Kernentwickler-Team vorstellen soll.&lt;/em&gt;&lt;/p&gt;
&lt;table class=&quot;docutils field-list&quot; frame=&quot;void&quot; rules=&quot;none&quot;&gt;
&lt;col class=&quot;field-name&quot; /&gt;
&lt;col class=&quot;field-body&quot; /&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Name:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Brett Cannon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Standort:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;San Francisco, Kalifornien, USA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Homepage:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://profiles.google.com/bcannon&quot;&gt;https://profiles.google.com/bcannon&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Blog:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://sayspy.blogspot.com&quot;&gt;http://sayspy.blogspot.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Wie lange nutzt Du schon Python?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seit dem Herbst 2000.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie lange trägst Du schon zum Kern bei?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seit April 2003 (kurz nach der PyCon 2003).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie wurdest du Kernentwickler? Erinnerst Du dich an deinen ersten Beitrag?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich wurde ein Kernentwickler, weil ich ständig Leute genervt habe, ob sie für
mich Patches commiten würden (ein Trick der heute nicht mehr so gut
funktioniert; ein Vorteil, dass ich eingestiegen bin, bevor die Popularität von
Python in 2003/2004 einen Sprung machte). Von Anfang 2002 an belebte ich die
&amp;quot;Python-Dev Summaries&amp;quot; neu (was ungefähr 2,5 Jahre anhielt). Beim Schreiben der
Summaries stieß ich desöfteren auf kleine Probleme, die behoben werden mussten.
Da ich schon regelmäßig auf python-dev redete, fragte ich einfach Leute, ob sie
meine Patches überprüfen und für mich commiten würden.  Eines Tages fragte mich
Guido, warum ich nicht selbst commitet habe und ich sagte, dass ich keine Rechte
dazu hätte und er antwortete mehr oder weniger so: &amp;quot;jetzt hast du sie&amp;quot;.&lt;/p&gt;
&lt;p&gt;In meinem ersten Commit (Changeset 28686) behob ich ein Problem beim Escapen von
Zeichenketten in &lt;cite&gt;time.strptime()&lt;/cite&gt; (was auch mein erster Beitrag zu Python
überhaupt war).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An welchen Teilen von Python arbeitest Du jetzt?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich konzentriere mich normalerweise auf die Import-Maschinerie und darum, dass
Python als Sprache auf allen VM gut funktioniert.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was machst Du mit Python, wenn Du nicht gerade am Python-Kern schraubst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich habe es geschafft ein bisschen Python in meiner Doktorarbeit unterzubringen
und habe serverseitigen Code in Python implementiert. Abseits davon versuche ich
in allen meinen privaten Projekten so viel Python wie möglich zu verwenden. Mein
zukünftiger Job bei Google wird auch großteils aus Python bestehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was macht Du, wenn Du nicht gerade programmierst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich bin ein ziemlicher Film-Junkie mit einer Prise ausgewählter Teile TV (meinen
Fernseher im Sommer 2000 an eine Hitzewelle zu verlieren war eines der besten
Dinge, die mir unbeabsichtigt passierten; meine Frau zu heiraten war das beste
das ich absichtlich getan habe =). Daneben lese ich viel: Hauptsächlich Magazine
und Websites, aber ich habe immer auch ein Buch, das ich lese.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/08/meet-team-brett-cannon.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/6062271631912881754/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/10/meet-team-brett-cannon.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6062271631912881754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6062271631912881754'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/10/meet-team-brett-cannon.html' title='Meet the Team: Brett Cannon'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-6613120259216438869</id><published>2011-08-21T15:37:00.000+02:00</published><updated>2011-08-21T15:37:22.942+02:00</updated><title type='text'>Meet the Team: Michael Foord</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;meet-the-team-michael-foord&quot;&gt;

&lt;p&gt;&lt;em&gt;Dieser Post ist Teil der &amp;quot;Meet the Team&amp;quot; Serie, die kurz das
Python-Kernentwickler-Team vorstellen soll.&lt;/em&gt;&lt;/p&gt;
&lt;table class=&quot;docutils field-list&quot; frame=&quot;void&quot; rules=&quot;none&quot;&gt;
&lt;col class=&quot;field-name&quot; /&gt;
&lt;col class=&quot;field-body&quot; /&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Name:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Michael Foord&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Standort:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Northampton UK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Homepage:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.voidspace.org.uk/&quot;&gt;http://www.voidspace.org.uk/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Wie lange nutzt Du schon Python?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich fing mit Python 2002 als Hobby an und arbeitete ab 2006 Vollzeit mit
Python. Den Anfang mit Python machte ich mit einer Gruppe von Leuten, die
Informationen aus einem Play-By-Email-Spiel aggregieren wollten.  Wir hatten
alle seit einer Weile nicht programmiert und hatten uns gerade auf Smalltalk
geeinigt, als uns jemand vorschlug Python zu versuchen. Ich verliebte mich
schnell in Python.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie lange trägst Du schon zum Kern bei?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seit der PyCon 2009. Ursprünglich wegen meiner Beteiligung an IronPython.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie wurdest du Kernentwickler? Erinnerst Du dich an deinen ersten Beitrag?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Während der PyCon 2009 Sprints arbeitete ich mit Gregory Smith, auch
Kern-Entwickler, um ein paar Verbesserungen in &lt;tt class=&quot;docutils literal&quot;&gt;unittest&lt;/tt&gt; zu integrieren, die
von Google beigesteuert wurden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An welchen Teilen von Python arbeitest Du jetzt?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nach der anfänglichen Arbeit an &lt;tt class=&quot;docutils literal&quot;&gt;unittest&lt;/tt&gt; während des PyCon Sprints nahm ich
mich anderer Probleme und Verbesserungen von &lt;tt class=&quot;docutils literal&quot;&gt;unittest&lt;/tt&gt; an, das keinen
Maintainer hatte. Ich wurde der Maintainer von &lt;tt class=&quot;docutils literal&quot;&gt;unittest&lt;/tt&gt;, aber ich arbeite
auch an anderen Teilen der Standardbibliothek.&lt;/p&gt;
&lt;p&gt;Ich unterstütze Python auch auf andere Weise, so passe ich auf Planet Python
auf, bin ein PSF-Mitglied, helfe mit dem python.org Webmaster-Alias aus und so weiter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was machst Du mit Python, wenn Du nicht gerade am Python-Kern schraubst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich verdiene mein Geld, indem ich Web-Entwicklung für Canonical mache. Ich
arbeite an Teilen der Web-Dienste-Infrastruktur rund um die Canonical-Website
und auch an ein paar Diensten, die mit Ubuntu selbst integriert sind. Das macht
Spaß und es ist ein tolles Team.&lt;/p&gt;
&lt;p&gt;In meiner Freizeit arbeite ich an Projekten wie &lt;a class=&quot;reference external&quot; href=&quot;http://pypi.python.org/pypi/unittest2&quot;&gt;unittest2&lt;/a&gt; (ein Backport der
Verbesserungen an &lt;tt class=&quot;docutils literal&quot;&gt;unittest&lt;/tt&gt; für andere Plattformen) &lt;a class=&quot;reference external&quot; href=&quot;http://pypi.python.org/pypi/mock&quot;&gt;mock&lt;/a&gt; (eine Bibliothek
zum Testen, die Mock-Objekte bietet und Monkey-Patching in Tests unterstützt)
und noch ein paar mehr kleinere Sachen.&lt;/p&gt;
&lt;p&gt;Ich möchte mehr schreiben, aber da ich den größten Teil von zwei Jahren dem
Schreiben von &amp;quot;IronPython in Action&amp;quot; widmete, glaube ich nicht, dass ich mich
bald an ein größeres Schreibprojekt wagen werde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was macht Du, wenn Du nicht gerade programmierst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich engagiere mich sehr in einer Kirche in Northampton (GB), was eine Menge
meiner Zeit kostet und ich helfe bei der Verwaltung von einer
Wohltätigkeitsorganisation, die von uns betrieben wird. Das ist ein Grund warum
es gut ist, für Canonical zu arbeiten: Ich kann von Zuhause arbeiten. Da ich
hier Wurzeln geschlagen habe, werde ich hier nicht wegziehen (Ich bleibe sicher
nicht wegen dem Wetter). Natürlich gibt es nicht viel Python-Programmierung in
Northampton. Meinen ersten Vollzeit-Job als Programmierer hatte ich mit einem
erstaunlichen Team in London, zwei Stunden Pendelstrecke von Tür zu Tür, hin und
zurück. Ich bewältigte das vier Jahre lang und genoss den Job sehr, aber da ich
dem Pendeln nun entkommen bin, werde ich wahrscheinlich nicht zurückgehen.&lt;/p&gt;
&lt;p&gt;Ich genieße es auch auf der XBox zu spielen. Unglücklicherweise kann mich ein
Spiel wochenlang fesseln, wenn ich eines finde, das ich mag. Aus genau diesem
Grund habe ich auch World of Warcraft und Eve Online gemieden... Ich organisiere
auch ein monatliches Geek Meet in Northampton. Es gibt nicht genügend Python
Programmierer für eine Python Usergroup, aber wir haben eine gute Auswahl von
Geeks aller Art. Normalerweise treffen wir uns einfach in einem Pub und
quatschen oder zeigen unsere neusten Gadgets.&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/6613120259216438869/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/08/meet-team-michael-foord.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6613120259216438869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6613120259216438869'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/08/meet-team-michael-foord.html' title='Meet the Team: Michael Foord'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-7586567445604529411</id><published>2011-08-17T22:13:00.000+02:00</published><updated>2011-08-17T22:13:00.415+02:00</updated><title type='text'>Ein Python-Starter für Windows</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;ein-python-starter-fur-windows&quot;&gt;

&lt;p&gt;Mark Hammond (Autor von &lt;a class=&quot;reference external&quot; href=&quot;http://sourceforge.net/projects/pywin32/&quot;&gt;pywin32&lt;/a&gt; und seit langem Unterstützer von Python unter
Windows) hat &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0397/&quot;&gt;PEP 397&lt;/a&gt; geschrieben, das einen neuen Starter für Python unter
Windows beschreibt. Vinay Sanjip (Autor des &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/py3k/library/logging.html&quot;&gt;logging&lt;/a&gt;-Moduls der
Standardbibliothek) hat kürzlich eine Implementierung des Starters erstellt: Sie
ist unter &lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/vinay.sajip/pylauncher/downloads&quot;&gt;https://bitbucket.org/vinay.sajip/pylauncher/downloads&lt;/a&gt; verfügbar.&lt;/p&gt;
&lt;p&gt;Der Starter erlaubt Python-Skripten (&lt;tt class=&quot;docutils literal&quot;&gt;.py&lt;/tt&gt;- und &lt;tt class=&quot;docutils literal&quot;&gt;.pyw&lt;/tt&gt;-Dateien) unter
Windows die Version von Python festzulegen, die benutzt werden soll, und erlaubt
damit die simultane Benutzung von Python 2 und 3.&lt;/p&gt;
&lt;p&gt;Windows-Benutzer sollten sich überlegen, den Starter herunterzuladen und zu
testen, um den Python-Entwicklern zu helfen eventuell verbleibende Probleme
auszubügeln. Der Starter ist als eigenständige Anwendung paketiert und wird die
momentan verfügbaren Python-Versionen unterstützen. Es ist geplant den Starter,
sobald er fertiggestellt ist, als Teil von Python 3.3 auszuliefern (er wird aber
noch als eigenständiges Programm für Nutzer früherer Versionen verfügbar
bleiben).&lt;/p&gt;
&lt;p&gt;Zwei Versionen des Starters sind verfügbar: &lt;tt class=&quot;docutils literal&quot;&gt;launcher.msi&lt;/tt&gt;, das in das
&lt;tt class=&quot;docutils literal&quot;&gt;Programme&lt;/tt&gt;-Verzeichnis installiert; und &lt;tt class=&quot;docutils literal&quot;&gt;launchsys.msi&lt;/tt&gt;, das in Windows&#39;
&lt;tt class=&quot;docutils literal&quot;&gt;System32&lt;/tt&gt;-Verzeichnis installiert. (Es gibt auch 64-Bit-Versionen für
64-Bit-Windows-Versionen).&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;ein-paar-details-zum-starter&quot;&gt;
&lt;h4&gt;Ein Paar Details zum Starter&lt;/h4&gt;
&lt;p&gt;Die komplette Spezifikation des Starter-Verhaltens wird in &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0397/&quot;&gt;PEP 397&lt;/a&gt;
beschrieben. Die wesentlichen Grundlagen sind:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Der Starter beinhaltet zwei ausführbare Programme — &lt;tt class=&quot;docutils literal&quot;&gt;py.exe&lt;/tt&gt; (die
Konsolen-Version) und &lt;tt class=&quot;docutils literal&quot;&gt;pyw.exe&lt;/tt&gt; (die GUI-Version).&lt;/li&gt;
&lt;li&gt;Der Starter ist als Handler für &lt;tt class=&quot;docutils literal&quot;&gt;.py&lt;/tt&gt; (Konsole) und &lt;tt class=&quot;docutils literal&quot;&gt;.pyw&lt;/tt&gt; (GUI)
Dateiendungen registriert.&lt;/li&gt;
&lt;li&gt;Beim Ausführen von Skripten sucht der Starter nach einer Unix-mäßigen &lt;tt class=&quot;docutils literal&quot;&gt;#!&lt;/tt&gt;
(Shebang) Zeile im Skript. Es erkennt die Namen &lt;tt class=&quot;docutils literal&quot;&gt;python&lt;/tt&gt; (Standard-Python
des Systems) &lt;tt class=&quot;docutils literal&quot;&gt;python2&lt;/tt&gt; (Standard-Python2-Version) und &lt;tt class=&quot;docutils literal&quot;&gt;python3&lt;/tt&gt;
(Standard-Python3-Version). Die genauen Details können einfach pro Nutzer oder
pro System angepasst werden.&lt;/li&gt;
&lt;li&gt;Alleine benutzt, startet &lt;tt class=&quot;docutils literal&quot;&gt;py.exe&lt;/tt&gt; den interaktiven Python-Interpreter.
Kommandozeilen-Schalter werden in der Art unterstützt, dass &lt;tt class=&quot;docutils literal&quot;&gt;py &lt;span class=&quot;pre&quot;&gt;-2&lt;/span&gt;&lt;/tt&gt; Python
2, &lt;tt class=&quot;docutils literal&quot;&gt;py &lt;span class=&quot;pre&quot;&gt;-3&lt;/span&gt;&lt;/tt&gt; Python 3 und &lt;tt class=&quot;docutils literal&quot;&gt;py&lt;/tt&gt; die Standard-Version startet.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;hinweise-zur-benutzung&quot;&gt;
&lt;h4&gt;Hinweise zur Benutzung&lt;/h4&gt;
&lt;p&gt;Ist er installiert, verknüpft sich der Starter selbstständig mit &lt;tt class=&quot;docutils literal&quot;&gt;.py&lt;/tt&gt;- und
&lt;tt class=&quot;docutils literal&quot;&gt;.pyw&lt;/tt&gt;-Skripten. Tut man nichts entsprechendes, werden die Skripte mit dem
Standard-Python-Interpreter der Maschine ausgeführt, man merkt also keine
Veränderung. Nutzt man die Konsole sehr häufig, will man wahrscheinlich &lt;tt class=&quot;docutils literal&quot;&gt;.py&lt;/tt&gt;
in die &lt;tt class=&quot;docutils literal&quot;&gt;PATHEXT&lt;/tt&gt;-Variable aufnehmen, damit Skripte nicht in einer separaten
Konsole ausgeführt werden.&lt;/p&gt;
&lt;p&gt;Um festzulegen, dass ein Skript Python 2 nutzen muss, fügt man einfach folgendes
als erste Zeile zum Skript hinzu:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
#!/usr/bin/env python2
&lt;/pre&gt;
&lt;p&gt;Will man dagegen festlegen, dass ein Skript Python 3 nutzen muss, fügt man als
erste Zeile:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
#!/usr/bin/env python3
&lt;/pre&gt;
&lt;p&gt;hinzu.&lt;/p&gt;
&lt;p&gt;Man kann auch den Python-Interpreter mit folgenden Befehlen starten:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
# Standard-Python-Version
py
# Python 2
py -2
# Python 3
py -3
&lt;/pre&gt;
&lt;p&gt;Damit das funktioniert, muss sich &lt;tt class=&quot;docutils literal&quot;&gt;py.exe&lt;/tt&gt; im Suchpfad befinden. Dies
geschieht automatisch mit der &lt;tt class=&quot;docutils literal&quot;&gt;launchsys&lt;/tt&gt;-Version des Installers. Bei der
Benutzung von &lt;tt class=&quot;docutils literal&quot;&gt;launcher.msi&lt;/tt&gt; muss das Installationsverzeichnis
(&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;C:\\Programme\Python&lt;/span&gt; Launcher&lt;/tt&gt;) manuell zu &lt;tt class=&quot;docutils literal&quot;&gt;PATH&lt;/tt&gt; hinzugefügt werden.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;literaturhinweise&quot;&gt;
&lt;h4&gt;Literaturhinweise&lt;/h4&gt;
&lt;p&gt;Die folgenden Email-Threads auf python-dev decken ein paar Schlüsseldiskussionen ab:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Marks erste Ankündigung des PEP-Entwurfs:
&lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-March/109509.html&quot;&gt;http://mail.python.org/pipermail/python-dev/2011-March/109509.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Der zweite Entwurf des PEP:
&lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-March/109786.html&quot;&gt;http://mail.python.org/pipermail/python-dev/2011-March/109786.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vinays erste Anfrage bezüglich einer C-Implementierung des Starters:
&lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-March/109786.html&quot;&gt;http://mail.python.org/pipermail/python-dev/2011-March/109786.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vinays Ankündigung seiner C-Implementierung:
&lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-July/112184.html&quot;&gt;http://mail.python.org/pipermail/python-dev/2011-July/112184.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vinays Ruf nach Testern:
&lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-July/112251.html&quot;&gt;http://mail.python.org/pipermail/python-dev/2011-July/112251.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/07/python-launcher-for-windows_11.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/7586567445604529411/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/08/ein-python-starter-fur-windows.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7586567445604529411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7586567445604529411'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/08/ein-python-starter-fur-windows.html' title='Ein Python-Starter für Windows'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-5208708165141941005</id><published>2011-08-12T21:40:00.001+02:00</published><updated>2011-08-12T21:40:40.513+02:00</updated><title type='text'>CPython 3.2.1 Released</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;cpython-3-2-1-released&quot;&gt;

&lt;p&gt;Im Namen des python-dev Teams, hat Release Manager &lt;a class=&quot;reference external&quot; href=&quot;http://pythonic.pocoo.org/&quot;&gt;Georg Brandl&lt;/a&gt;
das finale Release von &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/download/releases/3.2.1/&quot;&gt;CPython 3.2.1&lt;/a&gt; bekannt gegeben. Windows Installer und
Tarballs sind seit dem 10. Juli bereit, also Bitte überlegt zu diesem Release
zu wechseln.&lt;/p&gt;
&lt;p&gt;Das &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/3.2/whatsnew/3.2.html&quot;&gt;What&#39;s New&lt;/a&gt; Dokument listet alle seit 3.2 neuen Features auf
und die Datei &lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/cpython/file/v3.2.1/Misc/NEWS&quot;&gt;Misc/NEWS&lt;/a&gt; in der Quellcodedistribution enthält eine
Liste der Fehlerbehebungen.&lt;/p&gt;
&lt;p&gt;Falls Du ein Problem mit dieser oder einer anderen Version hast: Melde sie bitte
auf &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/&quot;&gt;http://bugs.python.org/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/07/cpython-321-released.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/5208708165141941005/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/08/cpython-321-released.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/5208708165141941005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/5208708165141941005'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/08/cpython-321-released.html' title='CPython 3.2.1 Released'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-6240196510827196295</id><published>2011-08-12T21:40:00.000+02:00</published><updated>2011-08-12T21:40:15.507+02:00</updated><title type='text'>3.2.1 Release Candidate 2 veröffentlicht</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;release-candidate-2-veroffentlicht&quot;&gt;

&lt;p&gt;Nach den zahlreichen &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/06/june-releases-267-272-314.html&quot;&gt;Veröffentlichungen im Juni&lt;/a&gt;, ist der zweite Release
Candidate der 3.2.1-Reihe &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/download/releases/3.2.1/&quot;&gt;nun bereit&lt;/a&gt;. Seit dem ersten Release Candidate
am 15. Mai wurden über 40 Probleme behoben. Wir rufen jeden dazu auf, seine
Projekte mit diesem RC zu testen, um einen letzten Blick vor der endgültigen
Veröffentlichung von 3.2.1 zu bekommen.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;was-wurde-behoben&quot;&gt;
&lt;h4&gt;Was wurde behoben?&lt;/h4&gt;
&lt;div class=&quot;section&quot; id=&quot;i-o&quot;&gt;
&lt;h5&gt;I/O&lt;/h5&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue1195&quot;&gt;#1195&lt;/a&gt; verbrachte ein paar Jahre ohne Korrektur, aber eine kleine Ergänzung,
um Fehler vor dem Aufruf von &lt;tt class=&quot;docutils literal&quot;&gt;fgets&lt;/tt&gt; zu beseitigen, löst das Problem beim
Unterbrechen von &lt;tt class=&quot;docutils literal&quot;&gt;sys.stdin.read()&lt;/tt&gt; mit STRG-D innerhalb von
&lt;tt class=&quot;docutils literal&quot;&gt;input()&lt;/tt&gt;. Daneben wurde das &lt;tt class=&quot;docutils literal&quot;&gt;io&lt;/tt&gt; System in &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue12175&quot;&gt;#12175&lt;/a&gt; aufgeräumt:
&lt;tt class=&quot;docutils literal&quot;&gt;readall()&lt;/tt&gt; gibt nun &lt;tt class=&quot;docutils literal&quot;&gt;None&lt;/tt&gt; zurück, wenn &lt;tt class=&quot;docutils literal&quot;&gt;read()&lt;/tt&gt; &lt;tt class=&quot;docutils literal&quot;&gt;None&lt;/tt&gt; zurückgibt und
nun wird ein &lt;tt class=&quot;docutils literal&quot;&gt;ValueError&lt;/tt&gt; verursacht, wenn eine Datei nicht geöffnet werden
kann.&lt;/p&gt;
&lt;p&gt;Auch wenn dies nicht neu für RC2 ist, stellt &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11272&quot;&gt;#11272&lt;/a&gt; eine wichtige
Fehlerkorrektur an &lt;tt class=&quot;docutils literal&quot;&gt;input()&lt;/tt&gt; dar -- das Entfernen des &lt;tt class=&quot;docutils literal&quot;&gt;\r&lt;/tt&gt; am Ende. Das
Problem wurde schon viele Male berichtet und betrifft viele Leute (z.B. beim
&lt;tt class=&quot;docutils literal&quot;&gt;distutils&lt;/tt&gt; Upload-Befehl), 3.2.1 sollte also dieses Problem beheben.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;windows&quot;&gt;
&lt;h5&gt;Windows&lt;/h5&gt;
&lt;p&gt;3.2.0 brachte ein neues Feature für Windows: &lt;tt class=&quot;docutils literal&quot;&gt;os.symlink&lt;/tt&gt; Unterstützung. Mit
diesem Feature kam &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue12084&quot;&gt;#12084&lt;/a&gt;: &lt;tt class=&quot;docutils literal&quot;&gt;os.stat&lt;/tt&gt; wertete Windows-Symlinks falsch aus,
deshalb wurden die Implementierungen der zahlreichen &lt;tt class=&quot;docutils literal&quot;&gt;stat&lt;/tt&gt; Funktionen
korrigiert.&lt;/p&gt;
&lt;p&gt;Ein Nutzer bemerkte, dass &lt;tt class=&quot;docutils literal&quot;&gt;os.path.isdir&lt;/tt&gt; langsam war, wofür die Tatsache,
dass es auf &lt;tt class=&quot;docutils literal&quot;&gt;os.stat&lt;/tt&gt; basierte, beitrug, vor allem beim Auswerten von Symlinks
(die generell zweimal so langsam wie normale Dateien sind). Während
&lt;tt class=&quot;docutils literal&quot;&gt;os.path.isdir&lt;/tt&gt; niemandes Flaschenhals ist, wird es sehr oft beim Starten des
Interpreters aufgerufen, darum beschleunigt die Änderung in &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11583&quot;&gt;#11583&lt;/a&gt;
&lt;tt class=&quot;docutils literal&quot;&gt;GetFileAttributes&lt;/tt&gt; den Start ein wenig.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;subprocess&quot;&gt;
&lt;h5&gt;subprocess&lt;/h5&gt;
&lt;p&gt;Das Erstellen von &lt;tt class=&quot;docutils literal&quot;&gt;Popen&lt;/tt&gt;-Objekten mit unerwarteten Argumenten erzeugte einen
&lt;tt class=&quot;docutils literal&quot;&gt;AttributeError&lt;/tt&gt;, was aber in &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue12085&quot;&gt;#12085&lt;/a&gt; berichtet wurde und vom Meldenden
selbst behoben wurde. Wegen einer Veränderung in 3.2.0 behandelte &lt;tt class=&quot;docutils literal&quot;&gt;Popen&lt;/tt&gt;
leere Umgebungsvariablen falsch, speziell das &lt;tt class=&quot;docutils literal&quot;&gt;env&lt;/tt&gt;-Argument. &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue12383&quot;&gt;#12383&lt;/a&gt; wurde
für das Problem erstellt und umgehend behoben.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;und-mehr&quot;&gt;
&lt;h5&gt;... und mehr!&lt;/h5&gt;
&lt;p&gt;Die komplette Liste der Veränderungen in 3.2.1 RC2 gibt es im &lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/releasing/3.2.1/file/v3.2.1rc2/Misc/NEWS&quot;&gt;Changelog&lt;/a&gt; und
&lt;cite&gt;lade RC2 nun herunter&lt;/cite&gt;!&lt;/p&gt;
&lt;p&gt;Wie immer: Bitte berichte jegliche Probleme, die Du findest auf dem &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org&quot;&gt;Bugtracker&lt;/a&gt;.
Wir schätzen Deine Hilfe bei der Entwicklung großartiger Python-Versionen!&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/07/321-release-candidate-2-released.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/6240196510827196295/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/08/321-release-candidate-2-veroffentlicht_12.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6240196510827196295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6240196510827196295'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/08/321-release-candidate-2-veroffentlicht_12.html' title='3.2.1 Release Candidate 2 veröffentlicht'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-787528714136556038</id><published>2011-08-12T15:54:00.002+02:00</published><updated>2011-08-12T15:54:50.565+02:00</updated><title type='text'>Veröffentlichungen Juni 2011</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;veroffentlichungen-juni-2011&quot;&gt;

&lt;p&gt;Dieser Juni ist ein großer Monat für Python-Veröffentlichungen: Es kommt ein
Update für alle aktiven Zweige.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;id1&quot;&gt;
&lt;h4&gt;2.6.7&lt;/h4&gt;
&lt;p&gt;Mit &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/download/releases/2.6.7/&quot;&gt;2.6.7&lt;/a&gt; ist eine reine Quellcode-Veröffentlichung von Python verfügbar, die
drei Sicherheitsprobleme behebt. Da sich die 2.6-Reihe im Sicherheits-Modus
befindet, werden diese Veröffentlichungen bis Oktober 2013 nur passieren, wenn
es nötig ist und auch nur als Quellcode. Wenn Du binäre Installer benötigst,
solltest Du ein Upgrade zu 2.7 oder 3.2 in Betracht ziehen.&lt;/p&gt;
&lt;p&gt;2.6.7 ist die erste Veröffentlichung, die die &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/urllib-security-vulnerability-fixed.html&quot;&gt;urllib Verwundbarkeit&lt;/a&gt; behebt,
über die hier schon berichtet wurde. Zusätzlich wurde eine
&lt;tt class=&quot;docutils literal&quot;&gt;smptd&lt;/tt&gt;-DoS- (Issue &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue9129&quot;&gt;#9129&lt;/a&gt;) und
eine &lt;tt class=&quot;docutils literal&quot;&gt;SimpleHTTPServer.list_directory&lt;/tt&gt;-XSS-Verwundbarkeit (Issue &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11442&quot;&gt;#11442&lt;/a&gt;)
behoben.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;id2&quot;&gt;
&lt;h4&gt;2.7.2&lt;/h4&gt;
&lt;p&gt;Mehr als 150 Bugs wurden in der letzten Minor-Version der 2.x-Reihe, 2.7, seit
2.7.1 im November 2010 behoben. Darunter die in 2.6.7 angesprochenen
Sicherheitsprobleme.&lt;/p&gt;
&lt;p&gt;Ein paar Absturz-Ursachen wurden behoben: Wenn Python fremd verwalteten Speicher
falsch benutzt hat, während er von einem anderen Thread verändert wurde; beim
Löschen von &lt;tt class=&quot;docutils literal&quot;&gt;__abstractmethods__&lt;/tt&gt; aus einer Klasse; Zugriff auf Stellen nach
dem Ende von Dateien, die in den Speicher gemappt wurden; und verschiedene
andere.&lt;/p&gt;
&lt;p&gt;Des Weiteren wurde eine Regression in &lt;tt class=&quot;docutils literal&quot;&gt;getpass&lt;/tt&gt; behoben, die die Behandlung von
STRG-C STRG-Z betraf. In &lt;tt class=&quot;docutils literal&quot;&gt;multiprocessing&lt;/tt&gt; wurden auch einige Fehler behoben,
z.B. die Behandlung von Windows-Diensten als &amp;quot;frozen executables&amp;quot; und eine
Korrektur eines Fehler beim Beenden von &lt;tt class=&quot;docutils literal&quot;&gt;multiprocessing.Pool&lt;/tt&gt; Workern, die zu
einer Race Condition führten. &lt;tt class=&quot;docutils literal&quot;&gt;mmap&lt;/tt&gt; wurde so verändert, dass es nun mit
Dateigrößen und Offsets größer als 4GB arbeitet, sogar auf 32-Bit Builds,
desweiteren wird nun beim Versuch auf nicht-schreibbare Maps zu schreiben ein
&lt;tt class=&quot;docutils literal&quot;&gt;TypeError&lt;/tt&gt; statt einem Segmentation Fault verursacht.&lt;/p&gt;
&lt;p&gt;Eine komplette Liste der Veränderungen gibt es in der &lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/cpython/raw-file/eb3c9b74884c/Misc/NEWS&quot;&gt;News-Datei von 2.7.2&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;id3&quot;&gt;
&lt;h4&gt;3.1.4&lt;/h4&gt;
&lt;p&gt;3.1.4 ist die letzte Bug-Fix-Veröffentlichung der 3.1.x-Reihe, womit 3.1 in den
Sicherheits-Modus übergeht, während 3.2 Python 3 weiterführt. 3.1.4 beinhaltet
mehr als 100 Fehlerkorrekturen seit der Veröffentlichung von 3.1.3 im November
2010. Wie bei 2.7.2 werden binäre Installer ab dem 12. Juni bereitgestellt und
3.1.4 ist die erste 3.x-Veröffentlichung, die die unter 2.6.7 aufgelisteten
Sicherheitskorrekturen enthält.&lt;/p&gt;
&lt;p&gt;3.1.4 behebt einige Probleme mit der Suche von &lt;tt class=&quot;docutils literal&quot;&gt;__dir__&lt;/tt&gt; in Objekten, Daten
nach 2038 in der Windows-Implementierung von &lt;tt class=&quot;docutils literal&quot;&gt;os.stat&lt;/tt&gt; und &lt;tt class=&quot;docutils literal&quot;&gt;os.utime&lt;/tt&gt; und
hat ein paar 64-Bit Säuberungen. In der &lt;tt class=&quot;docutils literal&quot;&gt;io&lt;/tt&gt;-Bibliothek gab es ein paar
Änderungen bezüglich der Rückgabe von &lt;tt class=&quot;docutils literal&quot;&gt;None&lt;/tt&gt;, wenn nichts gelesen wurde, und
dem Verursachen von Ausnahmen an anderen Stellen. &lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt;-Callback-Argumente
wurden in Windows 64-Bit berichtigt und ein Absturz wurde auch behoben.&lt;/p&gt;
&lt;p&gt;Eine komplette Liste der Veränderungen gibt es in der &lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/cpython/raw-file/feae9f9e9f30/Misc/NEWS&quot;&gt;News-Datei von 3.1.4&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;id4&quot;&gt;
&lt;h4&gt;3.2.1&lt;/h4&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/download/releases/3.2.1/&quot;&gt;3.2.1&lt;/a&gt; befindet sich zur Zeit in der Release-Candidate-Phase, bei der schon
eine Runde absolviert wurde und ein zweiter Release-Candidate bald erwartet
wird. Wir würden es sehr schätzen, wenn Nutzer von 3.2 diese ausprobieren
würden, damit sichergestellt wird, dass alle Probleme behandelt werden, die
möglicherweise auftreten. Wenn Bugs auftreten, melde sie bitte auf
&lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org&quot;&gt;bugs.python.org&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/787528714136556038/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/08/veroffentlichungen-juni-2011.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/787528714136556038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/787528714136556038'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/08/veroffentlichungen-juni-2011.html' title='Veröffentlichungen Juni 2011'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-8886102629544297529</id><published>2011-08-06T13:34:00.000+02:00</published><updated>2011-08-06T13:34:03.532+02:00</updated><title type='text'>Neues faulthandler Modul in Python 3.3 hilft bei der Fehlersuche</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;neues-faulthandler-modul-in-python-3-3-hilft-bei-der-fehlersuche&quot;&gt;

&lt;p&gt;Wenn ein Anwender eines Programmes einen Absturz oder einen Hänger meldet,
kann man manchmal nur versuchen mehr Informationen zu Ablauf und Umgebung
zu sammeln und ein Fehlerszenario zu entwerfen, um diesen zu reproduzieren.
Selbst mit einem klaren Anwenderszenario, ist man als Entwickler oft wegen
verschiedener Umgebungen -- verschiedene Betriebssysteme, Compiler und anderes
--  nicht in der Lage den Fehler zu reproduzieren.
Wenn man Glück hat, ist der Anwender in der Lage Debug-Werkzeuge zu installieren,
aber meistens muss man darauf warten, dass eine andere Person mehr Informationen
zum selben Problem liefert.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;fatale-fehler&quot;&gt;
&lt;h4&gt;Fatale Fehler&lt;/h4&gt;
&lt;p&gt;Das, in Python 3.3 neue, Modul &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/library/faulthandler.html&quot;&gt;faulthandler&lt;/a&gt; soll bei diesem Problem helfen.
&lt;tt class=&quot;docutils literal&quot;&gt;faulthandler&lt;/tt&gt; ermöglicht es den Python Traceback bei einem Fatalen Fehler
wie ein Segmentation Fault, Division durch Null, Programmabbruch oder bus error,
zu erhalten. Man kann das innerhalb eines Programmes mit &lt;tt class=&quot;docutils literal&quot;&gt;faulthandler.enable()&lt;/tt&gt;,
durch Starten von Python mit der Programmoption &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;-X&lt;/span&gt; faulthandler&lt;/tt&gt; oder durch
Setzen der Umgebungsvariable &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/using/cmdline.html#envvar-PYTHONFAULTHANDLER&quot;&gt;PYTHONFAULTHANDLER=1&lt;/a&gt; aktivieren.&lt;/p&gt;
&lt;p&gt;Beispielausgabe&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
Fatal Python error: Segmentation fault

Current thread 0x00007f7babc6b700:
  File &amp;quot;Lib/test/crashers/gc_inspection.py&amp;quot;, line 29 in g
  File &amp;quot;Lib/test/crashers/gc_inspection.py&amp;quot;, line 32 in &amp;lt;module&amp;gt;
Segmentation fault
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;timeout&quot;&gt;
&lt;h4&gt;Timeout&lt;/h4&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;faulthandler&lt;/tt&gt; kann auch bei Programmhängern Traceback-Informationen liefern.
&lt;tt class=&quot;docutils literal&quot;&gt;faulthandler.dump_tracebacks_later(timeout)&lt;/tt&gt; aktiviert einen Timer, nach dessen
Ablauf ein Traceback ausgegeben wird. Ein erneuerter Aufruf setzt den Timer zurück.
&lt;tt class=&quot;docutils literal&quot;&gt;faulthandler.cancel_dump_tracebacks_later()&lt;/tt&gt; stoppt den Timer.
Ausgabe:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
Timeout (0:01:00)!
Current thread 0x00007f987d459700:
  File &amp;quot;Lib/test/crashers/infinite_loop_re.py&amp;quot;, line 20 in &amp;lt;module&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Mit der Option &lt;tt class=&quot;docutils literal&quot;&gt;repeat=True&lt;/tt&gt; wird der Traceback alle &lt;tt class=&quot;docutils literal&quot;&gt;timeout&lt;/tt&gt; Sekunden ausgegeben,
mit &lt;tt class=&quot;docutils literal&quot;&gt;exit=True&lt;/tt&gt; wird das Programm unsicher beendet; unsicher bedeutet, dass z.B. Dateien
nicht mehr auf die Platte geschrieben werden.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;anwender-signal&quot;&gt;
&lt;h4&gt;Anwender Signal&lt;/h4&gt;
&lt;p&gt;Wenn man Zugang zum Computer hat, auf dem das Programm läuft, kann man
mit &lt;tt class=&quot;docutils literal&quot;&gt;faulthandler.register(signal)&lt;/tt&gt; einen Signalhandler installieren, sodass ein
Traceback ausgegeben wird wenn das Programm das &lt;tt class=&quot;docutils literal&quot;&gt;signal&lt;/tt&gt; erhält.
Auf Unix kann man zum Beispiel das Signal &lt;tt class=&quot;docutils literal&quot;&gt;SIGUSR1&lt;/tt&gt; folgendermaßen an den Prozess
mit Prozess-Id &lt;tt class=&quot;docutils literal&quot;&gt;pid&lt;/tt&gt; senden: &lt;tt class=&quot;docutils literal&quot;&gt;kill &lt;span class=&quot;pre&quot;&gt;-USR1&lt;/span&gt; &amp;lt;pid&amp;gt;&lt;/tt&gt;. Auf Windows ist diese
Möglichkeit nicht vorhanden. Ausgabe:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
Current thread 0x00007fdc3da74700:
  File &amp;quot;Lib/test/crashers/infinite_loop_re.py&amp;quot;, line 19 in &amp;lt;module&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Eine andere Möglichkeit ist im Programmcode direkt &lt;tt class=&quot;docutils literal&quot;&gt;faulthandler.dump_traceback()&lt;/tt&gt;
direkt aufzurufen.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;sicherheitsaspekte-und-ausgabedatei&quot;&gt;
&lt;h4&gt;Sicherheitsaspekte und Ausgabedatei&lt;/h4&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;faulthandler&lt;/tt&gt; ist standardmäßig aus Sicherheitsgründen nicht aktiviert,
hauptsächlich weil es den Dateideskriptor &lt;tt class=&quot;docutils literal&quot;&gt;sys.stderr&lt;/tt&gt; speichert und die
Traceback-Informationen in diesen schreibt. Wenn die Datei &lt;tt class=&quot;docutils literal&quot;&gt;sys.stderr&lt;/tt&gt;
geschlossen wird und der Dateideskriptor vom System neu vergeben wird, kann dies
ein Socket, eine Pipe, eine wichtige Datei oder anderes sein.  Standardmäßig
schreibt &lt;tt class=&quot;docutils literal&quot;&gt;faulthandler&lt;/tt&gt; Traceback-Information in &lt;tt class=&quot;docutils literal&quot;&gt;sys.stderr&lt;/tt&gt;, es ist aber
möglich eine andere Datei anzugeben. Mehr dazu in der &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/library/faulthandler.html#file-descriptor-issue&quot;&gt;faulthandler
Dokumentation&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;nachinstallierbare-version-fur-altere-python-versionen&quot;&gt;
&lt;h4&gt;Nachinstallierbare Version für ältere Python Versionen&lt;/h4&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;faulthandler&lt;/tt&gt; ist auch als Zusatzmodul für Python 2.5 bis 3.2 &lt;cite&gt;auf PyPI&lt;/cite&gt; erhältlich.
Der Hauptunterschied zwischen dem Python 3.3 Modul und der nachinstaliierbaren Version
ist die Implementierung von &lt;tt class=&quot;docutils literal&quot;&gt;dump_tracebacks_later()&lt;/tt&gt;: Python 3.3 verwendet einen
Thread mit einem Timeout auf einem Lock, die nachinstaliierbaren Version verwendet
&lt;tt class=&quot;docutils literal&quot;&gt;SIGALRM&lt;/tt&gt; und &lt;tt class=&quot;docutils literal&quot;&gt;alarm()&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Der Timeout des Locks, ein neues Feature in Python 3.3, ist in Microsekunden
aufgelöst, wohingegen der &lt;tt class=&quot;docutils literal&quot;&gt;alarm()&lt;/tt&gt; Timer nur in Sekunden angegeben werden
kann. Daneben unterbricht das &lt;tt class=&quot;docutils literal&quot;&gt;SIGALRM&lt;/tt&gt;-Signal möglicherweise einen geraden
aktiven Systemaufruf, was zu einem &lt;tt class=&quot;docutils literal&quot;&gt;EINTR&lt;/tt&gt; Fehler führt.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;erfolgsgeschichten&quot;&gt;
&lt;h4&gt;Erfolgsgeschichten&lt;/h4&gt;
&lt;p&gt;Das neue Modul hat bereits geholfen Race Conditions in unseren Buildbots zu finden.
Wir hoffen, dass es auch Dir in Deinen Programmen hilft.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/new-faulthandler-module-in-python-33.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/8886102629544297529/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/08/neues-faulthandler-modul-in-python-33.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/8886102629544297529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/8886102629544297529'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/08/neues-faulthandler-modul-in-python-33.html' title='Neues faulthandler Modul in Python 3.3 hilft bei der Fehlersuche'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-566582423473979262</id><published>2011-08-04T16:07:00.000+02:00</published><updated>2011-08-04T16:07:37.325+02:00</updated><title type='text'>Das &amp;quot;Python Core Mentorship&amp;quot;-Programm</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;das-python-core-mentorship-programm&quot;&gt;

&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://jessenoller.com/&quot;&gt;Jesse Noller&lt;/a&gt; hat kürzlich die Gründung des &lt;em&gt;Python Core Mentorship&lt;/em&gt;-Programms
&lt;a class=&quot;reference external&quot; href=&quot;http://jessenoller.com/2011/04/05/python-core-mentorship-up-and-running/&quot;&gt;angekündigt&lt;/a&gt;. Die Idee hinter dem Programm ist es Programmierer, inklusive Studenten
und Entwickler anderer Projekte, mit erfahrenen Mitarbeitern zusammenzubringen,
die ihnen als Mentoren den Einstieg in die Python-Kernentwicklung erleichtern
sollen.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;mitarbeiter-gesucht&quot;&gt;
&lt;h4&gt;Mitarbeiter gesucht&lt;/h4&gt;
&lt;p&gt;Die Mentoren werden Leuten helfen, ganz egal auf welchem Kenntnisstand sie sind,
indem sie Fragen beantworten und Anleitung geben, auf freundliche Art und
Weise. Die Mitarbeiter werden während der ganzen Mitarbeit begleitet, was
Diskussionen auf den verwandten Mailinglisten, dem Bug-Tracker, Mercurial, Code
Reviews und noch viel mehr mit einschließt.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;fruhe-erfolge&quot;&gt;
&lt;h4&gt;Frühe Erfolge&lt;/h4&gt;
&lt;p&gt;Das Programm ist schon jetzt erfolgreich und die Teilnehmer haben schon aktiv
viele Patches beigesteuert. Es gab auch schon viele konstruktive Diskussionen
auf der Mailingliste, die Leuten mit verschiedenen Problemen in die richtige
Richtung führten.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;verhaltenskodex&quot;&gt;
&lt;h4&gt;Verhaltenskodex&lt;/h4&gt;
&lt;p&gt;Das Programm hat einen Verhaltenskodex, der auf der &lt;a class=&quot;reference external&quot; href=&quot;http://pythonmentors.com/&quot;&gt;Website&lt;/a&gt; erklärt wird. Er
soll den Sorgen begegnen, die viele neue Mitarbeiter haben, wenn sie es mit
erfahrenen Entwicklern und Mitarbeiter-Mailinglisten im Allgemeinen zu tun
haben. Jesse und die anderen Mentoren hoffen, dass dieses Programm auf lange
Zeit anderen Projekten als Modell dienen kann und nicht nur Python-Core
nützt. Sie wollen mit dem Programm auch die Vielfalt der Mitarbeiter an Python
vergrößern.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;einschreiben&quot;&gt;
&lt;h4&gt;Einschreiben&lt;/h4&gt;
&lt;p&gt;Das Programm wird über die &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/mailman/listinfo/core-mentorship&quot;&gt;Mailingliste&lt;/a&gt; betrieben und ihm ist eine klare und
prägnante &lt;a class=&quot;reference external&quot; href=&quot;http://pythonmentors.com/&quot;&gt;Website&lt;/a&gt; gewidmet. Wenn Du beitreten möchtest, um Fragen zu stellen
und den Weg zur Mitarbeit am Kern von Python beschreiten willst -- oder sogar
ein erfahrener Entwickler (sogar erfahren mit Python-Core) bist, der Fragen
stellen will, aber nicht auf anderen Listen fragen willst -- dann ist dies eine
ausgezeichnete Gelegenheit aufzuspringen, zu fragen und erste Erfahrungen mit
Python-Core zu sammeln.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/python-core-mentorship-program.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/566582423473979262/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/08/das-core-mentorship.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/566582423473979262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/566582423473979262'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/08/das-core-mentorship.html' title='Das &amp;quot;Python Core Mentorship&amp;quot;-Programm'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-2009380223258114315</id><published>2011-07-30T00:29:00.003+02:00</published><updated>2011-07-30T00:29:36.099+02:00</updated><title type='text'>Übersetzungen ins Rumänische und zu Chinesischen Kurzzeichen</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;ubersetzungen-ins-rumanische-und-zu-chinesischen-kurzzeichen&quot;&gt;

&lt;p&gt;Das Python Insider-Team freut sich heute zwei neue Blogs
anzukündigen. Übersetzer für &lt;a class=&quot;reference external&quot; href=&quot;http://blog-ro.python.org&quot;&gt;Rumänisch&lt;/a&gt; und &lt;a class=&quot;reference external&quot; href=&quot;http://blog-cn.python.org&quot;&gt;Chinesische Kurzzeichen&lt;/a&gt; sind dem
&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/python-insider-translation-project.html&quot;&gt;Übersetzungsprojekt&lt;/a&gt; beigetreten und haben schon damit angefangen die
aufgelaufenen Posts zu veröffentlichen. Wie auch die anderen Übersetzungen,
werden diese Übersetzungen den Posts auf &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/&quot;&gt;Python Insider&lt;/a&gt; etwas
hinterherhinken.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/romanian-and-simplified-chinese.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/2009380223258114315/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/ubersetzungen-ins-rumanische-und-zu.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/2009380223258114315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/2009380223258114315'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/ubersetzungen-ins-rumanische-und-zu.html' title='Übersetzungen ins Rumänische und zu Chinesischen Kurzzeichen'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-7930988364071027719</id><published>2011-07-30T00:29:00.002+02:00</published><updated>2011-07-30T00:29:34.665+02:00</updated><title type='text'>Übersetzungen ins Portugiesische, Deutsche, Koreanische und zu Chinesischen Langzeichen</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;ubersetzungen-ins-portugiesische-deutsche-koreanische-und-zu-chinesischen-langzeichen&quot;&gt;

&lt;p&gt;Das Python Insider &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/python-insider-translation-project.html&quot;&gt;Übersetzungsprojekt&lt;/a&gt; wächst weiter! Heute starten wir die
&lt;a class=&quot;reference external&quot; href=&quot;http://blog-pt.python.org&quot;&gt;Portugiesische&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://blog-de.python.org&quot;&gt;Deutsche&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://blog-ko.python.org&quot;&gt;Koreanische&lt;/a&gt; und die &lt;a class=&quot;reference external&quot; href=&quot;http://blog-tw.python.org&quot;&gt;Chinesische Langzeichen&lt;/a&gt;
Version des Blogs. Die Übersetzer haben schon damit angefangen die aufgelaufenen
Posts zu veröffentlichen und wie auch die anderen Übersetzungen, werden diese
Übersetzungen den Posts auf &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/&quot;&gt;Python Insider&lt;/a&gt; etwas hinterherhinken.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/portuguese-german-korean-and.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/7930988364071027719/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/ubersetzungen-ins-portugiesische.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7930988364071027719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7930988364071027719'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/ubersetzungen-ins-portugiesische.html' title='Übersetzungen ins Portugiesische, Deutsche, Koreanische und zu Chinesischen Langzeichen'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-1751528106501323428</id><published>2011-07-27T23:19:00.000+02:00</published><updated>2011-07-27T23:19:40.604+02:00</updated><title type='text'>Jython migriert zu Mercurial</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;jython-migriert-zu-mercurial&quot;&gt;

&lt;p&gt;Jython ist endlich von Subversion zu Mercurial migriert. Dies lief schon seit
einiger Zeit, aber unglücklicherweise hatten wir ein schwieriges
Subversion-Repository, darum war einiger Aufwand nötig, um es sauber zu einem
anderen Versionskontrollsystem zu konvertieren.&lt;/p&gt;
&lt;p&gt;Das neue offizielle Jython-Repository ist nun bei&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/jython&quot;&gt;http://hg.python.org/jython&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;beheimatet, zusammen mit einem &lt;a class=&quot;reference external&quot; href=&quot;http://bitbucket.org/jython/jython&quot;&gt;BitBucket Mirror&lt;/a&gt; zum einfachen forken.&lt;/p&gt;
&lt;p&gt;Es gibt auch ein größeres Repository mit laufenden Feature-Zweigen (zu Mercurial
Bookmarks konvertiert) bei &lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/jython-fullhistory&quot;&gt;http://hg.python.org/jython-fullhistory&lt;/a&gt; , das aber
nur lesbar ist.&lt;/p&gt;
&lt;p&gt;Mercurial macht es sogar noch leichter an Jython mitzuarbeiten: Forke das
Repository und hilf uns Jython 2.6 zu bauen!&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/jython-migrates-to-mercurial.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/1751528106501323428/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/jython-migriert-zu-mercurial.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/1751528106501323428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/1751528106501323428'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/jython-migriert-zu-mercurial.html' title='Jython migriert zu Mercurial'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-5041452027177215496</id><published>2011-07-23T19:37:00.000+02:00</published><updated>2011-07-23T19:37:18.232+02:00</updated><title type='text'>Python 3.3 wird Unterstützung für OS/2, Windows 2000 und VMS einstellen</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;python-3-3-wird-unterstutzung-fur-os-2-windows-2000-und-vms-einstellen&quot;&gt;

&lt;p&gt;Hin und wieder ist es an der Zeit die Liste der unterstützten Betriebssysteme so
zurückzuschneiden, dass sie mit der tatsächlichen Benutzung
übereinstimmt. Daneben ist auch die Menge der beisteuernden Entwickler auf einer
Plattform wichtig, da jemand die Entwicklungsarbeit leisten muss, um beim
Release die Qualität zu sichern. Andere Faktoren, wie das Alter eines
Betriebssystems und sein Ballast für die zukünftige Entwicklung haben auch einen
Einfluss auf diese Liste.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.haypocalc.com/wiki/Victor_Stinner&quot;&gt;Victor Stinner&lt;/a&gt; hat kürzlich vorgeschlagen die Unterstützung von CPython &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-April/110872.html&quot;&gt;für
OS/2 und VMS einzustellen&lt;/a&gt;, ein Jahr nach seiner &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2010-April/099471.html&quot;&gt;ursprünglichen Frage&lt;/a&gt; nach
der OS/2-Unterstützung. Victors ursprüngliche Frage kam zur Zeit seiner
unermüdlichen Unicode-Arbeit, genauer für ein Problem mit &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/os#os.execvpe&quot;&gt;os.execvpe()&lt;/a&gt;, um
Umgebungsvariablen über den &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0383/&quot;&gt;PEP 383&lt;/a&gt;-&amp;quot;surrogateescape&amp;quot;-Handler zu
unterstützen. OS/2 und VMS haben zur Zeit keine Repräsentation innerhalb des
Entwicklerteams und erhalten damit keine Tests während dem Release-Prozess.&lt;/p&gt;
&lt;p&gt;Das Schreiben dieses Eintrags &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-May/111159.html&quot;&gt;brachte mich zum Nachdenken&lt;/a&gt; über eine
&lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2010-March/098074.html&quot;&gt;vorherige Diskussion&lt;/a&gt; über das Entfernen von Windows 2000, das auf der Strecke
zu bleiben schien. System, die &lt;tt class=&quot;docutils literal&quot;&gt;COMSPEC&lt;/tt&gt; auf &lt;tt class=&quot;docutils literal&quot;&gt;command.com&lt;/tt&gt; setzen, schienen
damals auch auf dem Hackbrett zu liegen. &lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/peps/rev/b9390aa12855&quot;&gt;Mittlerweile&lt;/a&gt; haben sich beide zu
OS/2 und VMS gesellt. Windows 2000 wird entfernt, um die Entwicklungsarbeit
einfacher zu machen, da es die Last nimmt, sich um die Legacy-API eines
Betriebssystems zu kümmern, das 2010 sein &amp;quot;end-of-life&amp;quot; erreicht hat.&lt;/p&gt;
&lt;p&gt;Um die Unterstützung für diese Systeme zu entfernen, haben Victor und ich uns
daran gemacht &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0011/&quot;&gt;PEP 11&lt;/a&gt; zu aktualisieren.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;pep-11&quot;&gt;
&lt;h4&gt;PEP 11&lt;/h4&gt;
&lt;p&gt;Dieses PEP umreißt die Betriebssysteme, die nicht mehr unterstützt werden, und
erklärt wie man ein System zu dieser Liste hinzufügt.&lt;/p&gt;
&lt;p&gt;Sobald es entschieden ist, dass ein Betriebssystem entfernt werden kann, wird es
formal als nicht-unterstützt angekündigt. Diese Ankündigung gilt traditionell
für die Version, an der gerade entwickelt wird, also gilt der Wegfall der
Unterstützung für OS/2, Windows 2000 und VMS ab Python 3.3.&lt;/p&gt;
&lt;p&gt;Das erste Stadium läuft so ziemlich von selbst, es ist mehr das Heben einer
weißen Flagge. Es ist ein Signal, dass es keinen mehr gibt, der den Code wartet
und die Qualität eines Release sicherstellt. Es können Veränderungen am
Kompilierungs- und Installationsprozess gemacht werden, um Nutzer zu
informieren, dass ihre Plattform nicht unterstützt wird. Und dem &amp;quot;&lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/whatsnew/3.3.html#unsupported-operating-systems&quot;&gt;What&#39;s
New&lt;/a&gt;&amp;quot;-Dokument wird eine Bemerkung hinzugefügt, die die neuen nicht mehr
unterstützten Plattformen auflistet.&lt;/p&gt;
&lt;p&gt;Nach einem Releasezyklus, in dem die Plattform nicht unterstützt ist, ist der
Code in der nachfolgenden Version Freiwild und kann entfernt werden. In diesem
Fall kann der Code in 3.4 entfernt werden. Der Code wird möglicherweise nicht
komplett entfernt, aber Entwickler, die während ihrer normalen Arbeit daran
vorbeikommen können jegliche &lt;tt class=&quot;docutils literal&quot;&gt;#ifdef&lt;/tt&gt;-Blöcke, &lt;tt class=&quot;docutils literal&quot;&gt;configure&lt;/tt&gt;-Abschnitte oder
veralteten Code entfernen.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;was-du-tun-kannst&quot;&gt;
&lt;h4&gt;Was Du tun kannst&lt;/h4&gt;
&lt;p&gt;Wenn du ein OS/2- oder VMS-Nutzer bist, dann gibt es ein paar Möglichkeiten, die
du ausschöpfen kannst, um deine Plattform zu retten.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;werde-maintainer&quot;&gt;
&lt;h5&gt;Werde Maintainer&lt;/h5&gt;
&lt;p&gt;Nichts ist besser für die Unterstützung als ein aktiver Entwickler. Andrew
MacIntyre war seit einiger Zeit der OS/2-Maintainer und sagte zu Victors erster
Anfrage, dass OS/2 in der Unterstützung von Unicode hinterherhinkt, dies ist
also sicherlich ein Gebiet auf das man sich konzentrieren muss. VMS scheint
einen gewissen Grad von Unterstützung von Außen durch &lt;a class=&quot;reference external&quot; href=&quot;http://www.vmspython.org&quot;&gt;http://www.vmspython.org&lt;/a&gt;
zu haben, aber wie schon in &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11918&quot;&gt;Issue 11918&lt;/a&gt; diskutiert wurde, muss sich jemand
bereiterklären um weiterhin VMS-Unterstützung Upstream (d.h. innerhalb von
CPython) zu haben.&lt;/p&gt;
&lt;p&gt;Wenn Du daran interessiert bist, eine der beiden Plattformen zu übernehmen,
dann schau dir den &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/devguide&quot;&gt;Developer&#39;s Guide&lt;/a&gt; an, um die aktuellen
Entwicklungsprozesse kennenzulernen.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;steuer-einen-build-slave-bei&quot;&gt;
&lt;h5&gt;Steuer einen Build-Slave bei&lt;/h5&gt;
&lt;p&gt;Mit einem aktiven Entwickler, hat eine Plattform bessere Chancen zu
überleben. Mit einem Build-Slave, hat eine Plattform sogar noch bessere Chancen,
nicht nur zu überleben, sondern auch um eine gewisse Qualität zu gewährleisten.&lt;/p&gt;
&lt;p&gt;Python benutzt &lt;a class=&quot;reference external&quot; href=&quot;http://trac.buildbot.net/&quot;&gt;Buildbot&lt;/a&gt; für Continuous Integration und es &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/buildbot/&quot;&gt;gibt momentan&lt;/a&gt;
Build-Slaves für Linux, Mac, Windows und Open Indiana (Solaris) für verschiedene
Versionen, Architekturen und Konfigurationen. Wenn Du in der Lage bist eine
Maschine für die Build-Flotte für OS/2 oder VMS zu spenden, könntest Du
ermöglichen, dass diese Plattformen diesselbe Aufmerksamkeit bekommen, wie sie
auch verbreitetere Plattformen bekommen.&lt;/p&gt;
&lt;p&gt;Wenn Du entwender Zeit oder Hardware beisteuern kannst, um OS/2 und VMS zu
retten, melde Dich auf der &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/mailman/listinfo/python-dev&quot;&gt;python-dev&lt;/a&gt;-Mailingliste, um die Bemühungen zu
koordinieren.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/python-33-to-drop-support-for-os2.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/5041452027177215496/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/python-33-wird-unterstutzung-fur-os2.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/5041452027177215496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/5041452027177215496'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/python-33-wird-unterstutzung-fur-os2.html' title='Python 3.3 wird Unterstützung für OS/2, Windows 2000 und VMS einstellen'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-4336697801689231460</id><published>2011-07-17T17:29:00.000+02:00</published><updated>2011-07-17T17:29:06.871+02:00</updated><title type='text'>Python Insider Übersetzungsprojekt</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;python-insider-ubersetzungsprojekt&quot;&gt;

&lt;p&gt;Wir denken, dass der Inhalt dieses Blogs für die gesamte Python-Community
nützlich ist, darum hat für uns das Erreichen möglichst vieler Leser eine hohe
Priorität. Um unsere Reichweite zu erhöhen, haben wir ein Team von Übersetzern
um uns geschart, damit wir parallel Ausgaben dieses Blogs in anderen Sprachen
erstellen können. Heute starten wir zwei Übersetzungen: &lt;a class=&quot;reference external&quot; href=&quot;http://blog-ja.python.org/&quot;&gt;Japanisch&lt;/a&gt; und
&lt;a class=&quot;reference external&quot; href=&quot;http://blog-es.python.org/&quot;&gt;Spanisch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Die Übersetzungen werden den Posts auf &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/&quot;&gt;Python Insider&lt;/a&gt; etwas hinterherhinken,
aber es wird versucht sie mehr oder weniger aktuell zu halten.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;hilfe-gesucht&quot;&gt;
&lt;h4&gt;Hilfe gesucht&lt;/h4&gt;
&lt;p&gt;Das Übersetzungsteam ist immer noch sehr klein, darum suchen wir nach weiteren
Helfern. Wir brauchen Leute, die an den bestehenden Übersetzungen arbeiten oder
uns helfen neue Übersetzungen zu starten. Wenn Du uns auf eine dieser Arten
helfen kannst, kontaktiere Doug Hellmann (doug dot hellmann at gmail --
englischsprachig).&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/05/python-insider-translation-project.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/4336697801689231460/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/python-insider-ubersetzungsprojekt.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/4336697801689231460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/4336697801689231460'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/python-insider-ubersetzungsprojekt.html' title='Python Insider Übersetzungsprojekt'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-8493201017456515114</id><published>2011-07-17T17:27:00.000+02:00</published><updated>2011-07-17T17:27:15.946+02:00</updated><title type='text'>Meet the Team: Brian Curtin</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;meet-the-team-brian-curtin&quot;&gt;

&lt;p&gt;&lt;em&gt;Dieser Post ist Teil der &amp;quot;Meet the Team&amp;quot; Serie, die kurz das
Python-Kernentwickler-Team vorstellen soll.&lt;/em&gt;&lt;/p&gt;
&lt;table class=&quot;docutils field-list&quot; frame=&quot;void&quot; rules=&quot;none&quot;&gt;
&lt;col class=&quot;field-name&quot; /&gt;
&lt;col class=&quot;field-body&quot; /&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Name:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Brian Curtin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Standort:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Chicago, USA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Homepage:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.briancurtin.com/&quot;&gt;http://blog.briancurtin.com/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Wie lange nutzt Du schon Python?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Täglich seit 6 Jahren. Davor nutzte ich Python schon gelegentlich für eine
Klasse im College und in einem Sommer-Praktikum.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie lange trägst Du schon zum Kern bei?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Knapp über ein Jahr. Am 24. März war ich ein Jahr bei der Gruppe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie wurdest Du Kernentwickler? Erinnerst Du dich an deinen ersten Beitrag?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich habe angefangen, nachdem ich einen Fehler in der Dokumentation bemerkt habe,
als ich auf der Arbeit ein Erweiterungsmodul geschrieben habe, dann habe ich
einen einfachen Patch eingereicht und Georg Brandl hat ihn fast augenblicklich
aufgenommen. Nach diesem schnellen Erfolg und nachdem ich mir eine frische
Version des Quellcodes geholt habe, wollte ich eintauchen und mehr über die
Module lernen, die ich benutze, und endete damit einen Patch zu schreiben, der
&lt;tt class=&quot;docutils literal&quot;&gt;zipfile&lt;/tt&gt; &amp;quot;context manager&amp;quot;-Unterstützung hinzufügt.&lt;/p&gt;
&lt;p&gt;Meine ersten Paar Beiträge waren Ausbesserungen der Dokumentation, um es für den
Anfang einfach zu halten. Mein erster Quellcode-Beitrag fügte dem
&lt;tt class=&quot;docutils literal&quot;&gt;winreg&lt;/tt&gt;-Modul ein paar Features hinzu und erweiterte die Test-Abdeckung.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An welchen Teilen von Python arbeitest Du jetzt?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Als einer der paar Windows-Benutzer, die bei der CPython-Entwicklung beteiligt
sind, versuche ich ein Auge auf alle Probleme zu haben, die Windows-Benutzer
betreffen. Deshalb hatte ich schon Gelegenheit an vielen Modulen der
Standardbibliothek zu arbeiten, unter anderem Modulen, die ich noch nie benutzt
habe. Ich habe noch nicht viel am Interpreter selbst gearbeitet, aber ich
versuche das zu ändern.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was machst Du mit Python, wenn Du nicht gerade am Python-Kern schraubst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich baue verschiedene Test-Werkzeuge für eine Handels-Datenbank, die in C++
geschrieben ist. Dort gibt es ein Erweiterungsmodul für die Daten-API, sodass
wir einfach Regressionstests und Leistungstests schreiben können und wir
versuchen immer mehr zu bauen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was macht Du, wenn Du nicht gerade programmierst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich bin ein riesiger Baseball-Fan. Im Frühling bin ich Schiedsrichter bei
College-Baseball, im Sommer bei verschiedenen Ligen und dann schaue und gehe
ich zu Spielen der Chicago Cubs.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/meet-team-brian-curtin.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/8493201017456515114/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/meet-team-brian-curtin.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/8493201017456515114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/8493201017456515114'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/meet-team-brian-curtin.html' title='Meet the Team: Brian Curtin'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-5039846966145936031</id><published>2011-07-14T13:53:00.000+02:00</published><updated>2011-07-14T13:53:03.559+02:00</updated><title type='text'>Meet the Team: Nick Coghlan</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;meet-the-team-nick-coghlan&quot;&gt;

&lt;p&gt;&lt;em&gt;Dieser Post ist Teil der &amp;quot;Meet the Team&amp;quot; Serie, die kurz das
Python-Kernentwickler-Team vorstellen soll.&lt;/em&gt;&lt;/p&gt;
&lt;table class=&quot;docutils field-list&quot; frame=&quot;void&quot; rules=&quot;none&quot;&gt;
&lt;col class=&quot;field-name&quot; /&gt;
&lt;col class=&quot;field-body&quot; /&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Name:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Nick Coghlan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Standort:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Brisbane, Australien&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Homepage:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.boredomandlaziness.org&quot;&gt;http://www.boredomandlaziness.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Wie lange nutzt Du schon Python?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mein erster Kontakt war etwa 1999 mit 1.5.2, als unser Dozent Python für einen
Kurs über Netzwerke nutzte. Professionell startete ich etwa 2002 mit 2.2 für
automatisierte Tests und habe es nie bereut.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie lange trägst Du schon zum Kern bei?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Guido gewährte mir Zugang in 2005, um PEP 343 (vor allem, um die
&lt;tt class=&quot;docutils literal&quot;&gt;context&lt;/tt&gt;-Methode loszuwerden) zu aktualisieren.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie wurdest Du Kernentwickler? Erinnerst Du dich an deinen ersten Beitrag?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Was das Beitragen von Patches angeht, hatte ich 2004 drei Monate frei und
verbrachte viel Zeit davon zusammen mit Raymond und Facundo mit der Arbeit am
&lt;tt class=&quot;docutils literal&quot;&gt;decimal&lt;/tt&gt;-Modul, vor allem mit dem laufen lassen des telco-Benchmarks, um den
Code schneller zu machen. Ein paar der seltsameren Hacks im &lt;tt class=&quot;docutils literal&quot;&gt;decimal&lt;/tt&gt;-Modul
(wie die Abkürzung für das Überprüfen auf Sonderfälle und die Benutzung von
Strings beim Umwandeln von Tupeln in Integer) stammen aus dieser Zeit.&lt;/p&gt;
&lt;p&gt;Mein wirklich erster Commit war dann wohl zu PEP 343 und danach wahrscheinlich
zum AST-Compiler-Zweig als wir ihn für die Aufnahme in 2.5 fertig machten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An welchen Teilen von Python arbeitest Du jetzt?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;runpy&lt;/tt&gt;, &lt;tt class=&quot;docutils literal&quot;&gt;functools&lt;/tt&gt; und &lt;tt class=&quot;docutils literal&quot;&gt;contextlib&lt;/tt&gt; sind die Hauptsachen, die
letztendlich in meinem Posteingang landen. Ich beobachte auch aufmerksam, was
Brett und Victor mit &lt;tt class=&quot;docutils literal&quot;&gt;import&lt;/tt&gt; tun, was Raymond mit &lt;tt class=&quot;docutils literal&quot;&gt;collections&lt;/tt&gt; und
&lt;tt class=&quot;docutils literal&quot;&gt;itertools&lt;/tt&gt; tut und alles was mit dem Compiler passiert. Auch fasziniert mich
der kulturelle Aspekt der Dinge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was machst Du mit Python, wenn Du nicht gerade am Python-Kern schraubst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wirklich keine große Sache. Der Python-Kram auf der Arbeit leistet normalerweise
einfach seine Arbeit, darum gibt es momentan keinen großen Bedarf daran zu
arbeiten. Ich will etwas schaffen, das meine digitale Musiksammlung aufräumt,
aber die Skripte, dafür sind momentan nur schnell zusammengeworfen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was macht Du, wenn Du nicht gerade programmierst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tae kwon do, Computerspiele, Fußball, Lesen, etc, etc...&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/meet-team-nick-coghlan.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/5039846966145936031/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/meet-team-nick-coghlan.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/5039846966145936031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/5039846966145936031'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/meet-team-nick-coghlan.html' title='Meet the Team: Nick Coghlan'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-3409804197777471715</id><published>2011-07-10T20:14:00.001+02:00</published><updated>2011-07-10T20:14:39.208+02:00</updated><title type='text'>Neues Blog Design</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;neues-blog-design&quot;&gt;

&lt;p&gt;Falls Du den &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org&quot;&gt;Python Insider&lt;/a&gt; (oder die &lt;a class=&quot;reference external&quot; href=&quot;http://blog-de.python.org&quot;&gt;deutsche Übersetzung&lt;/a&gt;) über einen
Feed-Reader liest, hast Du vielleicht das neue Design noch nicht bemerkt, das
&lt;a class=&quot;reference external&quot; href=&quot;http://twitter.com/sigviper&quot;&gt;Marcin Wojtczuk&lt;/a&gt; für uns erstellt hat. Es sieht toll aus, erhält aber trotzdem
ein leichtgewichtiges Lesegefühl und wir könnten nicht glücklicher mit den
Ergebnissen sein.&lt;/p&gt;
&lt;p&gt;Marcin: Danke für deine Zeit und Mühe!&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/new-blog-design.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/3409804197777471715/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/neues-blog-design.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/3409804197777471715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/3409804197777471715'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/neues-blog-design.html' title='Neues Blog Design'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-2433066173277212168</id><published>2011-07-10T20:14:00.000+02:00</published><updated>2011-07-10T20:14:34.786+02:00</updated><title type='text'>urllib/urllib2 Sicherheitslücke behoben</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;urllib-urllib2-sicherheitslucke-behoben&quot;&gt;

&lt;p&gt;Guido van Rossum hat &lt;a class=&quot;reference external&quot; href=&quot;http://hg.python.org/cpython/rev/a778b963eae3&quot;&gt;kürzlich einen Fix&lt;/a&gt; für CVE-2011-1521 gepusht, das ein
Sicherheitsproblem in den URL-Bibliotheken von Python beschreibt. Obwohl
Sicherheitslücken selten sind, ist dies eine gute Gelegenheit, um über den
Prozess hinter dem Berichten, Behandeln und Beheben von Problemen zu
informieren, wenn sie denn entstehen.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;problem-berichten&quot;&gt;
&lt;h4&gt;Problem berichten&lt;/h4&gt;
&lt;p&gt;Wenn Du eine Sicherheitslücke in CPython entdeckt hast, dann bitten wir Dich
zuerst darum die Details vertraulich zu behandeln. Nachdem Du festgestellt hast,
dass Du ein echtes Sicherheitsproblem gefunden hast, ist es am wichtigsten dein
Wissen an die Kernentwickler weiterzugeben, indem Du einen prägnanten, aber
detaillierten Bericht erstellst.&lt;/p&gt;
&lt;p&gt;Ein guter Bericht erklärt, wie die relevanten Teile des Systems von dem Problem
betroffen sind. Es ist auch hilfreich zu wissen, ob das Problem auf einer
bestimmten Plattform oder wegen einer Abhängigkeit auftritt. Es ist nützlich die
betroffenen Versionen zu wissen und es ist wahrscheinlich, dass alle aktuellen
Releases auf die Schwachstelle hin überprüft werden. Zu guter Letzt: Wenn Du
einen Testfall für das Problem hast, dann stelle sicher, dass Du ihn
beifügst. Deinen Bericht solltest du an &lt;a class=&quot;reference external&quot; href=&quot;mailto:security@python.org&quot;&gt;security&amp;#64;python.org&lt;/a&gt; schicken.&lt;/p&gt;
&lt;p&gt;Niels Heinen vom Google Security Team hat kürzlich einen &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11662#msg131981&quot;&gt;guten Bericht
eingereicht&lt;/a&gt;. Er entdeckte ein Problem mit der HTTP 302-Umleitungsbehandlung in
den &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/urllib&quot;&gt;urllib&lt;/a&gt;- und &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/urllib2&quot;&gt;urllib2&lt;/a&gt;-Modulen der Standardbibliothek. Er fand heraus,
dass ein Server Requests auf unpassende Schemata umleiten konnte und so
Situationen erzeugten, die Systeme oder Daten kompromittieren könnten. In seinem
ersten Bericht, erklärt Niels zwei Szenarien, in denen Weiterleitungen Probleme
aufdecken könnten.&lt;/p&gt;
&lt;p&gt;Da &lt;tt class=&quot;docutils literal&quot;&gt;urlib&lt;/tt&gt;/&lt;tt class=&quot;docutils literal&quot;&gt;urllib2&lt;/tt&gt; einen Handler für das &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;file://&lt;/span&gt;&lt;/tt&gt; URL-Schema
anbietet, könnte eine Weiterleitung nach &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;file:///etc/passwd&lt;/span&gt;&lt;/tt&gt; Passwort-Daten
preisgeben. Niels erklärte weiterhin, dass eine Weiterleitung auf ein
Systemgerät wie &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;file:///dev/zero&lt;/span&gt;&lt;/tt&gt; zu Erschöpfung von Ressourcen und damit zu
einem Denial of Service führen könnte.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;handhabung-von-berichten&quot;&gt;
&lt;h4&gt;Handhabung von Berichten&lt;/h4&gt;
&lt;p&gt;Aufgrund der sensiblen Natur von Sicherheitslücken, wird die
&lt;a class=&quot;reference external&quot; href=&quot;mailto:security@python.org&quot;&gt;security&amp;#64;python.org&lt;/a&gt;-Mailingliste von einer kleinen Gruppe vertrauenswürdiger
Entwickler betreut, die Berichte analysieren und so schnell wie möglich auf sie
reagieren. Wenn Du deine Kommunikation mit der Liste verschlüsseln willst,
findest du auf der &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/news/security/&quot;&gt;Security News&lt;/a&gt;-Seite die OpenPGP-Details.&lt;/p&gt;
&lt;p&gt;Wenn die Gruppe feststellt, dass es wirklich eine Sicherheitslücke gibt, kann
ein öffentlicher Fehlerbericht mit einem beigefügten Patch erstellt werden. In
diesem Fall machte Guido van Rossum das Problem mit &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11662&quot;&gt;Issue #11662&lt;/a&gt; öffentlich,
inklusive erstem Patch.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;beheben-des-problems&quot;&gt;
&lt;h4&gt;Beheben des Problems&lt;/h4&gt;
&lt;p&gt;Guidos Patch schränkt die Weiterleitung auf die URL-Schemata &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;http://&lt;/span&gt;&lt;/tt&gt;,
&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;https://&lt;/span&gt;&lt;/tt&gt; und &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;ftp://&lt;/span&gt;&lt;/tt&gt; ein. FTP-Weiterleitung wurde für akzeptabel befunden
und es ist in der Tat eine häufige Weiterleitung: Spiegel-Server für Downloads
leiten manchmal an geographisch passende FTP-Server weiter.&lt;/p&gt;
&lt;p&gt;In Python 2.x verursacht die &lt;tt class=&quot;docutils literal&quot;&gt;redirect_internal&lt;/tt&gt;-Methode von &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/urllib#urllib.FancyURLopener&quot;&gt;FancyURLopener&lt;/a&gt;
nun einen &lt;tt class=&quot;docutils literal&quot;&gt;IOError&lt;/tt&gt;, wenn eine Weiterleitung an ein ungeeignetes Schema
angefragt wird, genauso wie &lt;tt class=&quot;docutils literal&quot;&gt;http_error_302&lt;/tt&gt; von &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/urllib2#httpredirecthandler-objects&quot;&gt;HTTPRedirectHandler&lt;/a&gt;, nur
ist es hier ein &lt;tt class=&quot;docutils literal&quot;&gt;HTTPError&lt;/tt&gt;. In Python 3 wurde &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/library/urllib.request&quot;&gt;urllib.request&lt;/a&gt; entsprechend
repariert. Zusammen mit dem Patch gibt es zwei Tests, die sowohl die
Weiterleitung zu passenden wie zu unpassenden Schemata testen.&lt;/p&gt;
&lt;p&gt;Was die Weiterleitung an Nutzer angeht, so wird bald das letzte
Sicherheits-Release von Python 2.5 veröffentlicht. Obwohl noch keine Termine für
die Wartungszweige -- 2.6, 2.7, 3.1 und 3.2 -- festgelegt sind, bekamen alle den
Code um die Lücke zu schließen.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/urllib-security-vulnerability-fixed.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/2433066173277212168/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/urlliburllib2-sicherheitslucke-behoben.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/2433066173277212168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/2433066173277212168'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/urlliburllib2-sicherheitslucke-behoben.html' title='urllib/urllib2 Sicherheitslücke behoben'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-2054066212853145359</id><published>2011-07-09T16:32:00.000+02:00</published><updated>2011-07-09T16:32:06.349+02:00</updated><title type='text'>Meet the Team: Tarek Ziadé</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;meet-the-team-tarek-ziade&quot;&gt;

&lt;p&gt;&lt;em&gt;Dieser Post ist Teil der &amp;quot;Meet the Team&amp;quot; Serie, die kurz das
Python-Kernentwickler-Team vorstellen soll.&lt;/em&gt;&lt;/p&gt;
&lt;table class=&quot;docutils field-list&quot; frame=&quot;void&quot; rules=&quot;none&quot;&gt;
&lt;col class=&quot;field-name&quot; /&gt;
&lt;col class=&quot;field-body&quot; /&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Name:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Tarek Ziadé&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Standort:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Turcey bei Dijon, Burgund, Frankreich&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Homepage:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://ziade.org&quot;&gt;http://ziade.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Wie lange nutzt Du schon Python?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Rund zehn Jahre.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie lange trägst Du schon zum Kern bei?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seit dem 21. Dezember 2008.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie wurdest Du Kernentwickler? Erinnerst Du dich an deinen ersten Beitrag?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich wurde Kernentwickler, um Distutils zu warten und weiterzuentwickeln.&lt;/p&gt;
&lt;p&gt;Mein erster Beitrag als Kernentwickler war ein Fix für einen kleinen Bug eines
distutils-Feature, den ich vorgeschlagen habe bevor ich Committer wurde. Dieses
Feature wurde in der vorigen Woche Python hinzugefügt. Es ist die Möglichkeit
die &lt;tt class=&quot;docutils literal&quot;&gt;register&lt;/tt&gt; und &lt;tt class=&quot;docutils literal&quot;&gt;upload&lt;/tt&gt; Befehle von Distutils zu konfigurieren, damit
sie mit anderen PyPI-artigen Servern zusammenarbeiten.&lt;/p&gt;
&lt;p&gt;Ich committete mit meinen brandneuen Rechten am Mittwoch, den 24. Dezember 2008,
der zufällig auch mein Geburtstag und der 17. Jahrestag des 0.9.4-Release von
Python.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An welchen Teilen von Python arbeitest Du jetzt?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In der Standardbibliothek: sysconfig, distutils, packaging (kommt mit Python
3.3), shutil, pkgutil und gelegentlich an anderen Modulen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was machst Du mit Python, wenn Du nicht gerade am Python-Kern schraubst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich arbeite bei Mozilla im Service Team, wo ich Web-Dienste mit Python baue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was macht Du, wenn Du nicht gerade programmierst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich lese Comics/Graphic Novels, schreibe Bücher, spiele mit meinen Kindern,
trinke Wein mit meiner Frau und versuche mein 1848-er Haus zu renovieren.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/meet-team-tarek-ziade.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/2054066212853145359/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/meet-team-tarek-ziade.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/2054066212853145359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/2054066212853145359'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/meet-team-tarek-ziade.html' title='Meet the Team: Tarek Ziadé'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-6349804912056436217</id><published>2011-07-02T13:18:00.001+02:00</published><updated>2011-07-02T13:19:21.373+02:00</updated><title type='text'>Formalisierung der AST-Change-Control-Policy</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;formalisierung-der-ast-change-control-policy&quot;&gt;

&lt;p&gt;Python legt mit dem &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/py3k/library/ast.html&quot;&gt;AST-Modul&lt;/a&gt;
einen abstrakten Syntaxbaum (abstract syntax tree -- AST) offen, der die
kompilierte Form von Python-Quellcode darstellt. Das AST-Modul erlaubt Nutzern
Code anhand der AST-Darstellung, zwischen
Parsing des Quellcodes und der Kompilierung zu Bytecode, zu inspizieren und zu
verändern.&lt;/p&gt;
&lt;p&gt;Die Bedeutung von Python-Code ist in der &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/py3k/reference/index.html&quot;&gt;Sprachreferenz&lt;/a&gt; definiert. Das
AST-Modul ist ein CPython-Implementierungsdetail und andere Python-Implementierungen
müssen es nicht implementieren.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;kompatibilitat-des-ast&quot;&gt;
&lt;h4&gt;Kompatibilität des AST&lt;/h4&gt;
&lt;p&gt;Als Teil der &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11549&quot;&gt;Arbeit&lt;/a&gt; CPythons
Peephole-Optimierer umzuschreiben, sodass er auf dem AST arbeitet (anstatt auf
dem rohen Bytecode, wie es momentan der Fall ist), musste Eugene Toder einige
Änderungen an der Struktur des AST machen. Als CPython-Implementierungsdetail
war es nicht sofort klar, ob die Richtlinie zur Rückwärtskompatibilität auch den
AST betrifft. Also stellte Eugene &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-April/110399.html&quot;&gt;die Frage&lt;/a&gt; auf
python-dev. Ist es bei AST-Änderungen notwendig rückwärtskompatibel zu bleiben?&lt;/p&gt;
&lt;p&gt;Der allgemeine Konsens war, dass Kompatibilität &lt;em&gt;nicht&lt;/em&gt; nötig wäre. Das
AST-Modul stellt eine Konstante, &lt;tt class=&quot;docutils literal&quot;&gt;ast.__version__&lt;/tt&gt; bereit, die Nutzercode eine
Möglichkeit bietet sein Verhalten der genutzten AST-Version anzupassen. Das
wurde als ausreichend Kompatibilität für ein implementierungsspezifisches Modul
angesehen.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;andere-python-implementierungen&quot;&gt;
&lt;h4&gt;Andere Python-Implementierungen&lt;/h4&gt;
&lt;p&gt;Tatsächlich haben sowohl Jython als auch IronPython darauf hingewiesen, dass
ihre jeweiligen Implementierungen entweder ein kompatibles AST-Modul haben oder
eines bereitstellen wollen. Trotzdem meinten sie nicht, dass deswegen der AST
eingefroren werden sollte und sind damit glücklich, dass der AST inkompatibel
geändert werden könnte, solange die &lt;tt class=&quot;docutils literal&quot;&gt;ast.__version&lt;/tt&gt;-Konstante geändert wird.&lt;/p&gt;
&lt;p&gt;Es wurde auch angesprochen, dass eine vollständige Testsuite in &lt;tt class=&quot;docutils literal&quot;&gt;test_ast.py&lt;/tt&gt;
anderen Implementierungen dabei helfen würden, sicherzustellen, dass ihre
Implementierungen zu CPython kompatibel sind. Die Abdeckung von &lt;tt class=&quot;docutils literal&quot;&gt;test_ast.py&lt;/tt&gt;
zu erhöhen würde sich gut als Projekt für jemanden eignen, der sich bei den
Python-Interna engagieren will!&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;was-passiert-als-nachstes&quot;&gt;
&lt;h4&gt;Was passiert als nächstes?&lt;/h4&gt;
&lt;p&gt;Der &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11549&quot;&gt;Patch&lt;/a&gt;, der die Diskussion lostrat,
hat noch nicht in CPython Einzug gehalten. Also könnte möglicherweise gar nichts
passieren. Aber, wenn es doch passiert, wird der AST sich inkompatibel
ändern. Die &lt;tt class=&quot;docutils literal&quot;&gt;ast.__version__&lt;/tt&gt;-Konstante wird sich ändern, um das
widerzuspiegeln und Nutzercode wird damit die Veränderungen bemerken, aber
Änderungen werden nötig sein. Allgemeiner gesprochen wird dies die Art und Weise
sein, wie AST-Änderungen in Zukunft gehandhabt werden.&lt;/p&gt;
&lt;p&gt;Die Python-Entwickler sind interessiert zu erfahren, wie weit verbreitet die Nutzung
des AST ist und wie viele Auswirkungen diese Handhabung haben wird. Wenn es
Leser gibt, deren Code von der Änderung betroffen ist, so sind sie aufgefordert sich
an der &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-April/110399.html&quot;&gt;Diskussion auf python-dev&lt;/a&gt; zu
beteiligen.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/formalizing-ast-change-control-policy.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/6349804912056436217/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/07/formalisierung-der-ast-change-control.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6349804912056436217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6349804912056436217'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/07/formalisierung-der-ast-change-control.html' title='Formalisierung der AST-Change-Control-Policy'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-7706337053347936235</id><published>2011-06-29T20:39:00.002+02:00</published><updated>2011-06-29T20:39:54.248+02:00</updated><title type='text'>Thomas Heller tritt als ctypes-Maintainer zurück</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;thomas-heller-tritt-als-ctypes-maintainer-zuruck&quot;&gt;

&lt;p&gt;Das Python-Entwicklungs-Team schuldet dem &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/ctypes&quot;&gt;ctypes&lt;/a&gt;-Maintainer Thomas Heller ein
großes Dankeschön. Anfang des Monats verkündete Thomas &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-March/109395.html&quot;&gt;sein Ausscheiden&lt;/a&gt; aus
dem CPython-Projekt, das seit Python 2.5 die Heimat seiner &lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt;-Bibliothek
ist.&lt;/p&gt;
&lt;p&gt;Ich hatte die Chance mit Thomas zu reden und er erzählte mir von seiner
Geschichte mit Python und seinen Projekten &lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt; und &lt;tt class=&quot;docutils literal&quot;&gt;py2exe&lt;/tt&gt;.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;python&quot;&gt;
&lt;h4&gt;Python&lt;/h4&gt;
&lt;p&gt;Auf der Suche nach Ressourcen um Python zu lernen, fiel Thomas 1999 Mark Lutz&#39;
&lt;a class=&quot;reference external&quot; href=&quot;http://www.amazon.com/Programming-Python-Mark-Lutz/dp/0596009259&quot;&gt;Programming Python&lt;/a&gt; in die Hände und er wurde direkt von der Sprache
fasziniert. Er war gerade dabei &lt;a class=&quot;reference external&quot; href=&quot;http://groups.csail.mit.edu/mac/projects/scheme/&quot;&gt;Scheme&lt;/a&gt; als Erweiterungssprache für ein
großes, für Windows geschriebenes, C-Programm zu ersetzen.&lt;/p&gt;
&lt;p&gt;Sein erster Beitrag zu CPython (und Open Source im Allgemeinen) war ein kleiner
Windows-bezogener Patch zu &lt;tt class=&quot;docutils literal&quot;&gt;distutils&lt;/tt&gt;. Sein Interesse an &lt;tt class=&quot;docutils literal&quot;&gt;distutils&lt;/tt&gt;
brachte ihn schließlich zur Erstellung des &lt;tt class=&quot;docutils literal&quot;&gt;bdist_wininst&lt;/tt&gt;-Kommandos, das
&amp;quot;point-and-click&amp;quot;-Windows-Installer erstellt. Danach wurde er von Greg Ward in
die python-dev Gruppe eingeladen, wo er schließlich Commit-Rechte bekam.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;py2exe&quot;&gt;
&lt;h4&gt;py2exe&lt;/h4&gt;
&lt;p&gt;Wie viele Windows-Nutzer hatte er das Bedürfnis Python-Anwendungen als einzelne,
ausführbare Datei weiterzugeben. Frühe Lösungsansätze für das Problem kamen von
Fredrik Lundhs &lt;tt class=&quot;docutils literal&quot;&gt;squeeze&lt;/tt&gt; und Christian Tismers &lt;tt class=&quot;docutils literal&quot;&gt;sqfreeze&lt;/tt&gt; und Thomas hat mit
mehreren Patches zu Gordon McMillans &lt;a class=&quot;reference external&quot; href=&quot;http://davidf.sjsoft.com/mirrors/mcmillan-inc/install1.html&quot;&gt;Installer&lt;/a&gt;-Projekt beigetragen.&lt;/p&gt;
&lt;p&gt;Sein Interesse an &lt;tt class=&quot;docutils literal&quot;&gt;distutils&lt;/tt&gt; führte Thomas dazu &lt;tt class=&quot;docutils literal&quot;&gt;Installer&lt;/tt&gt; als eine
Erweiterung der Bibliothek zu portieren. Jedoch endete es damit, dass er den
Code umschrieb, um sicherzustellen, dass die existierenden Möglichkeiten von
&lt;tt class=&quot;docutils literal&quot;&gt;distutils&lt;/tt&gt; genutzt werden. Am Ende wählte er den einfachen, aber
beschreibenden Namen &lt;tt class=&quot;docutils literal&quot;&gt;py2exe&lt;/tt&gt; für das Projekt.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;ctypes&quot;&gt;
&lt;h4&gt;ctypes&lt;/h4&gt;
&lt;p&gt;Die Idee zu &lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt; kam aus dem Bedürfnis nach mehr als was &lt;tt class=&quot;docutils literal&quot;&gt;pywin32&lt;/tt&gt;
seinerzeit bot. Zusätzlich benötigte er für seine Arbeit mit Scheme ein
Interface zur Windows API, wie er es auch für seine Arbeit mit Python brauchte,
also betrieb er sein Projekt weiter.&lt;/p&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt; hatte sein erstes öffentliches Release in 2003, etwa zur Zeit des
Python 2.3-Release, nachdem Thomas zahlreiche Anfragen bekam das Projekt zu
veröffentlichen. Er erwähnte sein ehemals kleines, privates Projekt auf seiner
&lt;a class=&quot;reference external&quot; href=&quot;http://python.net/crew/theller/&quot;&gt;Starship-Seite&lt;/a&gt;, aber in kurzer Zeit wurde es zu einer weit verbreiteten
Bibliothek.&lt;/p&gt;
&lt;p&gt;Ursprünglich startete er das Projekt unter Windows, aber schnell wurde der Ruf
nach einer Linux-Portierung laut, die er mit Hilfe der Community umsetzte. Mit
der Linux-Portierung wurde &lt;a class=&quot;reference external&quot; href=&quot;http://sourceware.org/libffi/&quot;&gt;libffi&lt;/a&gt; im Projekt eingeführt, das er auch unter
Windows zu benutzen begann, um die zugrundeliegende Implementierung
auszutauschen.&lt;/p&gt;
&lt;p&gt;2006 markierte ein 1.0-Release für &lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt;, das sich mit der Aufnahme in die
Standardbibliothek von Python 2.5 deckte. Nach Jahren harter Arbeit und vielen
Veröffentlichungen pro Jahr, war &lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt; nun mit Python gebündelt und
standardmäßig für eine viel breitere Zielgruppe zugänglich.&lt;/p&gt;
&lt;p&gt;Es waren viele Leute nötig, um &lt;tt class=&quot;docutils literal&quot;&gt;ctypes&lt;/tt&gt; dorthin zu bringen, wo es heute ist,
und Thomas will jedem danken, der mitgewirkt hat, aber vor allem Robin
Becker. Robin war in den frühen Phasen des Projekts beteiligt und steuerte
sowohl Wissen, als auch Unterstützung bei.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;ein-neuer-ctypes-maintainer&quot;&gt;
&lt;h4&gt;Ein neuer ctypes-Maintainer&lt;/h4&gt;
&lt;p&gt;Nach all der harten Arbeit, die Thomas über die Jahre investiert hat, würde er
ungern sehen, dass das Projekt zum Stillstand kommt. Wenn Du Erfahrung mit C und
Zeit dem Python-Projekt zu helfen, würde die Python-Community Deine Dienste sehr
schätzen. Mehr Informationen gibt es im neuen &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/devguide&quot;&gt;Developer Guide&lt;/a&gt; und im &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org&quot;&gt;Bug
Tracker&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/04/thomas-heller-steps-down-as-ctypes.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/7706337053347936235/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/06/thomas-heller-tritt-als-ctypes.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7706337053347936235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7706337053347936235'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/06/thomas-heller-tritt-als-ctypes.html' title='Thomas Heller tritt als ctypes-Maintainer zurück'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-6452096993549418059</id><published>2011-06-25T12:53:00.000+02:00</published><updated>2011-06-25T12:53:05.819+02:00</updated><title type='text'>Meet the Team: Benjamin Peterson</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;meet-the-team-benjamin-peterson&quot;&gt;

&lt;p&gt;&lt;em&gt;Dieser Post ist Teil der &amp;quot;Meet the Team&amp;quot; Serie, die kurz das
Python-Kernentwickler-Team vorstellen soll.&lt;/em&gt;&lt;/p&gt;
&lt;table class=&quot;docutils field-list&quot; frame=&quot;void&quot; rules=&quot;none&quot;&gt;
&lt;col class=&quot;field-name&quot; /&gt;
&lt;col class=&quot;field-body&quot; /&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Name:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Benjamin Peterson&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Standort:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;Minnesota, USA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Homepage:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://benjamin-peterson.org&quot;&gt;http://benjamin-peterson.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field&quot;&gt;&lt;th class=&quot;field-name&quot;&gt;Blog:&lt;/th&gt;&lt;td class=&quot;field-body&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://pybites.blogspot.com&quot;&gt;http://pybites.blogspot.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Wie lange nutzt du schon Python?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;3 1/2 Jahre.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie lange trägst du schon zum Kern bei?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Diesen 25. März genau drei Jahre.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie wurdest du Kernentwickler? Erinnerst du dich an deinen ersten Beitrag?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mein erster Vorschlag wurde &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue1828&quot;&gt;von Guido selbst zurückgewiesen&lt;/a&gt;. Zum Glück blieb ich hartnäckig und es
wurden ein paar Patches akzeptiert. Ich glaube mein erster Beitrag war eine
Neuordnung der Misc/ACKS-Datei.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An welchen Teilen von Python arbeitest du jetzt?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich mag den Parser-, Compiler- und Interpreter-Kern, aber ich bin bekannt dafür
in fast jedem Teil der Python-Kernentwicklung herumzupfuschen... außer Windows!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was machst du mit Python wenn du nicht gerade am Python-Kern schraubst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich benutze es um einen Python-Interpreter zu bauen (&lt;a class=&quot;reference external&quot; href=&quot;http://pypy.org&quot;&gt;http://pypy.org&lt;/a&gt;)! Ich bin
im Innersten wirklich ein Python-Implementierer. :) Ich bin der Schöpfer von
&lt;a class=&quot;reference external&quot; href=&quot;http://pypi.python.org/pypi/six&quot;&gt;six&lt;/a&gt;, einer Python 2 und 3
Kompatibilitätsbibliothek.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was macht du wenn du nicht gerade programmierst?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Musik komponieren, Klarinette spielen und Mathebücher lesen. Hin und wieder
wandere ich auch ein bisschen.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/03/meet-team-benjamin-peterson.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/6452096993549418059/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/06/meet-team-benjamin-peterson.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6452096993549418059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/6452096993549418059'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/06/meet-team-benjamin-peterson.html' title='Meet the Team: Benjamin Peterson'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-364670596225092111</id><published>2011-06-23T14:24:00.001+02:00</published><updated>2011-06-23T14:26:02.915+02:00</updated><title type='text'>Deprecations zwischen Python 2.7 und 3.x</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;deprecations-zwischen-python-2-7-und-3-x&quot;&gt;

&lt;p&gt;Eine kürzliche &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-March/109010.html&quot;&gt;Diskussion auf python-dev&lt;/a&gt; zeigte
ein Problem mit Pythons momentaner Verfahrensweise bezüglich Deprecations auf,
das Entwickler betrifft, die von Python 2.7 auf aktuelle Versionen von Python
3.x umsteigen. Aufgrund dieses Problems hat das Entwickler-Team die aktuelle
Deprecation-Policy angepasst, um die Tatsache zu berücksichtigen, dass
Python-Nutzer normalerweise direkt von Python 2.7 auf die letzte Version von 3.x
umsteigen, ohne je ältere Versionen gesehen zu haben.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;hintergrund&quot;&gt;
&lt;h4&gt;Hintergrund&lt;/h4&gt;
&lt;p&gt;Python hat ein starkes Bekenntnis zur Rückwärtskompatibilität. Keine Veränderung
ist erlaubt, ohne dass sie den Kompatibilitätsrichtlinien entspricht, was im
Grunde heißt, dass korrekte Programme auch unter neuen Python-Versionen korrekt
laufen. Aber das ist nicht immer möglich, beispielsweise wenn eine API klar
kaputt ist und durch etwas anderes ersetzt werden muss. In dem Fall verfolgt
Python eine Deprecation-Policy, die besagt, dass zu entfernende Features in
einem einjährigen Übergangszeitraum formell deprecated werden. In diesem
Übergangszeitraum muss eine &lt;tt class=&quot;docutils literal&quot;&gt;DeprecationWarning&lt;/tt&gt; ausgegeben werden, um den
Entwicklern Zeit zu geben ihren Code zu aktualisieren. &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0005/&quot;&gt;PEP 5&lt;/a&gt; beschreibt die
vollen Details von Pythons Deprecation-Policy. Da Veränderungen nur in neuen
Python-Releases gemacht werden und es normalerweise eine 18-monatige Lücke
zwischen Releases gibt, bedeutet das, dass dieser Zeitraum normalerweise einem
Release entspricht.&lt;/p&gt;
&lt;p&gt;Die eine Ausnahme zu dieser Verfahrensweise war Python 3. Der große
Versionssprung zwischen Python 2 und Python 3 war genau dazu gedacht
Veränderungen zu machen, die die Rückwärtskompatibilität brechen, um den
Python-Entwicklern die Möglichkeit zu geben Probleme zu beheben, die einfach
nicht innerhalb der Verfahrensweise behoben werden konnten. Zum Beispiel Strings
standardmäßig zu Unicode zu machen und Iteratoren statt Listen zurückzugeben.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;parallele-entwicklungszweige&quot;&gt;
&lt;h4&gt;Parallele Entwicklungszweige&lt;/h4&gt;
&lt;p&gt;Wohlwissend, dass der Übergang nach Python 3 Zeit brauchen würde, nach vielen
Schätzungen 5 Jahre, gab es in einigem Umfang eine parallele Entwicklung von
Python 2 und 3.&lt;/p&gt;
&lt;p&gt;Da Python 2.7 der letzte Release von Python 2 sein wird, wurde vereinbart, dass
hier der Wartungszeitraum erheblich ausgedehnt wird. Letztlich müssen
Entwickler, die zu einer neueren Version von Python wechseln wollen, also den
Sprung nach Python 3 machen.&lt;/p&gt;
&lt;p&gt;Und genau hier liegt das Problem ...&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;uberraschungsdeprecations&quot;&gt;
&lt;h4&gt;Überraschungsdeprecations&lt;/h4&gt;
&lt;p&gt;In einem &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-March/109010.html&quot;&gt;Thread auf python-dev&lt;/a&gt;, wurde
darauf hingewiesen, dass eine spezifische Funktion der C-API,
&lt;tt class=&quot;docutils literal&quot;&gt;PyCObject_AsVoidPtr&lt;/tt&gt;, entfernt wurde, ohne dass davor ausreichend
gewarnt wurde. Und doch soll die Deprecation-Policy genau das verhindern! Was
ist also passiert?&lt;/p&gt;
&lt;p&gt;Die Änderung war Teil einer größeren Migration von einer älteren API
(&lt;tt class=&quot;docutils literal&quot;&gt;PyCObject&lt;/tt&gt;) zu einer neueren und verbesserten API (&lt;tt class=&quot;docutils literal&quot;&gt;PyCapsule&lt;/tt&gt;). Das
Problem ist, dass &lt;tt class=&quot;docutils literal&quot;&gt;PyCObject&lt;/tt&gt; die Standard-API war und sogar die einzige in
Python 2.6 verfügbare. Das API wurde in Python 2.7 deprecated. In Python 3.2
gibt es sie nicht und &lt;tt class=&quot;docutils literal&quot;&gt;PyCapsule&lt;/tt&gt; sollte genutzt werden. Damit gibt es einen
Übergangszeitraum vom Release von Python 2.7 (Juli 2010) bis zum Release von
Python 3.2 (Februar 2011), also knapp 7 Monate. Das ist erheblich weniger als
der 12-Monate-Mindestzeitraum und macht es Entwicklern schwer eine sinnvolle
Auswahl von Python-Releases zu unterstützen.&lt;/p&gt;
&lt;p&gt;Für jemandem, der von 3.0 zu 3.1 und danach zu 3.2 wechselt, ist der Übergang in
Ordnung. Python 3.1 wurde im März 2010 mit der Deprecation veröffentlicht und so
gab es in der Python 3.x-Serie einen Übergangszeitraum von fast 12
Monaten. Allerdings ist das nicht, was Entwickler normalerweise tun: Sie gehen
von Python 2.7 direkt zur letzten Version von Python 3.x, in diesem Fall Python
3.2, und schaffen so das Problem. Dies war nie die Absicht von python-dev, aber
beim Schreiben von PEP 5 wurde nicht an zwei parallele Versionen gedacht, die
beide aktiv entwickelt wurden.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;was-machen-wir-also&quot;&gt;
&lt;h4&gt;Was machen wir also?&lt;/h4&gt;
&lt;p&gt;Auch wenn der &lt;tt class=&quot;docutils literal&quot;&gt;PyCObject&lt;/tt&gt;/&lt;tt class=&quot;docutils literal&quot;&gt;PyCapsule&lt;/tt&gt;-API-Bruch ein echtes Problem ist, so
ist es nicht unmöglich es zu umgehen, aber mindestens ein Poster hatte auf
python-dev Schwierigkeiten damit. Insgesamt hätte das nie passieren dürfen.&lt;/p&gt;
&lt;p&gt;Für den speziellen Fall von &lt;tt class=&quot;docutils literal&quot;&gt;PyCObject&lt;/tt&gt;/&lt;tt class=&quot;docutils literal&quot;&gt;PyCapsule&lt;/tt&gt; gibt es das Problem
schon und es kann nicht viel dagegen getan werden. &lt;tt class=&quot;docutils literal&quot;&gt;PyCObject&lt;/tt&gt; wieder
einzusetzen stand nicht wirklich zur Debatte, da es nur noch mehr
Inkompatibilitäten schaffen würde. Jedoch war die allgemeine Ansicht, dass es
möglich, wenn auch mühsam, wäre Code zu schreiben, der sich jeder verfügbaren
API anpassen könnte. In der Tat war in Python 3.1 die &lt;tt class=&quot;docutils literal&quot;&gt;PyCObject&lt;/tt&gt;-API nur eine
Schicht auf der &lt;tt class=&quot;docutils literal&quot;&gt;PyCapsule&lt;/tt&gt;-API. Es gab auch den Vorschlag, dass man falls
nötig die Python 3.1 Implementierung extrahieren und als Dritt-Modul anbieten
könnte. Man war sich einig, dass man ein &amp;quot;rückwirkendes&amp;quot; PEP schreiben
würde, um die Gründe hinter der Veränderung zu beschreiben und Ressourcen zu
dokumentieren, die Entwicklern beim Umstieg helfen können.&lt;/p&gt;
&lt;p&gt;Allgemein gesprochen ist das Python-Entwicklungsteam nun mit dem Problem
vertraut und wird daran arbeiten, dass es nicht wieder passieren wird. Guido
&lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2011-March/109450.html&quot;&gt;veröffentlichte eine Überprüfung&lt;/a&gt; der
Situation und schlug vor, dass man für den Moment in Python 3 sparsam mit
Deprecations umgehen sollte. Mindestens sollten deprecated APIs erheblich länger
behalten werden, bevor sie entfernt werden, um von Python 2.7 kommenden
Entwicklern einen Migrationspfad zu bieten.&lt;/p&gt;
&lt;p&gt;Indirekter wurde in dem Thread auch das Problem behandelt wie man effektiver
Veränderungen in Python zeitnaher und einem breiterem Kreis kommunizieren könnte
-- genau die Art von Problem also, für die dieses Blog geschaffen wurde.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;was-bedeutet-das-alles&quot;&gt;
&lt;h4&gt;Was bedeutet das alles?&lt;/h4&gt;
&lt;p&gt;In erster Linie bedeutet das, dass die Python-Entwickler nicht immer alles
richtig machen. Niemand wollte den Entwicklern das Leben schwer machen, sondern
es war einfach ein Problem, das nicht rechtzeitig entdeckt wurde.&lt;/p&gt;
&lt;p&gt;Zweitens, dass das Beheben des Problems mehr Schaden als Nutzen kann,
weshalb das &lt;tt class=&quot;docutils literal&quot;&gt;PyCObject&lt;/tt&gt;-API nicht wieder eingesetzt wurde. Zwar würde das
Entwicklern helfen, die von der Veränderung gebissen wurden, aber zu dem Preis,
dass Kompatibilitätsprobleme komplexer würden. In der Zwischenzeit müssen wir
mit dem Problem leben und weiter machen. Lehren wurden daraus gezogen und wir
werden den Fehler nicht nochmal machen.&lt;/p&gt;
&lt;p&gt;Dies zeigt auch, dass das Python-Entwicklerteam von seinen Anwendern hören
will. Kompatibilität ist wichtig und es wird alles daran gesetzt den Übergang zu
neuen Versionen so schmerzlos wie möglich zu machen. Besonders
Bibliotheken-Entwickler sollten mit einem angemessenen Maß an Aufwand mehrere
Python-Versionen unterstützen können.&lt;/p&gt;
&lt;p&gt;Schließlich heißt das: Entwickler haben Python 2.7 noch nicht verlassen. Obwohl
es keine neue Features und kein Python 2.8 geben wird, sind die Ansichten der
Python 2.7-Nutzer dennoch wichtig. Es ist wesentlich für die gesamte
Python-Community, sicherzustellen, dass Nutzer zu 3.x wechseln können, wenn sie
bereit sind.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/03/recent-discussion-on-python-dev.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/364670596225092111/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/06/deprecations-zwischen-python-27-und-3x.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/364670596225092111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/364670596225092111'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/06/deprecations-zwischen-python-27-und-3x.html' title='Deprecations zwischen Python 2.7 und 3.x'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-8460664525301192652</id><published>2011-06-04T15:43:00.002+02:00</published><updated>2011-06-04T15:43:55.680+02:00</updated><title type='text'>Von Polling, futures und Paralleler Ausführung</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;von-polling-futures-und-paralleler-ausfuhrung&quot;&gt;

&lt;p&gt;Eines der großen Problemfelder im modernen Computerwesen ist Stromsparen. Es hat
besonders Gewicht in tragbaren Geräten (Laptops, Tablets, Handhelds). Eine
moderne CPU ist in der Lage in viele stromsparende Modi zu wechseln, wenn sie
nichts zu tun hat. Je länger sie untätig ist, desto tiefer der stromsparende
Modus und desto weniger Energie wird verbraucht und damit hält der Akku eines
Geräts umso länger mit einer einfachen Aufladung.&lt;/p&gt;
&lt;p&gt;Stromspar-Modi haben einen Feind: Polling. Weckt ein Prozess die CPU periodisch
auf, auch für so etwas triviales wie das Lesen einer Speicherstelle, um eventuelle
Änderungen zu erkennen, verlässt die CPU den Stromspar-Modus, weckt alle seine
internen Strukturen und wird erst wieder in den Stromspar-Modus wechseln, wenn
der kleine periodischer Prozess seine beabsichtigte Arbeit schon lange beendet
hat. Intel selbst &lt;a class=&quot;reference external&quot; href=&quot;http://www.lesswatts.org/projects/applications-power-management/avoid-pulling.php&quot;&gt;ist besorgt&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Python 3.2 kommt mit einem neuen Standardmodul, um nebenläufige Arbeiten
anzustoßen und auf ihre Beendigung zu warten: &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/library/concurrent.futures.html&quot;&gt;concurrent.futures&lt;/a&gt;. Während ich den
Code durchsah, bemerkte ich, dass es in manchen seiner Arbeitsthreads und
-prozesse Polling nutzte. &amp;quot;Manche&amp;quot;, weil sich die Implementierung von
&lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor&quot;&gt;ThreadPoolExecutor&lt;/a&gt;
und von &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor&quot;&gt;ProcessPoolExecutor&lt;/a&gt;
unterscheidet. Erste pollt in jedem seiner Arbeitsthreads, während die Zweite es
nur in einem einzigen Thread, dem &amp;quot;queue management thread&amp;quot;, tut, der zur
Kommunikation zwischen den Arbeitsprozessen genutzt wird.&lt;/p&gt;
&lt;p&gt;Polling wurde hier nur für eine Sache genutzt: Um zu erkennen, wann die
Abschaltprozedur ausgeführt werden soll. Für andere Aufgaben, wie das Einreihen
von Callables oder das Holen von Ergebnissen, vorher eingereihter Callables,
werden synchronisierte Queue-Objekte benutzt. Diese Queue-Objekte kommen
entweder aus dem &lt;tt class=&quot;docutils literal&quot;&gt;threading&lt;/tt&gt;- oder dem &lt;tt class=&quot;docutils literal&quot;&gt;multiprocessing&lt;/tt&gt;-Modul, je nachdem
welche Executor-Implementierung genutzt wird.&lt;/p&gt;
&lt;p&gt;Also entwickelte ich eine &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11635&quot;&gt;einfache Lösung&lt;/a&gt;: Ich ersetzte das Polling mit einem
Sentinel, dem eingebauten Sentinel &lt;tt class=&quot;docutils literal&quot;&gt;None&lt;/tt&gt;. Bekommt eine Queue ein &lt;tt class=&quot;docutils literal&quot;&gt;None&lt;/tt&gt;,
dann wacht ein wartender Arbeiter natürlicherweise auf und überprüft, ob er sich
Abschalten sollte oder nicht. Im &lt;tt class=&quot;docutils literal&quot;&gt;ProcessPoolExecutor&lt;/tt&gt; gibt es eine kleine
Komplikation, da man neben dem einen &amp;quot;queue managing thread&amp;quot; N Arbeitsprozesse
aufwecken muss.&lt;/p&gt;
&lt;p&gt;Im ersten Patch gab es immernoch einen Polling-Timeout, wenn auch einen sehr
großen (10 Minuten), sodass die Arbeiter an irgendeinem Zeitpunkt aufwachen
würden. Der große Timeout existierte, für den Fall, dass der Code fehlerhaft ist
und keine Benachrichtigung zum Abschalten durch den schon genannten Sentinel
verteilt würde. Aus Neugier tauchte ich in den &lt;tt class=&quot;docutils literal&quot;&gt;multiprocessing&lt;/tt&gt;-Code und
machte eine weitere interessante Entdeckung: Unter Windows benutzt
&lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/dev/library/multiprocessing.html#multiprocessing.Queue.get&quot;&gt;multiprocessing.Queue.get()&lt;/a&gt;
, mit einem von Null verschiedenen, nicht-unendlichen Timeout, ... Polling
(weshalb ich &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11668&quot;&gt;Issue 11668&lt;/a&gt; öffnete). Es
benutzt eine interessante hochfrequente Art des Pollings, da es mit einem
Millisekunden Timeout beginnt, der mit jedem Durchgang erhöht wird.&lt;/p&gt;
&lt;p&gt;Natürlich macht die Benutzung eines Timeouts, egal wie groß, meinen Patch
unter Windows zwecklos, da die Art der Implementierung ein Aufwachen jede
Millisekunde bedeutet. Also hab ich die bittere Pille geschluckt und den
riesigen Timeout entfernt. Der letzte Patch kommt komplett ohne Timeout aus und
sollte damit, egal auf welcher Plattform, kein periodisches Aufwachen
verursachen.&lt;/p&gt;
&lt;p&gt;Historisch gesprochen, nutzte vor Python 3.2 jede Timeout-Einrichtung des
&lt;tt class=&quot;docutils literal&quot;&gt;threading&lt;/tt&gt;-Moduls - und damit ein Großteil von &lt;tt class=&quot;docutils literal&quot;&gt;multiprocessing&lt;/tt&gt;, da
&lt;tt class=&quot;docutils literal&quot;&gt;multiprocessing&lt;/tt&gt; selbst Arbeitsthreads für verschiedene Aufgaben nutzt -
Polling.  Dies wurde mit &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue7316&quot;&gt;Issue 7316&lt;/a&gt;
behoben.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/03/of-polling-futures-and-parallel.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/8460664525301192652/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/06/von-polling-futures-und-paralleler.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/8460664525301192652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/8460664525301192652'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/06/von-polling-futures-und-paralleler.html' title='Von Polling, futures und Paralleler Ausführung'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-7276973990963662499</id><published>2011-05-19T14:51:00.001+02:00</published><updated>2011-05-31T09:23:16.953+02:00</updated><title type='text'>2011 Language Summit Report</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;language-summit-report&quot;&gt;

&lt;p&gt;Der diesjährige Language Summit (Gipfeltreffen zur Sprache) fand am 10. März --
am Tag vor der PyCon -- in Atlanta statt. Zugegen waren Entwickler der VMs
&lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org&quot;&gt;CPython&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://www.pypy.org&quot;&gt;PyPy&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://www.jython.org&quot;&gt;Jython&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://www.ironpython.net&quot;&gt;IronPython&lt;/a&gt; und &lt;a class=&quot;reference external&quot; href=&quot;http://www.parrot.org&quot;&gt;Parrot&lt;/a&gt;,
Packaging-Entwickler von &lt;a class=&quot;reference external&quot; href=&quot;http://www.fedoraproject.org&quot;&gt;Fedora&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://www.ubuntu.com&quot;&gt;Ubuntu&lt;/a&gt; und &lt;a class=&quot;reference external&quot; href=&quot;http://www.debian.org&quot;&gt;Debian&lt;/a&gt;, sowie Mitglieder
des &lt;a class=&quot;reference external&quot; href=&quot;http://www.twistedmatrix.com&quot;&gt;Twisted&lt;/a&gt; Projekts und viele andere.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;entwicklungs-blog&quot;&gt;
&lt;h4&gt;Entwicklungs-Blog&lt;/h4&gt;
&lt;p&gt;Einer der ersten Tagesordnungspunkte war die Diskussion eben dieses Blogs,
angestoßen vom PSF Communications Officer Doug Hellmann. Wegen des hohen
Verkehrs und der oft heftigen Art auf der python-dev Mailingliste, hofft dieses
Blog für User einen einfachere Möglichkeit zu bieten, sich über die Entwicklung
zu informieren. Wir planen PEPs, jede größere Entscheidung, neue Features und
kritische Bug Fixes abzudecken und informell darüber zu berichten, was im
Entwicklungsprozess geschieht.&lt;/p&gt;
&lt;p&gt;Jeder Python-Implementierung steht es frei in dem Blog zu
schreiben. Beispielsweise sind die PyPy-Entwickler eingeladen ihre Neuigkeiten
auch hier zu veröffentlichen, auch wenn sie schon &lt;a class=&quot;reference external&quot; href=&quot;http://morepypy.blogspot.com/&quot;&gt;ihr eigenes aktives Blog&lt;/a&gt; haben. Eine verwandte Nebendiskussion führte
dazu, dass alternative Implementierungen ebenfalls auf der &lt;a class=&quot;reference external&quot; href=&quot;http://python.org/download&quot;&gt;python.org
Downloadseite&lt;/a&gt; erwähnt werden. Ihre Releases
werden nun auch als Neuigkeiten auf der &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org&quot;&gt;python.org Startseite&lt;/a&gt; aufgeführt.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;kompatibilitatswarnungen&quot;&gt;
&lt;h4&gt;Kompatibilitätswarnungen&lt;/h4&gt;
&lt;p&gt;Mit 3.2 haben wurde &lt;tt class=&quot;docutils literal&quot;&gt;ResourceWarning&lt;/tt&gt; eingeführt, um es Nutzern zu erlauben
Code-Bereiche zu finden, die sich auf CPythons Reference-Counter verlassen. Die
Warnung hilft Nutzern nicht nur besseren Code zu schreiben, sondern erlaubt es
ihnen auch sichereren VM-übergreifenden Code zu schreiben. Um die
VM-übergreifende Kompatibilität noch weiter zu stärken, wurde ein neuer
Warnungstyp vorgeschlagen: &lt;tt class=&quot;docutils literal&quot;&gt;CompatibilityWarning&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Die Idee wurde aus einem kürzlich geöffneten CPython-Bug geboren, der von den
PyPy-Entwicklern gefunden wurde. &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue11455&quot;&gt;Issue #11455&lt;/a&gt; erklärt ein Problem, bei dem CPython es
einem Nutzer erlaubt einen Typ zu erstellen, dessen &lt;tt class=&quot;docutils literal&quot;&gt;__dict__&lt;/tt&gt; nicht-String
Schlüssel enthält, was mindestens von PyPy und Jython nicht unterstützt wird.&lt;/p&gt;
&lt;p&gt;Idealerweise können Nutzer eine Warnung aktivieren, um solche Fälle zu
entdecken, genauso wie sie es mit &lt;tt class=&quot;docutils literal&quot;&gt;ResourceWarning&lt;/tt&gt; tun.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;eigenstandige-standardbibliothek&quot;&gt;
&lt;h4&gt;Eigenständige Standardbibliothek&lt;/h4&gt;
&lt;p&gt;Jetzt, nachdem die Verlagerung der CPython-Quellen von Subversion nach Mercurial
vollendet ist, wurde die Idee die Standardbibliothek in ein
eigenes Repository auszugliedern, wiederbelebt. Die Entwickler alternativer
Implementierungen sind sehr an dieser Umstellung interessiert, da es ihre
Entwicklungsprozesse sehr vereinfachen würde. Momentan nutzen sie einen Snapshot
der Standardbibliothek von CPython und wenden implementierungsspezifische
Patches darauf an, ersetzen manche C-Erweiterungen mit reinen Python-Versionen
und vieles mehr.&lt;/p&gt;
&lt;p&gt;Die Umstellung muss in einem zukünftigen PEP beschrieben werden und einer der
Diskussionspunkte wird sein, wie die Versionierung gehandhabt werden soll. Da
die Bibliothek außerhalb jeder Implementierungen leben wird, ist es
wahrscheinlich, dass sie eine eigene Versionierung bekommt. Und auch zu den
Tests werden ähnliche Gedanken nötig.&lt;/p&gt;
&lt;p&gt;Ein weiteres Thema zur Standardbibliothek-Auskopplung waren reine
Python-Implementierungen und ihre entsprechenden C-Erweiterungen. Maciej
Fijalkowski vom PyPy-Projekt erwähnte, dass mit der Zeit einige Module schon
kleine Unterschiede zwischen den C- und Python-Versionen zeigten. Im Laufe der
Diskussion schlug die Gruppe einen strikteren Ansatz beim Ändern dieser Module
vor, um nicht die Nutzung des einen oder des anderen zu bestrafen. Zusätzlich
wurde beschlossen reine Python-Implementierungen zu bevorzugen und
C-Implementierungen nur dann zu erstellt, wenn damit auch eine
Leistungssteigerung erreicht wird.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;performance-benchmark-site&quot;&gt;
&lt;h4&gt;Performance Benchmark Site&lt;/h4&gt;
&lt;p&gt;Das PyPy Speed Center hat mit dem Zeigen von PyPys Performance-Ergebnissen
großartige Arbeit geleistet und es gab einige Diskussion um das bereitstellen
einer ähnlichen Seite bei python.org, möglicherweise performance.python.org, bei
dem alle VMs teilnehmen könnten. Zusätzlich zu Geschwindigkeit-Benchmarks
sollten andere Benchmarks, wie Speicherverbrauch, Testerfolg und
Sprachkompatibilität, berücksichtigt werden. Es wird aber einiger Aufwand nötig
sein, um die Infrastruktur so anzupassen, dass sie mit mehreren
Implementierungen arbeitet, da momentan nur PyPy mit CPython verglichen wird.&lt;/p&gt;
&lt;p&gt;Zur Umsetzung des &amp;quot;Speed Center&amp;quot;, kam es ins Gespräch Hochleistungsmaschinen in
das &lt;a class=&quot;reference external&quot; href=&quot;http://osuosl.org/&quot;&gt;Open Source Lab bei der Oregon State University&lt;/a&gt; zu
stellen, bei dem Allison Randal beteiligt ist.  Jesse Noller erwähnte
Anstrengungen Hardware zu beschaffen, um sie in das Lab zu stellen -- Spenden
sind willkommen!&lt;/p&gt;
&lt;p&gt;Wenn Du oder Deine Organisation interessiert sind für diesen Zweck zu spenden,
kontaktiere bitte die &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/psf/about&quot;&gt;Python Software Foundation&lt;/a&gt; und schau auf unsere &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/psf/donations&quot;&gt;Spendenseite&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;moratorium-aufgehoben&quot;&gt;
&lt;h4&gt;Moratorium aufgehoben&lt;/h4&gt;
&lt;p&gt;Mit dem Start der CPython 3.3-Entwicklung wurde das Moratorium der
Sprachveränderungen aufgehoben. Obwohl die Tore geöffnet sind, erwarten wir,
dass die Sprachveränderungen konservativ ausfallen und es wird versucht die
Änderungsrate zu verlangsamen, um es alternativen Implementierungen weiterhin zu
ermöglichen aufzuschließen. Auch wenn noch keine zur 3.x Linie aufgeschlossen
hat, haben PyPy und IronPython es wegen des Moratoriums geschafft Kompatibilität
zu 2.7 zu erreichen und IronPython ist auf dem Weg zu Python 3.x.&lt;/p&gt;
&lt;p&gt;Was für Python 3.3 erwartete Sprachveränderungen angeht, kann man erwarten,
dass &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0380/&quot;&gt;PEP 380&lt;/a&gt; akzeptiert wird. Das
PEP führt eine neue &lt;tt class=&quot;docutils literal&quot;&gt;yield from &amp;lt;expr&amp;gt;&lt;/tt&gt; Syntax ein, die einem Generator
erlaubt zu einem anderen Generator zu &lt;tt class=&quot;docutils literal&quot;&gt;yield&lt;/tt&gt;-en. Andere Sprachveränderungen
werden in der nahen Zukunft nicht erwartet.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;attribute-fur-exceptions&quot;&gt;
&lt;h4&gt;Attribute für Exceptions&lt;/h4&gt;
&lt;p&gt;Das nächste Thema war eine kurze Diskussion, dass Exceptions bessere
Attribute bereitstellen sollten, anstatt Nutzer zu zwingen sich auf
String-Meldungen zu verlassen. Zum Beispiel wäre es bei einem &lt;tt class=&quot;docutils literal&quot;&gt;ImportError&lt;/tt&gt;
sinnvoll einen einfachen Zugriff auf den fehlgeschlagenen Import zu haben,
anstatt die Meldung danach zu untersuchen.&lt;/p&gt;
&lt;p&gt;Die Implementierung wird sich wahrscheinlich auf ein keyword-only Argument bei
der Initialisierung eines Exception-Objekts stützen und es existiert schon ein
Patch für den &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue8754&quot;&gt;Fall von ImportError&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;contributor-agreements&quot;&gt;
&lt;h4&gt;Contributor-Agreements&lt;/h4&gt;
&lt;p&gt;Mitarbeiter-Vereinbarungen wurden ebenfalls erwähnt und eine Form elektronischer
Vereinbarung ist unterwegs. Googles &lt;a class=&quot;reference external&quot; href=&quot;http://code.google.com/legal/individual-cla-v1.0.html&quot;&gt;Individual Contributor Agreement&lt;/a&gt; war eine von mehreren
Inspirationsquellen für die Ausarbeitung des neuen Systems. Das Thema wurde
lange diskutiert und viele Leute erwarten eine Lösung für das
Problem. Zusätzlich wurden Untersuchungen angestellt, um sicherzustellen, dass
ein Wechsel zu einer elektronischen Vereinbarung auch in nicht-US
Rechtsprechungen gilt.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;google-summer-of-code&quot;&gt;
&lt;h4&gt;Google Summer of Code&lt;/h4&gt;
&lt;p&gt;Martin von Löwis nahm sich kurz Zeit, um ein weiteres Jahr des &amp;quot;Google Summer of
Code&amp;quot; unter dem Dach der PSF einzuleiten. Entwickler sind dazu ermuntert, nicht
nur als Mentor zu arbeiten, sondern auch Projekte vorzuschlagen, an denen
Studenten arbeiten könnten -- der Vorschlag eines Projekts heißt aber nicht,
dass man es auch als Mentor betreuen muss. Wenn Du daran interessiert bist, auf
irgendeine Art und Weise zu helfen, schau mal bei dem &lt;a class=&quot;reference external&quot; href=&quot;http://pyfound.blogspot.com/2011/03/google-summer-of-code-call-for-projects.html&quot;&gt;Call for Projects and
Mentors der PSF&lt;/a&gt;
vorbei.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;distutils&quot;&gt;
&lt;h4&gt;Distutils&lt;/h4&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/tarek/distutils2/wiki/Home&quot;&gt;Distutils2&lt;/a&gt; kam auf und Tarek Ziadé erwähnte, dass das Ziel ihres Sprints die
Vollendung des Python 3-Ports und die Vorbereitung für die spätere Rückführung
in die Standardbibliothek sei. Zusätzlich kommt damit ein neuer Name:
&lt;tt class=&quot;docutils literal&quot;&gt;packaging&lt;/tt&gt;. Das packaging-Team plant auch ein eigenständiges Paket,
immer noch unter dem Namen Distutils2, um Python 2.4 bis 3.2 zu unterstützen.&lt;/p&gt;
&lt;p&gt;Das Ergebnis des packaging-Sprints, der einer der größeren PyCon-Sprints war,
war sehr erfolgreich. Die momentanen Ergebnisse, die auf den Merge zurück in die
Standardbibliothek warten, gibt es bei &lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/tarek/cpython&quot;&gt;Bitbucket&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;die-zukunft-alternativer-vms&quot;&gt;
&lt;h4&gt;Die Zukunft alternativer VMs&lt;/h4&gt;
&lt;p&gt;Die IronPython-Vertreter haben ihre Zukunftspläne erwähnt und ein 3.x-Release
ist das nächste auf ihrem Plan. Sie verkündeten ihr 2.7.0-Release auf der PyCon,
ihr erstes Community-basiertes Release, seit Microsoft das Projekt aus der Hand
gab, und sie werden sich in den nächsten Monaten in Richtung 3.x aufmachen.&lt;/p&gt;
&lt;p&gt;Jython brachte kürzlich ein 2.5.2-Release heraus und das Team begann mit der
Planung eines 2.6-Release. Manche erwähnten, dass sie direkt zu 2.7 springen
sollten, da die Unterschiede zwischen 2.6 und 2.7 nicht sonderlich groß sind,
aber es könnte dann auch länger bis zu einem ersten Release dauern. &amp;quot;Release
early, Release often&amp;quot; (Veröffentliche früh, Veröffentliche oft) war einer der
Zitate, die aus dem Gespräch herausdrangen und es könnte sogar klappen direkt
von 2.6 auf 3.x umzusteigen und erst danach die Unterschiede zwischen 2.6 und
2.7 zu betrachten.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;fordergelder&quot;&gt;
&lt;h4&gt;Fördergelder&lt;/h4&gt;
&lt;p&gt;Nach den Planungsgesprächen zu 3.x war das Thema die Förderung von
Entwicklungsarbeit und wie man damit den Weg mancher alternativer
Implementierungen zu 3.x beschleunigen könnte. Geld ist verfügbar, aber es muss
erst ein Antrag an die PSF gerichtet werden, bevor irgendetwas besprochen werden
kann. Wer an Fördergeldern für diese Bemühungen interessiert ist, sollte die PSF
kontaktieren.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;baseline-python&quot;&gt;
&lt;h4&gt;&amp;quot;Baseline&amp;quot; Python&lt;/h4&gt;
&lt;p&gt;Jim Fulton startete eine Diskussion über etwas, das er &amp;quot;Baseline&amp;quot; Python
nannte. Er machte schlechte Erfahrungen beim Deployment von Python-Anwendungen,
da die System-Python-Version unvorhersehbar umfangreich ist und damit ein
schwieriges Ziel darstellt. Da Fedora und Debian-/Ubuntu-Paket-Experten zur Hand
waren, war es möglich einen Einblick in den Stand der Dinge zu bekommen.&lt;/p&gt;
&lt;p&gt;Bei Fedora steht bei der Basisinstallation von Python die Live CD im Blick,
darum ist es eine sehr minimale Installation mit wenigen Abhängigkeiten, im
Grunde nur das allernötigste, damit das System überhaupt funktioniert.
Zusätzliche Unterschiede gibt es bei den Verzeichnislayouts, das Entfernen von
Modulen der Standardbibliothek wie &lt;tt class=&quot;docutils literal&quot;&gt;distutils&lt;/tt&gt; oder dass die Distribution
veraltete Bibliotheken anbietet.&lt;/p&gt;
&lt;p&gt;Eine scharf umrissene Lösung fand sich nicht direkt, aber die zuständigen
Personen werden weiter an dem Problem arbeiten.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;features&quot;&gt;
&lt;h4&gt;3.3 Features&lt;/h4&gt;
&lt;p&gt;Es kamen manche Gedanken für 3.3 Features herauf, darunter zwei PEPs.
&lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0382&quot;&gt;PEP 382&lt;/a&gt;, das Namensraum-Pakete
abdeckt, sollte an einem Zeitpunkt des Zyklus auftauchen. Es wurde auch schon im
Zuge des &lt;tt class=&quot;docutils literal&quot;&gt;distutils&lt;/tt&gt;-Merge angesprochen.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/dev/peps/pep-0393&quot;&gt;PEP 393&lt;/a&gt;, das eine flexible
String-Repräsentation definiert, stand ebenfalls zur Diskussion und
interessierte schon manche Studenten als GSoC-Projekt. Zusammen mit der
Implementierung wird etwas Aufwand bei den Leistungs- und
Speichercharakteristiken der neuen Interna nötig sein, um zu überprüfen, ob sie
akzeptabel sind.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;unladen-swallow&quot;&gt;
&lt;h4&gt;Unladen Swallow&lt;/h4&gt;
&lt;p&gt;Unladen Swallow &amp;quot;schläft&amp;quot; momentan und wird so keinen Einzug in CPython 3.3
finden. Um weiteren Fortschritt zu machen, müssen mehrere Champions gefunden
werden, da sich die Domänenexperten nicht darum kümmern können. Während der
Diskussion wurde erneut erwähnt, dass, sollte es an Geldern mangeln, um Unladen
Swallow auf das nächste Level zu bringen, Interessierte sich bei der PSF melden.&lt;/p&gt;
&lt;p&gt;Obwohl Unladen Swallow schläft und eine ungewisse Zukunft hat, hat das Projekt
einen großen Dienst für Python und die gesamte Open Source Gemeinde
geleistet. Die von Unladen Swallow genutzte Benchmark Suite ist beispielsweise
sehr hilfreich beim Testen alternativer Implementierungen. Zusätzlich haben die
Unladen Swallow-Entwickler mit Beiträgen zu LLVM und Clang diesen Projekten
ebenfalls geholfen.&lt;/p&gt;
&lt;p&gt;Zwei weitere Leistungsideen wurden ebenfalls kurz angesprochen, darunter Dave
Malcolms &amp;quot;function inlining&amp;quot; Vorschlag. Martin von Löwis erwähnte ein
JIT-Erweiterungsmodul, an dem er arbeitet, obwohl die PyPy-Entwickler Zweifel
hatten ob der Effizienz eines solchen JITs.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;eine-bresche-fur-asynchrone-frameworks-schlagen&quot;&gt;
&lt;h4&gt;Eine Bresche für asynchrone Frameworks schlagen&lt;/h4&gt;
&lt;p&gt;Am Ende des Tages fand eine Diskussion um eine teilweise Integration von Twisted
in die Standardbibliothek statt. Die Grundidee ist, eine Alternative zu
&lt;tt class=&quot;docutils literal&quot;&gt;asyncore&lt;/tt&gt; zu schaffen, die eine einfacheren Übergang zu Twisted und anderen
asynchronen Programmierungsframeworks bietet.&lt;/p&gt;
&lt;p&gt;Das Vorgehen wird in einem anstehenden PEP noch ausgebreitet, das einen Zweck
ähnlich der WSGI-Referenzimplementierung verfolgt, aber für asynchrone
Ereignisschleifen. Zusammen mit den PEP-Autoren wird es nötig sein, dass das
Twisted-Projekt und andere Einsatz zeigen, um sicherzustellen, dass jeder auf
demselben Stand ist.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;mehr-informationen&quot;&gt;
&lt;h4&gt;Mehr Informationen&lt;/h4&gt;
&lt;p&gt;Mehr Informationen gibt es bei CPython-Entwickler Nick Coghlans
&lt;a class=&quot;reference external&quot; href=&quot;http://www.boredomandlaziness.org/2011/03/python-language-summit-rough-notes.html&quot;&gt;rough notes&lt;/a&gt;
und &lt;a class=&quot;reference external&quot; href=&quot;http://www.boredomandlaziness.org/2011/03/pyt1hon-language-summit-highlights.html&quot;&gt;highlights&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/03/welcome-to-python-insider.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/7276973990963662499/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/05/2011-language-summit-report.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7276973990963662499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/7276973990963662499'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/05/2011-language-summit-report.html' title='2011 Language Summit Report'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3471935676803943863.post-875100940106360554</id><published>2011-05-11T09:45:00.001+02:00</published><updated>2011-05-11T09:46:19.337+02:00</updated><title type='text'>Willkommen zum Python Insider!</title><content type='html'>&lt;div class=&quot;document&quot; id=&quot;willkommen-zum-python-insider&quot;&gt;

&lt;p&gt;Der &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/&quot;&gt;Python Insider&lt;/a&gt; ist das offizielle Blog der Python Kern-Entwickler. Es
will auch denen, die die Mailinglisten nicht lesen, einen Überblick über die
dort besprochenen Themen geben und vor allem über anstehende Änderungen in
Python informieren. Wir werden über Tätigkeiten rund um python-dev schreiben,
wie die vor kurzem vollendete Migration zu einem Mercurial-basiertem Hosting,
neu akzeptierte Python Enhancement Proposals (PEPs -- Vorschläge zur
Python-Weiterentwicklung), API-Änderungen und andere größere Anstrengungen in
der Python Kern-Entwicklung.&lt;/p&gt;
&lt;p&gt;Dieses Blog ist eine Ergänzung -- und kein Ersatz -- zur &lt;a class=&quot;reference external&quot; href=&quot;http://mail.python.org/mailman/listinfo/python-dev&quot;&gt;python-dev
Mailingliste&lt;/a&gt; und zu individuellen Entwickler-Blogs &lt;a class=&quot;footnote-reference&quot; href=&quot;#id3&quot; id=&quot;id1&quot;&gt;[1]&lt;/a&gt;. Es wird ein Kanal
sein, auf dem öffentlich über Projekte geredet wird, die schon fertig sind oder
ein Stadium erreichen, in dem mehr Freiwillige nötig werden. Zwar werden
Diskussionen auf dem Blog begrüßt &lt;a class=&quot;footnote-reference&quot; href=&quot;#id4&quot; id=&quot;id2&quot;&gt;[2]&lt;/a&gt;, aber wir hoffen, dass Leute, die sich
für die Themen interessieren der python-dev Mailingliste beitreten und dort die
Diskussion und Entwicklung direkt verfolgen.&lt;/p&gt;
&lt;p&gt;Dieses Blog ist dein Fenster in die Entwicklung von Python.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;abonnieren&quot;&gt;
&lt;h4&gt;Abonnieren&lt;/h4&gt;
&lt;p&gt;Es gibt mehrere Wege den Python Insider zu verfolgen und zu lesen:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://planet.python.org/&quot;&gt;Planet Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog-de.python.org/&quot;&gt;Im Web&lt;/a&gt; (englisch: &lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/&quot;&gt;Python Insider&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://feeds.feedburner.com/PythonInsiderDe&quot;&gt;Atom/RSS Feed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://twitter.com/PythonInsider&quot;&gt;&amp;#64;PythonInsider&lt;/a&gt; bei Twitter (englisch)&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://feedburner.google.com/fb/a/mailverify?uri=PythonInsiderDe&amp;amp;loc=en_US&quot;&gt;Email-Abonnement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;hilfe-gesucht&quot;&gt;
&lt;h4&gt;Hilfe gesucht&lt;/h4&gt;
&lt;p&gt;Obwohl wir ein Team von dedizierten Schreibern haben, die an Posts für das Blog
arbeiten, suchen wir jemanden mit Web Design Kenntnissen, der am Blogger
Template arbeiten würde. Wenn Du uns helfen kannst dem Blog ein Facelifting zu
verpassen, melde dich bei Doug Hellmann (doug dot hellmann at gmail --
englischsprachig)&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.python.org/2011/03/welcome-to-python-insider.html&quot;&gt;Englische Version&lt;/a&gt;&lt;/p&gt;
&lt;table class=&quot;docutils footnote&quot; frame=&quot;void&quot; id=&quot;id3&quot; rules=&quot;none&quot;&gt;
&lt;colgroup&gt;&lt;col class=&quot;label&quot; /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td class=&quot;label&quot;&gt;&lt;a class=&quot;fn-backref&quot; href=&quot;#id1&quot;&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;siehe auch die Links in der Seitenleiste&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;docutils footnote&quot; frame=&quot;void&quot; id=&quot;id4&quot; rules=&quot;none&quot;&gt;
&lt;colgroup&gt;&lt;col class=&quot;label&quot; /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td class=&quot;label&quot;&gt;&lt;a class=&quot;fn-backref&quot; href=&quot;#id2&quot;&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Alle Python-Entwickler sprechen englisch, darum ist die angesprochene
Diskussion im englischen Blog am besten aufgehoben.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog-de.python.org/feeds/875100940106360554/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://blog-de.python.org/2011/05/willkommen-zum-python-insider.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/875100940106360554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3471935676803943863/posts/default/875100940106360554'/><link rel='alternate' type='text/html' href='http://blog-de.python.org/2011/05/willkommen-zum-python-insider.html' title='Willkommen zum Python Insider!'/><author><name>Michael Markert</name><uri>http://www.blogger.com/profile/08761481986934375758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>