最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情

 更新時(shí)間:2022年07月01日 09:21:49   作者:??編程學(xué)習(xí)網(wǎng)????  
這篇文章主要介紹了Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情,Nox?會(huì)話是通過被@nox.session裝飾的標(biāo)準(zhǔn)?Python?函數(shù)來配置的,具體詳情下文相關(guān)介紹需要的小伙伴可以參考一下

前言:

NoxfileNox 默認(rèn)在一個(gè)名為noxfile.py的文件中查找配置。在運(yùn)行 nox 時(shí),你可以使用 --noxfile參數(shù)指定其它的文件。

定義會(huì)話格式:session(func=None, python=None, py=None, reuse_venv=None, name=None, venv_backend=None),將被裝飾的函數(shù)指定為一個(gè)會(huì)話。

Nox 會(huì)話是通過被@nox.session裝飾的標(biāo)準(zhǔn) Python 函數(shù)來配置的。

例如:

import nox
@nox.session
def tests(session):
    session.run('pytest')

會(huì)話描述你可以使用文檔字符串向會(huì)話中添加一個(gè)描述。第一行內(nèi)容會(huì)在列出會(huì)話時(shí)顯示。

例如:

import nox
@nox.session
def tests(session):
    """Run the test suite."""
    session.run('pytest')

nox --list命令將顯示出:

$ nox --list
Available sessions:
* tests -> Run the test suite.

會(huì)話名稱默認(rèn)情況下,Nox 使用被裝飾函數(shù)的名稱作為會(huì)話的名稱。這對(duì)于絕大多數(shù)項(xiàng)目都非常有效,但是,如果需要,你也可以使用 @nox.session 的 name 參數(shù)來自定義會(huì)話的名稱。

例如:

import nox
@nox.session(name="custom-name")
def a_very_long_function_name(session):
    print("Hello!")

nox --list 命令將顯示:

$ nox --list
Available sessions:
* custom-name

你可以告訴 nox 使用自定義的名稱運(yùn)行會(huì)話:

$ nox --session "custom-name"
Hello!

配置會(huì)話的virtualenv默認(rèn)情況下,Nox 在為每個(gè)會(huì)話創(chuàng)建一個(gè)新的 virtualenv 時(shí),會(huì)使用 Nox 所用的同一個(gè)解釋器。如果你使用 Python 3.6 安裝了 nox,則 nox 將默認(rèn)在所有會(huì)話中使用 Python 3.6。

通過給 @nox.session 指定 python 參數(shù)(或其別名 py),你可以告訴 nox 使用不同的 Python 解釋器/版本:

@nox.session(python='2.7')
def tests(session):
    pass

你還可以告訴 Nox 使用多個(gè) Python 解釋器運(yùn)行你的會(huì)話。Nox 將為指定的每個(gè)解釋器創(chuàng)建一個(gè)單獨(dú)的 virtualenv 并運(yùn)行會(huì)話。例如,下面的會(huì)話將運(yùn)行兩次——一次使用 Python 2.7,一次使用 Python 3.6:

@nox.session(python=['2.7', '3.6'])
def tests(session):
    pass

當(dāng)你提供一個(gè)版本號(hào)時(shí),Nox 會(huì)自動(dòng)添加 python 來確定可執(zhí)行文件的名稱。但是,Nox 也可以接受完整的可執(zhí)行名稱。如果你想使用 pypy 來測(cè)試,例如:

@nox.session(python=['2.7', '3.6', 'pypy-6.0'])
def tests(session):
    pass

當(dāng)準(zhǔn)備你的會(huì)話時(shí),Nox 將為每個(gè)解釋器創(chuàng)建單獨(dú)的會(huì)話。你可以在運(yùn)行 nox --list 的時(shí)候看到這些會(huì)話。例如這個(gè) Noxfile:

@nox.session(python=['2.7', '3.5', '3.6', '3.7'])
def tests(session):
    pass

將產(chǎn)生這些會(huì)話:

* tests-2.7
* tests-3.5
* tests-3.6
* tests-3.7

注意,這個(gè)擴(kuò)展發(fā)生在參數(shù)化之前,所以你仍然可以對(duì)多個(gè)解釋器的會(huì)話進(jìn)行參數(shù)化。

如果你想完全禁止創(chuàng)建 virtualenv,你可以設(shè)置 python 參數(shù)為 False:

@nox.session(python=False)
def tests(session):
    pass

最后,你還可以指定每次都重用 virtualenv,而不是重新創(chuàng)建:

@nox.session(
    python=['2.7', '3.6'],
    reuse_venv=True)
def tests(session):
    pass

將參數(shù)傳入會(huì)話通常往測(cè)試會(huì)話中傳遞參數(shù)是很有用的。下面是一個(gè)簡單示例,演示了如何使用參數(shù)對(duì)特定文件作測(cè)試:

@nox.session
def test(session):
    session.install('pytest')
    if session.posargs:
        test_files = session.posargs
    else:
        test_files = ['test_a.py', 'test_b.py']
    session.run('pytest', *test_files)

現(xiàn)在如果你運(yùn)行:

nox那么 nox 將運(yùn)行:

pytest test_a.py test_b.py但如果你運(yùn)行:

nox -- test_c.py那么 nox 將運(yùn)行:

pytest test_c.py

參數(shù)化會(huì)話會(huì)話的參數(shù)可以用nox.parametrize() 裝飾器來作參數(shù)化。

下面是一個(gè)典型的參數(shù)化安裝 Django 版本的例子:

@nox.session
@nox.parametrize('django', ['1.9', '2.0'])
def tests(session, django):
    session.install(f'django=={django}')
    session.run('pytest')

當(dāng)你運(yùn)行nox時(shí),它會(huì)創(chuàng)建兩個(gè)不同的會(huì)話:

$ nox
nox > Running session tests(django='1.9')
nox > pip install django==1.9
...
nox > Running session tests(djano='2.0')
nox > pip install django==2.0

nox.parametrize() 的接口和用法故意跟pytest的參數(shù)化 相類似。

格式:parametrize(arg_names, arg_values_list, ids=None)

作用是參數(shù)化一個(gè)會(huì)話。

將 arg_values_list 列表賦給對(duì)應(yīng)的 arg_names,為裝飾的會(huì)話函數(shù)添加新的調(diào)用。參數(shù)化在會(huì)話發(fā)現(xiàn)期間執(zhí)行,每次調(diào)用都作為 nox 的單個(gè)會(huì)話出現(xiàn)。

參數(shù):

  • arg_names (Sequence[str])——一系列參數(shù)名稱
  • arg_values_list (Sequence[Union[Any, Tuple]])——參數(shù)值列表決定了使用不同參數(shù)值調(diào)用會(huì)話的頻率。如果只指定了一個(gè)參數(shù)名,那么這就是一個(gè)簡單的值列表,例如[1,2,3]。如果指定了 N 個(gè)參數(shù)名,這必須是一個(gè) N 元組的列表,其中每個(gè)元素為其各自的參數(shù)名指定一個(gè)值,例如 [(1,'a'), (2,'b')]。
  • ids (Sequence[str]) ——可選項(xiàng),一系列測(cè)試 id,被參數(shù)化的參數(shù)使用。

你也可以堆疊裝飾器,令其產(chǎn)生組合了參數(shù)的會(huì)話,例如:

@nox.session
@nox.parametrize('django', ['1.9', '2.0'])
@nox.parametrize('database', ['postgres', 'mysql'])
def tests(session, django, database):
    ...

如果運(yùn)行nox —list,你將看到它生成了以下的會(huì)話集:

* tests(database='postgres', django='1.9')
* tests(database='mysql', django='1.9')
* tests(database='postgres', django='2.0')
* tests(database='mysql', django='2.0')

如果你只想運(yùn)行一個(gè)參數(shù)化會(huì)話,請(qǐng)參閱"指定參數(shù)化會(huì)話"部分。

為參數(shù)化的會(huì)話起友好的名稱自動(dòng)生成的參數(shù)化會(huì)話的名稱,如tests(django='1.9', database='postgres'),即使用關(guān)鍵字過濾,也可能很長且很難處理。

在此場景中,可以為參數(shù)化會(huì)話提供輔助的自定義 id 。

這兩個(gè)例子是等價(jià)的:

@nox.session
@nox.parametrize('django',
    ['1.9', '2.0'],
    ids=['old', 'new'])
def tests(session, django):
    ...
@nox.session
@nox.parametrize('django', [
    nox.param('1.9', id='old'),
    nox.param('2.0', id='new'),
])
def tests(session, django):
    ...

當(dāng)運(yùn)行nox --list時(shí),你將看到它們的新 id:

* tests(old)
* tests(new)

你可以用nox --sessions "tests(old)",以此類推。

這也適用于堆疊參數(shù)化。id 是在組合期間組合的。

例如:

@nox.session
@nox.parametrize(
    'django',
    ['1.9', '2.0'],
    ids=["old", "new"])
@nox.parametrize(
    'database',
    ['postgres', 'mysql'],
    ids=["psql", "mysql"])
def tests(session, django, database):
    ...

運(yùn)行nox --list時(shí)會(huì)產(chǎn)生這些會(huì)話:

* tests(psql, old)
* tests(mysql, old)
* tests(psql, new)
* tests(mysql, new)

會(huì)話對(duì)象Nox 將使用 Session 類的一個(gè)實(shí)例來調(diào)用你的會(huì)話函數(shù)。

class Session(runner) :

會(huì)話對(duì)象被傳遞到用戶自定義的每個(gè)會(huì)話函數(shù)中。

這是在 Nox 會(huì)話中安裝軟件包和運(yùn)行命令的主要途徑。

  • bin:——virtualenv 的 bin 目錄
  • cd(dir):——chdir() 的一個(gè)別名
  • chdir(dir):——更改當(dāng)前的工作目錄
  • conda_install(
    • args,
    • *kwargs):

調(diào)用conda install來在會(huì)話環(huán)境中的安裝軟件包。

直接安裝軟件包:

session.conda_install('pandas')
session.conda_install('numpy', 'scipy')
session.conda_install('--channel=conda-forge', 'dask==2.1.0')

根據(jù) requirements.txt 文件來安裝軟件包:

session.conda_install('--file', 'requirements.txt')
session.conda_install('--file', 'requirements-dev.txt')

不破壞 conda 已安裝的依賴而安裝軟件包:

session.install('.', '--no-deps')
# Install in editable mode.
session.install('-e', '.', '--no-deps')

剩下的關(guān)鍵字參數(shù)跟 run() 相同。

  • env:——一個(gè)環(huán)境變量的字典,傳給所有的命令。
  • error(
    • args,
    • *kwargs):——立即中止會(huì)話并隨意地記錄一個(gè)錯(cuò)誤。
  • install(
    • args,
    • *kwargs): ——調(diào)用 pip 在會(huì)話的 virtualenv 里安裝包。

直接安裝包:

session.install('pytest')
session.install('requests', 'mock')
session.install('requests[security]==2.9.1')

根據(jù) requirements.txt 文件來安裝軟件包:

session.install('-r', 'requirements.txt')
session.install('-r', 'requirements-dev.txt')

安裝當(dāng)前的包:

session.install('.')
# Install in editable mode.
session.install('-e', '.')

剩下的關(guān)鍵字參數(shù)跟 run() 相同。

  • interactive:——如果 Nox 在交互式會(huì)話中運(yùn)行,則返回 True,否則返回 False。
  • log(
    • args,
    • *kwargs):——在會(huì)話期間輸出一份日志。
  • notify(target): ——將給定的會(huì)話放在隊(duì)列的末尾。

此方法是冪等的;對(duì)同一會(huì)話的多次通知無效。
參數(shù):target (Union[str, Callable])——需要通知的會(huì)話。這可以指定適當(dāng)?shù)淖址?與nox -s 的使用相同)或使用函數(shù)對(duì)象。

  • posargs:——用于設(shè)置從命令行上傳給 nox 的額外參數(shù)。
  • python:——傳給@nox.session的 Python 版本。
  • run(args, env=None, kwargs): ——運(yùn)行一個(gè)命令。

命令必須安裝字符串列表指定,例如:

session.run('pytest', '-k', 'fast', 'tests/')
session.run('flake8', '--import-order-style=google')

你不能把所有東西都當(dāng)作一個(gè)字符串傳遞。例如,不可以這樣:
session.run('pytest -k fast tests/')

你可以用env 為命令設(shè)置環(huán)境變量:

session.run(
  'bash', '-c', 'echo $SOME_ENV',
  env={'SOME_ENV': 'Hello'})

你還可以使用success_codes ,告訴 nox 將非零退出碼視為成功。例如,如果你想將 pytest 的“tests discovered, but none selected”錯(cuò)誤視為成功:

session.run(
  'pytest', '-k', 'not slow',
  success_codes=[0, 5])

在 Windows 上,像del這樣的內(nèi)置命令不能直接調(diào)用,但是你可以使用cmd /c 來調(diào)用它們:

session.run('cmd', '/c', 'del', 'docs/modules.rst')

參數(shù):

  • env (dict or None)——用于向命令公開的環(huán)境變量字典。默認(rèn)情況下,傳遞所有環(huán)境變量。
  • silent (bool) ——靜默命令輸出,除非命令失敗。默認(rèn)為 False。
  • success_codes (list, tuple, or None)——一系列被認(rèn)為是成功的返回碼。默認(rèn)情況下,只有 0 被認(rèn)為是成功的。
  • external (bool) ——如果為 False(默認(rèn)值),那么不在 virtualenv 路徑中的程序?qū)l(fā)出告警。如果為 True,則不會(huì)發(fā)出告警。這些告警可以使用--error-on-external-run將其轉(zhuǎn)換為錯(cuò)誤。這對(duì)沒有 virtualenv 的會(huì)話沒有影響。
  • skip(
    • args,
    • *kwargs):——立即跳出會(huì)話,并隨意記錄一個(gè)告警。
  • virtualenv:——運(yùn)行所有命令的 virtualenv。

修改 Noxfile 中的 Nox 行為Nox 有各種命令行參數(shù),可用于修改其行為。其中一些還可以在 Noxfile 中使用 nox.options 指定。例如,如果你想將 Nox 的 virtualenvs 存儲(chǔ)在不同的目錄中,而不需要每次都將它傳遞給 nox:

import nox
nox.options.envdir = ".cache"
@nox.session
def tests(session):
    ...

或者,如果你想提供一組默認(rèn)運(yùn)行的會(huì)話:

import nox
nox.options.sessions = ["lint", "tests-3.6"]
...

以下的選項(xiàng)可以在 Noxfile 中指定:

  • nox.options.envdir 等同于指定 –envdir.
  • nox.options.sessions 等同于指定 -s or –sessions.
  • nox.options.keywords 等同于指定 -k or –keywords.
  • nox.options.reuse_existing_virtualenvs 等同于指定 –reuse-existing-virtualenvs 。通過在調(diào)用時(shí)指定 --no-reuse-existing-virtualenvs ,你可以強(qiáng)制取消它。
  • nox.options.stop_on_first_error 等同于指定 –stop-on-first-error. 通過在調(diào)用時(shí)指定 --no-stop-on-first-error,你可以強(qiáng)制取消它。
  • nox.options.error_on_missing_interpreters 等同于指定 –error-on-missing-interpreters 。通過在調(diào)用時(shí)指定 --no-error-on-missing-interpreters ,你可以強(qiáng)制取消它。
  • nox.options.error_on_external_run 等同于指定 –error-on-external-run. 通過在調(diào)用時(shí)指定 --no-error-on-external-run ,你可以強(qiáng)制取消它。
  • nox.options.report 等同于指定 –report。

在調(diào)用 nox 時(shí),命令行上指定的任何選項(xiàng)都優(yōu)先于 Noxfile 中指定的選項(xiàng)。如果在命令行上指定了--sessions或--keywords,那么在 Noxfile 中指定的兩個(gè)選項(xiàng)都將被忽略。

到此這篇關(guān)于Python 任務(wù)自動(dòng)化工具nox 的配置與 API詳情的文章就介紹到這了,更多相關(guān)Python  nox與 API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python遠(yuǎn)程linux執(zhí)行命令實(shí)現(xiàn)

    Python遠(yuǎn)程linux執(zhí)行命令實(shí)現(xiàn)

    這篇文章主要介紹了Python遠(yuǎn)程linux執(zhí)行命令實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python爬蟲實(shí)現(xiàn)教程轉(zhuǎn)換成 PDF 電子書

    python爬蟲實(shí)現(xiàn)教程轉(zhuǎn)換成 PDF 電子書

    本文給大家分享的是使用python爬蟲實(shí)現(xiàn)把《廖雪峰的 Python 教程》轉(zhuǎn)換成PDF的方法和代碼,有需要的小伙伴可以參考下
    2017-02-02
  • 詳解python中TCP協(xié)議中的粘包問題

    詳解python中TCP協(xié)議中的粘包問題

    這篇文章主要介紹了python中TCP協(xié)議中的粘包問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • python smtplib發(fā)送帶附件郵件小程序

    python smtplib發(fā)送帶附件郵件小程序

    這篇文章主要為大家詳細(xì)介紹了python smtplib發(fā)送帶附件郵件小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python中的生成器

    Python中的生成器

    這篇文章主要介紹了Python中的生成器
    2021-12-12
  • 詳細(xì)介紹Python進(jìn)度條tqdm的使用

    詳細(xì)介紹Python進(jìn)度條tqdm的使用

    這篇文章主要介紹了詳細(xì)介紹Python進(jìn)度條tqdm的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • pyinstaller還原python代碼過程圖解

    pyinstaller還原python代碼過程圖解

    這篇文章主要介紹了pyinstaller還原python代碼過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python調(diào)用PC攝像頭實(shí)現(xiàn)掃描二維碼

    Python調(diào)用PC攝像頭實(shí)現(xiàn)掃描二維碼

    PC攝像機(jī)掃描二維碼的應(yīng)用場景很廣泛,可以應(yīng)用于各種需要快速掃描、識(shí)別和管理的場景,本文就來具體講講如何用Python實(shí)現(xiàn)這一功能吧
    2023-05-05
  • 使用Pygame制作中秋嫦娥奔月小游戲

    使用Pygame制作中秋嫦娥奔月小游戲

    中秋節(jié)是中國傳統(tǒng)的重要節(jié)日之一,起源于嫦娥奔月的神話故事,在中秋節(jié)這個(gè)特殊的日子里,人們不僅會(huì)欣賞明亮的月亮和嫦娥奔月的美麗故事,還會(huì)舉行一些慶?;顒?dòng),接下來,我們使用Pygame制作“嫦娥奔月”小游戲,感興趣的朋友可以自己動(dòng)手試一試
    2023-09-09
  • 教你使用Python連接oracle

    教你使用Python連接oracle

    今天教各位小伙伴怎么用Python連接oracle,文中附帶非常詳細(xì)的圖文示例,對(duì)正在學(xué)習(xí)的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

开化县| 望谟县| 兴文县| 云南省| 大宁县| 阳谷县| 德令哈市| 浦东新区| 千阳县| 沙坪坝区| 建平县| 广元市| 塔城市| 长沙市| 奉贤区| 井研县| 邯郸市| 白水县| 柏乡县| 长泰县| 大关县| 页游| 开阳县| 西宁市| 神农架林区| 鄄城县| 茌平县| 伊通| 固镇县| 灵寿县| 瓦房店市| 华坪县| 盐山县| 会昌县| 友谊县| 台安县| 秦皇岛市| 延长县| 新龙县| 汪清县| 满洲里市|