Python et Bash Amicitia: smart-env et python-testa libraria

Bonus dies, omnes.

Hodie Python una ex usu linguarum in campo creandi non solum ipsas productos programmatum, sed etiam infrastructuram suam praebens. Quam ob rem multi devoves, sive sua voluntate sive contra, novam linguam discere debebant ut postea in supplementum litterarum Bash veterum uterentur. Sed Bash et Python diversos modos scribendi codicem profitentur et certas habent notas, significantes scripta Bash ad "anguem" interdum euenire capacem esse et a parvo negotio.

Ad vitam facilius devops, multae utiles bibliothecae et utilitates in Pythone creatae sunt et creandae sunt. Hic articulus describit duas bibliothecas novas ab autore huius post- conditas. captiosus-env ΠΈ python-testa - et destinavit ut devops ex necessitate levaret operam ad ambages multum operandi cum Pythone, relinquens locum magis iucunda opera. Scopus actuum bibliothecarum est ambitus variabilium et utilitates externas deducendi.

Quisque at velit felis.

Novae "bicycles"?

Videtur, cur novas sarcinas pro mediocribus operationibus ordinariis condat? Quid vetat te uti os.environ et subprocessus.< methodus vel genus electionis tuae directe?

Testimonia pro singulis bibliothecis singillatim dabo.

smart-env library

Priusquam cerebrum tuum scripserim, utile est ad onlinem ire et solutiones paratas quaerere. Utique, periculum est ne quid opus sit inventuri, sed hoc potius est "incurationis eventus". Pro regula, aditus opera multum temporis et laboris servat.

Secundum eventus investigatione sequentia manifestata sunt;

  • sunt fasciculi qui actu involvunt vocat ad os.environ, sed simul fasciculum actionum distrahentium requirunt (instantiam classis creandi, parametri specialem in vocationibus, etc.);
  • Bonae sunt fasciculi, qui tamen stricte ligantur ad ecosystematis specifici (maxime compagum interretialium sicut Django) ideoque omnino universales non sunt sine fasciculo;
  • sunt rari conatus ad aliquid novi faciendum. Exempli gratia typing add et expresse parse valores variabiles appellando modos sicut
    get_<typename>(var_name)

    vel huc unum solutionquod tamen non sustinet nunc 2 Python infamatus, quod tamen officialis RIPexstant adhuc montes scripti codicis et oecosystematis integri);

  • artes scholares exstant, nulla apparente causa cur in flumine PyPI finierint et solum difficultates creant cum novis fasciculis nominandis (praesertim, nomen "smart-env" mensura necessaria est).

Idque indice diu procedi potest. Sed praedicta puncta sufficiant ad me excitari de idea faciendi aliquid opportunum et universale.

Necessitas scribentis antepositae sunt ante sfa-env;

  • Simplicissimus usus ratio
  • Facile configurable notitia typing firmamentum
  • Python 2.7 compatible
  • Bonum codice coverage per probat

Denique haec omnia efficitur. Exemplum huius usus est:

from smart_env import ENV

print(ENV.HOME)  # Equals print(os.environ['HOME'])

# assuming you set env variable MYVAR to "True"

ENV.enable_automatic_type_cast()

my_var = ENV.MY_VAR  # Equals boolean True

ENV.NEW_VAR = 100  # Sets a new environment variable

Ut ex exemplo videre potes, cum novo genere laborare, id solum importare debes (instantiam - minus actionem extrariam creare non debes). Accessus ad quascumque variabiles ambitus efficitur, referendo ad eam ut variabilis ordinis ENV, qui, re vera, involucrum intuitivum ad systema systematis nativi facit, cum eodem tempore illud in obiecto figurae possibili pro quavis fere systemate convertendo. similis aditus, exempli gratia, in Django obtinetur, ibi solum objectum configurationis est uncinis/sarcina ipsa).

