gendalus

­čÉŹ + iOS = ­čĺĽ – Pythonista is awesome

Die Programmiersprache, in der ich am liebsten Arbeite ist Python. Eigentlich hatte ich mal angefangen Ruby zu lernen, aber dieses Unterfangen habe ich wegen zwei Programmen gekippt. Das eine ist Sublime Text 31. Das zweite ist Pythonista.

Pythonista

Pythonista ist eine IDE f├╝r Python auf iOS. Das hei├čt grunds├Ątzlich erstmal, dass sich in Pythonista Python Scripts schreiben, aber auch ausf├╝hren lassen. Aber wie es sich f├╝r eine gute IDE geh├Ârt, h├Ârt es dabei nicht auf. Ole Moritz hat viele wirklich gro├čartige Features eingebaut, die Python auf iOS richtig einfach machen.

Python 2, 3 und Module

Seit der Version 3.0 kommt Pythonista mit der M├Âglichkeit Scripts einfach und gezielt mit Python3 oder mit Python (2) zu entwickeln. Mein Default Interpreter ist Python 3.5, aber sollte ich mal Python 2 brauchen, l├Ąsst sich ├╝ber einen long press auf das Play-Symbol einfach Python 2 als Interpreter ausw├Ąhlen.

Zu sehen ist das Run-Menu von Pythonista
Das Run-Menu von Pythonista mit Zugriff auf Unittests und andere Interpreter

Pythonista kommt dabei mit der Python Standard Library, eigenen Modulen f├╝r die Entwicklung auf iOS und folgenden Third Party Modulen:

  • bs4 ÔÇö BeautifulSoup 4
  • Bottle: Python Web Framework
  • Dropbox for Python
  • evernote
  • faker
  • feedparser ÔÇö Universal Feed Parser
  • Markdown
  • markdown2 ÔÇö A fast and complete implementation of Markdown in Python
  • paramiko
  • Python Imaging Library
  • qrcode ÔÇö Pure python QR Code generator
  • Requests ÔÇô HTTP for Humans
  • xmltodict

Die Pythonista-eigenen Module sind es aber, die Pythonista so wirklich n├╝tzlich machen, weil sie die Kommunikation mit iOS erm├Âglichen. Ich will im Folgenden ein paar beleuchten.

ui

F├╝r eine wirklich gute Bedienung der eigenen Programm braucht es auf iOS ein besseres User Interface als das CLI. Daf├╝r wird das ui Modul mitgeliefert, welches es sehr einfach erm├Âglicht graphische User Interfaces zu bauen, die sich so verhalten, wie ich es von iOS GUIs erwarte. Um den Einstieg zu erleichtern gibt es au├čerdem einen graphischen Editor in dem, ├Ąhnlich zu Interface Builder, sich Interfaces zusammen schieben lassen – nur halt per Touch. ├ťber das ui Modul l├Ąsst sich dann die ui.View in das Script laden und mit der Programmlogik verkn├╝pfen.

Damit schafft Pythonista, was ich mir f├╝r macOS w├╝nschen w├╝rde. Native GUI mit Python.

appex

Mit der 3.0 kam au├čerdem die Pythonista Extension f├╝r das iOS Share Sheet und das Modul appex (App Extension) dazu. Damit wird es endlich m├Âglich Daten von einer App in Richtung Pythonista weiter zu geben ohne den Umweg ├╝ber das Clipboard, mit all seinen Limitierungen, zu gehen. Das Modul bringt Methoden f├╝r die ├╝blichsten Daten mit: Photos, Text, URLs, File Paths, VCards und selbstverst├Ąndlich die „rohen“ Daten.

speech

F├╝r dieses Modul ist die Online-Dokumentation leider nicht ganz aktuell. Denn auf iOS 10 ist speech nicht mehr nur text-to-speech, sondern auch speech-to-text.

The speech module provides speech synthesis and recogntion functionality on iOS.

