ellf-cli 18.1.0__tar.gz → 19.0.0__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.1.0/ellf_cli.egg-info → ellf_cli-19.0.0}/PKG-INFO +1 -1
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/README.md +4 -26
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cli.py +0 -1
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/jobs.py +1 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/projects.py +31 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/sessions.py +3 -55
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf.json +31 -111
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/messages.py +0 -5
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/query.py +1 -0
- ellf_cli-19.0.0/ellf_cli/version/18.1.0_2026-09-28-14-27-54_patch_324444f7-d24e-4189-b21f-1188894a3109 +3 -0
- ellf_cli-19.0.0/ellf_cli/version/18.1.1_2026-09-28-21-03-07_major_e266a14a-7d96-4ece-92a3-8f34e64438a5 +3 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0/ellf_cli.egg-info}/PKG-INFO +1 -1
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/SOURCES.txt +2 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_projects.py +12 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_query.py +20 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_sessions.py +1 -28
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/LICENSE +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/MANIFEST.in +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/__main__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/about.json +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/about.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/appdirs.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/auth.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cloud/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cloud/gcp.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cluster_config.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_cluster_select.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_org_select.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_project_scope.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_recipe_file.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_recipe_subcommand.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_state.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_usage.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/actions.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/agents.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/assets.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/auth.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/clusters.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/config.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/datasets.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/cp.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/ls.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/rm.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/rsync.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/stats.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/general.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/import_export.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/_config_io.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/_helpers.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/configure.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/deploy.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/init.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/init_values.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/provision.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/register.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/setup.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/start.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/terraform.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/tls.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/packages.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/paths.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/plans.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/publish_code.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/publish_data.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/recipes.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/secrets.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/services.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/support.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/tasks.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/todos.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/users.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/config.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/.gitignore +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skill_variants.json +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/label_schemes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/label_schemes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ops.coding/references/data_infra_cli.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/label_schemes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/label_schemes.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/errors.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/helm.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/interactivity.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/key_pair.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/main.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/pypi_auth.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/testing/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ty.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ui.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/url.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/util.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.114_2026-08-19-08-36-57__1a4e37c1-471e-4a81-b4d5-1ffe7dec3a61 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.114_2026-08-19-09-25-21_patch_33ff1e26-0e5e-46d8-8052-ab1d032e8b6c +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.115_2026-08-19-09-27-13_patch_4ac728c3-0342-4a36-adbc-e28d2d99b1ba +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.116_2026-08-19-09-30-47_patch_c706fef6-6813-4183-b268-12e7b00d7d0b +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.117_2026-08-19-09-39-14_patch_c6b0495f-2f88-4aa8-9ebf-0a235b4c407e +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.118_2026-08-19-09-52-00_patch_b395655a-8d78-4344-9266-6901c20f6517 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.119_2026-08-19-10-22-38_patch_8f95c49d-aedc-41b8-816d-ccb95f048831 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.120_2026-08-19-10-26-58_patch_7fbf35e6-cc01-4b75-8c9a-f5d054bcaf93 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.121_2026-08-19-10-42-02_patch_31a81b02-a886-4dea-84e0-67cc6ca412d5 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.122_2026-08-19-11-16-49_patch_1c4d7307-48d4-493e-936d-80af799d644b +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.123_2026-08-19-11-47-32_patch_d3d78d04-9989-45b1-91b1-93b571d8814a +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.124_2026-08-20-08-03-17_patch_57f4c389-2d19-41ce-aca4-13b61c62f387 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.125_2026-08-20-08-25-05_patch_7f368148-0d1c-4525-bbdf-c6d257ad861a +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.126_2026-08-20-14-51-36_patch_a99abcc8-3371-4c63-a759-bb7ea5b32432 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.127_2026-08-21-05-48-58_patch_34b4ccee-7596-4f57-93e9-774973cca58e +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.128_2026-08-21-10-47-20_patch_693112b9-927c-4a8f-8553-b06eef86079d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.129_2026-08-21-11-16-54_patch_7a981666-01d9-4d1b-9ba3-2129744e3bd5 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.130_2026-08-21-13-09-36_patch_b7ad1a76-ce70-4d70-9d1a-7c414eba5bb4 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.131_2026-08-21-14-31-10_patch_9128ef66-193e-4caf-8710-afd86128e638 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.132_2026-08-24-08-59-34_patch_c600fc14-86a5-460f-9c4e-f0177056f756 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.133_2026-08-24-10-28-29_patch_b6ce3e32-9d7b-48ac-981a-270c22c180dd +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.134_2026-08-24-11-00-51_patch_a4fc0484-4a64-46a2-94f8-aa805254c7b0 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.135_2026-08-24-12-12-41_patch_a870a56f-9a65-49eb-92da-f572b26667d8 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.136_2026-08-24-12-42-46_patch_9b399356-6482-4291-8da7-e748a99c4b53 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.137_2026-08-24-12-53-57_patch_f7979348-1910-40cd-a535-90299eca84ee +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.138_2026-08-24-14-36-30_patch_ed0f8750-f663-498b-85e7-0d3f2213fcfe +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.139_2026-08-25-08-37-26_patch_3ba87e19-902b-4f76-b64c-90e5c0ca1fc6 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.140_2026-08-25-09-52-45_patch_abc830f2-df15-4385-b797-cdaf72c10752 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.141_2026-08-25-11-37-20_patch_1d9ec01e-06f6-4c8e-b095-af17d5b62b00 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.142_2026-08-26-07-38-49_patch_3dd23e36-e7df-494c-986f-a412861a8d40 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.143_2026-08-26-09-32-32_patch_7b7ebd34-de27-4b73-98a7-3e1501e16cd5 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.144_2026-08-26-10-56-43_patch_166064f2-2208-4c9b-9e25-25dc4cd32084 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.145_2026-08-26-11-37-29_patch_b997f3ee-d7d3-4408-9f2f-c8b6d08bdb3b +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.146_2026-08-26-12-15-20_patch_afbbb893-25db-468c-81db-2663ca373068 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.147_2026-08-26-14-10-50_patch_fd753b1f-2fa1-4ddb-a9e7-de690da85254 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.148_2026-08-27-09-08-35_patch_23814c0b-7f77-489c-b4a8-ceadd18146e3 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.149_2026-08-27-09-40-17_patch_8879d72e-a3d8-4abc-a16a-d9dcf75f0fa1 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.150_2026-08-27-10-57-25_patch_afbe60ed-3e23-4d88-be3c-f800d7002a7d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.151_2026-08-28-09-02-46_patch_1d4ca23b-aeae-4ea8-96b1-8cf57371f29d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.152_2026-08-28-15-37-24_patch_c9d0bdc1-a7e1-432b-92b9-92dc76fe0c78 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.153_2026-08-29-09-03-27_patch_7531573a-1b33-4092-aa9c-0e65f47b201f +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.154_2026-08-29-11-56-35_patch_919f5787-39c8-4dc1-ae6a-f27c28380f21 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.155_2026-08-29-15-15-59_patch_822f9ed8-c366-4e5f-9791-dee8467cf3ce +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.156_2026-08-29-16-19-01_patch_3ac2bf36-20f7-4c9f-9fdb-295d4466d59e +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.157_2026-08-30-17-32-17_patch_4302354c-c9c5-4be7-acd3-542872a748d8 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.158_2026-08-31-09-28-33_patch_3523774f-c25d-4102-8c1a-92fff046a48d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.159_2026-08-31-10-31-01_patch_fe3e6290-2553-4154-a0a0-8b8a418280ed +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.160_2026-08-31-11-23-39_patch_e701a085-3d23-4212-b0af-73b1d419a4c1 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.161_2026-08-31-12-41-01_patch_074d7bde-c493-44db-bc15-e81fd91e2921 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.162_2026-08-31-13-58-06_patch_84db1d60-4280-433b-bd3a-22e5611cd315 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.163_2026-08-31-15-25-54_patch_1931c5ba-73df-48cb-8dcb-555ace0af267 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.163_2026-08-31-15-44-37_patch_3962e805-2a92-494a-a87b-b6e6d66c40a0 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.165_2026-08-31-19-48-59_patch_86e5b923-2b99-4b86-b542-469b197614be +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.166_2026-09-01-07-39-57_patch_c344892f-d542-4e7b-8f27-02365a411e15 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.167_2026-09-01-08-21-53_patch_e199d419-282a-4dbb-8756-cf98b7037e2b +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.168_2026-09-01-09-12-31_patch_235c9fe0-da15-431d-bb56-01e2b9b15f4b +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.169_2026-09-01-11-54-19_patch_98b617ab-d130-42b5-93f2-19cae56d4c4c +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.170_2026-09-02-09-27-28_patch_e448d2e6-b7ec-4235-96bf-0173b3623c87 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.171_2026-09-02-12-52-44_patch_e6a241c2-1d62-482c-a9eb-9e3373395c50 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.172_2026-09-04-08-47-04_patch_daae079f-c104-4fcd-bb57-7bff68e80ad9 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.173_2026-09-04-12-34-42_patch_399c4cbd-0c28-4dfd-a4ec-e569420a36e4 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.174_2026-09-04-13-08-48_patch_f5cfe3d5-808e-45e4-bafc-00d0554838ee +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.175_2026-09-04-17-20-46_patch_1ef542fa-5d8e-4d90-aa15-9fc4cea3dfec +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.176_2026-09-05-08-25-05_patch_ced5521f-f9da-4640-a921-95fcb5cd2e6d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.177_2026-09-05-09-00-16_patch_803c1ad4-a9af-4953-92c5-d882dec03ea2 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.178_2026-09-05-09-30-34_patch_012f6259-2e3f-4591-9806-1920fd06cb1f +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.179_2026-09-05-09-33-43_patch_f4bdf28c-d584-47a5-b699-8c883330162c +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.180_2026-09-05-12-02-21_patch_34a14b01-d22d-44a8-ac63-be0370a61422 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.181_2026-09-05-12-47-46_patch_56b18867-99f6-4d5c-8215-7b9d60d34010 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.182_2026-09-05-13-35-18_patch_61b7d4d1-73c8-4603-9b0c-593e7405587f +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.183_2026-09-06-07-27-09_patch_d76331b2-e3a3-4c0b-8412-ecd131b6ac02 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.184_2026-09-06-10-21-47_patch_7680b7a1-49f0-4eef-b12e-4c854407448c +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.185_2026-09-06-10-30-40_patch_e56c2183-77f8-44ef-a92e-7377ea6ce8c1 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.186_2026-09-07-10-00-51_patch_67de5683-d208-4bc0-8fb6-7677377908e7 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.187_2026-09-07-10-18-13_patch_2086cee2-276b-48f7-80ce-6a17397b9541 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.188_2026-09-07-12-51-28_patch_d6590822-068f-4a19-814d-34bbf204ba6e +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.189_2026-09-07-12-55-23_patch_7e0fb04b-4d40-4490-974f-c74ba2ae55a1 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.190_2026-09-08-08-58-03_patch_15e3ac1e-4475-4272-bdd8-d00bb0db8f17 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.191_2026-09-08-09-55-58_patch_3d350e50-ee53-4282-bc75-d2251142c46e +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.192_2026-09-08-11-12-21_patch_0733223b-1ae2-4b5b-897f-dfc57574ff83 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.193_2026-09-08-21-48-17_patch_8d07d4e6-3555-4720-85c9-9452570fae2d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.194_2026-09-09-07-53-43_patch_69559429-aa42-4b62-9bd7-cdfded1c00d0 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.195_2026-09-09-09-55-40_patch_bbf67f1d-3b9a-43a2-b1bc-22df3fed8a34 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.196_2026-09-09-09-59-47_patch_70d76812-7b3c-4192-ad49-fcaccc29b0da +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.197_2026-09-09-13-06-06_patch_d455be0b-5421-492a-b952-fab0fd8110f8 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.198_2026-09-09-13-14-34_patch_267f54e5-311e-435e-882f-8e19191325ea +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.199_2026-09-09-22-24-18_patch_81e3e453-ca0e-42fa-9c21-8f94d43c05f2 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.200_2026-09-10-07-19-50_patch_911714fa-1fa3-4165-bfe6-d10c650bf5bf +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.201_2026-09-10-10-14-19_patch_864015f2-b0b0-4563-a1c8-155629cb9126 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.202_2026-09-10-11-00-05_patch_18270ecf-e770-4e69-8bcf-e5143c39929b +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.203_2026-09-10-11-10-41_patch_ff273ab1-44f3-4bc0-b184-3396e943df04 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.204_2026-09-10-13-02-02_patch_d4ee41e2-d13c-4941-8605-3f1a42b56b22 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.205_2026-09-10-13-57-50_patch_284df67e-5957-4b0c-bc64-5581db6ddecc +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.206_2026-09-11-10-18-50_patch_1ac7e410-0e62-4eef-bbe4-ebf93c9d0869 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/17.0.207_2026-09-11-15-26-02_major_3f1b3ed7-eaac-41f5-b740-0af3331595d9 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.0_2026-09-12-10-01-10_patch_8995783a-a9fa-4c4e-90b3-6386a4c481eb +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.10_2026-09-14-16-09-38_patch_9403d562-eed0-4125-a8b3-09cd92a13298 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.11_2026-09-15-09-05-57_patch_8b22dba2-d931-4c4d-ae60-db3238d5e73d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.12_2026-09-15-11-18-52_patch_81314afa-e70d-4ad8-b45b-3f8d62b983e7 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.13_2026-09-16-08-00-55_patch_bfa30fc0-3281-4de6-bb56-d7290c98d1c3 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.14_2026-09-16-14-38-26_patch_aae6e9b0-88f4-4bcf-b611-3308c7fcd6eb +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.15_2026-09-17-07-58-54_patch_43d40582-effd-4925-a8bd-e70fecf1faab +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.16_2026-09-17-08-12-37_patch_b4db2d23-88f1-45c1-82d9-78d38014fcb6 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.17_2026-09-18-09-38-19_patch_25697fc3-e9a8-4980-962b-e6cb0a4760c5 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.18_2026-09-18-09-54-33_patch_d37d9c71-c469-4d94-90d7-4898915ee991 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.19_2026-09-18-10-47-33_patch_47607b3c-d1b6-4864-b9b0-00a2a8d2ac32 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.1_2026-09-12-17-33-30_patch_f6ea2c99-a715-4c4d-876a-23ed8c62a83d +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.20_2026-09-18-11-07-21_patch_5a336f91-63a6-4877-97ed-da89395cc8f5 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.21_2026-09-18-13-34-52_patch_c56462e1-63d9-498f-a912-c80c5f0171d1 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.22_2026-09-20-08-10-45_patch_6afa2c20-bcef-4b7d-8685-2c9815d8683f +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.23_2026-09-20-08-38-35_patch_a7f169e5-37ab-4ec0-bf89-d14770181303 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.24_2026-09-20-15-49-27_patch_c1222081-ff44-4f20-aea2-5840b6d76efd +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.25_2026-09-21-06-11-40_patch_6df46dd9-e7d3-4e71-bec4-e5c93b4ac863 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.26_2026-09-21-07-54-11_patch_cc52dd36-5eba-4094-a1b0-d6f79f103441 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.27_2026-09-21-08-36-49_patch_a25fa125-9bcd-4317-8da5-851c1c329631 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.28_2026-09-21-09-44-01_patch_4430a721-0b3c-4f6a-b9bc-a53e667161bb +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.29_2026-09-21-10-58-07_patch_83b2b942-60a4-4bef-afd1-99690ba52b69 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.2_2026-09-13-06-36-33_patch_176bb944-1c49-4dd3-a001-8fce908825a0 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.30_2026-09-21-12-51-16_patch_519b9a65-d400-4234-b113-36b46e315507 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.31_2026-09-22-06-53-35_patch_5c45a235-81b6-4d05-801a-07dc7db61400 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.32_2026-09-22-07-42-04_patch_f12c6415-8166-4063-9e5d-26601b929d63 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.33_2026-09-22-08-12-32_patch_cec31bb0-a6cb-43e6-8407-25aba322b54c +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.34_2026-09-23-07-09-16_patch_659fccbb-c0a0-4f6f-bc87-e6abaa8815a7 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.35_2026-09-23-09-38-52_patch_023f904d-807a-4833-8a40-570365e8ec06 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.36_2026-09-23-10-05-33_patch_846fb491-2b1b-47ed-ac1f-ba40e744e199 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.37_2026-09-23-13-08-30_patch_8e4b1d24-156e-4ffe-8e4a-b8740ec18588 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.38_2026-09-24-06-41-37_patch_67adb1d6-3f49-4357-a67f-b1d48f23a972 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.39_2026-09-24-15-24-32_patch_e5dd375d-5643-4514-9b65-8d877c4a2bb2 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.3_2026-09-13-12-32-46_patch_58e5ce3a-f2a7-4789-b2cd-5cc75c72b6ec +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.40_2026-09-24-19-58-14_patch_ff18824b-be51-4a3d-a621-e96279e53c3e +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.41_2026-09-26-09-24-52_patch_b9979267-30f9-440a-a4ce-c611991d4886 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.42_2026-09-28-12-39-34_patch_dda535d9-8922-4eb9-ab51-6ecff0650c10 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.43_2026-09-28-13-35-27_minor_aca1168a-1286-4326-9d0c-2f2587c9fe92 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.4_2026-09-13-12-45-14_patch_b6c79d55-8f85-4f47-a304-df52b122c38c +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.5_2026-09-13-14-11-18_patch_9b111116-5e62-472a-b72c-d1bbafa22c97 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.5_2026-09-13-17-01-11_patch_d4bf61c0-83ac-4dd3-b512-a65805d298c8 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.6_2026-09-14-11-31-04_patch_fd2ebda6-22cb-4e7d-9452-2f6f2640e828 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.7_2026-09-13-17-06-08_patch_428af161-0b27-43c2-8751-e5f7874df120 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/18.0.9_2026-09-14-12-37-42_patch_b2ca0529-4b67-4fa4-8fdc-5f5e9f5d5166 +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/__init__.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/read_version.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/dependency_links.txt +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/entry_points.txt +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/not-zip-safe +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/requires.txt +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/top_level.txt +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/pyproject.toml +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/setup.cfg +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/setup.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_agents_info_stats.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_appdirs.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_auth.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_clusters_info_stats.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_config.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_errors.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_files_cp.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_files_cp_helpers.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_helm.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_import_export.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_info.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_config_io.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_configure.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_deploy_node_labels.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_get_terraform.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_init.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_provision.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_start_fixes.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_start_validation.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_state_bucket.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_terraform_init.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_invalid_secrets.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_job_list_project_filter.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_jobs_info_hides_creator.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_jobs_list_unmatched.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_key_pair.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_login.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_logout.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_main.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_org_select.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_plans.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_projects_delete_confirm.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_build_poll.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_data.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_import_root.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_requirements.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_pypi_auth.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_recipe_file.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_recipes.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_state.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_support.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_todos.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_ty.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_ui.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_ui_extras.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_usage_counts.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_users_assign.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_users_info_stats.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_users_list.py +0 -0
- {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_util.py +0 -0
|
@@ -603,30 +603,6 @@ Export all the examples from a dataset and save it in the designated file as JSO
|
|
|
603
603
|
| `name_or_id` | `Union[str, UUID]` | Name or ID of the dataset | |
|
|
604
604
|
| `--output`, `-o` | `str` | JSON output path for data | `'-'` |
|
|
605
605
|
|
|
606
|
-
### `ellf examples`
|
|
607
|
-
|
|
608
|
-
Disable and activate annotated examples
|
|
609
|
-
|
|
610
|
-
#### `ellf examples disable`
|
|
611
|
-
|
|
612
|
-
Disable examples: supersede each with a copy answered "ignore". They stay in their dataset and remain their annotators' work
|
|
613
|
-
|
|
614
|
-
| Argument | Type | Description | Default |
|
|
615
|
-
| --- | --- | --- | --- |
|
|
616
|
-
| `dataset` | `str` | Name of the dataset the examples belong to | |
|
|
617
|
-
| `example_ids` | `list[int]` | Comma-separated IDs of the examples | |
|
|
618
|
-
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
619
|
-
|
|
620
|
-
#### `ellf examples activate`
|
|
621
|
-
|
|
622
|
-
Activate disabled examples: restore the answers they replaced
|
|
623
|
-
|
|
624
|
-
| Argument | Type | Description | Default |
|
|
625
|
-
| --- | --- | --- | --- |
|
|
626
|
-
| `dataset` | `str` | Name of the dataset the examples belong to | |
|
|
627
|
-
| `example_ids` | `list[int]` | Comma-separated IDs of the examples | |
|
|
628
|
-
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
629
|
-
|
|
630
606
|
### `ellf files`
|
|
631
607
|
|
|
632
608
|
Manage files on the cluster. Your files are only ever sent to servers or buckets you control. They are never sent to our servers.
|
|
@@ -1076,7 +1052,7 @@ List all projects
|
|
|
1076
1052
|
|
|
1077
1053
|
| Argument | Type | Description | Default |
|
|
1078
1054
|
| --- | --- | --- | --- |
|
|
1079
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template'] | `['slug', 'name']` |
|
|
1055
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template', 'prodigy_config'] | `['slug', 'name']` |
|
|
1080
1056
|
| `--name` | `str` | Filter by name | `None` |
|
|
1081
1057
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1082
1058
|
|
|
@@ -1087,7 +1063,7 @@ Get detailed info for a project
|
|
|
1087
1063
|
| Argument | Type | Description | Default |
|
|
1088
1064
|
| --- | --- | --- | --- |
|
|
1089
1065
|
| `name_or_id` | `Union[str, UUID]` | Name or ID of the project | |
|
|
1090
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template'] | `None` |
|
|
1066
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template', 'prodigy_config'] | `None` |
|
|
1091
1067
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1092
1068
|
|
|
1093
1069
|
#### `ellf projects create`
|
|
@@ -1099,6 +1075,7 @@ Create a new project
|
|
|
1099
1075
|
| `name` | `str` | Name of the project | |
|
|
1100
1076
|
| `description` | `str` | Description of the project | |
|
|
1101
1077
|
| `--default-job-name-template` | `str` | Default name template for new jobs (e.g. '{recipe}_{date}') | `None` |
|
|
1078
|
+
| `--prodigy-config` | `str` | Prodigy config for the project's tasks as a JSON object. Settings defined by a task or its recipe take precedence | `None` |
|
|
1102
1079
|
| `--exists-ok` | `bool` | Don't raise an error if it already exists | `False` |
|
|
1103
1080
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1104
1081
|
|
|
@@ -1112,6 +1089,7 @@ Update a project
|
|
|
1112
1089
|
| `--name` | `str` | New name for the project | `None` |
|
|
1113
1090
|
| `--description` | `str` | New description for the project | `None` |
|
|
1114
1091
|
| `--default-job-name-template` | `str` | Default name template for new jobs (e.g. '{recipe}_{date}') | `None` |
|
|
1092
|
+
| `--prodigy-config` | `str` | Prodigy config for the project's tasks as a JSON object. Settings defined by a task or its recipe take precedence | `None` |
|
|
1115
1093
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1116
1094
|
|
|
1117
1095
|
#### `ellf projects delete`
|
|
@@ -110,7 +110,6 @@ cli.placeholder("auth", description=Messages.doc_auth)
|
|
|
110
110
|
cli.placeholder("clusters", description=Messages.doc_clusters)
|
|
111
111
|
cli.placeholder("config", description=Messages.doc_config)
|
|
112
112
|
cli.placeholder("datasets", description=Messages.doc_datasets)
|
|
113
|
-
cli.placeholder("examples", description=Messages.doc_examples)
|
|
114
113
|
cli.placeholder("files", description=Messages.doc_files)
|
|
115
114
|
cli.placeholder("gcp", description=Messages.doc_gcp)
|
|
116
115
|
cli.placeholder("infra", description=Messages.doc_infra)
|
|
@@ -44,6 +44,7 @@ def run(spec_path: str) -> None:
|
|
|
44
44
|
package_name=plan_data["package_name"],
|
|
45
45
|
objects=plan_data["objects"],
|
|
46
46
|
meta=plan_data.get("meta") or {},
|
|
47
|
+
prodigy_config=plan_data.get("prodigy_config") or {},
|
|
47
48
|
)
|
|
48
49
|
resources = None
|
|
49
50
|
resources_data = data.get("resources")
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import builtins
|
|
2
|
+
import json
|
|
2
3
|
import logging
|
|
3
4
|
import sys
|
|
4
5
|
from collections.abc import Sequence
|
|
@@ -104,6 +105,13 @@ def _stats(project_id: UUID) -> dict[str, Any] | None:
|
|
|
104
105
|
"--default-job-name-template",
|
|
105
106
|
help="Default name template for new jobs (e.g. '{recipe}_{date}')",
|
|
106
107
|
),
|
|
108
|
+
prodigy_config=Arg(
|
|
109
|
+
"--prodigy-config",
|
|
110
|
+
help=(
|
|
111
|
+
"Prodigy config for the project's tasks as a JSON object. Settings "
|
|
112
|
+
"defined by a task or its recipe take precedence"
|
|
113
|
+
),
|
|
114
|
+
),
|
|
107
115
|
exists_ok=Arg("--exists-ok", help=Messages.exists_ok),
|
|
108
116
|
as_json=Arg("--json", help=Messages.as_json),
|
|
109
117
|
)
|
|
@@ -111,6 +119,7 @@ def create(
|
|
|
111
119
|
name: str,
|
|
112
120
|
description: str,
|
|
113
121
|
default_job_name_template: Optional[str] = None,
|
|
122
|
+
prodigy_config: Optional[str] = None,
|
|
114
123
|
exists_ok: bool = False,
|
|
115
124
|
as_json: bool = False,
|
|
116
125
|
) -> UUID | None:
|
|
@@ -121,6 +130,7 @@ def create(
|
|
|
121
130
|
name=name,
|
|
122
131
|
description=description,
|
|
123
132
|
default_job_name_template=default_job_name_template,
|
|
133
|
+
prodigy_config=_parse_prodigy_config(prodigy_config),
|
|
124
134
|
)
|
|
125
135
|
try:
|
|
126
136
|
res = client.project.create(body)
|
|
@@ -151,6 +161,13 @@ def create(
|
|
|
151
161
|
"--default-job-name-template",
|
|
152
162
|
help="Default name template for new jobs (e.g. '{recipe}_{date}')",
|
|
153
163
|
),
|
|
164
|
+
prodigy_config=Arg(
|
|
165
|
+
"--prodigy-config",
|
|
166
|
+
help=(
|
|
167
|
+
"Prodigy config for the project's tasks as a JSON object. Settings "
|
|
168
|
+
"defined by a task or its recipe take precedence"
|
|
169
|
+
),
|
|
170
|
+
),
|
|
154
171
|
as_json=Arg("--json", help=Messages.as_json),
|
|
155
172
|
)
|
|
156
173
|
def update(
|
|
@@ -158,6 +175,7 @@ def update(
|
|
|
158
175
|
name: Optional[str] = None,
|
|
159
176
|
description: Optional[str] = None,
|
|
160
177
|
default_job_name_template: Optional[str] = None,
|
|
178
|
+
prodigy_config: Optional[str] = None,
|
|
161
179
|
as_json: bool = False,
|
|
162
180
|
) -> ProjectDetail:
|
|
163
181
|
"""Update a project"""
|
|
@@ -168,6 +186,7 @@ def update(
|
|
|
168
186
|
name=name,
|
|
169
187
|
description=description,
|
|
170
188
|
default_job_name_template=default_job_name_template,
|
|
189
|
+
prodigy_config=_parse_prodigy_config(prodigy_config),
|
|
171
190
|
)
|
|
172
191
|
res = auth.client.project.update(body)
|
|
173
192
|
print_mutation_result(
|
|
@@ -180,6 +199,18 @@ def update(
|
|
|
180
199
|
return res
|
|
181
200
|
|
|
182
201
|
|
|
202
|
+
def _parse_prodigy_config(value: Optional[str]) -> Optional[dict[str, Any]]:
|
|
203
|
+
if value is None:
|
|
204
|
+
return None
|
|
205
|
+
try:
|
|
206
|
+
parsed = json.loads(value)
|
|
207
|
+
except json.JSONDecodeError as e:
|
|
208
|
+
raise CLIError("--prodigy-config must be valid JSON", e)
|
|
209
|
+
if not isinstance(parsed, dict):
|
|
210
|
+
raise CLIError("--prodigy-config must be a JSON object")
|
|
211
|
+
return parsed
|
|
212
|
+
|
|
213
|
+
|
|
183
214
|
@cli.subcommand(
|
|
184
215
|
"projects",
|
|
185
216
|
"delete",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"""Annotation sessions
|
|
1
|
+
"""Annotation sessions.
|
|
2
2
|
|
|
3
3
|
A task's annotations live in the cluster's Prodigy database, where every
|
|
4
4
|
PAM session (one sitting of one annotator) has a dataset of its own named
|
|
5
5
|
``{dataset}-{task_id}-{annotator_id}-{session_id}``. Disabling a session
|
|
6
6
|
takes its examples out of the task's dataset while keeping them in that
|
|
7
|
-
session dataset
|
|
7
|
+
session dataset.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
import builtins
|
|
@@ -12,7 +12,7 @@ from collections.abc import Sequence
|
|
|
12
12
|
from typing import Any, Optional, Union
|
|
13
13
|
from uuid import UUID
|
|
14
14
|
|
|
15
|
-
from radicli import Arg
|
|
15
|
+
from radicli import Arg
|
|
16
16
|
|
|
17
17
|
from ..cli import cli
|
|
18
18
|
from ..messages import Messages
|
|
@@ -114,55 +114,3 @@ def activate(session_id: UUID, as_json: bool = False) -> dict[str, Any]:
|
|
|
114
114
|
"""Activate a disabled annotation session: put its examples back into the
|
|
115
115
|
task's dataset"""
|
|
116
116
|
return _set_session_disabled(session_id, False, as_json)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
def _set_examples_disabled(
|
|
120
|
-
dataset: str, example_ids: builtins.list[int], disabled: bool, as_json: bool
|
|
121
|
-
) -> dict[str, Any]:
|
|
122
|
-
examples = get_auth_state().broker_client.examples
|
|
123
|
-
replaced = (
|
|
124
|
-
examples.disable(dataset, example_ids)
|
|
125
|
-
if disabled
|
|
126
|
-
else examples.activate(dataset, example_ids)
|
|
127
|
-
)
|
|
128
|
-
result = {
|
|
129
|
-
"examples": [
|
|
130
|
-
{"old_example_id": r.old_example_id, "id": r.id} for r in replaced.examples
|
|
131
|
-
]
|
|
132
|
-
}
|
|
133
|
-
message = Messages.T074 if disabled else Messages.T075
|
|
134
|
-
print_mutation_result(
|
|
135
|
-
result,
|
|
136
|
-
message.format(count=len(replaced.examples), name=dataset),
|
|
137
|
-
as_json=as_json,
|
|
138
|
-
)
|
|
139
|
-
return result
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
@cli.subcommand(
|
|
143
|
-
"examples",
|
|
144
|
-
"disable",
|
|
145
|
-
dataset=Arg(help=Messages.example_dataset),
|
|
146
|
-
example_ids=Arg(help=Messages.example_ids, converter=get_list_converter(int)),
|
|
147
|
-
as_json=Arg("--json", help=Messages.as_json),
|
|
148
|
-
)
|
|
149
|
-
def disable_examples(
|
|
150
|
-
dataset: str, example_ids: builtins.list[int], as_json: bool = False
|
|
151
|
-
) -> dict[str, Any]:
|
|
152
|
-
"""Disable examples: supersede each with a copy answered "ignore". They stay
|
|
153
|
-
in their dataset and remain their annotators' work"""
|
|
154
|
-
return _set_examples_disabled(dataset, example_ids, True, as_json)
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
@cli.subcommand(
|
|
158
|
-
"examples",
|
|
159
|
-
"activate",
|
|
160
|
-
dataset=Arg(help=Messages.example_dataset),
|
|
161
|
-
example_ids=Arg(help=Messages.example_ids, converter=get_list_converter(int)),
|
|
162
|
-
as_json=Arg("--json", help=Messages.as_json),
|
|
163
|
-
)
|
|
164
|
-
def activate_examples(
|
|
165
|
-
dataset: str, example_ids: builtins.list[int], as_json: bool = False
|
|
166
|
-
) -> dict[str, Any]:
|
|
167
|
-
"""Activate disabled examples: restore the answers they replaced"""
|
|
168
|
-
return _set_examples_disabled(dataset, example_ids, False, as_json)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"prog": "ellf",
|
|
3
3
|
"help": "Ellf Command Line Interface.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "19.0.0",
|
|
5
5
|
"extra_key": "_extra",
|
|
6
6
|
"commands": {
|
|
7
7
|
"actions": {
|
|
@@ -68,14 +68,6 @@
|
|
|
68
68
|
"parent": null,
|
|
69
69
|
"is_placeholder": true
|
|
70
70
|
},
|
|
71
|
-
"examples": {
|
|
72
|
-
"name": "examples",
|
|
73
|
-
"args": [],
|
|
74
|
-
"description": "Disable and activate annotated examples",
|
|
75
|
-
"allow_extra": false,
|
|
76
|
-
"parent": null,
|
|
77
|
-
"is_placeholder": true
|
|
78
|
-
},
|
|
79
71
|
"files": {
|
|
80
72
|
"name": "files",
|
|
81
73
|
"args": [],
|
|
@@ -5798,9 +5790,9 @@
|
|
|
5798
5790
|
"id": "select",
|
|
5799
5791
|
"option": "--select",
|
|
5800
5792
|
"short": null,
|
|
5801
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template']",
|
|
5793
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template', 'prodigy_config']",
|
|
5802
5794
|
"default": "['slug', 'name']",
|
|
5803
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template'] (list[str])",
|
|
5795
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template', 'prodigy_config'] (list[str])",
|
|
5804
5796
|
"action": null,
|
|
5805
5797
|
"choices": null,
|
|
5806
5798
|
"has_converter": true,
|
|
@@ -5859,9 +5851,9 @@
|
|
|
5859
5851
|
"id": "select",
|
|
5860
5852
|
"option": "--select",
|
|
5861
5853
|
"short": null,
|
|
5862
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template']",
|
|
5854
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template', 'prodigy_config']",
|
|
5863
5855
|
"default": null,
|
|
5864
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template'] (list[str])",
|
|
5856
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'org_id', 'name', 'slug', 'description', 'default_job_name_template', 'prodigy_config'] (list[str])",
|
|
5865
5857
|
"action": null,
|
|
5866
5858
|
"choices": null,
|
|
5867
5859
|
"has_converter": true,
|
|
@@ -5929,6 +5921,19 @@
|
|
|
5929
5921
|
"type": "str",
|
|
5930
5922
|
"orig_type": "str"
|
|
5931
5923
|
},
|
|
5924
|
+
{
|
|
5925
|
+
"id": "prodigy_config",
|
|
5926
|
+
"option": "--prodigy-config",
|
|
5927
|
+
"short": null,
|
|
5928
|
+
"orig_help": "Prodigy config for the project's tasks as a JSON object. Settings defined by a task or its recipe take precedence",
|
|
5929
|
+
"default": null,
|
|
5930
|
+
"help": "Prodigy config for the project's tasks as a JSON object. Settings defined by a task or its recipe take precedence (str)",
|
|
5931
|
+
"action": null,
|
|
5932
|
+
"choices": null,
|
|
5933
|
+
"has_converter": false,
|
|
5934
|
+
"type": "str",
|
|
5935
|
+
"orig_type": "str"
|
|
5936
|
+
},
|
|
5932
5937
|
{
|
|
5933
5938
|
"id": "exists_ok",
|
|
5934
5939
|
"option": "--exists-ok",
|
|
@@ -6016,6 +6021,19 @@
|
|
|
6016
6021
|
"type": "str",
|
|
6017
6022
|
"orig_type": "str"
|
|
6018
6023
|
},
|
|
6024
|
+
{
|
|
6025
|
+
"id": "prodigy_config",
|
|
6026
|
+
"option": "--prodigy-config",
|
|
6027
|
+
"short": null,
|
|
6028
|
+
"orig_help": "Prodigy config for the project's tasks as a JSON object. Settings defined by a task or its recipe take precedence",
|
|
6029
|
+
"default": null,
|
|
6030
|
+
"help": "Prodigy config for the project's tasks as a JSON object. Settings defined by a task or its recipe take precedence (str)",
|
|
6031
|
+
"action": null,
|
|
6032
|
+
"choices": null,
|
|
6033
|
+
"has_converter": false,
|
|
6034
|
+
"type": "str",
|
|
6035
|
+
"orig_type": "str"
|
|
6036
|
+
},
|
|
6019
6037
|
{
|
|
6020
6038
|
"id": "as_json",
|
|
6021
6039
|
"option": "--json",
|
|
@@ -7540,104 +7558,6 @@
|
|
|
7540
7558
|
"is_placeholder": false
|
|
7541
7559
|
}
|
|
7542
7560
|
},
|
|
7543
|
-
"examples": {
|
|
7544
|
-
"disable": {
|
|
7545
|
-
"name": "disable",
|
|
7546
|
-
"args": [
|
|
7547
|
-
{
|
|
7548
|
-
"id": "dataset",
|
|
7549
|
-
"option": null,
|
|
7550
|
-
"short": null,
|
|
7551
|
-
"orig_help": "Name of the dataset the examples belong to",
|
|
7552
|
-
"default": "==SUPPRESS==",
|
|
7553
|
-
"help": "Name of the dataset the examples belong to (str)",
|
|
7554
|
-
"action": null,
|
|
7555
|
-
"choices": null,
|
|
7556
|
-
"has_converter": false,
|
|
7557
|
-
"type": "str",
|
|
7558
|
-
"orig_type": "str"
|
|
7559
|
-
},
|
|
7560
|
-
{
|
|
7561
|
-
"id": "example_ids",
|
|
7562
|
-
"option": null,
|
|
7563
|
-
"short": null,
|
|
7564
|
-
"orig_help": "Comma-separated IDs of the examples",
|
|
7565
|
-
"default": "==SUPPRESS==",
|
|
7566
|
-
"help": "Comma-separated IDs of the examples (list[int])",
|
|
7567
|
-
"action": null,
|
|
7568
|
-
"choices": null,
|
|
7569
|
-
"has_converter": true,
|
|
7570
|
-
"type": "converter",
|
|
7571
|
-
"orig_type": "list[int]"
|
|
7572
|
-
},
|
|
7573
|
-
{
|
|
7574
|
-
"id": "as_json",
|
|
7575
|
-
"option": "--json",
|
|
7576
|
-
"short": null,
|
|
7577
|
-
"orig_help": "Output the result as JSON",
|
|
7578
|
-
"default": false,
|
|
7579
|
-
"help": "Output the result as JSON (bool)",
|
|
7580
|
-
"action": "store_true",
|
|
7581
|
-
"choices": null,
|
|
7582
|
-
"has_converter": false,
|
|
7583
|
-
"type": null,
|
|
7584
|
-
"orig_type": "bool"
|
|
7585
|
-
}
|
|
7586
|
-
],
|
|
7587
|
-
"description": "Disable examples: supersede each with a copy answered \"ignore\". They stay\nin their dataset and remain their annotators' work",
|
|
7588
|
-
"allow_extra": false,
|
|
7589
|
-
"parent": "examples",
|
|
7590
|
-
"is_placeholder": false
|
|
7591
|
-
},
|
|
7592
|
-
"activate": {
|
|
7593
|
-
"name": "activate",
|
|
7594
|
-
"args": [
|
|
7595
|
-
{
|
|
7596
|
-
"id": "dataset",
|
|
7597
|
-
"option": null,
|
|
7598
|
-
"short": null,
|
|
7599
|
-
"orig_help": "Name of the dataset the examples belong to",
|
|
7600
|
-
"default": "==SUPPRESS==",
|
|
7601
|
-
"help": "Name of the dataset the examples belong to (str)",
|
|
7602
|
-
"action": null,
|
|
7603
|
-
"choices": null,
|
|
7604
|
-
"has_converter": false,
|
|
7605
|
-
"type": "str",
|
|
7606
|
-
"orig_type": "str"
|
|
7607
|
-
},
|
|
7608
|
-
{
|
|
7609
|
-
"id": "example_ids",
|
|
7610
|
-
"option": null,
|
|
7611
|
-
"short": null,
|
|
7612
|
-
"orig_help": "Comma-separated IDs of the examples",
|
|
7613
|
-
"default": "==SUPPRESS==",
|
|
7614
|
-
"help": "Comma-separated IDs of the examples (list[int])",
|
|
7615
|
-
"action": null,
|
|
7616
|
-
"choices": null,
|
|
7617
|
-
"has_converter": true,
|
|
7618
|
-
"type": "converter",
|
|
7619
|
-
"orig_type": "list[int]"
|
|
7620
|
-
},
|
|
7621
|
-
{
|
|
7622
|
-
"id": "as_json",
|
|
7623
|
-
"option": "--json",
|
|
7624
|
-
"short": null,
|
|
7625
|
-
"orig_help": "Output the result as JSON",
|
|
7626
|
-
"default": false,
|
|
7627
|
-
"help": "Output the result as JSON (bool)",
|
|
7628
|
-
"action": "store_true",
|
|
7629
|
-
"choices": null,
|
|
7630
|
-
"has_converter": false,
|
|
7631
|
-
"type": null,
|
|
7632
|
-
"orig_type": "bool"
|
|
7633
|
-
}
|
|
7634
|
-
],
|
|
7635
|
-
"description": "Activate disabled examples: restore the answers they replaced",
|
|
7636
|
-
"allow_extra": false,
|
|
7637
|
-
"parent": "examples",
|
|
7638
|
-
"is_placeholder": false
|
|
7639
|
-
}
|
|
7640
|
-
},
|
|
7641
7561
|
"support": {
|
|
7642
7562
|
"create": {
|
|
7643
7563
|
"name": "create",
|
|
@@ -145,8 +145,6 @@ ellf secret create my-credentials OPENAI_API_KEY="sk-..." CUSTOM_SECRET=-
|
|
|
145
145
|
T071 = "This deletes {name} and everything in it: tasks, actions, agents, services, project plans and annotations. Any annotated datasets stay on your cluster."
|
|
146
146
|
T072 = "Disabled session {id}: {count} examples taken out of the task's dataset"
|
|
147
147
|
T073 = "Activated session {id}: {count} examples put back into the task's dataset"
|
|
148
|
-
T074 = "Disabled {count} examples in {name}"
|
|
149
|
-
T075 = "Activated {count} examples in {name}"
|
|
150
148
|
|
|
151
149
|
project_delete_confirm = "Type the project name to confirm: "
|
|
152
150
|
|
|
@@ -170,7 +168,6 @@ ellf secret create my-credentials OPENAI_API_KEY="sk-..." CUSTOM_SECRET=-
|
|
|
170
168
|
doc_agents = "Interact with agents on the cluster"
|
|
171
169
|
doc_tasks = "Interact with annotation tasks on the cluster"
|
|
172
170
|
doc_sessions = "View, disable and activate a task's annotation sessions"
|
|
173
|
-
doc_examples = "Disable and activate annotated examples"
|
|
174
171
|
doc_services = "Interact with long-running services on the cluster"
|
|
175
172
|
doc_auth = "Manage authentication artifacts (import/push device-flow tokens)"
|
|
176
173
|
doc_users = "View and manage users and invitations in your organization"
|
|
@@ -183,8 +180,6 @@ ellf secret create my-credentials OPENAI_API_KEY="sk-..." CUSTOM_SECRET=-
|
|
|
183
180
|
name_or_id = "Name or ID of the {noun}"
|
|
184
181
|
name_or_id_optional = "Name or ID of the {noun} (or the last {noun} if not set)"
|
|
185
182
|
session_id = "ID of the annotation session"
|
|
186
|
-
example_dataset = "Name of the dataset the examples belong to"
|
|
187
|
-
example_ids = "Comma-separated IDs of the examples"
|
|
188
183
|
project_id = "Name, slug, or ID of {noun}'s project or the last project if not set"
|
|
189
184
|
cluster_id = "Name, slug, or ID of the cluster to search for {noun} name (or the last cluster if not set)"
|
|
190
185
|
cluster_host = "Name of the cluster (or the last cluster if not set)"
|
|
@@ -723,6 +723,7 @@ def _build_job_spec(
|
|
|
723
723
|
package_name=plan.package_name,
|
|
724
724
|
objects=plan.objects,
|
|
725
725
|
meta=getattr(plan, "recipe_meta", None) or {},
|
|
726
|
+
prodigy_config=getattr(plan, "project_prodigy_config", None) or {},
|
|
726
727
|
),
|
|
727
728
|
container=plan.container,
|
|
728
729
|
node_selector=None,
|
|
@@ -310,6 +310,8 @@ ellf_cli/version/18.0.5_2026-09-13-17-01-11_patch_d4bf61c0-83ac-4dd3-b512-a65805
|
|
|
310
310
|
ellf_cli/version/18.0.6_2026-09-14-11-31-04_patch_fd2ebda6-22cb-4e7d-9452-2f6f2640e828
|
|
311
311
|
ellf_cli/version/18.0.7_2026-09-13-17-06-08_patch_428af161-0b27-43c2-8751-e5f7874df120
|
|
312
312
|
ellf_cli/version/18.0.9_2026-09-14-12-37-42_patch_b2ca0529-4b67-4fa4-8fdc-5f5e9f5d5166
|
|
313
|
+
ellf_cli/version/18.1.0_2026-09-28-14-27-54_patch_324444f7-d24e-4189-b21f-1188894a3109
|
|
314
|
+
ellf_cli/version/18.1.1_2026-09-28-21-03-07_major_e266a14a-7d96-4ece-92a3-8f34e64438a5
|
|
313
315
|
ellf_cli/version/__init__.py
|
|
314
316
|
ellf_cli/version/read_version.py
|
|
315
317
|
tests/test_agents_info_stats.py
|
|
@@ -14,3 +14,15 @@ def test_list_projects(capsys):
|
|
|
14
14
|
cli.run(["ellf", "projects", "list"])
|
|
15
15
|
captured = capsys.readouterr()
|
|
16
16
|
assert "Test Project" in captured.out
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_parse_prodigy_config():
|
|
20
|
+
from ellf_cli.commands.projects import _parse_prodigy_config
|
|
21
|
+
from ellf_cli.errors import CLIError
|
|
22
|
+
|
|
23
|
+
assert _parse_prodigy_config(None) is None
|
|
24
|
+
assert _parse_prodigy_config('{"batch_size": 5}') == {"batch_size": 5}
|
|
25
|
+
assert _parse_prodigy_config("{}") == {}
|
|
26
|
+
for value in ["[1]", "{"]:
|
|
27
|
+
with pytest.raises(CLIError):
|
|
28
|
+
_parse_prodigy_config(value)
|
|
@@ -321,3 +321,23 @@ class TestResolveServiceUrl:
|
|
|
321
321
|
res = self._resolve(monkeypatch, "https://c.example.com/services/a/")
|
|
322
322
|
assert res.url_ui == "https://app.example.com/project/p/service/s"
|
|
323
323
|
assert res.url_logs == "https://app.example.com/project/p/service/s/logs"
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
def test_build_job_spec_forwards_plan_meta_and_project_prodigy_config() -> None:
|
|
327
|
+
plan = pam_models.RecipePlanDetail.model_construct(
|
|
328
|
+
recipe_name="ner.manual",
|
|
329
|
+
args={},
|
|
330
|
+
positional_fields=[],
|
|
331
|
+
cli_names={},
|
|
332
|
+
package_name="ellf-recipes",
|
|
333
|
+
objects={},
|
|
334
|
+
container="registry/recipes:latest",
|
|
335
|
+
worker_class=None,
|
|
336
|
+
required_resources=None,
|
|
337
|
+
recipe_meta={"port": 8501},
|
|
338
|
+
project_prodigy_config={"batch_size": 5},
|
|
339
|
+
)
|
|
340
|
+
job = pam_models.TaskDetail.model_construct(id=uuid4(), name="t", plan=plan)
|
|
341
|
+
spec = query._build_job_spec(job)
|
|
342
|
+
assert spec.plan.meta == {"port": 8501}
|
|
343
|
+
assert spec.plan.prodigy_config == {"batch_size": 5}
|
|
@@ -2,12 +2,7 @@ from datetime import datetime, timezone
|
|
|
2
2
|
from types import SimpleNamespace
|
|
3
3
|
from uuid import UUID
|
|
4
4
|
|
|
5
|
-
from ellf_broker_sdk.models import
|
|
6
|
-
ReplacedExample,
|
|
7
|
-
ReplacedExamples,
|
|
8
|
-
SessionChange,
|
|
9
|
-
SessionCounts,
|
|
10
|
-
)
|
|
5
|
+
from ellf_broker_sdk.models import SessionChange, SessionCounts
|
|
11
6
|
from ellf_cli.commands import sessions as sessions_cmd
|
|
12
7
|
|
|
13
8
|
TASK = UUID("019212aa-0000-7000-8000-00000000000a")
|
|
@@ -31,21 +26,11 @@ class _Broker:
|
|
|
31
26
|
"restore", dataset, session
|
|
32
27
|
),
|
|
33
28
|
)
|
|
34
|
-
self.examples = SimpleNamespace(
|
|
35
|
-
disable=lambda dataset, ids: self._replaced("disable", dataset, ids),
|
|
36
|
-
activate=lambda dataset, ids: self._replaced("activate", dataset, ids),
|
|
37
|
-
)
|
|
38
29
|
|
|
39
30
|
def _change(self, kind, dataset, session):
|
|
40
31
|
self.calls.append((kind, dataset, session))
|
|
41
32
|
return SessionChange(session=session, examples=3)
|
|
42
33
|
|
|
43
|
-
def _replaced(self, kind, dataset, ids):
|
|
44
|
-
self.calls.append((kind, dataset, ids))
|
|
45
|
-
return ReplacedExamples(
|
|
46
|
-
examples=[ReplacedExample(old_example_id=i, id=i + 100) for i in ids]
|
|
47
|
-
)
|
|
48
|
-
|
|
49
34
|
|
|
50
35
|
def _session(session_id):
|
|
51
36
|
return SimpleNamespace(
|
|
@@ -92,15 +77,3 @@ def test_disable_and_activate_a_session(monkeypatch):
|
|
|
92
77
|
("remove", "ner", SITTING_1),
|
|
93
78
|
("restore", "ner", SITTING_1),
|
|
94
79
|
]
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def test_disable_and_activate_examples(monkeypatch):
|
|
98
|
-
broker = _Broker()
|
|
99
|
-
monkeypatch.setattr(sessions_cmd, "get_auth_state", lambda: _auth(broker))
|
|
100
|
-
result = sessions_cmd.disable_examples("ner", [1, 2], as_json=True)
|
|
101
|
-
assert result["examples"] == [
|
|
102
|
-
{"old_example_id": 1, "id": 101},
|
|
103
|
-
{"old_example_id": 2, "id": 102},
|
|
104
|
-
]
|
|
105
|
-
sessions_cmd.activate_examples("ner", [101], as_json=True)
|
|
106
|
-
assert broker.calls == [("disable", "ner", [1, 2]), ("activate", "ner", [101])]
|
|
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
|