Enabling/inactivare modum subsidii typing automatic utendi duobus modis fit - enable_automatic_type_cast() et disable_automatic_type_cast(). Hoc opportunum esse potest si ambitus variabilis obiectum JSON tamquam objectum serialisatum contineat, vel etiam solum Boolean constans (deBUG variabilis in Django expresse disponens, comparando ambitum variabilem cum chordis "validis" unum e casibus communissimis). Nunc autem non est necesse ut chordas explicite convertas - actiones maxime necessariae iam in intimo bibliothecae haereantur et mox signum agendi exspectant. πŸ™‚ In genere, opera typing diaphane et subsidia fere omnia in promptu aedificata in notitiis speciebus (congelationis, complexionis et bytes non probatae sunt).

Necessitas ad Pythonem 2 subsidium consecutum est nullis fere sacrificiis (deiectio typingis et quibusdam "candiciarum saccharo" postremarum Pythonis versionum 3), nominatim, per sex ubiquitos (ad solvendas difficultates utendi metaclassum. ).

Sed quaedam sunt restrictiones:

  • Python 3 auxilium significat versionem 3.5 et altiorem (eorum praesentia in tuo consilio effectus est vel pigritia vel indigentia emendationum, cum difficile sit obiectivam rationem ascendere cur in 3.4 adhuc es);
  • In Pythone 2.7, bibliotheca non adiuvat deseriationem litterarum copiarum. Descriptio hic. Sed si quis eam aggredi volet, es gratus :);

Bibliotheca etiam mechanismum exceptionem in casu errorum parsing habet. Si chorda ab aliquo analysium promptorum cognosci non potuit, valor chorda manet (immo propter rationes commoditatis et convenientiae retrorsum cum logica consueta quomodo variabiles in Bash operantur).

Python-testa bibliotheca

Nunc de secunda bibliotheca tibi dicam (Descriptio defectuum analogorum existentium omittam - similis est illi descriptus pro dolor-env. Analogis -. hic ΠΈ hic).

In genere, ideae exsecutionis et exigentiae sunt similes illis quae pro dolor-env descripti sunt, ut ex exemplo videri potest:

from python_shell import Shell

Shell.ls('-l', '$HOME')  # Equals "ls -l $HOME"

command = Shell.whoami()  # Equals "whoami"
print(command.output)  # prints your current user name

print(command.command)  # prints "whoami"
print(command.return_code)  # prints "0"
print(command.arguments)  # prints ""

Shell.mkdir('-p', '/tmp/new_folder')  # makes a new folder

Idea haec est;

  1. Unum genus est quod in Pythone mundo Bash repraesentat;
  2. Quisque Bash mandatum appellatur ut munus Testae classis;
  3. Parametri ad unumquemque munus vocationis sunt, deinde in respondentem Bash mandatum vocati;
  4. Quodlibet mandatum fit "hic et nunc" in momento vocatur, i.e. accedunt opuscula synchrona;
  5. fieri potest ut accessus ad outputa praecepti in stdout ac reditus eius codicem;
  6. Si praeceptum non sit, excipitur.

Ut lepido env, Pythoni 2 (quamvis paulo plus sacrificii sanguine opus erat) et Pythonis 3.0-3.4 subsidium non erat.

Library development consilia

Bibliothecas nunc uti potes: utraque missa est in officialem PyPI. Praesto sunt fontes in Github (vide infra).

Ambae bibliothecae elaborabuntur habita ratione feedback ex iis quorum interest. Et, si difficile sit cum varietate novarum notarum in acri-env ascendere, tum in pythonis concha certum est aliquid addere;

  • subsidium vocat non-obturans;
  • possibilitas communicationis interactive cum theam (operante stdin);
  • novas possessiones addere (exempli gratia, res ad output a stderr accipere);
  • exsequendam directorium mandatorum promptorum (pro usu cum functione dir());
  • etc.

References

  1. smart-env library: Github ΠΈ PyPI
  2. python-testa bibliotheca; Github ΠΈ PyPI
  3. Telegram channel bibliotheca updates

UPD 23.02.2020/XNUMX/XNUMX:
* Repositoria mota sunt, nexus correspondentes renovata sunt
* Poema python-testa==1.0.1 paratur ad remissionem in 29.02.2020/XNUMX/XNUMX. Commutationes includunt subsidium pro imperio autocompleto et dir(testa) mandatum, mandata currens cum Pythone identifier invalido, et bug fixiones.

Source: www.habr.com