Und hier ist es f├╝r mich echt spannend geworden. Bisher benutze ich die App Just Press Record, mit der per Apple Watch App schnell kurze Audioaufnahmen gemacht werden k├Ânnen. Die App kann direkt den gesprochenen Text transkribieren. Aber leider schmei├čt sie den Text nicht einfach in eine separate Text-Datei. ├ťber das Share Share Sheet l├Ąsst sich die Aufnahme oder das Transkript wiederum mit Pythonista teilen. Nun l├Ąsst sich die Spracherkennung in Pythonista machen und/oder der erkannte Text von Pythonista weiterverarbeiten. Text in Datei Speichern, neue Aufgabe im Projekt-Management-Tool mit REST-full API anlegen, Text automatisch Twittern und vieles mehr, kein Problem.

All the checks

Style Police is coming

Hinter dem Schraubenschl├╝ssel Symbol versteckt sich der „Style Check“. Damit wird der eigene Code darauf gepr├╝ft ob er dem PEP8 Style Guide entspricht. In den Einstellungen lassen sich teile des Guides deaktivieren.

Besonders gut ist der Style Check f├╝r mich um leere Zeilen mit Leerzeichen zu entdecken, die f├╝r das Einr├╝cken automatisch eingef├╝gt werden.

Flaky

Im gleichen Menu l├Ąsst sich auch der Code mit pyflakes auf Syntaxfehler etc. kontrollieren, ohne das Programm laufen zu lassen.

Zu sehen ist das Tool-Menu von Pythonista
Das Tool-Menu mit dem Style-Checker und Analyser

Tests

Mit dem long press auf das „Play“ Symbol lassen sich nicht nur Python2 und 3 als Interpreter ausw├Ąhlen, sondern auch Tests ansto├čen.

Ja, vollkommen richtig: Pythonista kommt mit Unittest-Support. Ihr k├Ânnt also test-driven entwickeln. Tats├Ąchlich ist es dabei sogar m├Âglich in Tests zu ├╝berpr├╝fen, ob die Views on screen sind, welche Subviews sie haben etc. Ziemlich cool wie ich finde.

But there’s more

Today View Widget

Neben den App Extensions bringt Pythonista 3 ab iOS 10 ein Widget f├╝r die Today View im iOS Notification Center mit. Damit werden kleine Helfer sehr schnell und einfach zug├Ąnglich.

Zu sehen ist ein Pythonista Widget in der Today View
Eines der Pythonista Beispielwidgets, was den aktuellen Inhalt der Zwischenablage anzeigt.

Editorial

Eine zweite App von Ole Moritz ist Editorial, ein mit Python erweiterbarer Text-Editor. Ich selbst benutze die Erweiterungen nicht wirklich, aber damit tun sich viele coole M├Âglichkeiten auf.

Kommandozeile in der Konsole

Pythonista bringt zwar eine interaktive Konsole mit, aber eine richtige Kommandozeile ist das leider nicht. So ist es, sicherlich den Regeln der Plattform geschuldet, nicht wirklich einfach z.B. third party Module mit git nach zu installieren etc.. Daf├╝r gibt es aber L├Âsungen wie z.B. stash. Damit bekommt die Konsolen View eine neue Subview in der eine mehr oder weniger vollst├Ąndige Shell l├Ąuft. Mit all den Vorteilen die so eine Shell mit sich bringt.

Zu sehen ist das Interface von Pythonista in dem die StaSH Shell angezeigt wird
Ein Blick auf die StaSH Shell in Pythonista

Fazit

Pythonista 3 ist momentan f├╝r 10,99 ÔéČ im AppStore zu haben. F├╝r Leute mit iOS Ger├Ąten, die Python (auch auf Anf├ĄngerInnenniveau) k├Ânnen und au├čerdem Lust und Ideen haben auf iOS zu programmieren ist Pythonista eine gro├čartige Wahl. Eine vollst├Ąndig native App wird weiterhin Vorteile gegen├╝ber „Pythonista-Apps“ haben, aber Pythonista bietet einen leichten Zugang zum Programmieren und zeigt was Xcode f├╝r iOS mindestens k├Ânnen m├╝sste (sollte es je f├╝r iOS kommen).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht ver├Âffentlicht. Erforderliche Felder sind mit * markiert.