Ua Python thiab Bash Friendship: Tso cov python-plhaub thiab ntse-env v tsev qiv ntawv. 1.0.1

Nyob zoo sawv daws!

29 Lub Ob Hlis 2020 xyoo official micro-tso tawm cov tsev qiv ntawv tau tshwm sim ntse-env ΠΈ python-plhaub. Rau cov uas tsis paub, kuv xav kom koj nyeem nws ua ntej thawj ncej.

Hauv luv luv, cov kev hloov pauv suav nrog kev ua tiav, kev nthuav dav rau kev khiav cov lus txib, qee qhov refactoring thiab kho kab.

Yog xav paub ntxiv thov saib miv.

Dab tsi tshiab hauv python-plhaub?

Kuv mam li pib tam sim ntawd nrog khoom qab zib.

Kev ua tiav

Pom zoo - nws yooj yim thaum tus editor / IDE / davhlau ya nyob twg qhia koj lub npe ntawm cov lus txib, thiab qee zaum txawm tias hu tsis tau? Yog li python-plhaub yog maj mam ua kom nce qib hauv kev muab cov haujlwm zoo sib xws. Vim lub fact tias cov teb ntawm lub Plhaub chav kawm ntawv nyob rau hauv lub hood yog de-facto tsis nws teb (lub ubiquitous __getattr__), autocompletion kuj tsim los ntawm kos (los ntawm overloading __dir__ txoj kev, feem). Autocompletion tam sim no ua haujlwm hauv BPython thiab IPython ib puag ncig. Tau kawg, kuv xav pom kev koom ua ke nrog ntau cov khoom lag luam zoo li PyCharm, thiab kev siv tau tau raug kawm hauv cov lus qhia no.

Ntxiv cov khoom

Raws li ib feem ntawm kev tso tawm, Shell chav kawm tau txais cov cuab yeej last_command tshiab. Qhov xav tau rau nws tau tshwm sim vim tias thaum ShellException raug pov los ntawm cov lus txib uas tsis yog xoom xa rov qab, cov khoom Command tsis rov qab los ntawm __call__() hu rau cov khoom hais kom ua. Tam sim no muaj lub sijhawm los ua qhov no:

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

Cov npe ntawm cov khoom ntawm cov khoom hais kom ua kuj tau nthuav dav. Ntxiv ib qho kev ua yuam kev uas xa rov qab cov lus txib tawm mus rau qhov yuam kev kwj.

Khiav cov lus txib nrog cov npe Python tsis raug

Yuav luag txhua lub kaw lus muaj tsawg kawg yog ib qho kev pab cuam uas nws lub npe tsis haum raws li tus cim hauv Python (piv txwv li, lub npe nrov 2to3 utility). Hu rau nws nrog

Shell.2to3()

Yog tias nws tsis ua haujlwm, tus neeg txhais lus yuav tsis tso nws mus.
Txoj kev daws teeb meem yog hu rau cov lus txib nyob rau hauv ib txoj kev roundabout:

Shell("2to3")  # Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Nws yog tsim nyog sau cia tias nyob rau hauv tib txoj kev koj tuaj yeem khiav cov lus txib uas siv tau los ntawm qhov pom ntawm tus neeg txhais lus, uas tawm hauv lub sijhawm los tsim cov ntawv hloov pauv xws li

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

Hloov me me

  • Cov __repr__() thiab __str__() txoj kev ntawm Command class object tau raug coj los siv, uas tam sim no tsim cov txiaj ntsig intuitive (ib qho lus txib uas tsis muaj thiab nws cov stdout output, feem).
  • Kho me ntsis code.
  • Ntxiv qhov kev ntsuam xyuas, nrog rau kev txhim kho cov uas twb muaj lawm.
  • Ntxiv cov subprocess thiab txheej txheem cov chav kawm, lub hom phiaj ntawm uas yog los tsim ib tug ntxiv theem ntawm abstraction thaum ua hauj lwm nrog lub subprocess module. Feem ntau xav tau los tshem tawm cov lej sib tshooj thaum ua haujlwm nrog Python 2/3, tab sis tuaj yeem muab lwm yam nyiaj tshwj xeeb thiab.

Dab tsi tshiab hauv smart-env?

Tsis zoo li python-plhaub, muaj kev hloov pauv tsawg dua hauv lub tsev qiv ntawv ntse-env. Yog vim li cas rau qhov no yog qhov yooj yim - tsis muaj sij hawm dawb, thaum lub sij hawm uas qee qhov kev txhim kho (piv txwv li, autocompletion ntawm ib puag ncig hloov pauv) tau tsiv mus rau qhov kev tso tawm tom ntej.

Qhov tseeb, cov kev hloov hauv qab no tau ua rau lub tsev qiv ntawv:

  • Kho me ntsis code.
  • Refactoring.
  • Reorganization thiab refinement ntawm cov kev ntsuam xyuas uas twb muaj lawm.

Npaj rau kev tshaj tawm tom ntej

python-plhaub tsev qiv ntawv

  • Ntxiv kev txhawb nqa rau kev txwv tsis pub hu xov tooj (parallelization ntawm kev ua tiav).

smart-env qiv

  • Kev ua tiav ntawm autocompletion ntawm ib puag ncig hloov pauv hauv chav kawm ENV.
  • Kev them nyiaj yug rau tus neeg teb xov tooj los xyuas seb muaj qhov sib txawv ntawm env.
  • Kev nqis tes ua ntawm kev txhawb nqa rau str() thiab repr() ua haujlwm rau ENV chav kawm.

Hnub tim ntawm kev tshaj tawm tom ntej no yuav raug tshaj tawm ntxiv hauv cov kev sib txuas lus hauv qab no:

Tau qhov twg los: www.hab.com

Ntxiv ib saib