Erscheinung der dokumentenorientierten Datenbank Apache CouchDB 3.0

Guten Tag allerseits!

29. Februar 2020 hat die offizielle Mikroversion der Bibliotheken stattgefunden smart-env und python-shell. Wer nicht informiert ist, sollte zuerst lesen den ersten Beitrag.

Kurz gesagt, unter den Änderungen gibt es die AutovervollstĂ€ndigung von Befehlen, erweiterte Möglichkeiten zum AusfĂŒhren von Befehlen, ein wenig Refactoring und Bugfixes.

FĂŒr Details bitte nach dem Klicken.

Was gibt es Neues im python-shell?

Ich fange gleich mit dem Wesentlichen an.

Automatische VervollstÀndigung von Befehlen

Es ist doch praktisch, wenn der Editor/IDE/Terminal den Befehl und manchmal auch die Parameter vorschlĂ€gt, oder? Und so macht python-shell schrittweise Fortschritte, um diese FunktionalitĂ€t bereitzustellen. Da die Felder der Klasse Shell intern de facto keine Felder davon sind (allgegenwĂ€rtiges __getattr__), wurde die AutovervollstĂ€ndigung ebenfalls von Grund auf neu entwickelt (durch Überschreibung der Methode __dir__). Momentan funktioniert die AutovervollstĂ€ndigung in den Umgebungen BPython und IPython. NatĂŒrlich wĂ€re es schön, eine Integration mit bekannteren Produkten wie PyCharm zu sehen, und in diese Richtung wird die Umsetzungsmöglichkeiten untersucht.

HinzufĂŒgen von Eigenschaften

Im Rahmen des Releases hat die Klasse Shell eine neue Eigenschaft last_command erhalten. Der Bedarf entstand, weil bei der Generierung einer Ausnahme ShellException durch einen Befehl mit einem ungleich null RĂŒckgabecode das Objekt Command nicht aus dem Aufruf __call__() des Objekts zurĂŒckgegeben wurde. Jetzt gibt es die Möglichkeit, es so zu machen:

try:
    command = Shell.touch('/foo.txt')
except ShellException:
    command = Shell.last_command

Zudem hat sich die Liste der Eigenschaften des Objekts Command erweitert. Es wurde ein Feld errors hinzugefĂŒgt, das die Ausgabe des Befehls im Fehlerstrom zurĂŒckgibt.

AusfĂŒhren von Befehlen mit Python-invaliden Namen

In praktisch jedem System gibt es mindestens ein Programm, dessen Name sich nicht als Identifikator in Python eignet (zum Beispiel das bekannte Tool 2to3). Es lÀsst sich nicht mit

Shell.2to3()

auffrufen – der Interpreter erlaubt dies nicht.
Die Lösung besteht darin, den Befehl indirekt aufzurufen:

Shell("2to3")  # gibt das Befehlsobjekt zurĂŒck

Es ist zu beachten, dass man auf die gleiche Weise auch validen Befehle im Sinne des Interpreters starten kann, was die Möglichkeit lÀsst, flexible Skripte wie

cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)

Kleinere Änderungen

  • Die Methoden __repr__() und __str__() der Klasse Command wurden implementiert, die jetzt intuitiv verstĂ€ndliche Werte liefern (der Befehl mit Parametern und dessen stdout-Ausgabe entsprechend).
  • Kleinere Fehlerbehebungen im Code.
  • HinzufĂŒgen von Tests zur Abdeckung sowie Neuorganisation der bestehenden.
  • HinzufĂŒgen der Klassen Subprocess und Process, deren Ziel es ist, eine zusĂ€tzliche Abstraktionsebene bei der Arbeit mit dem Subprozess-Modul zu schaffen. Dies ist hauptsĂ€chlich erforderlich, um Codewiederholungen bei der Arbeit mit Python 2/3 zu vermeiden, könnte aber auch andere Vorteile mit sich bringen.

Was ist neu in smart-env?

Im Gegensatz zu python-shell gab es in der Bibliothek smart-env weniger Änderungen. Der Grund dafĂŒr ist einfach – es mangelte an Zeit, weshalb einige potenzielle Verbesserungen (wie die automatische VervollstĂ€ndigung von Umgebungsvariablen) auf die nĂ€chste Version verschoben wurden.

TatsĂ€chlich wurden in der Bibliothek folgende Änderungen vorgenommen:

  • Kleinere Fehlerbehebungen im Code.
  • Refactoring.
  • Neuorganisation und Überarbeitung der vorhandenen Tests.

PlĂ€ne fĂŒr die nĂ€chsten Versionen

Die Bibliothek python-shell

  • EinfĂŒhrung der UnterstĂŒtzung fĂŒr nicht-blockierende Befehlsaufrufe (Parallelisierung der AusfĂŒhrung).

Die Bibliothek smart-env

  • Implementierung der automatischen VervollstĂ€ndigung von Umgebungsvariablen in der Klasse ENV.
  • UnterstĂŒtzung des Operators in zur ÜberprĂŒfung der Existenz von env-Variablen.
  • Implementierung der UnterstĂŒtzung der Funktionen str() und repr() fĂŒr die Klasse ENV.

Zu den Terminen der nĂ€chsten Versionen wird zusĂ€tzlich ĂŒber folgende KommunikationskanĂ€le informiert:

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster