ellf-cli 18.0.2__tar.gz → 18.0.5__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.
- {ellf_cli-18.0.2/ellf_cli.egg-info → ellf_cli-18.0.5}/PKG-INFO +1 -1
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/README.md +4 -4
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/users.py +22 -4
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf.json +9 -9
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +8 -1
- ellf_cli-18.0.5/ellf_cli/version/18.0.2_2026-09-13-06-36-33_patch_176bb944-1c49-4dd3-a001-8fce908825a0 +3 -0
- ellf_cli-18.0.5/ellf_cli/version/18.0.3_2026-09-13-12-32-46_patch_58e5ce3a-f2a7-4789-b2cd-5cc75c72b6ec +3 -0
- ellf_cli-18.0.5/ellf_cli/version/18.0.4_2026-09-13-12-45-14_patch_b6c79d55-8f85-4f47-a304-df52b122c38c +3 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5/ellf_cli.egg-info}/PKG-INFO +1 -1
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli.egg-info/SOURCES.txt +4 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_users_assign.py +10 -3
- ellf_cli-18.0.5/tests/test_users_list.py +77 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/LICENSE +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/MANIFEST.in +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/__main__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/about.json +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/about.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/appdirs.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/auth.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/cli.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/cloud/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/cloud/gcp.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/cluster_config.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/_cluster_select.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/_org_select.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/_project_scope.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/_recipe_file.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/_recipe_subcommand.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/_state.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/_usage.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/actions.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/agents.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/assets.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/auth.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/clusters.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/config.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/datasets.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/files/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/files/cp.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/files/ls.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/files/rm.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/files/rsync.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/files/stats.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/general.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/import_export.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/_config_io.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/_helpers.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/configure.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/deploy.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/init.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/init_values.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/provision.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/register.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/setup.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/start.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/terraform.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/infra/tls.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/jobs.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/packages.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/paths.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/plans.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/projects.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/publish_code.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/publish_data.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/recipes.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/secrets.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/services.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/support.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/tasks.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/commands/todos.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/config.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/.gitignore +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skill_variants.json +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-ops.coding/references/data_infra_cli.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/errors.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/helm.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/interactivity.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/key_pair.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/main.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/messages.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/pypi_auth.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/query.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/testing/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ty.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ui.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/url.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/util.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.114_2026-08-19-08-36-57__1a4e37c1-471e-4a81-b4d5-1ffe7dec3a61 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.114_2026-08-19-09-25-21_patch_33ff1e26-0e5e-46d8-8052-ab1d032e8b6c +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.115_2026-08-19-09-27-13_patch_4ac728c3-0342-4a36-adbc-e28d2d99b1ba +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.116_2026-08-19-09-30-47_patch_c706fef6-6813-4183-b268-12e7b00d7d0b +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.117_2026-08-19-09-39-14_patch_c6b0495f-2f88-4aa8-9ebf-0a235b4c407e +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.118_2026-08-19-09-52-00_patch_b395655a-8d78-4344-9266-6901c20f6517 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.119_2026-08-19-10-22-38_patch_8f95c49d-aedc-41b8-816d-ccb95f048831 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.120_2026-08-19-10-26-58_patch_7fbf35e6-cc01-4b75-8c9a-f5d054bcaf93 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.121_2026-08-19-10-42-02_patch_31a81b02-a886-4dea-84e0-67cc6ca412d5 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.122_2026-08-19-11-16-49_patch_1c4d7307-48d4-493e-936d-80af799d644b +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.123_2026-08-19-11-47-32_patch_d3d78d04-9989-45b1-91b1-93b571d8814a +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.124_2026-08-20-08-03-17_patch_57f4c389-2d19-41ce-aca4-13b61c62f387 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.125_2026-08-20-08-25-05_patch_7f368148-0d1c-4525-bbdf-c6d257ad861a +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.126_2026-08-20-14-51-36_patch_a99abcc8-3371-4c63-a759-bb7ea5b32432 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.127_2026-08-21-05-48-58_patch_34b4ccee-7596-4f57-93e9-774973cca58e +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.128_2026-08-21-10-47-20_patch_693112b9-927c-4a8f-8553-b06eef86079d +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.129_2026-08-21-11-16-54_patch_7a981666-01d9-4d1b-9ba3-2129744e3bd5 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.130_2026-08-21-13-09-36_patch_b7ad1a76-ce70-4d70-9d1a-7c414eba5bb4 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.131_2026-08-21-14-31-10_patch_9128ef66-193e-4caf-8710-afd86128e638 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.132_2026-08-24-08-59-34_patch_c600fc14-86a5-460f-9c4e-f0177056f756 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.133_2026-08-24-10-28-29_patch_b6ce3e32-9d7b-48ac-981a-270c22c180dd +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.134_2026-08-24-11-00-51_patch_a4fc0484-4a64-46a2-94f8-aa805254c7b0 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.135_2026-08-24-12-12-41_patch_a870a56f-9a65-49eb-92da-f572b26667d8 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.136_2026-08-24-12-42-46_patch_9b399356-6482-4291-8da7-e748a99c4b53 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.137_2026-08-24-12-53-57_patch_f7979348-1910-40cd-a535-90299eca84ee +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.138_2026-08-24-14-36-30_patch_ed0f8750-f663-498b-85e7-0d3f2213fcfe +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.139_2026-08-25-08-37-26_patch_3ba87e19-902b-4f76-b64c-90e5c0ca1fc6 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.140_2026-08-25-09-52-45_patch_abc830f2-df15-4385-b797-cdaf72c10752 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.141_2026-08-25-11-37-20_patch_1d9ec01e-06f6-4c8e-b095-af17d5b62b00 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.142_2026-08-26-07-38-49_patch_3dd23e36-e7df-494c-986f-a412861a8d40 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.143_2026-08-26-09-32-32_patch_7b7ebd34-de27-4b73-98a7-3e1501e16cd5 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.144_2026-08-26-10-56-43_patch_166064f2-2208-4c9b-9e25-25dc4cd32084 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.145_2026-08-26-11-37-29_patch_b997f3ee-d7d3-4408-9f2f-c8b6d08bdb3b +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.146_2026-08-26-12-15-20_patch_afbbb893-25db-468c-81db-2663ca373068 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.147_2026-08-26-14-10-50_patch_fd753b1f-2fa1-4ddb-a9e7-de690da85254 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.148_2026-08-27-09-08-35_patch_23814c0b-7f77-489c-b4a8-ceadd18146e3 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.149_2026-08-27-09-40-17_patch_8879d72e-a3d8-4abc-a16a-d9dcf75f0fa1 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.150_2026-08-27-10-57-25_patch_afbe60ed-3e23-4d88-be3c-f800d7002a7d +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.151_2026-08-28-09-02-46_patch_1d4ca23b-aeae-4ea8-96b1-8cf57371f29d +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.152_2026-08-28-15-37-24_patch_c9d0bdc1-a7e1-432b-92b9-92dc76fe0c78 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.153_2026-08-29-09-03-27_patch_7531573a-1b33-4092-aa9c-0e65f47b201f +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.154_2026-08-29-11-56-35_patch_919f5787-39c8-4dc1-ae6a-f27c28380f21 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.155_2026-08-29-15-15-59_patch_822f9ed8-c366-4e5f-9791-dee8467cf3ce +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.156_2026-08-29-16-19-01_patch_3ac2bf36-20f7-4c9f-9fdb-295d4466d59e +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.157_2026-08-30-17-32-17_patch_4302354c-c9c5-4be7-acd3-542872a748d8 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.158_2026-08-31-09-28-33_patch_3523774f-c25d-4102-8c1a-92fff046a48d +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.159_2026-08-31-10-31-01_patch_fe3e6290-2553-4154-a0a0-8b8a418280ed +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.160_2026-08-31-11-23-39_patch_e701a085-3d23-4212-b0af-73b1d419a4c1 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.161_2026-08-31-12-41-01_patch_074d7bde-c493-44db-bc15-e81fd91e2921 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.162_2026-08-31-13-58-06_patch_84db1d60-4280-433b-bd3a-22e5611cd315 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.163_2026-08-31-15-25-54_patch_1931c5ba-73df-48cb-8dcb-555ace0af267 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.163_2026-08-31-15-44-37_patch_3962e805-2a92-494a-a87b-b6e6d66c40a0 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.165_2026-08-31-19-48-59_patch_86e5b923-2b99-4b86-b542-469b197614be +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.166_2026-09-01-07-39-57_patch_c344892f-d542-4e7b-8f27-02365a411e15 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.167_2026-09-01-08-21-53_patch_e199d419-282a-4dbb-8756-cf98b7037e2b +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.168_2026-09-01-09-12-31_patch_235c9fe0-da15-431d-bb56-01e2b9b15f4b +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.169_2026-09-01-11-54-19_patch_98b617ab-d130-42b5-93f2-19cae56d4c4c +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.170_2026-09-02-09-27-28_patch_e448d2e6-b7ec-4235-96bf-0173b3623c87 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.171_2026-09-02-12-52-44_patch_e6a241c2-1d62-482c-a9eb-9e3373395c50 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.172_2026-09-04-08-47-04_patch_daae079f-c104-4fcd-bb57-7bff68e80ad9 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.173_2026-09-04-12-34-42_patch_399c4cbd-0c28-4dfd-a4ec-e569420a36e4 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.174_2026-09-04-13-08-48_patch_f5cfe3d5-808e-45e4-bafc-00d0554838ee +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.175_2026-09-04-17-20-46_patch_1ef542fa-5d8e-4d90-aa15-9fc4cea3dfec +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.176_2026-09-05-08-25-05_patch_ced5521f-f9da-4640-a921-95fcb5cd2e6d +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.177_2026-09-05-09-00-16_patch_803c1ad4-a9af-4953-92c5-d882dec03ea2 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.178_2026-09-05-09-30-34_patch_012f6259-2e3f-4591-9806-1920fd06cb1f +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.179_2026-09-05-09-33-43_patch_f4bdf28c-d584-47a5-b699-8c883330162c +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.180_2026-09-05-12-02-21_patch_34a14b01-d22d-44a8-ac63-be0370a61422 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.181_2026-09-05-12-47-46_patch_56b18867-99f6-4d5c-8215-7b9d60d34010 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.182_2026-09-05-13-35-18_patch_61b7d4d1-73c8-4603-9b0c-593e7405587f +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.183_2026-09-06-07-27-09_patch_d76331b2-e3a3-4c0b-8412-ecd131b6ac02 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.184_2026-09-06-10-21-47_patch_7680b7a1-49f0-4eef-b12e-4c854407448c +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.185_2026-09-06-10-30-40_patch_e56c2183-77f8-44ef-a92e-7377ea6ce8c1 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.186_2026-09-07-10-00-51_patch_67de5683-d208-4bc0-8fb6-7677377908e7 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.187_2026-09-07-10-18-13_patch_2086cee2-276b-48f7-80ce-6a17397b9541 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.188_2026-09-07-12-51-28_patch_d6590822-068f-4a19-814d-34bbf204ba6e +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.189_2026-09-07-12-55-23_patch_7e0fb04b-4d40-4490-974f-c74ba2ae55a1 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.190_2026-09-08-08-58-03_patch_15e3ac1e-4475-4272-bdd8-d00bb0db8f17 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.191_2026-09-08-09-55-58_patch_3d350e50-ee53-4282-bc75-d2251142c46e +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.192_2026-09-08-11-12-21_patch_0733223b-1ae2-4b5b-897f-dfc57574ff83 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.193_2026-09-08-21-48-17_patch_8d07d4e6-3555-4720-85c9-9452570fae2d +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.194_2026-09-09-07-53-43_patch_69559429-aa42-4b62-9bd7-cdfded1c00d0 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.195_2026-09-09-09-55-40_patch_bbf67f1d-3b9a-43a2-b1bc-22df3fed8a34 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.196_2026-09-09-09-59-47_patch_70d76812-7b3c-4192-ad49-fcaccc29b0da +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.197_2026-09-09-13-06-06_patch_d455be0b-5421-492a-b952-fab0fd8110f8 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.198_2026-09-09-13-14-34_patch_267f54e5-311e-435e-882f-8e19191325ea +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.199_2026-09-09-22-24-18_patch_81e3e453-ca0e-42fa-9c21-8f94d43c05f2 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.200_2026-09-10-07-19-50_patch_911714fa-1fa3-4165-bfe6-d10c650bf5bf +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.201_2026-09-10-10-14-19_patch_864015f2-b0b0-4563-a1c8-155629cb9126 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.202_2026-09-10-11-00-05_patch_18270ecf-e770-4e69-8bcf-e5143c39929b +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.203_2026-09-10-11-10-41_patch_ff273ab1-44f3-4bc0-b184-3396e943df04 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.204_2026-09-10-13-02-02_patch_d4ee41e2-d13c-4941-8605-3f1a42b56b22 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.205_2026-09-10-13-57-50_patch_284df67e-5957-4b0c-bc64-5581db6ddecc +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.206_2026-09-11-10-18-50_patch_1ac7e410-0e62-4eef-bbe4-ebf93c9d0869 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/17.0.207_2026-09-11-15-26-02_major_3f1b3ed7-eaac-41f5-b740-0af3331595d9 +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/18.0.0_2026-09-12-10-01-10_patch_8995783a-a9fa-4c4e-90b3-6386a4c481eb +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/18.0.1_2026-09-12-17-33-30_patch_f6ea2c99-a715-4c4d-876a-23ed8c62a83d +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/__init__.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/version/read_version.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli.egg-info/dependency_links.txt +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli.egg-info/entry_points.txt +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli.egg-info/not-zip-safe +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli.egg-info/requires.txt +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli.egg-info/top_level.txt +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/pyproject.toml +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/setup.cfg +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/setup.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_appdirs.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_auth.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_config.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_errors.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_files_cp.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_files_cp_helpers.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_helm.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_import_export.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_info.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_config_io.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_configure.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_deploy_node_labels.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_get_terraform.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_init.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_provision.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_start_fixes.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_start_validation.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_state_bucket.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_infra_terraform_init.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_invalid_secrets.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_job_list_project_filter.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_jobs_list_unmatched.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_key_pair.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_login.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_logout.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_main.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_org_select.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_plans.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_projects.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_publish_build_poll.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_publish_data.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_publish_import_root.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_publish_requirements.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_pypi_auth.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_query.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_recipe_file.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_recipes.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_state.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_support.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_todos.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_ty.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_ui.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_ui_extras.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_usage_counts.py +0 -0
- {ellf_cli-18.0.2 → ellf_cli-18.0.5}/tests/test_util.py +0 -0
|
@@ -215,7 +215,7 @@ List the agents in a project. Uses your default project unless --project is give
|
|
|
215
215
|
| Argument | Type | Description | Default |
|
|
216
216
|
| --- | --- | --- | --- |
|
|
217
217
|
| `--project` | `str` | Name, slug, or ID of agent's project or the last project if not set | `None` |
|
|
218
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'state'] | `['id', 'name', 'state']` |
|
|
218
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'icon', 'state'] | `['id', 'name', 'state']` |
|
|
219
219
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
220
220
|
|
|
221
221
|
#### `ellf agents info`
|
|
@@ -227,7 +227,7 @@ Print information about an agent on the cluster
|
|
|
227
227
|
| `name_or_id` | `Union[str, UUID]` | Name or ID of the agent | |
|
|
228
228
|
| `--project` | `str` | Name, slug, or ID of agent's project or the last project if not set | `None` |
|
|
229
229
|
| `--cluster` | `str` | Name, slug, or ID of the cluster to search for agent name (or the last cluster if not set) | `None` |
|
|
230
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'recipe_name', 'recipe_title', 'project_name', 'error', 'last_execution_id', 'related_tasks', 'created_by_user'] | `None` |
|
|
230
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'icon', 'recipe_name', 'recipe_title', 'project_name', 'error', 'last_execution_id', 'related_tasks', 'created_by_user'] | `None` |
|
|
231
231
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
232
232
|
|
|
233
233
|
#### `ellf agents logs`
|
|
@@ -1431,7 +1431,7 @@ List all users in the organization
|
|
|
1431
1431
|
|
|
1432
1432
|
| Argument | Type | Description | Default |
|
|
1433
1433
|
| --- | --- | --- | --- |
|
|
1434
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'org_id', 'org_name', 'person_id', 'email', 'avatar_url', 'locale', 'is_org_admin', 'is_org_developer', 'last_cluster_id', 'last_project_id', 'deactivated_at', 'role'] | `['id', 'name', 'email', 'role']` |
|
|
1434
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'org_id', 'org_name', 'person_id', 'email', 'avatar_url', 'locale', 'is_org_admin', 'is_org_developer', 'last_cluster_id', 'last_project_id', 'deactivated_at', 'role', 'status'] | `['id', 'name', 'email', 'role']` |
|
|
1435
1435
|
| `--role` | `str` | Filter by role | `None` |
|
|
1436
1436
|
| `--include-deactivated` | `bool` | Include deactivated users | `False` |
|
|
1437
1437
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
@@ -1505,7 +1505,7 @@ List pending invitations
|
|
|
1505
1505
|
|
|
1506
1506
|
| Argument | Type | Description | Default |
|
|
1507
1507
|
| --- | --- | --- | --- |
|
|
1508
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'email', 'claimed', 'vars', 'role'] | `['id', 'email', 'role', 'claimed']` |
|
|
1508
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'email', 'claimed', 'vars', 'created_by_id', 'role'] | `['id', 'email', 'role', 'claimed']` |
|
|
1509
1509
|
| `--all` | `bool` | Also include invitations that have already been claimed | `False` |
|
|
1510
1510
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1511
1511
|
|
|
@@ -10,6 +10,7 @@ from wasabi import msg
|
|
|
10
10
|
from ellf_pam_sdk import Client as PamClient
|
|
11
11
|
from ellf_pam_sdk.errors import EllfError
|
|
12
12
|
from ellf_pam_sdk.models import (
|
|
13
|
+
AnnotatorType,
|
|
13
14
|
InvitationDetail,
|
|
14
15
|
InvitationReading,
|
|
15
16
|
InvitationSummary,
|
|
@@ -34,6 +35,16 @@ from ._state import get_auth_state
|
|
|
34
35
|
UserRoleName = Literal["admin", "developer", "annotator"]
|
|
35
36
|
|
|
36
37
|
|
|
38
|
+
# What `users list` shows when nothing is asked for. Named because the command
|
|
39
|
+
# adds to it when deactivated users are in the table, and can only tell that
|
|
40
|
+
# the caller wants the default by comparing against it.
|
|
41
|
+
DEFAULT_SELECT = ["id", "name", "email", "role"]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _status_of(user: Union[UserSummary, UserDetail]) -> str:
|
|
45
|
+
return "deactivated" if user.deactivated_at else "active"
|
|
46
|
+
|
|
47
|
+
|
|
37
48
|
def _role_of(user: Union[UserSummary, UserDetail]) -> str:
|
|
38
49
|
if user.is_org_admin:
|
|
39
50
|
return "admin"
|
|
@@ -104,7 +115,7 @@ def _is_assigned(client: PamClient, task_id: UUID, user_id: UUID) -> bool:
|
|
|
104
115
|
so ``is_added`` on a user row is what actually answers this.
|
|
105
116
|
"""
|
|
106
117
|
return any(
|
|
107
|
-
a.id == user_id and a.is_added and a.annotator_type !=
|
|
118
|
+
a.id == user_id and a.is_added and a.annotator_type != AnnotatorType.agent
|
|
108
119
|
for a in client.task.users(task_id)
|
|
109
120
|
)
|
|
110
121
|
|
|
@@ -116,7 +127,7 @@ def _is_assigned(client: PamClient, task_id: UUID, user_id: UUID) -> bool:
|
|
|
116
127
|
select=Arg(
|
|
117
128
|
"--select",
|
|
118
129
|
help=Messages.select.format(
|
|
119
|
-
opts=builtins.list(UserSummary.model_fields) + ["role"]
|
|
130
|
+
opts=builtins.list(UserSummary.model_fields) + ["role", "status"]
|
|
120
131
|
),
|
|
121
132
|
),
|
|
122
133
|
role=Arg("--role", help=Messages.filter_by.format(filter="role")),
|
|
@@ -127,7 +138,7 @@ def _is_assigned(client: PamClient, task_id: UUID, user_id: UUID) -> bool:
|
|
|
127
138
|
# fmt: on
|
|
128
139
|
)
|
|
129
140
|
def list(
|
|
130
|
-
select: builtins.list[str] =
|
|
141
|
+
select: builtins.list[str] = DEFAULT_SELECT,
|
|
131
142
|
role: Optional[UserRoleName] = None,
|
|
132
143
|
include_deactivated: bool = False,
|
|
133
144
|
as_json: bool = False,
|
|
@@ -137,7 +148,14 @@ def list(
|
|
|
137
148
|
query = _role_query(role) if role is not None else UserReading()
|
|
138
149
|
query.include_deactivated = include_deactivated
|
|
139
150
|
items = builtins.list(client.user.all(query))
|
|
140
|
-
rows = [
|
|
151
|
+
rows = [
|
|
152
|
+
{**u.model_dump(), "role": _role_of(u), "status": _status_of(u)} for u in items
|
|
153
|
+
]
|
|
154
|
+
# The status column earns its place only where the table can hold both
|
|
155
|
+
# kinds: without the flag every row reads "active", which is a column
|
|
156
|
+
# saying nothing. A caller who named their own columns keeps them.
|
|
157
|
+
if include_deactivated and select == DEFAULT_SELECT:
|
|
158
|
+
select = [*select, "status"]
|
|
141
159
|
print_table_with_select(rows, select=select, as_json=as_json)
|
|
142
160
|
return items
|
|
143
161
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"prog": "ellf",
|
|
3
3
|
"help": "Ellf Command Line Interface.",
|
|
4
|
-
"version": "18.0.
|
|
4
|
+
"version": "18.0.4",
|
|
5
5
|
"extra_key": "_extra",
|
|
6
6
|
"commands": {
|
|
7
7
|
"actions": {
|
|
@@ -1255,9 +1255,9 @@
|
|
|
1255
1255
|
"id": "select",
|
|
1256
1256
|
"option": "--select",
|
|
1257
1257
|
"short": null,
|
|
1258
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'state']",
|
|
1258
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'icon', 'state']",
|
|
1259
1259
|
"default": "['id', 'name', 'state']",
|
|
1260
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'state'] (list[str])",
|
|
1260
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'icon', 'state'] (list[str])",
|
|
1261
1261
|
"action": null,
|
|
1262
1262
|
"choices": null,
|
|
1263
1263
|
"has_converter": true,
|
|
@@ -1329,9 +1329,9 @@
|
|
|
1329
1329
|
"id": "select",
|
|
1330
1330
|
"option": "--select",
|
|
1331
1331
|
"short": null,
|
|
1332
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'recipe_name', 'recipe_title', 'project_name', 'error', 'last_execution_id', 'related_tasks', 'created_by_user']",
|
|
1332
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'icon', 'recipe_name', 'recipe_title', 'project_name', 'error', 'last_execution_id', 'related_tasks', 'created_by_user']",
|
|
1333
1333
|
"default": null,
|
|
1334
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'recipe_name', 'recipe_title', 'project_name', 'error', 'last_execution_id', 'related_tasks', 'created_by_user'] (list[str])",
|
|
1334
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'project_id', 'job_type', 'plan', 'cli_command', 'last_execution_started', 'icon', 'recipe_name', 'recipe_title', 'project_name', 'error', 'last_execution_id', 'related_tasks', 'created_by_user'] (list[str])",
|
|
1335
1335
|
"action": null,
|
|
1336
1336
|
"choices": null,
|
|
1337
1337
|
"has_converter": true,
|
|
@@ -8401,9 +8401,9 @@
|
|
|
8401
8401
|
"id": "select",
|
|
8402
8402
|
"option": "--select",
|
|
8403
8403
|
"short": null,
|
|
8404
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'org_id', 'org_name', 'person_id', 'email', 'avatar_url', 'locale', 'is_org_admin', 'is_org_developer', 'last_cluster_id', 'last_project_id', 'deactivated_at', 'role']",
|
|
8404
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'org_id', 'org_name', 'person_id', 'email', 'avatar_url', 'locale', 'is_org_admin', 'is_org_developer', 'last_cluster_id', 'last_project_id', 'deactivated_at', 'role', 'status']",
|
|
8405
8405
|
"default": "['id', 'name', 'email', 'role']",
|
|
8406
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'org_id', 'org_name', 'person_id', 'email', 'avatar_url', 'locale', 'is_org_admin', 'is_org_developer', 'last_cluster_id', 'last_project_id', 'deactivated_at', 'role'] (list[str])",
|
|
8406
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'org_id', 'org_name', 'person_id', 'email', 'avatar_url', 'locale', 'is_org_admin', 'is_org_developer', 'last_cluster_id', 'last_project_id', 'deactivated_at', 'role', 'status'] (list[str])",
|
|
8407
8407
|
"action": null,
|
|
8408
8408
|
"choices": null,
|
|
8409
8409
|
"has_converter": true,
|
|
@@ -8801,9 +8801,9 @@
|
|
|
8801
8801
|
"id": "select",
|
|
8802
8802
|
"option": "--select",
|
|
8803
8803
|
"short": null,
|
|
8804
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'email', 'claimed', 'vars', 'role']",
|
|
8804
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'email', 'claimed', 'vars', 'created_by_id', 'role']",
|
|
8805
8805
|
"default": "['id', 'email', 'role', 'claimed']",
|
|
8806
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'email', 'claimed', 'vars', 'role'] (list[str])",
|
|
8806
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'email', 'claimed', 'vars', 'created_by_id', 'role'] (list[str])",
|
|
8807
8807
|
"action": null,
|
|
8808
8808
|
"choices": null,
|
|
8809
8809
|
"has_converter": true,
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
#
|
|
31
31
|
|
|
32
32
|
from ellf_recipes_sdk import (
|
|
33
|
+
AgentIcon,
|
|
33
34
|
Annotator,
|
|
34
35
|
FloatProps,
|
|
35
36
|
Secret,
|
|
@@ -38,6 +39,7 @@ from ellf_recipes_sdk import (
|
|
|
38
39
|
detect_task_type,
|
|
39
40
|
format_prompt,
|
|
40
41
|
parse_response,
|
|
42
|
+
props,
|
|
41
43
|
)
|
|
42
44
|
|
|
43
45
|
|
|
@@ -65,7 +67,10 @@ def create_llm_client(api_key: str, model_name: str):
|
|
|
65
67
|
# takes (task, config) and returns an annotated task dict.
|
|
66
68
|
#
|
|
67
69
|
# The SDK reads poll_interval and idle_shutdown_seconds from the recipe
|
|
68
|
-
# parameters automatically — you don't need to handle them yourself.
|
|
70
|
+
# parameters automatically — you don't need to handle them yourself. The
|
|
71
|
+
# same goes for icon: this is the avatar used in the app wherever the agent's
|
|
72
|
+
# annotations are attributed to it. Pick the default that suits your agent — the
|
|
73
|
+
# model provider it calls, or what it does — from the set in props.icon.
|
|
69
74
|
#
|
|
70
75
|
# Agents are created and managed like tasks and actions:
|
|
71
76
|
# ellf agents create <recipe> --name "My Agent" --api-key MY_SECRET ...
|
|
@@ -96,6 +101,7 @@ def create_llm_client(api_key: str, model_name: str):
|
|
|
96
101
|
description="Shut down after this many seconds without tasks (0 = keep running)",
|
|
97
102
|
min=0.0,
|
|
98
103
|
),
|
|
104
|
+
"icon": props.icon,
|
|
99
105
|
},
|
|
100
106
|
)
|
|
101
107
|
def my_agent(
|
|
@@ -104,6 +110,7 @@ def my_agent(
|
|
|
104
110
|
model_name: str = "gpt-4o",
|
|
105
111
|
poll_interval: float = 1.0,
|
|
106
112
|
idle_shutdown_seconds: float = 0.0,
|
|
113
|
+
icon: AgentIcon = "bot",
|
|
107
114
|
) -> Annotator:
|
|
108
115
|
"""A template for Ellf agent recipes.
|
|
109
116
|
|
|
@@ -263,6 +263,9 @@ ellf_cli/version/17.0.206_2026-09-11-10-18-50_patch_1ac7e410-0e62-4eef-bbe4-ebf9
|
|
|
263
263
|
ellf_cli/version/17.0.207_2026-09-11-15-26-02_major_3f1b3ed7-eaac-41f5-b740-0af3331595d9
|
|
264
264
|
ellf_cli/version/18.0.0_2026-09-12-10-01-10_patch_8995783a-a9fa-4c4e-90b3-6386a4c481eb
|
|
265
265
|
ellf_cli/version/18.0.1_2026-09-12-17-33-30_patch_f6ea2c99-a715-4c4d-876a-23ed8c62a83d
|
|
266
|
+
ellf_cli/version/18.0.2_2026-09-13-06-36-33_patch_176bb944-1c49-4dd3-a001-8fce908825a0
|
|
267
|
+
ellf_cli/version/18.0.3_2026-09-13-12-32-46_patch_58e5ce3a-f2a7-4789-b2cd-5cc75c72b6ec
|
|
268
|
+
ellf_cli/version/18.0.4_2026-09-13-12-45-14_patch_b6c79d55-8f85-4f47-a304-df52b122c38c
|
|
266
269
|
ellf_cli/version/__init__.py
|
|
267
270
|
ellf_cli/version/read_version.py
|
|
268
271
|
tests/test_appdirs.py
|
|
@@ -310,4 +313,5 @@ tests/test_ui.py
|
|
|
310
313
|
tests/test_ui_extras.py
|
|
311
314
|
tests/test_usage_counts.py
|
|
312
315
|
tests/test_users_assign.py
|
|
316
|
+
tests/test_users_list.py
|
|
313
317
|
tests/test_util.py
|
|
@@ -8,7 +8,12 @@ import pytest
|
|
|
8
8
|
|
|
9
9
|
from ellf_cli.commands import users as users_cmd
|
|
10
10
|
from ellf_cli.errors import CLIError
|
|
11
|
-
from ellf_pam_sdk.models import
|
|
11
|
+
from ellf_pam_sdk.models import (
|
|
12
|
+
AnnotatorType,
|
|
13
|
+
EmailReturning,
|
|
14
|
+
TaskAnnotator,
|
|
15
|
+
UserDetail,
|
|
16
|
+
)
|
|
12
17
|
|
|
13
18
|
|
|
14
19
|
def _user(*, admin: bool = False, developer: bool = False) -> UserDetail:
|
|
@@ -35,7 +40,7 @@ def _annotator(
|
|
|
35
40
|
user_id: UUID,
|
|
36
41
|
*,
|
|
37
42
|
is_added: bool = True,
|
|
38
|
-
annotator_type:
|
|
43
|
+
annotator_type: AnnotatorType = AnnotatorType.user,
|
|
39
44
|
) -> TaskAnnotator:
|
|
40
45
|
return TaskAnnotator(
|
|
41
46
|
id=user_id,
|
|
@@ -205,7 +210,9 @@ def test_unassign_does_not_match_an_agent_row(env):
|
|
|
205
210
|
`ellf agents unassign`, so a same-id agent row must not stand in for a
|
|
206
211
|
user assignment."""
|
|
207
212
|
user = _user()
|
|
208
|
-
task_client, _ = env(
|
|
213
|
+
task_client, _ = env(
|
|
214
|
+
user, [_annotator(user.id, annotator_type=AnnotatorType.agent)]
|
|
215
|
+
)
|
|
209
216
|
|
|
210
217
|
with pytest.raises(CLIError):
|
|
211
218
|
users_cmd.unassign(user.email, task="ner-task")
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from datetime import datetime, timezone
|
|
2
|
+
from types import SimpleNamespace
|
|
3
|
+
from typing import Any
|
|
4
|
+
from uuid import uuid4
|
|
5
|
+
|
|
6
|
+
import pytest
|
|
7
|
+
|
|
8
|
+
from ellf_cli.commands import users as users_cmd
|
|
9
|
+
from ellf_pam_sdk.models import UserSummary
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _user(name: str, *, deactivated: bool = False) -> UserSummary:
|
|
13
|
+
now = datetime.now(timezone.utc)
|
|
14
|
+
return UserSummary(
|
|
15
|
+
id=uuid4(),
|
|
16
|
+
created=now,
|
|
17
|
+
updated=now,
|
|
18
|
+
name=name,
|
|
19
|
+
org_id=uuid4(),
|
|
20
|
+
org_name="Explosion",
|
|
21
|
+
person_id=uuid4(),
|
|
22
|
+
email=f"{name.lower()}@example.com",
|
|
23
|
+
avatar_url="",
|
|
24
|
+
locale="en",
|
|
25
|
+
is_org_admin=False,
|
|
26
|
+
is_org_developer=False,
|
|
27
|
+
deactivated_at=now if deactivated else None,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@pytest.fixture
|
|
32
|
+
def listed(monkeypatch):
|
|
33
|
+
"""Run `users list` against a fixed set of people, and capture the table."""
|
|
34
|
+
printed: dict[str, Any] = {}
|
|
35
|
+
|
|
36
|
+
def _run(users: list[UserSummary], **kwargs: Any) -> dict[str, Any]:
|
|
37
|
+
auth = SimpleNamespace(
|
|
38
|
+
client=SimpleNamespace(user=SimpleNamespace(all=lambda _query: users))
|
|
39
|
+
)
|
|
40
|
+
monkeypatch.setattr(users_cmd, "get_auth_state", lambda: auth)
|
|
41
|
+
monkeypatch.setattr(
|
|
42
|
+
users_cmd,
|
|
43
|
+
"print_table_with_select",
|
|
44
|
+
lambda rows, select, as_json: printed.update(rows=rows, select=select),
|
|
45
|
+
)
|
|
46
|
+
users_cmd.list(**kwargs)
|
|
47
|
+
return printed
|
|
48
|
+
|
|
49
|
+
return _run
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_listing_deactivated_users_says_which_they_are(listed):
|
|
53
|
+
"""Both kinds are in the table, so a column has to tell them apart."""
|
|
54
|
+
printed = listed(
|
|
55
|
+
[_user("Ann"), _user("Bo", deactivated=True)], include_deactivated=True
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
assert printed["select"] == ["id", "name", "email", "role", "status"]
|
|
59
|
+
assert [row["status"] for row in printed["rows"]] == ["active", "deactivated"]
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def test_the_default_listing_spends_no_column_on_status(listed):
|
|
63
|
+
"""Without the flag every row is active, and the column says nothing."""
|
|
64
|
+
printed = listed([_user("Ann")])
|
|
65
|
+
|
|
66
|
+
assert printed["select"] == ["id", "name", "email", "role"]
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def test_chosen_columns_are_left_alone(listed):
|
|
70
|
+
"""Asking for columns is asking for those columns."""
|
|
71
|
+
printed = listed(
|
|
72
|
+
[_user("Ann", deactivated=True)],
|
|
73
|
+
include_deactivated=True,
|
|
74
|
+
select=["name", "email"],
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
assert printed["select"] == ["name", "email"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-18.0.2 → ellf_cli-18.0.5}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|