Maacht Python a Bash Frëndschaft: Verëffentlechung vun der Python-Shell a Smart-env v Bibliothéiken. 1.0.1

Gudden Dag jiddereen!

29 Februar 2020 Joer offiziell Mikro-Verëffentlechung vu Bibliothéiken stattfonnt smart-env и python-Schuel. Fir déi, déi net am Wëssen sinn, proposéieren ech Iech et als éischt ze liesen éischte Post.

Kuerz gesot, d'Ännerungen enthalen d'Kommando fäerdeg, erweidert Fäegkeeten fir Kommandoen ze lafen, e puer Refactoring a Bugfixes.

Fir Detailer kuckt w.e.g. Cat.

Wat ass nei am Python-Shell?

Ech fänken direkt mat Dessert un.

Kommando Ofschloss

Averstanen - et ass bequem wann den Editeur / IDE / Terminal Iech den Numm vum Kommando freet, an heiansdo souguer d'Uruffparameter? Also Python-Shell mécht graduell Fortschrëtter fir ähnlech Funktionalitéit ze bidden. Wéinst der Tatsaach, datt d'Felder vun der Shell Klass ënnert der Hood sinn de-facto net seng Felder (déi ubiquitous __getattr__), Autocompletion war och vun Null geschaf (duerch Iwwerlaascht der __dir__ Method, respektiv). Autocompletion funktionnéiert am Moment an BPython an IPython Ëmfeld. Natierlech géif ech gär Integratioun mat méi éierleche Produkter wéi PyCharm gesinn, an Ëmsetzungsméiglechkeeten ginn an dëser Richtung studéiert.

Dobäi Eegeschaften

Als Deel vun der Verëffentlechung krut d'Shell Klass eng nei last_command Eegeschafte. De Besoin fir et entstanen well wann e ShellException vun engem Kommando mat engem Net-null Retour Code gehäit gouf, war de Kommando Objet net aus dem __call__ () Opruff un de Kommando Objet zréck. Elo gëtt et eng Geleeënheet dëst ze maachen:

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

D'Lëscht vun Eegeschafte vum Kommando-Objet ass och erweidert. E Feelerfeld bäigefüügt dat de Kommandoausgang an de Fehlerstroum zréckkënnt.

Lafen Kommandoen mat ongëlteg Python Nimm

Bal all System huet op d'mannst ee Programm deem säin Numm net als Identifizéierer am Python gëeegent ass (zum Beispill de bekannte 2to3 Utility). Call hir mat

Shell.2to3()

Wann et net funktionnéiert, léisst den Dolmetscher et net duerch.
D'Léisung ass de Kommando op engem Rondpoint Wee ze ruffen:

Shell("2to3")  # возвращает объект команды

Et ass derwäert ze notéieren datt Dir op déiselwecht Manéier Kommandoen ausféiert, déi aus der Siicht vum Dolmetscher gëlteg sinn, wat d'Méiglechkeet léisst fir flexibel Scripte ze kreéieren wéi z.

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

Kleng Ännerungen

  • D'__repr__ () an __str__ () Methode vum Command Klass Objet goufen ëmgesat, déi elo intuitiv Wäerter produzéieren (e Kommando mat Parameteren a sengem stdout Output, respektiv).
  • Kleng Code fixen.
  • Testofdeckung bäizefügen, souwéi existent reorganiséieren.
  • D'Subprocess a Prozess Klassen bäizefügen, den Zweck vun deem ass en zousätzleche Abstraktiounsniveau ze kreéieren wann Dir mam Subprocess Modul schafft. Meeschtens néideg fir Code Duplikatioun ze eliminéieren wann Dir mat Python 2/3 schafft, awer ka potenziell och aner Bonus ubidden.

Wat ass nei am Smart-env?

Am Géigesaz zu Python-Shell sinn et manner Ännerungen an der Smart-env-Bibliothéik. De Grond dofir ass einfach - Mangel u Fräizäit, während deenen e puer potenziell Verbesserungen (zum Beispill Autocompletion vun Ëmfeldvariablen) op déi nächst Verëffentlechung geplënnert goufen.

Tatsächlech sinn déi folgend Ännerungen an der Bibliothéik gemaach ginn:

  • Kleng Code fixen.
  • Refactoring.
  • Reorganisatioun a Verfeinerung vun existente Tester.

Pläng fir nächst Verëffentlechungen

python-shell Bibliothéik

  • Füügt Ënnerstëtzung fir net-blockéierend Kommando-Uriff (Parallelliséierung vun der Ausféierung).

Smart-env Bibliothéik

  • Ëmsetzung vun autocompletion vun Ëmfeld Variablen an der ENV Klass.
  • Ënnerstëtzung fir den In-Bedreiwer fir d'Existenz vun enger Env Variabel ze kontrolléieren.
  • Ëmsetzung vun Ënnerstëtzung fir de str () an repr () Funktiounen fir d'ENV Klass.

D'Datume vun den nächste Verëffentlechunge ginn weider an de folgende Kommunikatiounskanäl ugekënnegt:

Source: will.com

Setzt e Commentaire