Δημιουργία φιλίας Python και Bash: Έκδοση των βιβλιοθηκών python-shell και smart-env v. 1.0.1

Καλημέρα σε όλους!

29 Φεβρουάριος 2020 του έτους πραγματοποιήθηκε η επίσημη μικροκυκλοφορία των βιβλιοθηκών smart-env и πύθωνα-κέλυφος. Για όσους δεν το γνωρίζουν, προτείνω να το διαβάσετε πρώτα πρώτη ανάρτηση.

Εν ολίγοις, οι αλλαγές περιλαμβάνουν ολοκλήρωση εντολών, διευρυμένες δυνατότητες εκτέλεσης εντολών, ορισμένες ανακατασκευές και διορθώσεις σφαλμάτων.

Για λεπτομέρειες, δείτε το Cat.

Τι νέο υπάρχει στο python-shell;

Θα ξεκινήσω αμέσως με το γλυκό.

Ολοκλήρωση εντολών

Συμφωνώ - είναι βολικό όταν ο επεξεργαστής/IDE/τερματικό σας ζητά το όνομα της εντολής και μερικές φορές ακόμη και τις παραμέτρους κλήσης; Έτσι, το python-shell σημειώνει σταδιακά πρόοδο στην παροχή παρόμοιας λειτουργικότητας. Λόγω του γεγονότος ότι τα πεδία της κατηγορίας Shell κάτω από την κουκούλα είναι de-facto και όχι πεδία της (το πανταχού παρόν __getattr__), η αυτόματη συμπλήρωση δημιουργήθηκε επίσης από την αρχή (με υπερφόρτωση της μεθόδου __dir__, αντίστοιχα). Η αυτόματη συμπλήρωση λειτουργεί επί του παρόντος σε περιβάλλοντα BPython και IPython. Φυσικά, θα ήθελα να δω ενσωμάτωση με πιο αξιόλογα προϊόντα όπως το PyCharm και οι δυνατότητες υλοποίησης μελετώνται προς αυτή την κατεύθυνση.

Προσθήκη ιδιοτήτων

Ως μέρος της έκδοσης, η κλάση Shell έλαβε μια νέα ιδιότητα last_command. Η ανάγκη για αυτό προέκυψε επειδή όταν ένα ShellException εκτοξεύτηκε από μια εντολή με κωδικό επιστροφής μη μηδενικού, το αντικείμενο Command δεν επιστράφηκε από την κλήση __call__() στο αντικείμενο εντολής. Τώρα υπάρχει η ευκαιρία να γίνει αυτό:

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

Η λίστα των ιδιοτήτων του αντικειμένου Command έχει επίσης επεκταθεί. Προστέθηκε ένα πεδίο σφαλμάτων που επιστρέφει την έξοδο εντολών στη ροή σφαλμάτων.

Εκτέλεση εντολών με μη έγκυρα ονόματα Python

Σχεδόν κάθε σύστημα έχει τουλάχιστον ένα πρόγραμμα του οποίου το όνομα δεν είναι κατάλληλο ως αναγνωριστικό στην Python (για παράδειγμα, το γνωστό βοηθητικό πρόγραμμα 2to3). Κάλεσέ την με

Shell.2to3()

Εάν δεν λειτουργεί, ο διερμηνέας δεν θα το αφήσει να περάσει.
Η λύση είναι να καλέσετε την εντολή με κυκλικό τρόπο:

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

Αξίζει να σημειωθεί ότι με τον ίδιο τρόπο μπορείτε να εκτελέσετε εντολές που ισχύουν από την πλευρά του διερμηνέα, γεγονός που αφήνει την ευκαιρία να δημιουργήσετε ευέλικτα σενάρια όπως

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

Μικρές αλλαγές

  • Έχουν εφαρμοστεί οι μέθοδοι __repr__() και __str__() του αντικειμένου κλάσης Command, οι οποίες πλέον παράγουν διαισθητικές τιμές (μια εντολή με παραμέτρους και την έξοδο stdout της, αντίστοιχα).
  • Μικρές διορθώσεις κώδικα.
  • Προσθήκη δοκιμαστικής κάλυψης, καθώς και αναδιοργάνωση υφιστάμενων.
  • Προσθήκη των κλάσεων Subprocess και Process, σκοπός των οποίων είναι να δημιουργηθεί ένα πρόσθετο επίπεδο αφαίρεσης κατά την εργασία με το module subprocess. Χρειάζεται κυρίως για την εξάλειψη του διπλασιασμού κώδικα όταν εργάζεστε με την Python 2/3, αλλά μπορεί ενδεχομένως να παρέχει και άλλα μπόνους.

Τι νέο υπάρχει στο smart-env;

Σε αντίθεση με το python-shell, υπήρξαν λιγότερες αλλαγές στη βιβλιοθήκη smart-env. Ο λόγος για αυτό είναι απλός - έλλειψη ελεύθερου χρόνου, κατά την οποία ορισμένες πιθανές βελτιώσεις (για παράδειγμα, αυτόματη συμπλήρωση μεταβλητών περιβάλλοντος) μεταφέρθηκαν στην επόμενη έκδοση.

Στην πραγματικότητα, έχουν γίνει οι ακόλουθες αλλαγές στη βιβλιοθήκη:

  • Μικρές διορθώσεις κώδικα.
  • Ανακατασκευή.
  • Αναδιοργάνωση και τελειοποίηση υφιστάμενων δοκιμών.

Σχέδια για τις επόμενες εκδόσεις

βιβλιοθήκη python-shell

  • Προσθήκη υποστήριξης για μη αποκλειστικές κλήσεις εντολών (παραλληλοποίηση εκτέλεσης).

βιβλιοθήκη smart-env

  • Υλοποίηση αυτόματης συμπλήρωσης μεταβλητών περιβάλλοντος στην κλάση ENV.
  • Υποστήριξη για τον τελεστή in για έλεγχο της ύπαρξης μεταβλητής env.
  • Υλοποίηση υποστήριξης για τις συναρτήσεις str() και repr() για την κλάση ENV.

Οι ημερομηνίες των επόμενων κυκλοφοριών θα ανακοινωθούν περαιτέρω στα ακόλουθα κανάλια επικοινωνίας:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο