第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 單擊命令的功能標志

Python 單擊命令的功能標志

慕勒3428872 2021-12-17 16:39:18
在我的 python-click-CLI 腳本中,我正在為用戶不應(yīng)該看到的功能構(gòu)建一些命令(不要混淆他們),但對于例如開發(fā)人員是可見的。是否可以將功能標志用于 Python 單擊命令?如果命令可用或不可用,我希望能夠配置(通過配置文件等)。如果禁用了命令功能,則該命令不應(yīng)是可調(diào)用的,并且?guī)椭粦?yīng)顯示它。像這樣:FLAG_ENABLED = False# This command should not be shown and not be callable as long as the flag is disabled@cli.command(name='specialfeature', active=FLAG_ENABLED)def special_feature_command()    ....顯然,我可以改變我的函數(shù)體:@cli.command(name='specialfeature', active=FLAG_ENABLED)def special_feature_command()    if FLAG_ENABLED:        ...    else:        ...但是我的命令仍然會出現(xiàn)在幫助中,我想避免這種情況。
查看完整描述

1 回答

?
慕容3067478

TA貢獻1773條經(jīng)驗 獲得超3個贊

您可以使用自定義類添加功能標志功能,例如:


自定義類

這個類覆蓋了click.Group.command()用于裝飾命令函數(shù)的方法。它添加了傳遞active標志的能力,該標志何時False將跳過將命令添加到組中。


import click


class FeatureFlagCommand(click.Group):


    def command(self, *args, active=True, **kwargs):

        """Behaves the same as `click.Group.command()` except added an

        `active` flag which can be used to disable to command.

        """

        if active:

            return super(FeatureFlagCommand, self).command(*args, **kwargs)

        else:

            return lambda f: f

使用自定義類

通過將cls參數(shù)傳遞給click.group()裝飾器,任何通過 the 添加到組中的命令group.command()都將使用該active標志進行門控。


@click.group(cls=FeatureFlagCommand)

def cli():

    ...


@cli.command(name='specialfeature', active=FLAG_ENABLED)

def special_feature_command()

    ...

這是如何運作的?

這是有效的,因為 click 是一個設(shè)計良好的 OO 框架。很容易繼承click.Group和構(gòu)建一個新的command()裝飾器。在新的command()裝飾器中,如果活動標志是False我們返回未裝飾的函數(shù)而不是將函數(shù)添加到組中。


測試代碼:

@click.group(cls=FeatureFlagCommand)

def cli():

    """My Awesome Click Program"""


@cli.command(active=False)

def command1():

    click.echo('Command 1')


@cli.command(active=True)

def command2():

    click.echo('Command 2')


@cli.command()

def command3():

    click.echo('Command 3')



if __name__ == "__main__":

    commands = (

        'command1',

        'command2',

        'command3',

        '--help',

        '',

    )


    import sys, time


    time.sleep(1)

    print('Click Version: {}'.format(click.__version__))

    print('Python Version: {}'.format(sys.version))

    for cmd in commands:

        try:

            time.sleep(0.1)

            print('-----------')

            print('> ' + cmd)

            time.sleep(0.1)

            cli(cmd.split())


        except BaseException as exc:

            if str(exc) != '0' and \

                    not isinstance(exc, (click.ClickException, SystemExit)):

                raise

結(jié)果:

Click Version: 6.7

Python Version: 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]

-----------

> command1

Usage: test.py [OPTIONS] COMMAND [ARGS]...


Error: No such command "command1".

-----------

> command2

Command 2

-----------

> command3

Command 3

-----------

> --help

Usage: test.py [OPTIONS] COMMAND [ARGS]...


  My Awesome Click Program


Options:

  --help  Show this message and exit.


Commands:

  command2

  command3

-----------

Usage: test.py [OPTIONS] COMMAND [ARGS]...


  My Awesome Click Program


Options:

  --help  Show this message and exit.


Commands:

  command2

  command3


查看完整回答
反對 回復(fù) 2021-12-17
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號