clarifai 11.6.4rc2__tar.gz → 11.6.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {clarifai-11.6.4rc2/clarifai.egg-info → clarifai-11.6.6}/PKG-INFO +2 -2
- clarifai-11.6.6/clarifai/__init__.py +1 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/README.md +39 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/base.py +119 -118
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/model.py +116 -86
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/app.py +1 -1
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/auth/helper.py +7 -2
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/base.py +35 -8
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/compute_cluster.py +1 -1
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/model.py +3 -1
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/model_client.py +20 -1
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/nodepool.py +4 -2
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/user.py +4 -2
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/model_runner.py +55 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/server.py +23 -1
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/model_utils.py +4 -4
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/url_fetcher.py +51 -12
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/cli.py +148 -13
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/constants.py +5 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/misc.py +47 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6/clarifai.egg-info}/PKG-INFO +2 -2
- clarifai-11.6.6/clarifai.egg-info/SOURCES.txt +147 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai.egg-info/requires.txt +1 -1
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/requirements.txt +1 -1
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_list_models.py +3 -2
- clarifai-11.6.4rc2/clarifai/__init__.py +0 -1
- clarifai-11.6.4rc2/clarifai/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/__pycache__/errors.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/__pycache__/errors.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/__pycache__/versions.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/__pycache__/versions.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/cli/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/cli/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/cli/__pycache__/compute_cluster.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/cli/__pycache__/deployment.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/cli/__pycache__/model.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/cli/__pycache__/nodepool.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/app.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/app.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/base.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/compute_cluster.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/dataset.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/dataset.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/deployment.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/deployment.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/input.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/input.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/lister.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/lister.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/model.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/model.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/model_client.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/model_client.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/module.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/nodepool.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/runner.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/search.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/user.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/__pycache__/workflow.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/helper.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/helper.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/register.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/register.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/stub.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/client/auth/__pycache__/stub.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/base.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/dataset.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/dataset.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/input.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/input.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/model.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/model.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/search.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/constants/__pycache__/workflow.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/export/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/export/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/export/__pycache__/inputs_annotations.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/export/__pycache__/inputs_annotations.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/base.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/features.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/features.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/image.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/image.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/multimodal.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/multimodal.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/text.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/text.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/utils.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/datasets/upload/__pycache__/utils.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/mcp_class.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/model_builder.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/model_builder.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/model_class.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/model_runner.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/models/__pycache__/openai_class.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/code_script.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/code_script.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/const.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/data_utils.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/data_utils.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/loader.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/method_signatures.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/model_utils.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/openai_convertor.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/serializers.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/__pycache__/url_fetcher.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/data_types/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/data_types/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/data_types/__pycache__/data_types.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/runners/utils/data_types/__pycache__/data_types.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/schema/__pycache__/search.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/urls/__pycache__/helper.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/urls/__pycache__/helper.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/cli.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/config.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/config.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/constants.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/constants.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/logging.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/logging.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/misc.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/misc.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/model_train.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/protobuf.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/utils/__pycache__/protobuf.cpython-39.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/workflows/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/workflows/__pycache__/export.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/workflows/__pycache__/utils.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai/workflows/__pycache__/validate.cpython-311.pyc +0 -0
- clarifai-11.6.4rc2/clarifai.egg-info/SOURCES.txt +0 -270
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/LICENSE +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/MANIFEST.in +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/README.md +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/__main__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/compute_cluster.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/deployment.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/nodepool.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/pipeline.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/pipeline_step.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/templates/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/templates/model_templates.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/templates/pipeline_step_templates.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli/templates/pipeline_templates.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/cli.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/auth/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/auth/register.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/auth/stub.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/dataset.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/deployment.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/input.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/lister.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/module.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/pipeline.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/runner.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/search.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/client/workflow.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/constants/base.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/constants/dataset.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/constants/input.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/constants/model.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/constants/rag.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/constants/search.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/constants/workflow.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/export/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/export/inputs_annotations.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/base.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/features.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/image.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/loaders/README.md +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/loaders/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/loaders/coco_captions.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/loaders/coco_detection.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/loaders/imagenet_classification.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/loaders/xview_detection.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/multimodal.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/text.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/datasets/upload/utils.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/errors.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/models/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/models/api.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/modules/README.md +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/modules/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/modules/css.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/modules/pages.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/modules/style.css +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/rag/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/rag/rag.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/rag/utils.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/dockerfile_template/Dockerfile.template +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/dummy_openai_model.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/mcp_class.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/model_builder.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/model_class.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/model_run_locally.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/model_servicer.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/openai_class.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/visual_classifier_class.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/models/visual_detector_class.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/pipeline_steps/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/pipeline_steps/pipeline_step_builder.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/pipelines/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/pipelines/pipeline_builder.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/code_script.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/const.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/data_types/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/data_types/data_types.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/data_utils.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/loader.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/method_signatures.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/openai_convertor.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/pipeline_validation.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/runners/utils/serializers.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/schema/search.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/urls/helper.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/config.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/evaluation/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/evaluation/helpers.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/evaluation/main.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/evaluation/testset_annotation_parser.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/logging.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/model_train.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/utils/protobuf.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/versions.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/workflows/__init__.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/workflows/export.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/workflows/utils.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai/workflows/validate.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai.egg-info/dependency_links.txt +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai.egg-info/entry_points.txt +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/clarifai.egg-info/top_level.txt +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/pyproject.toml +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/setup.cfg +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/setup.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_app.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_async_stub.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_auth.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_data_upload.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_eval.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_misc.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_model_predict.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_model_train.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_modules.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_pipeline_client.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_rag.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_search.py +0 -0
- {clarifai-11.6.4rc2 → clarifai-11.6.6}/tests/test_stub.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: clarifai
|
3
|
-
Version: 11.6.
|
3
|
+
Version: 11.6.6
|
4
4
|
Home-page: https://github.com/Clarifai/clarifai-python
|
5
5
|
Author: Clarifai
|
6
6
|
Author-email: support@clarifai.com
|
@@ -19,7 +19,7 @@ Classifier: Operating System :: OS Independent
|
|
19
19
|
Requires-Python: >=3.8
|
20
20
|
Description-Content-Type: text/markdown
|
21
21
|
License-File: LICENSE
|
22
|
-
Requires-Dist: clarifai-grpc>=11.6.
|
22
|
+
Requires-Dist: clarifai-grpc>=11.6.6
|
23
23
|
Requires-Dist: clarifai-protocol>=0.0.25
|
24
24
|
Requires-Dist: numpy>=1.22.0
|
25
25
|
Requires-Dist: tqdm>=4.65.0
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "11.6.6"
|
@@ -8,6 +8,45 @@ Clarifai offers a user-friendly interface for deploying your local model into pr
|
|
8
8
|
* Easy implementation and testing in Python
|
9
9
|
* No need for MLops expertise.
|
10
10
|
|
11
|
+
## Context Management
|
12
|
+
|
13
|
+
Manage CLI contexts for authentication and environment configuration:
|
14
|
+
### List all contexts
|
15
|
+
```bash
|
16
|
+
clarifai config get-contexts
|
17
|
+
```
|
18
|
+
|
19
|
+
### Switch context
|
20
|
+
```bash
|
21
|
+
clarifai config use-context production
|
22
|
+
```
|
23
|
+
### Show current context
|
24
|
+
```bash
|
25
|
+
clarifai config current-context
|
26
|
+
```
|
27
|
+
|
28
|
+
### Create new context
|
29
|
+
```bash
|
30
|
+
clarifai config create-context staging --user-id myuser --pat 678***
|
31
|
+
```
|
32
|
+
### View entire configuration
|
33
|
+
```bash
|
34
|
+
clarifai config view
|
35
|
+
```
|
36
|
+
### Delete a context
|
37
|
+
```bash
|
38
|
+
clarifai config delete-context old-context
|
39
|
+
```
|
40
|
+
### Edit configuration file
|
41
|
+
```bash
|
42
|
+
clarifai config edit
|
43
|
+
```
|
44
|
+
|
45
|
+
### Print environment variables for the active context
|
46
|
+
```bash
|
47
|
+
clarifai context env
|
48
|
+
```
|
49
|
+
|
11
50
|
## Compute Orchestration
|
12
51
|
|
13
52
|
Quick example for deploying a `visual-classifier` model
|
@@ -1,6 +1,6 @@
|
|
1
|
+
import getpass
|
1
2
|
import json
|
2
3
|
import os
|
3
|
-
import shutil
|
4
4
|
import sys
|
5
5
|
|
6
6
|
import click
|
@@ -13,7 +13,6 @@ from clarifai.utils.constants import DEFAULT_BASE, DEFAULT_CONFIG, DEFAULT_UI
|
|
13
13
|
from clarifai.utils.logging import logger
|
14
14
|
|
15
15
|
|
16
|
-
# @click.group(cls=CustomMultiGroup)
|
17
16
|
@click.group(cls=AliasedGroup)
|
18
17
|
@click.version_option(version=__version__)
|
19
18
|
@click.option('--config', default=DEFAULT_CONFIG)
|
@@ -54,42 +53,82 @@ def shell_completion(shell):
|
|
54
53
|
os.system(f"_CLARIFAI_COMPLETE={shell}_source clarifai")
|
55
54
|
|
56
55
|
|
57
|
-
@cli.group(
|
58
|
-
['cfg'],
|
59
|
-
cls=AliasedGroup,
|
60
|
-
context_settings={'max_content_width': shutil.get_terminal_size().columns - 10},
|
61
|
-
)
|
56
|
+
@cli.group(cls=AliasedGroup)
|
62
57
|
def config():
|
63
|
-
"""
|
58
|
+
"""
|
59
|
+
Manage multiple configuration profiles (contexts).
|
64
60
|
|
61
|
+
Authentication Precedence:\n
|
62
|
+
1. Environment variables (e.g., `CLARIFAI_PAT`) are used first if set.
|
63
|
+
2. The settings from the active context are used if no environment variables are provided.\n
|
64
|
+
"""
|
65
65
|
|
66
|
-
|
66
|
+
|
67
|
+
@cli.command()
|
68
|
+
@click.argument('api_url', default=DEFAULT_BASE)
|
69
|
+
@click.option('--user_id', required=False, help='User ID')
|
67
70
|
@click.pass_context
|
68
|
-
def
|
69
|
-
"""
|
70
|
-
|
71
|
+
def login(ctx, api_url, user_id):
|
72
|
+
"""Login command to set PAT and other configurations."""
|
73
|
+
from clarifai.utils.cli import validate_context_auth
|
71
74
|
|
75
|
+
click.echo('> To authenticate, you\'ll need a Personal Access Token (PAT).')
|
76
|
+
click.echo(
|
77
|
+
'> You can create one from your account settings: https://clarifai.com/settings/security\n'
|
78
|
+
)
|
72
79
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
80
|
+
# Securely input PAT
|
81
|
+
pat = getpass.getpass('Enter your Personal Access Token: ')
|
82
|
+
|
83
|
+
# Input user_id if not supplied
|
84
|
+
if not user_id:
|
85
|
+
user_id = click.prompt('Enter your Clarifai user ID', type=str)
|
86
|
+
|
87
|
+
# Progress indicator
|
88
|
+
click.echo('\n> Verifying token...')
|
89
|
+
validate_context_auth(pat, user_id, api_url)
|
90
|
+
|
91
|
+
# Context naming
|
92
|
+
default_context_name = 'default'
|
93
|
+
click.echo('\n> Let\'s save these credentials to a new context.')
|
94
|
+
click.echo('> You can have multiple contexts to easily switch between accounts or projects.\n')
|
95
|
+
context_name = click.prompt("Enter a name for this context", default=default_context_name)
|
96
|
+
|
97
|
+
# Save context
|
98
|
+
context = Context(
|
99
|
+
context_name,
|
100
|
+
CLARIFAI_API_BASE=api_url,
|
101
|
+
CLARIFAI_USER_ID=user_id,
|
102
|
+
CLARIFAI_PAT=pat,
|
103
|
+
)
|
104
|
+
|
105
|
+
ctx.obj.contexts[context_name] = context
|
106
|
+
ctx.obj.current_context = context_name
|
107
|
+
ctx.obj.to_yaml()
|
108
|
+
click.secho('✅ Success! You are now logged in.', fg='green')
|
109
|
+
click.echo(f'Credentials saved to the \'{context_name}\' context.\n')
|
110
|
+
click.echo('💡 To switch contexts later, use `clarifai config use-context <name>`.')
|
111
|
+
|
112
|
+
logger.info(f"Login successful for user '{user_id}' in context '{context_name}'")
|
113
|
+
|
114
|
+
|
115
|
+
def pat_display(pat):
|
116
|
+
return pat[:5] + "****"
|
117
|
+
|
118
|
+
|
119
|
+
def input_or_default(prompt, default):
|
120
|
+
value = input(prompt)
|
121
|
+
return value if value else default
|
84
122
|
|
85
123
|
|
86
|
-
|
124
|
+
# Context management commands under config group
|
125
|
+
@config.command(aliases=['get-contexts', 'list-contexts'])
|
87
126
|
@click.option(
|
88
127
|
'-o', '--output-format', default='wide', type=click.Choice(['wide', 'name', 'json', 'yaml'])
|
89
128
|
)
|
90
129
|
@click.pass_context
|
91
130
|
def get_contexts(ctx, output_format):
|
92
|
-
"""
|
131
|
+
"""List all available contexts."""
|
93
132
|
if output_format == 'wide':
|
94
133
|
columns = {
|
95
134
|
'': lambda c: '*' if c.name == ctx.obj.current_context else '',
|
@@ -106,7 +145,6 @@ def get_contexts(ctx, output_format):
|
|
106
145
|
additional_columns.add(key)
|
107
146
|
for key in sorted(additional_columns):
|
108
147
|
columns[key] = lambda c, k=key: getattr(c, k) if hasattr(c, k) else ""
|
109
|
-
|
110
148
|
formatter = TableFormatter(
|
111
149
|
custom_columns=columns,
|
112
150
|
)
|
@@ -123,101 +161,45 @@ def get_contexts(ctx, output_format):
|
|
123
161
|
print(yaml.safe_dump(dicts))
|
124
162
|
|
125
163
|
|
126
|
-
@config.command(['use'])
|
127
|
-
@click.argument('
|
164
|
+
@config.command(aliases=['use-context'])
|
165
|
+
@click.argument('name', type=str)
|
128
166
|
@click.pass_context
|
129
|
-
def use_context(ctx,
|
130
|
-
"""Set the current context"""
|
131
|
-
if
|
167
|
+
def use_context(ctx, name):
|
168
|
+
"""Set the current context."""
|
169
|
+
if name not in ctx.obj.contexts:
|
132
170
|
raise click.UsageError('Context not found')
|
133
|
-
ctx.obj.current_context =
|
171
|
+
ctx.obj.current_context = name
|
134
172
|
ctx.obj.to_yaml()
|
135
|
-
print(f'Set {
|
136
|
-
|
137
|
-
|
138
|
-
@config.command(['cat'])
|
139
|
-
@click.option('-o', '--output-format', default='yaml', type=click.Choice(['yaml', 'json']))
|
140
|
-
@click.pass_obj
|
141
|
-
def dump(ctx_obj, output_format):
|
142
|
-
"""Dump the configuration to stdout"""
|
143
|
-
if output_format == 'yaml':
|
144
|
-
yaml.safe_dump(ctx_obj.to_dict(), sys.stdout)
|
145
|
-
else:
|
146
|
-
json.dump(ctx_obj.to_dict(), sys.stdout, indent=2)
|
147
|
-
|
148
|
-
|
149
|
-
@config.command(['cat'])
|
150
|
-
@click.pass_obj
|
151
|
-
def env(ctx_obj):
|
152
|
-
"""Print env vars. Use: eval "$(clarifai config env)" """
|
153
|
-
ctx_obj.current.print_env_vars()
|
173
|
+
print(f'Set {name} as the current context')
|
154
174
|
|
155
175
|
|
156
|
-
@
|
157
|
-
@click.
|
158
|
-
@click.option('--user_id', required=False, help='User ID')
|
176
|
+
@config.command(aliases=['current-context'])
|
177
|
+
@click.option('-o', '--output-format', default='name', type=click.Choice(['name', 'json', 'yaml']))
|
159
178
|
@click.pass_context
|
160
|
-
def
|
161
|
-
"""
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
'ENVVAR',
|
169
|
-
)
|
170
|
-
|
171
|
-
# Validate the Context Credentials
|
172
|
-
validate_context_auth(pat, user_id, api_url)
|
173
|
-
|
174
|
-
context = Context(
|
175
|
-
name,
|
176
|
-
CLARIFAI_API_BASE=api_url,
|
177
|
-
CLARIFAI_USER_ID=user_id,
|
178
|
-
CLARIFAI_PAT=pat,
|
179
|
-
)
|
180
|
-
|
181
|
-
if context.name == '':
|
182
|
-
context.name = 'default'
|
183
|
-
|
184
|
-
ctx.obj.contexts[context.name] = context
|
185
|
-
ctx.obj.current_context = context.name
|
186
|
-
|
187
|
-
ctx.obj.to_yaml()
|
188
|
-
logger.info(
|
189
|
-
f"Login successful and Configuration saved successfully for context '{context.name}'"
|
190
|
-
)
|
191
|
-
|
192
|
-
|
193
|
-
@cli.group(cls=AliasedGroup)
|
194
|
-
def context():
|
195
|
-
"""Manage contexts"""
|
196
|
-
|
197
|
-
|
198
|
-
def pat_display(pat):
|
199
|
-
return pat[:5] + "****"
|
200
|
-
|
201
|
-
|
202
|
-
def input_or_default(prompt, default):
|
203
|
-
value = input(prompt)
|
204
|
-
return value if value else default
|
179
|
+
def current_context(ctx, output_format):
|
180
|
+
"""Show the current context's details."""
|
181
|
+
if output_format == 'name':
|
182
|
+
print(ctx.obj.current_context)
|
183
|
+
elif output_format == 'json':
|
184
|
+
print(json.dumps(ctx.obj.contexts[ctx.obj.current_context].to_serializable_dict()))
|
185
|
+
else:
|
186
|
+
print(yaml.safe_dump(ctx.obj.contexts[ctx.obj.current_context].to_serializable_dict()))
|
205
187
|
|
206
188
|
|
207
|
-
@
|
189
|
+
@config.command(aliases=['create-context', 'set-context'])
|
208
190
|
@click.argument('name')
|
209
191
|
@click.option('--user-id', required=False, help='User ID')
|
210
192
|
@click.option('--base-url', required=False, help='Base URL')
|
211
193
|
@click.option('--pat', required=False, help='Personal access token')
|
212
194
|
@click.pass_context
|
213
|
-
def
|
195
|
+
def create_context(
|
214
196
|
ctx,
|
215
197
|
name,
|
216
198
|
user_id=None,
|
217
199
|
base_url=None,
|
218
200
|
pat=None,
|
219
201
|
):
|
220
|
-
"""Create a new context"""
|
202
|
+
"""Create a new context."""
|
221
203
|
from clarifai.utils.cli import validate_context_auth
|
222
204
|
|
223
205
|
if name in ctx.obj.contexts:
|
@@ -234,22 +216,28 @@ def create(
|
|
234
216
|
'personal access token value (default: "ENVVAR" to get our of env var rather than config): ',
|
235
217
|
'ENVVAR',
|
236
218
|
)
|
237
|
-
|
238
|
-
# Validate the Context Credentials
|
239
219
|
validate_context_auth(pat, user_id, base_url)
|
240
|
-
|
241
220
|
context = Context(name, CLARIFAI_USER_ID=user_id, CLARIFAI_API_BASE=base_url, CLARIFAI_PAT=pat)
|
242
221
|
ctx.obj.contexts[context.name] = context
|
243
222
|
ctx.obj.to_yaml()
|
244
223
|
logger.info(f"Context '{name}' created successfully")
|
245
224
|
|
246
225
|
|
247
|
-
|
248
|
-
@
|
226
|
+
@config.command(aliases=['e'])
|
227
|
+
@click.pass_context
|
228
|
+
def edit(
|
229
|
+
ctx,
|
230
|
+
):
|
231
|
+
"""Open the configuration file for editing."""
|
232
|
+
# For now, just open the config file (not per-context)
|
233
|
+
os.system(f'{os.environ.get("EDITOR", "vi")} {ctx.obj.filename}')
|
234
|
+
|
235
|
+
|
236
|
+
@config.command(aliases=['delete-context'])
|
249
237
|
@click.argument('name')
|
250
238
|
@click.pass_context
|
251
|
-
def
|
252
|
-
"""Delete a context"""
|
239
|
+
def delete_context(ctx, name):
|
240
|
+
"""Delete a context."""
|
253
241
|
if name not in ctx.obj.contexts:
|
254
242
|
print(f'{name} is not a valid context')
|
255
243
|
sys.exit(1)
|
@@ -258,16 +246,29 @@ def delete(ctx, name):
|
|
258
246
|
print(f'{name} deleted')
|
259
247
|
|
260
248
|
|
261
|
-
@
|
262
|
-
@click.argument('name', type=str)
|
249
|
+
@config.command(aliases=['get-env'])
|
263
250
|
@click.pass_context
|
264
|
-
def
|
265
|
-
"""
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
251
|
+
def env(ctx):
|
252
|
+
"""Print env vars for the active context."""
|
253
|
+
ctx.obj.current.print_env_vars()
|
254
|
+
|
255
|
+
|
256
|
+
@config.command(aliases=['show'])
|
257
|
+
@click.option('-o', '--output-format', default='yaml', type=click.Choice(['json', 'yaml']))
|
258
|
+
@click.pass_context
|
259
|
+
def view(ctx, output_format):
|
260
|
+
"""Display the current configuration."""
|
261
|
+
config_dict = {
|
262
|
+
'current-context': ctx.obj.current_context,
|
263
|
+
'contexts': {
|
264
|
+
name: context.to_serializable_dict() for name, context in ctx.obj.contexts.items()
|
265
|
+
},
|
266
|
+
}
|
267
|
+
|
268
|
+
if output_format == 'json':
|
269
|
+
print(json.dumps(config_dict, indent=2))
|
270
|
+
else:
|
271
|
+
print(yaml.safe_dump(config_dict, default_flow_style=False))
|
271
272
|
|
272
273
|
|
273
274
|
@cli.command()
|